From 6567dd62c809d8cf9406487ed2799c43b4509876 Mon Sep 17 00:00:00 2001 From: Addy Osmani Date: Wed, 19 Aug 2015 18:29:24 +0100 Subject: [PATCH] Distribution Commit --- .jscsrc | 10 + .jshintrc | 17 + LICENSE | 212 + README.md | 146 + bower.json | 29 + gulpfile.js | 739 ++ material.css | 9725 +++++++++++++++++ material.js | 3546 ++++++ material.min.css | 9 + material.min.css.map | 1 + material.min.js | 11 + material.min.js.map | 1 + package.json | 75 + src/INTRODUCTION.md | 44 + src/_color-definitions.scss | 599 + src/_functions.scss | 19 + src/_mixins.scss | 268 + src/_variables.scss | 547 + src/animation/_animation.scss | 34 + src/animation/demo.css | 95 + src/animation/demo.html | 7 + src/animation/demo.js | 112 + src/badge/README.md | 68 + src/badge/_badge.scss | 66 + .../snippets/badge-on-icon-icon-demo.html | 12 + src/badge/snippets/badge-on-icon-icon.html | 2 + .../snippets/badge-on-icon-text-demo.html | 12 + src/badge/snippets/badge-on-icon-text.html | 2 + .../snippets/badge-on-text-icon-demo.html | 6 + src/badge/snippets/badge-on-text-icon.html | 2 + .../snippets/badge-on-text-text-demo.html | 7 + src/badge/snippets/badge-on-text-text.html | 2 + src/button/README.md | 59 + src/button/_button.scss | 305 + src/button/button.js | 134 + src/button/snippets/fab-colored-ripple.html | 4 + src/button/snippets/fab-colored.html | 4 + src/button/snippets/fab-disabled.html | 4 + src/button/snippets/fab-mini-colored.html | 4 + src/button/snippets/fab-mini.html | 4 + src/button/snippets/fab-ripple.html | 4 + src/button/snippets/fab.html | 4 + src/button/snippets/flat-accent.html | 4 + src/button/snippets/flat-disabled.html | 4 + src/button/snippets/flat-primary.html | 4 + src/button/snippets/flat-ripple.html | 4 + src/button/snippets/flat.html | 4 + src/button/snippets/icon-colored.html | 4 + src/button/snippets/icon.html | 4 + src/button/snippets/raised-accent.html | 4 + src/button/snippets/raised-colored.html | 4 + src/button/snippets/raised-disabled.html | 4 + src/button/snippets/raised-ripple-accent.html | 4 + src/button/snippets/raised-ripple.html | 4 + src/button/snippets/raised.html | 4 + src/card/README.md | 128 + src/card/_card.scss | 111 + src/card/snippets/event.html | 44 + src/card/snippets/image.html | 25 + src/card/snippets/square.html | 27 + src/card/snippets/wide.html | 34 + src/checkbox/README.md | 65 + src/checkbox/_checkbox.scss | 175 + src/checkbox/checkbox.js | 276 + src/checkbox/snippets/check-off.html | 4 + src/checkbox/snippets/check-on.html | 4 + src/data-table/README.md | 160 + src/data-table/_data-table.scss | 107 + src/data-table/data-table.js | 165 + src/data-table/snippets/data-table.html | 26 + src/demos.css | 39 + src/footer/README.md | 406 + src/footer/_mega_footer.scss | 309 + src/footer/_mini_footer.scss | 88 + src/footer/snippets/mega-footer.html | 57 + src/footer/snippets/mini-footer.html | 9 + src/grid/README.md | 115 + src/grid/_grid.scss | 171 + src/grid/snippets/codepen-grid.css | 11 + src/grid/snippets/grid-demo.html | 15 + src/grid/snippets/grid.html | 29 + src/icon-toggle/README.md | 65 + src/icon-toggle/_icon-toggle.scss | 121 + src/icon-toggle/icon-toggle.js | 260 + src/icon-toggle/snippets/icon-off.html | 4 + src/icon-toggle/snippets/icon-on.html | 4 + src/images/buffer.svg | 9 + src/images/tick-mask.svg | 30 + src/images/tick.svg | 15 + src/index.html | 209 + src/layout/README.md | 328 + src/layout/_layout.scss | 588 + src/layout/layout.js | 438 + src/layout/snippets/fixed-drawer-demo.html | 15 + src/layout/snippets/fixed-drawer.html | 15 + src/layout/snippets/fixed-header-demo.html | 15 + .../snippets/fixed-header-drawer-demo.html | 15 + src/layout/snippets/fixed-header-drawer.html | 33 + src/layout/snippets/fixed-header.html | 30 + src/layout/snippets/fixed-tabs-demo.html | 15 + src/layout/snippets/fixed-tabs.html | 30 + src/layout/snippets/scrollable-tabs-demo.html | 15 + src/layout/snippets/scrollable-tabs.html | 41 + .../snippets/scrolling-header-demo.html | 16 + src/layout/snippets/scrolling-header.html | 31 + src/layout/snippets/transparent-demo.html | 12 + src/layout/snippets/transparent.html | 41 + .../snippets/waterfall-header-demo.html | 16 + src/layout/snippets/waterfall-header.html | 51 + src/material-design-lite-grid.scss | 21 + src/material-design-lite.scss | 50 + src/mdlComponentHandler.js | 387 + src/menu/README.md | 102 + src/menu/_menu.scss | 196 + src/menu/menu.js | 484 + src/menu/snippets/codepen-lower-buttons.css | 3 + src/menu/snippets/codepen-top-buttons.css | 8 + src/menu/snippets/lower-left-demo.html | 25 + src/menu/snippets/lower-left.html | 13 + src/menu/snippets/lower-right-demo.html | 34 + src/menu/snippets/lower-right.html | 13 + src/menu/snippets/top-left-demo.html | 25 + src/menu/snippets/top-left.html | 13 + src/menu/snippets/top-right-demo.html | 34 + src/menu/snippets/top-right.html | 13 + src/palette/_palette.scss | 2303 ++++ src/palette/demo.css | 55 + src/palette/demo.html | 417 + src/progress/README.md | 40 + src/progress/_progress.scss | 115 + src/progress/progress.js | 129 + .../snippets/progress-buffering-demo.html | 8 + src/progress/snippets/progress-buffering.html | 8 + .../snippets/progress-default-demo.html | 7 + src/progress/snippets/progress-default.html | 7 + .../snippets/progress-indeterminate-demo.html | 7 + .../snippets/progress-indeterminate.html | 2 + src/radio/README.md | 76 + src/radio/_radio.scss | 155 + src/radio/radio.js | 266 + src/radio/snippets/radio-off.html | 4 + src/radio/snippets/radio-on.html | 4 + src/resets/_h5bp.scss | 291 + src/resets/_mobile.scss | 25 + src/resets/_resets.scss | 55 + src/ripple/_ripple.scss | 42 + src/ripple/ripple.js | 253 + src/shadow/README.md | 52 + src/shadow/_shadow.scss | 42 + src/shadow/demo.css | 43 + src/shadow/demo.html | 8 + src/slider/README.md | 66 + src/slider/_slider.scss | 397 + src/slider/slider.js | 252 + src/slider/snippets/demo.html | 10 + src/slider/snippets/slider-default-demo.html | 7 + src/slider/snippets/slider-default.html | 3 + .../snippets/slider-starting-value-demo.html | 8 + .../snippets/slider-starting-value.html | 3 + src/spinner/README.md | 49 + src/spinner/_spinner.scss | 248 + src/spinner/snippets/spinner-default.html | 2 + .../snippets/spinner-single-color.html | 2 + src/spinner/spinner.js | 143 + src/styleguide.scss | 101 + src/switch/README.md | 65 + src/switch/_switch.scss | 199 + src/switch/snippets/switch-off.html | 4 + src/switch/snippets/switch-on.html | 4 + src/switch/switch.js | 279 + src/tabs/README.md | 150 + src/tabs/_tabs.scss | 115 + src/tabs/snippets/tabs.html | 33 + src/tabs/tabs.js | 154 + src/template.scss | 21 + src/textfield/README.md | 260 + src/textfield/_textfield.scss | 201 + .../snippets/textfield-expanding-demo.html | 7 + .../snippets/textfield-expanding.html | 12 + .../textfield-floating-numeric-demo.html | 7 + .../snippets/textfield-floating-numeric.html | 8 + .../textfield-floating-text-demo.html | 7 + .../snippets/textfield-floating-text.html | 8 + .../snippets/textfield-multi-line-demo.html | 7 + .../snippets/textfield-multi-line.html | 7 + .../snippets/textfield-numeric-demo.html | 7 + src/textfield/snippets/textfield-numeric.html | 8 + .../snippets/textfield-text-demo.html | 7 + src/textfield/snippets/textfield-text.html | 7 + src/textfield/textfield.js | 246 + src/third_party/rAF.js | 38 + src/tooltip/README.md | 67 + src/tooltip/_tooltip.scss | 66 + src/tooltip/snippets/tooltip-large.html | 5 + src/tooltip/snippets/tooltip-multiline.html | 5 + src/tooltip/snippets/tooltip-rich.html | 5 + src/tooltip/snippets/tooltip-simple.html | 5 + src/tooltip/tooltip.js | 150 + src/typography/README.md | 102 + src/typography/_typography.scss | 297 + src/typography/demo.css | 57 + src/typography/demo.html | 228 + utils/uniffe.js | 60 + 203 files changed, 32099 insertions(+) create mode 100644 .jscsrc create mode 100644 .jshintrc create mode 100644 LICENSE create mode 100644 README.md create mode 100644 bower.json create mode 100644 gulpfile.js create mode 100644 material.css create mode 100644 material.js create mode 100644 material.min.css create mode 100644 material.min.css.map create mode 100644 material.min.js create mode 100644 material.min.js.map create mode 100644 package.json create mode 100755 src/INTRODUCTION.md create mode 100644 src/_color-definitions.scss create mode 100644 src/_functions.scss create mode 100644 src/_mixins.scss create mode 100644 src/_variables.scss create mode 100644 src/animation/_animation.scss create mode 100644 src/animation/demo.css create mode 100644 src/animation/demo.html create mode 100644 src/animation/demo.js create mode 100644 src/badge/README.md create mode 100644 src/badge/_badge.scss create mode 100644 src/badge/snippets/badge-on-icon-icon-demo.html create mode 100644 src/badge/snippets/badge-on-icon-icon.html create mode 100644 src/badge/snippets/badge-on-icon-text-demo.html create mode 100644 src/badge/snippets/badge-on-icon-text.html create mode 100644 src/badge/snippets/badge-on-text-icon-demo.html create mode 100644 src/badge/snippets/badge-on-text-icon.html create mode 100644 src/badge/snippets/badge-on-text-text-demo.html create mode 100644 src/badge/snippets/badge-on-text-text.html create mode 100755 src/button/README.md create mode 100644 src/button/_button.scss create mode 100644 src/button/button.js create mode 100644 src/button/snippets/fab-colored-ripple.html create mode 100644 src/button/snippets/fab-colored.html create mode 100644 src/button/snippets/fab-disabled.html create mode 100644 src/button/snippets/fab-mini-colored.html create mode 100644 src/button/snippets/fab-mini.html create mode 100644 src/button/snippets/fab-ripple.html create mode 100644 src/button/snippets/fab.html create mode 100644 src/button/snippets/flat-accent.html create mode 100644 src/button/snippets/flat-disabled.html create mode 100644 src/button/snippets/flat-primary.html create mode 100644 src/button/snippets/flat-ripple.html create mode 100644 src/button/snippets/flat.html create mode 100644 src/button/snippets/icon-colored.html create mode 100644 src/button/snippets/icon.html create mode 100644 src/button/snippets/raised-accent.html create mode 100644 src/button/snippets/raised-colored.html create mode 100644 src/button/snippets/raised-disabled.html create mode 100644 src/button/snippets/raised-ripple-accent.html create mode 100644 src/button/snippets/raised-ripple.html create mode 100644 src/button/snippets/raised.html create mode 100755 src/card/README.md create mode 100644 src/card/_card.scss create mode 100644 src/card/snippets/event.html create mode 100644 src/card/snippets/image.html create mode 100644 src/card/snippets/square.html create mode 100644 src/card/snippets/wide.html create mode 100755 src/checkbox/README.md create mode 100644 src/checkbox/_checkbox.scss create mode 100644 src/checkbox/checkbox.js create mode 100644 src/checkbox/snippets/check-off.html create mode 100644 src/checkbox/snippets/check-on.html create mode 100644 src/data-table/README.md create mode 100644 src/data-table/_data-table.scss create mode 100644 src/data-table/data-table.js create mode 100644 src/data-table/snippets/data-table.html create mode 100644 src/demos.css create mode 100755 src/footer/README.md create mode 100644 src/footer/_mega_footer.scss create mode 100644 src/footer/_mini_footer.scss create mode 100644 src/footer/snippets/mega-footer.html create mode 100644 src/footer/snippets/mini-footer.html create mode 100644 src/grid/README.md create mode 100644 src/grid/_grid.scss create mode 100644 src/grid/snippets/codepen-grid.css create mode 100644 src/grid/snippets/grid-demo.html create mode 100644 src/grid/snippets/grid.html create mode 100755 src/icon-toggle/README.md create mode 100644 src/icon-toggle/_icon-toggle.scss create mode 100644 src/icon-toggle/icon-toggle.js create mode 100644 src/icon-toggle/snippets/icon-off.html create mode 100644 src/icon-toggle/snippets/icon-on.html create mode 100644 src/images/buffer.svg create mode 100644 src/images/tick-mask.svg create mode 100644 src/images/tick.svg create mode 100644 src/index.html create mode 100644 src/layout/README.md create mode 100644 src/layout/_layout.scss create mode 100644 src/layout/layout.js create mode 100644 src/layout/snippets/fixed-drawer-demo.html create mode 100644 src/layout/snippets/fixed-drawer.html create mode 100644 src/layout/snippets/fixed-header-demo.html create mode 100644 src/layout/snippets/fixed-header-drawer-demo.html create mode 100644 src/layout/snippets/fixed-header-drawer.html create mode 100644 src/layout/snippets/fixed-header.html create mode 100644 src/layout/snippets/fixed-tabs-demo.html create mode 100644 src/layout/snippets/fixed-tabs.html create mode 100644 src/layout/snippets/scrollable-tabs-demo.html create mode 100644 src/layout/snippets/scrollable-tabs.html create mode 100644 src/layout/snippets/scrolling-header-demo.html create mode 100644 src/layout/snippets/scrolling-header.html create mode 100644 src/layout/snippets/transparent-demo.html create mode 100644 src/layout/snippets/transparent.html create mode 100644 src/layout/snippets/waterfall-header-demo.html create mode 100644 src/layout/snippets/waterfall-header.html create mode 100644 src/material-design-lite-grid.scss create mode 100644 src/material-design-lite.scss create mode 100644 src/mdlComponentHandler.js create mode 100755 src/menu/README.md create mode 100644 src/menu/_menu.scss create mode 100644 src/menu/menu.js create mode 100644 src/menu/snippets/codepen-lower-buttons.css create mode 100644 src/menu/snippets/codepen-top-buttons.css create mode 100644 src/menu/snippets/lower-left-demo.html create mode 100644 src/menu/snippets/lower-left.html create mode 100644 src/menu/snippets/lower-right-demo.html create mode 100644 src/menu/snippets/lower-right.html create mode 100644 src/menu/snippets/top-left-demo.html create mode 100644 src/menu/snippets/top-left.html create mode 100644 src/menu/snippets/top-right-demo.html create mode 100644 src/menu/snippets/top-right.html create mode 100644 src/palette/_palette.scss create mode 100644 src/palette/demo.css create mode 100644 src/palette/demo.html create mode 100755 src/progress/README.md create mode 100644 src/progress/_progress.scss create mode 100644 src/progress/progress.js create mode 100644 src/progress/snippets/progress-buffering-demo.html create mode 100644 src/progress/snippets/progress-buffering.html create mode 100644 src/progress/snippets/progress-default-demo.html create mode 100644 src/progress/snippets/progress-default.html create mode 100644 src/progress/snippets/progress-indeterminate-demo.html create mode 100644 src/progress/snippets/progress-indeterminate.html create mode 100755 src/radio/README.md create mode 100644 src/radio/_radio.scss create mode 100644 src/radio/radio.js create mode 100644 src/radio/snippets/radio-off.html create mode 100644 src/radio/snippets/radio-on.html create mode 100644 src/resets/_h5bp.scss create mode 100644 src/resets/_mobile.scss create mode 100644 src/resets/_resets.scss create mode 100644 src/ripple/_ripple.scss create mode 100644 src/ripple/ripple.js create mode 100644 src/shadow/README.md create mode 100644 src/shadow/_shadow.scss create mode 100644 src/shadow/demo.css create mode 100644 src/shadow/demo.html create mode 100755 src/slider/README.md create mode 100644 src/slider/_slider.scss create mode 100644 src/slider/slider.js create mode 100644 src/slider/snippets/demo.html create mode 100644 src/slider/snippets/slider-default-demo.html create mode 100644 src/slider/snippets/slider-default.html create mode 100644 src/slider/snippets/slider-starting-value-demo.html create mode 100644 src/slider/snippets/slider-starting-value.html create mode 100755 src/spinner/README.md create mode 100644 src/spinner/_spinner.scss create mode 100644 src/spinner/snippets/spinner-default.html create mode 100644 src/spinner/snippets/spinner-single-color.html create mode 100644 src/spinner/spinner.js create mode 100644 src/styleguide.scss create mode 100755 src/switch/README.md create mode 100644 src/switch/_switch.scss create mode 100644 src/switch/snippets/switch-off.html create mode 100644 src/switch/snippets/switch-on.html create mode 100644 src/switch/switch.js create mode 100755 src/tabs/README.md create mode 100644 src/tabs/_tabs.scss create mode 100644 src/tabs/snippets/tabs.html create mode 100644 src/tabs/tabs.js create mode 100644 src/template.scss create mode 100755 src/textfield/README.md create mode 100644 src/textfield/_textfield.scss create mode 100644 src/textfield/snippets/textfield-expanding-demo.html create mode 100644 src/textfield/snippets/textfield-expanding.html create mode 100644 src/textfield/snippets/textfield-floating-numeric-demo.html create mode 100644 src/textfield/snippets/textfield-floating-numeric.html create mode 100644 src/textfield/snippets/textfield-floating-text-demo.html create mode 100644 src/textfield/snippets/textfield-floating-text.html create mode 100644 src/textfield/snippets/textfield-multi-line-demo.html create mode 100644 src/textfield/snippets/textfield-multi-line.html create mode 100644 src/textfield/snippets/textfield-numeric-demo.html create mode 100644 src/textfield/snippets/textfield-numeric.html create mode 100644 src/textfield/snippets/textfield-text-demo.html create mode 100644 src/textfield/snippets/textfield-text.html create mode 100644 src/textfield/textfield.js create mode 100644 src/third_party/rAF.js create mode 100755 src/tooltip/README.md create mode 100644 src/tooltip/_tooltip.scss create mode 100644 src/tooltip/snippets/tooltip-large.html create mode 100644 src/tooltip/snippets/tooltip-multiline.html create mode 100644 src/tooltip/snippets/tooltip-rich.html create mode 100644 src/tooltip/snippets/tooltip-simple.html create mode 100644 src/tooltip/tooltip.js create mode 100755 src/typography/README.md create mode 100644 src/typography/_typography.scss create mode 100644 src/typography/demo.css create mode 100644 src/typography/demo.html create mode 100644 utils/uniffe.js diff --git a/.jscsrc b/.jscsrc new file mode 100644 index 000000000..3a2574546 --- /dev/null +++ b/.jscsrc @@ -0,0 +1,10 @@ +{ + "preset": "google", + "disallowSpacesInAnonymousFunctionExpression": null, + "validateLineBreaks": "LF", + "validateIndentation": 2, + "excludeFiles": ["node_modules/**"], + "maximumLineLength": 130, + "requireCamelCaseOrUpperCaseIdentifiers": true, + "validateQuoteMarks": "'" +} diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 000000000..30852f388 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,17 @@ +{ + "node": true, + "browser": true, + "esnext": true, + "bitwise": true, + "curly": true, + "eqeqeq": true, + "immed": true, + "newcap": true, + "noarg": true, + "undef": true, + "unused": "vars", + "strict": true, + "globals": { + "componentHandler": true + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..9faf10865 --- /dev/null +++ b/LICENSE @@ -0,0 +1,212 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2015 Google Inc + + 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. + + All code in any directories or sub-directories that end with *.html or + *.css is licensed under the Creative Commons Attribution International + 4.0 License, which full text can be found here: + https://creativecommons.org/licenses/by/4.0/legalcode. + + As an exception to this license, all html or css that is generated by + the software at the direction of the user is copyright the user. The + user has full ownership and control over such content, including + whether and how they wish to license it. diff --git a/README.md b/README.md new file mode 100644 index 000000000..f6e3514f2 --- /dev/null +++ b/README.md @@ -0,0 +1,146 @@ +# Material Design Lite + +> An implementation of [Material Design](http://www.google.com/design/spec/material-design/introduction.html) +components in vanilla CSS, JS, and HTML + +Material Design Lite (MDL) lets you add a Material Design look and feel to your +static content websites. It doesn't rely on any JavaScript frameworks or +libraries. Optimized for cross-device use, gracefully degrades in older +browsers, and offers an experience that is accessible from the get-go. + + +## Use MDL on your site? + +**This document is targeted at developers that will contribute to or compile +MDL. If you are looking to use MDL on your website or web app please head to +[getmdl.io](http://getmdl.io).** + +## Browser Support + +| IE9 | IE10 | IE11 | Chrome | Opera | Firefox | Safari | Chrome (Android) | Mobile Safari | +|-----|------|------|--------|-------|---------|--------|------------------|---------------| +| B | A | A | A | A | A | A | A | A | + +A-grade browsers are fully supported. B-grade browsers will gracefully degrade +to our CSS-only experience. + +## Getting Started + +### Download / Clone + +Clone the repo using Git: + +```bash +git clone https://github.com/google/material-design-lite.git +``` + +Alternatively you can [download](https://github.com/google/material-design-lite/archive/master.zip) +this repository. + +Windows users, if you have trouble compiling due to line endings then make sure you configure git to checkout the repository with `lf` (unix) line endings. This can be achieved by setting `core.eol`. + +``` +git config core.eol lf +git config core.autocrlf input +git rm --cached -r . +git reset --hard +``` + +> Remember, the master branch is considered unstable. Do not use this in production. Use a tagged state of the repository, npm, or bower for stability! + +### What's included + +In the repo you'll find the following directories and files. + +| File/Folder | Provides | +|-----------------|------------------------------------------------| +| CONTRIBUTING.md | MDL contribution guidelines. | +| docs | Files for the documentation site. | +| gulpfile.js | gulp configuration for MDL. | +| LICENSE | Project license information. | +| package.json | npm package information. | +| README.md | Details for quickly understanding the project. | +| src | Source code for MDL components. | +| templates | Example templates. | +| test | Project test files. | + +### Build + +To get started modifying the components or the docs, first install the necessary +dependencies, from the root of the project: + +```bash +npm install && npm install -g gulp +``` + +> MDL requires NodeJS 0.12. + +Next, run the following one-liner to compile the components and the docs and +spawn a local instance of the documentation site: + +```bash +gulp all && gulp serve +``` + +Most changes made to files inside the `src` or the `docs` directory will cause +the page to reload. This page can also be loaded up on physical devices thanks +to BrowserSync. + +To build a production version of the components, run: + +```bash +gulp +``` + +This will clean the `dist` folder and rebuild the assets for serving. + + +### Templates + +The `templates/` subdirectory contains a few exemplary usages of MDL. Templates +have their own, quasi-separate gulp pipeline and can be compiled with +`gulp templates`. The templates use the vanilla MDL JS and +[themed](http://www.getmdl.io/customize/index.html) CSS files. Extraneous styles +are kept in a separate CSS file. Use `gulp serve` to take a look at the +templates: + +* [Blog Template](http://www.getmdl.io/templates/blog) +* [Dashboard Template](http://www.getmdl.io/templates/dashboard) +* [Text Heavy Webpage Template](http://www.getmdl.io/templates/text-only) +* [Stand Alone Article Template](http://www.getmdl.io/templates/article) +* [Android.com MDL Skin Template](http://www.getmdl.io/templates/android-dot-com) + +> Templates are not officially supported in IE9 and legacy browsers that do not +pass the minimum-requirements defined in our +[cutting-the-mustard test](https://github.com/google/material-design-lite/blob/87c48c22416c3e83850f7711365b2a43ba19c5ce/src/mdlComponentHandler.js#L336-L349). + +## Versioning + +For transparency into our release cycle and in striving to maintain backward +compatibility, Material Design Lite is maintained under +[the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, +but we'll adhere to those rules whenever possible. + +## Feature requests + +If you find MDL doesn't contain a particular component you think would be +useful, please check the issue tracker in case work has already started on it. +If not, you can request a [new component](https://github.com/Google/material-design-lite/issues/new?title=[Component%20Request]%20{Component}&body=Please%20include:%0A*%20Description%0A*%20Material%20Design%20Spec%20link%0A*%20Use%20Case%28s%29). +Please keep in mind that one of the goals of MDL is to adhere to the Material +Design specs and therefore some requests might not be within the scope of this +project. + +## Want to contribute? +If you found a bug, have any questions or want to contribute. Follow our [guidelines](https://github.com/google/material-design-lite/blob/master/CONTRIBUTING.md), and help improve the Material Design Lite. For more information visit our [wiki](https://github.com/google/material-design-lite/wiki). + +## Do you include any features that a framework comes with? + +Material Design Lite is focused on delivering a vanilla CSS/JS/HTML library of +components. We are not a framework. If you are building a single-page app and +require features like two-way data-binding, templating, CSS scoping and so +forth, we recommend trying out the excellent [Polymer](http://polymer-project.org) project. + + +## License + +© Google, 2015. Licensed under an [Apache-2](https://github.com/google/material-design-lite/blob/master/LICENSE) license. diff --git a/bower.json b/bower.json new file mode 100644 index 000000000..a936f7071 --- /dev/null +++ b/bower.json @@ -0,0 +1,29 @@ +{ + "name": "material-design-lite", + "version": "1.0.4", + "homepage": "https://github.com/google/material-design-lite", + "authors": [ + "Material Design Lite team" + ], + "description": "Material Design Components in CSS, JS and HTML", + "main": [ + "material.min.css", + "material.min.js" + ], + "keywords": [ + "material", + "design", + "styleguide", + "style", + "guide" + ], + "license": "Apache-2", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "./lib/.bower_components", + "test", + "tests" + ] +} diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 000000000..771d63889 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,739 @@ +/** + * + * Material Design Lite + * 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 + * + * https://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 + * + */ + +'use strict'; + +// Include Gulp & Tools We'll Use +var gulp = require('gulp'); +var fs = require('fs'); +var merge = require('merge-stream'); +var $ = require('gulp-load-plugins')(); +var uniffe = require('./utils/uniffe.js'); +var del = require('del'); +var vinylPaths = require('vinyl-paths'); +var runSequence = require('run-sequence'); +var browserSync = require('browser-sync'); +var codeFiles = ''; +var reload = browserSync.reload; +var path = require('path'); +var pkg = require('./package.json'); +var through = require('through2'); +var swig = require('swig'); +var hostedLibsUrlPrefix = 'https://storage.googleapis.com/code.getmdl.io'; +var bucketProd = 'gs://www.getmdl.io'; +var bucketStaging = 'gs://mdl-staging'; +var bucketCode = 'gs://code.getmdl.io'; +var banner = ['/**', + ' * <%= pkg.name %> - <%= pkg.description %>', + ' * @version v<%= pkg.version %>', + ' * @license <%= pkg.license %>', + ' * @copyright 2015 Google, Inc.', + ' * @link https://github.com/google/material-design-lite', + ' */', + ''].join('\n'); + +var AUTOPREFIXER_BROWSERS = [ + 'ie >= 10', + 'ie_mob >= 10', + 'ff >= 30', + 'chrome >= 34', + 'safari >= 7', + 'opera >= 23', + 'ios >= 7', + 'android >= 4.4', + 'bb >= 10' +]; + +// ***** Development tasks ****** // + +// Lint JavaScript +gulp.task('jshint', function() { + return gulp.src(['src/**/*.js' , 'gulpfile.js']) + .pipe(reload({stream: true, once: true})) + .pipe($.jshint()) + .pipe($.jshint.reporter('jshint-stylish')) + .pipe($.if(!browserSync.active, $.jshint.reporter('fail'))); +}); + +// Lint JavaScript code style +gulp.task('jscs', function() { + return gulp.src(['src/**/*.js' , 'gulpfile.js']) + .pipe(reload({stream: true, once: true})) + .pipe($.jscs()) + .pipe($.if(!browserSync.active, $.jshint.reporter('fail'))); +}); + +// ***** Production build tasks ****** // + +// Optimize Images +// TODO: Update image paths in final CSS to match root/images +gulp.task('images', function() { + return gulp.src('src/**/*.{svg,png,jpg}') + .pipe($.flatten()) + .pipe($.cache($.imagemin({ + progressive: true, + interlaced: true + }))) + .pipe(gulp.dest('dist/images')) + .pipe($.size({title: 'images'})); +}); + +// Compile and Automatically Prefix Stylesheets (dev) +gulp.task('styles:dev', function() { + return gulp.src([ + 'src/**/*.scss' + ]) + .pipe($.sass({ + precision: 10, + onError: console.error.bind(console, 'Sass error:') + })) + .pipe($.cssInlineImages({ + webRoot: 'src' + })) + .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS)) + .pipe(gulp.dest('.tmp/styles')) + .pipe($.size({title: 'styles'})); +}); + +// Compile and Automatically Prefix Stylesheet Templates (production) +gulp.task('styletemplates', function() { + // For best performance, don't add Sass partials to `gulp.src` + return gulp.src([ + 'src/template.scss' + ]) + // Generate Source Maps + .pipe($.sourcemaps.init()) + .pipe($.sass({ + precision: 10, + onError: console.error.bind(console, 'Sass error:') + })) + .pipe($.cssInlineImages({ + webRoot: 'src' + })) + .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS)) + .pipe(gulp.dest('.tmp')) + // Concatenate Styles + .pipe($.concat('material.css.template')) + .pipe(gulp.dest('./dist')) + // Minify Styles + .pipe($.if('*.css.template', $.csso())) + .pipe($.concat('material.min.css.template')) + .pipe($.header(banner, {pkg: pkg})) + .pipe($.sourcemaps.write('./')) + .pipe(gulp.dest('./dist')) + .pipe($.size({title: 'styles'})); +}); + +// Compile and Automatically Prefix Stylesheets (production) +gulp.task('styles', function() { + // For best performance, don't add Sass partials to `gulp.src` + return gulp.src([ + 'src/material-design-lite.scss' + ]) + // Generate Source Maps + .pipe($.sourcemaps.init()) + .pipe($.sass({ + precision: 10, + onError: console.error.bind(console, 'Sass error:') + })) + .pipe($.cssInlineImages({ + webRoot: 'src' + })) + .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS)) + .pipe(gulp.dest('.tmp')) + // Concatenate Styles + .pipe($.concat('material.css')) + .pipe($.header(banner, {pkg: pkg})) + .pipe(gulp.dest('./dist')) + // Minify Styles + .pipe($.if('*.css', $.csso())) + .pipe($.concat('material.min.css')) + .pipe($.header(banner, {pkg: pkg})) + .pipe($.sourcemaps.write('./')) + .pipe(gulp.dest('./dist')) + .pipe($.size({title: 'styles'})); +}); + +// Only generate CSS styles for the MDL grid +gulp.task('styles-grid', function() { + return gulp.src(['src/material-design-lite-grid.scss']) + .pipe($.sass({ + precision: 10, + onError: console.error.bind(console, 'Sass error:') + })) + .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS)) + .pipe(gulp.dest('.tmp')) + // Concatenate Styles + .pipe($.concat('material-grid.css')) + .pipe($.header(banner, {pkg: pkg})) + .pipe(gulp.dest('./dist')) + // Minify Styles + .pipe($.if('*.css', $.csso())) + .pipe($.concat('material-grid.min.css')) + .pipe($.header(banner, {pkg: pkg})) + .pipe(gulp.dest('./dist')) + .pipe($.size({title: 'styles-grid'})); +}); + +// Concatenate And Minify JavaScript +gulp.task('scripts', ['jscs', 'jshint'], function() { + var sources = [ + // Component handler + 'src/mdlComponentHandler.js', + // Polyfills/dependencies + 'src/third_party/**/*.js', + // Base components + 'src/button/button.js', + 'src/checkbox/checkbox.js', + 'src/icon-toggle/icon-toggle.js', + 'src/menu/menu.js', + 'src/progress/progress.js', + 'src/radio/radio.js', + 'src/slider/slider.js', + 'src/spinner/spinner.js', + 'src/switch/switch.js', + 'src/tabs/tabs.js', + 'src/textfield/textfield.js', + 'src/tooltip/tooltip.js', + // Complex components (which reuse base components) + 'src/layout/layout.js', + 'src/data-table/data-table.js', + // And finally, the ripples + 'src/ripple/ripple.js' + ]; + return gulp.src(sources) + .pipe(uniffe()) + .pipe($.sourcemaps.init()) + // Concatenate Scripts + .pipe($.concat('material.js')) + .pipe($.iife({ + useStrict: true, + })) + .pipe(gulp.dest('./dist')) + // Minify Scripts + .pipe($.uglify({ + sourceRoot: '.', + sourceMapIncludeSources: true + })) + .pipe($.header(banner, {pkg: pkg})) + .pipe($.concat('material.min.js')) + // Write Source Maps + .pipe($.sourcemaps.write('./')) + .pipe(gulp.dest('./dist')) + .pipe($.size({title: 'scripts'})); +}); + +// Clean Output Directory +gulp.task('clean', del.bind(null, ['dist', '.publish'], {dot: true})); + +// Copy package manger and LICENSE files to dist +gulp.task('metadata', function() { + return gulp.src(['package.json', 'bower.json', 'LICENSE']) + .pipe(gulp.dest('./dist')); +}); + +// Build Production Files, the Default Task +gulp.task('default', ['clean', 'mocha'], function(cb) { + runSequence( + ['styles', 'styles-grid'], + ['scripts'], + cb); +}); + +// Build production files and microsite +gulp.task('all', ['clean', 'mocha'], function(cb) { + runSequence( + ['default', 'styletemplates'], + ['styles:gen'], + ['jshint', 'jscs', 'scripts', 'assets', 'demos', 'pages', + 'templates', 'images', 'styles-grid', 'metadata'], + ['zip'], + cb); +}); + +// ***** Testing tasks ***** // + +gulp.task('mocha', ['styles'], function() { + return gulp.src('./test/index.html') + .pipe($.mochaPhantomjs({reporter: 'tap'})); +}); + +gulp.task('test', ['jshint', 'jscs', 'mocha']); + +gulp.task('test:visual', function() { + browserSync({ + notify: false, + server: './', + startPath: 'test/visual/index.html' + }); + + gulp.watch(['test/visual/**'], reload); +}); + +// ***** Landing page tasks ***** // + +/** + * Site metadata for use with templates. + * @type {Object} + */ +var site = {}; + +/** + * Generates an HTML file based on a template and file metadata. + */ +function applyTemplate() { + return through.obj(function(file, enc, cb) { + var data = { + site: site, + page: file.page, + content: file.contents.toString() + }; + + var templateFile = path.join( + __dirname, 'docs', '_templates', file.page.layout + '.html'); + var tpl = swig.compileFile(templateFile, {cache: false}); + file.contents = new Buffer(tpl(data), 'utf8'); + this.push(file); + cb(); + }); +} + +/** + * Generates an index.html file for each README in MDL/src directory. + */ +gulp.task('components', ['demos'], function() { + return gulp.src(['./src/**/README.md'], {base: './src'}) + // Add basic front matter. + .pipe($.header('---\nlayout: component\nbodyclass: component\ninclude_prefix: ../../\n---\n\n')) + .pipe($.frontMatter({property: 'page', remove: true})) + .pipe($.marked()) + .pipe((function() { + return through.obj(function(file, enc, cb) { + file.page.component = file.relative.split('/')[0]; + this.push(file); + cb(); + }); + })()) + .pipe(applyTemplate()) + .pipe($.rename(function(path) { + path.basename = 'index'; + })) + .pipe(gulp.dest('dist/components')); +}); + +/** + * Copies demo files from MDL/src directory. + */ +gulp.task('demoresources', function() { + return gulp.src([ + './src/**/demos.css', + './src/**/demo.css', + './src/**/demo.js' + ], {base: './src'}) + .pipe($.if('*.scss', $.sass({ + precision: 10, + onError: console.error.bind(console, 'Sass error:') + }))) + .pipe($.cssInlineImages({ + webRoot: 'src' + })) + .pipe($.if('*.css', $.autoprefixer(AUTOPREFIXER_BROWSERS))) + .pipe(gulp.dest('dist/components')); +}); + +/** + * Generates demo files for testing made of all the snippets and the demo file + * put together. + */ +gulp.task('demos', ['demoresources'], function() { + function getComponentFolders() { + return fs.readdirSync('./src/') + .filter(function(file) { + return fs.statSync(path.join('./src/', file)).isDirectory(); + }); + } + + var tasks = getComponentFolders().map(function(component) { + return gulp.src([ + './src/' + component + '/snippets/*.html', + './src/' + component + '/demo.html' + ]) + .pipe($.concat('/demo.html')) + // Add basic front matter. + .pipe($.header('---\nlayout: demo\nbodyclass: demo\ninclude_prefix: ../../\n---\n\n')) + .pipe($.frontMatter({property: 'page', remove: true})) + .pipe($.marked()) + .pipe((function() { + return through.obj(function(file, enc, cb) { + file.page.component = component; + this.push(file); + cb(); + }); + })()) + .pipe(applyTemplate()) + .pipe(gulp.dest('dist/components/' + component)); + }); + + return merge(tasks); +}); + +/** + * Generates an HTML file for each md file in _pages directory. + */ +gulp.task('pages', ['components'], function() { + return gulp.src(['docs/_pages/*.md']) + .pipe($.frontMatter({property: 'page', remove: true})) + .pipe($.marked()) + .pipe(applyTemplate()) + .pipe($.replace('$$version$$', pkg.version)) + .pipe($.replace('$$hosted_libs_prefix$$', hostedLibsUrlPrefix)) + /* Replacing code blocks class name to match Prism's. */ + .pipe($.replace('class="lang-', 'class="language-')) + /* Translate html code blocks to "markup" because that's what Prism uses. */ + .pipe($.replace('class="language-html', 'class="language-markup')) + .pipe($.rename(function(path) { + if (path.basename !== 'index') { + path.dirname = path.basename; + path.basename = 'index'; + } + })) + .pipe(gulp.dest('dist')); +}); + +/** + * Copies assets from MDL and _assets directory. + */ +gulp.task('assets', function() { + return gulp.src([ + 'docs/_assets/**/*', + 'node_modules/clippy/build/clippy.swf', + 'node_modules/swfobject-npm/swfobject/src/swfobject.js', + 'node_modules/prismjs/prism.js', + 'node_modules/prismjs/components/prism-markup.min.js', + 'node_modules/prismjs/components/prism-javascript.min.js', + 'node_modules/prismjs/components/prism-css.min.js', + 'node_modules/prismjs/components/prism-bash.min.js', + 'node_modules/prismjs/dist/prism-default/prism-default.css' + ]) + .pipe($.if(/\.js/i, $.replace('$$version$$', pkg.version))) + .pipe($.if(/\.js/i, $.replace('$$hosted_libs_prefix$$', hostedLibsUrlPrefix))) + .pipe($.if(/\.(svg|jpg|png)$/i, $.imagemin({ + progressive: true, + interlaced: true + }))) + .pipe($.if(/\.css/i, $.autoprefixer(AUTOPREFIXER_BROWSERS))) + .pipe($.if(/\.css/i, $.csso())) + .pipe($.if(/\.js/i, $.uglify({preserveComments: 'some', sourceRoot: '.', + sourceMapIncludeSources: true}))) + .pipe(gulp.dest('dist/assets')); +}); + +function watch() { + gulp.watch(['src/**/*.js', '!src/**/README.md'], + ['scripts', 'demos', 'components', reload]); + gulp.watch(['src/**/*.{scss,css}'], + ['styles', 'styles-grid', 'styletemplates', reload]); + gulp.watch(['src/**/*.html'], ['pages', reload]); + gulp.watch(['src/**/*.{svg,png,jpg}'], ['images', reload]); + gulp.watch(['src/**/README.md'], ['pages', reload]); + gulp.watch(['templates/**/*'], ['templates', reload]); + gulp.watch(['docs/**/*'], ['pages', 'assets', reload]); + gulp.watch(['package.json', 'bower.json', 'LICENSE'], ['metadata']); +} + +/** + * Serves the landing page from "out" directory. + */ +gulp.task('serve:browsersync', function() { + browserSync({ + notify: false, + server: { + baseDir: ['dist'] + } + }); + + watch(); +}); + +gulp.task('serve', function() { + $.connect.server({ + root: 'dist', + port: 5000, + livereload: true + }); + + watch(); + + gulp.src('./dist/index.html') + .pipe($.open('', {url: 'http://localhost:5000'})); +}); + +// Generate release archive containing just JS, CSS, Source Map deps +gulp.task('zip:mdl', function() { + return gulp.src(['dist/material?(.min)@(.js|.css)?(.map)', 'LICENSE', 'bower.json', 'package.json']) + .pipe($.zip('mdl.zip')) + .pipe(gulp.dest('dist')); +}); + +// Generate release archive containing the library, templates and assets +// for templates. Note that it is intentional for some templates to include +// a customised version of the material.min.css file for their own needs. +// Others (e.g the Android template) simply use the default built version of +// the library. + +// Define a filter containing only the build assets we want to pluck from the +// `dist` stream. This enables us to preserve the correct final dir structure, +// which was not occurring when simply using `gulp.src` in `zip:templates` + +var fileFilter = $.filter([ + 'material?(.min)@(.js|.css)?(.map)', + 'templates/**/*.*', + 'assets/**/*.*', + 'LICENSE', + 'bower.json', + 'package.json']); + +gulp.task('zip:templates', function() { + // Stream of all `dist` files and other package manager files from root + return gulp.src(['dist/**/*.*', 'LICENSE', 'bower.json', 'package.json']) + .pipe(fileFilter) + .pipe($.zip('mdl-templates.zip')) + .pipe(fileFilter.restore()) + .pipe(gulp.dest('dist')); +}); + +gulp.task('zip', ['zip:templates', 'zip:mdl']); + +gulp.task('genCodeFiles', function() { + return gulp.src(['dist/material.*@(js|css)?(.map)', 'dist/mdl.zip', 'dist/mdl-templates.zip'], + {read: false}) + .pipe($.tap(function(file, t) { + codeFiles += ' dist/' + path.basename(file.path); + })); +}); + +// Push the latest version of code resources (CSS+JS) to Google Cloud Storage. +// Public-read objects in GCS are served by a Google provided and supported +// global, high performance caching/content delivery network (CDN) service. +// This task requires gsutil to be installed and configured. +// For info on gsutil: https://cloud.google.com/storage/docs/gsutil. +gulp.task('pushCodeFiles', function() { + var dest = bucketCode; + process.stdout.write('Publishing ' + pkg.version + ' to CDN (' + dest + ')\n'); + + // Build cache control and gsutil cmd to copy + // each object into a GCS bucket. The dest is a version specific path. + // The gsutil -m option requests parallel copies. + // The gsutil -h option is used to set metadata headers + // (cache control, in this case). + // For cache control, start with 0s (disable caching during dev), + // but consider more helpful interval (e.g. 3600s) after launch. + var cacheControl = '-h "Cache-Control:public,max-age=3600"'; + var gsutilCpCmd = 'gsutil -m cp -z js,css,map '; + var gsutilCacheCmd = 'gsutil -m setmeta -R ' + cacheControl; + + // Upload the goodies to a separate GCS bucket with versioning. + // Using a sep bucket avoids the risk of accidentally blowing away + // old versions in the microsite bucket. + return gulp.src('') + .pipe($.shell([ + gsutilCpCmd + codeFiles + ' ' + dest + '/' + pkg.version, + gsutilCacheCmd + ' ' + dest + '/' + pkg.version + ])); +}); + +gulp.task('publish:code', function(cb) { + runSequence( + ['zip:mdl', 'zip:templates'], + 'genCodeFiles', + 'pushCodeFiles', + cb); +}); + +// Function to publish staging or prod version from local tree, +// or to promote staging to prod, per passed arg. +function mdlPublish(pubScope) { + var cacheTtl = null; + var src = null; + var dest = null; + if (pubScope === 'staging') { + // Set staging specific vars here. + cacheTtl = 0; + src = 'dist/*'; + dest = bucketStaging; + } else if (pubScope === 'prod') { + // Set prod specific vars here. + cacheTtl = 60; + src = 'dist/*'; + dest = bucketProd; + } else if (pubScope === 'promote') { + // Set promote (essentially prod) specific vars here. + cacheTtl = 60; + src = bucketStaging + '/*'; + dest = bucketProd; + } + + var infoMsg = 'Publishing ' + pubScope + '/' + pkg.version + ' to GCS (' + dest + ')'; + if (src) { + infoMsg += ' from ' + src; + } + process.stdout.write(infoMsg + '\n'); + + // Build gsutil commands: + // The gsutil -h option is used to set metadata headers. + // The gsutil -m option requests parallel copies. + // The gsutil -R option is used for recursive file copy. + var cacheControl = '-h "Cache-Control:public,max-age=' + cacheTtl + '"'; + var gsutilCacheCmd = 'gsutil -m setmeta ' + cacheControl + ' ' + dest + '/**'; + var gsutilCpCmd = 'gsutil -m cp -r -z html,css,js,svg ' + src + ' ' + dest; + + gulp.src('').pipe($.shell([gsutilCpCmd, gsutilCacheCmd])); +} + +// Push the local build of the MDL microsite and release artifacts to the +// production Google Cloud Storage bucket for general serving to the web. +// Public-read objects in GCS are served by a Google provided and supported +// global, high performance caching/content delivery network (CDN) service. +// This task requires gsutil to be installed and configured. +// For info on gsutil: https://cloud.google.com/storage/docs/gsutil. +// +gulp.task('publish:prod', function() { + mdlPublish('prod'); +}); + +// Promote the staging version of the MDL microsite and release artifacts +// to the production Google Cloud Storage bucket for general serving. +// Public-read objects in GCS are served by a Google provided and supported +// global, high performance caching/content delivery network (CDN) service. +// This task requires gsutil to be installed and configured. +// For info on gsutil: https://cloud.google.com/storage/docs/gsutil. +// +gulp.task('publish:promote', function() { + mdlPublish('promote'); +}); + +// Push the staged version of the MDL microsite and release artifacts +// to a production Google Cloud Storage bucket for staging and pre-production testing. +// +// This task requires gsutil to be installed and configured. +// For info on gsutil: https://cloud.google.com/storage/docs/gsutil. +// +gulp.task('publish:staging', function() { + mdlPublish('staging'); +}); + +gulp.task('templates:mdl', function() { + return gulp.src([ + 'templates/**/*.scss' + ]) + .pipe($.sass({ + precision: 10, + onError: console.error.bind(console, 'Sass error:') + })) + .pipe($.cssInlineImages({ + webRoot: 'src' + })) + .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS)) + .pipe($.csso()) + .pipe($.rename({suffix: '.min'})) + .pipe(gulp.dest('dist/templates')); +}); + +gulp.task('_release', function() { + return gulp.src(['dist/material?(.min)@(.js|.css)?(.map)', 'LICENSE', + 'README.md', 'bower.json', 'package.json', '.jscsrc', '.jshintrc', + './sr?/**/*', 'gulpfile.js', './util?/**/*']) + .pipe(gulp.dest('_release')); +}); + +gulp.task('publish:release', ['_release'], function() { + return gulp.src('_release') + .pipe($.subtree({ + remote: 'origin', + branch: 'release' + })) + .pipe(vinylPaths(del)); +}); + +gulp.task('templates:styles', function() { + return gulp.src([ + 'templates/**/*.css' + ]) + .pipe($.autoprefixer(AUTOPREFIXER_BROWSERS)) + // FIXME: This crashes. It's a bug in gulp-csso, + // not csso itself. + //.pipe($.csso()) + .pipe(gulp.dest('dist/templates')); +}); + +gulp.task('templates:static', function() { + return gulp.src([ + 'templates/**/*.html', + ]) + .pipe(gulp.dest('dist/templates')); +}); + +gulp.task('templates:images', function() { + return gulp.src([ + 'templates/*/images/**/*' + ]) + .pipe($.cache($.imagemin({ + progressive: true, + interlaced: true + }))) + .pipe(gulp.dest('dist/templates')); +}); + +gulp.task('templates:fonts', function() { + return gulp.src([ + 'templates/*/fonts/**/*' + ]) + .pipe(gulp.dest('dist/templates/')); +}); + +gulp.task('templates', ['templates:static', 'templates:images', 'templates:mdl', + 'templates:fonts', 'templates:styles']); + +gulp.task('styles:gen', ['styles'], function() { + var MaterialCustomizer = require('./docs/_assets/customizer.js'); + var templatePath = path.join(__dirname, 'dist', 'material.min.css.template'); + // TODO: This task needs refactoring once we turn MaterialCustomizer + // into a proper Node module. + var mc = new MaterialCustomizer(); + mc.template = fs.readFileSync(templatePath).toString(); + + var stream = gulp.src(''); + mc.paletteIndices.forEach(function(primary) { + mc.paletteIndices.forEach(function(accent) { + if (primary === accent) { + return; + } + if (mc.forbiddenAccents.indexOf(accent) !== -1) { + return; + } + var primaryName = primary.toLowerCase().replace(' ', '_'); + var accentName = accent.toLowerCase().replace(' ', '_'); + stream = stream.pipe($.file( + 'material.' + primaryName + '-' + accentName + '.min.css', + mc.processTemplate(primary, accent) + )); + }); + }); + stream.pipe(gulp.dest('dist')); +}); diff --git a/material.css b/material.css new file mode 100644 index 000000000..3ab14ea5f --- /dev/null +++ b/material.css @@ -0,0 +1,9725 @@ +/** + * material-design-lite - Material Design Components in CSS, JS and HTML + * @version v1.0.4 + * @license Apache-2.0 + * @copyright 2015 Google, Inc. + * @link https://github.com/google/material-design-lite + */ +@charset "UTF-8"; +/** + * 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 */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +/** + * 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. + */ +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/* + * 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: rgba(0,0,0, 0.87); + 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. + */ +::-moz-selection { + background: #b3d4fc; + text-shadow: none; } +::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. + ========================================================================== */ +/* ========================================================================== + Print styles. + Inlined to avoid the additional HTTP request: + http://www.phpied.com/delay-loading-your-print-css/ + ========================================================================== */ +@media print { + *, + *:before, + *:after, + *:first-letter, + *:first-line { + background: transparent !important; + color: #000 !important; + /* Black prints faster: http://www.sanbeiji.com/archives/953 */ + box-shadow: none !important; + text-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; } } + +/** + * 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); } + +/* + * 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; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +html, body { + font-family: "Helvetica", "Arial", sans-serif; + 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 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 56px; + font-weight: 400; + line-height: 1.35; + letter-spacing: -0.02em; + opacity: 0.54; + font-size: 0.6em; } + +h1 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 56px; + font-weight: 400; + line-height: 1.35; + letter-spacing: -0.02em; + margin-top: 24px; + margin-bottom: 24px; } + +h2 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 45px; + font-weight: 400; + line-height: 48px; + margin-top: 24px; + margin-bottom: 24px; } + +h3 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 34px; + font-weight: 400; + line-height: 40px; + margin-top: 24px; + margin-bottom: 24px; } + +h4 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 24px; + font-weight: 400; + line-height: 32px; + -moz-osx-font-smoothing: grayscale; + margin-top: 24px; + margin-bottom: 16px; } + +h5 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 20px; + font-weight: 500; + line-height: 1; + letter-spacing: 0.02em; + margin-top: 24px; + margin-bottom: 16px; } + +h6 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0.04em; + margin-top: 24px; + margin-bottom: 16px; } + +p { + font-size: 14px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0; + margin-bottom: 16px; } + +a { + color: rgb(255,64,129); + font-weight: 500; } + +blockquote { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + position: relative; + font-size: 24px; + font-weight: 300; + font-style: italic; + line-height: 1.35; + letter-spacing: 0.08em; } + blockquote:before { + position: absolute; + left: -0.5em; + content: '“'; } + blockquote:after { + content: '”'; + margin-left: -0.05em; } + +mark { + background-color: #f4ff81; } + +dt { + font-weight: 700; } + +address { + font-size: 12px; + font-weight: 400; + line-height: 1; + letter-spacing: 0; + font-style: normal; } + +ul, ol { + font-size: 14px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0; } + +/** + * Class Name Styles + */ +.mdl-typography--display-4 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 112px; + font-weight: 300; + line-height: 1; + letter-spacing: -0.04em; } + +.mdl-typography--display-4-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 112px; + font-weight: 300; + line-height: 1; + letter-spacing: -0.04em; + opacity: 0.54; } + +.mdl-typography--display-3 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 56px; + font-weight: 400; + line-height: 1.35; + letter-spacing: -0.02em; } + +.mdl-typography--display-3-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 56px; + font-weight: 400; + line-height: 1.35; + letter-spacing: -0.02em; + opacity: 0.54; } + +.mdl-typography--display-2 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 45px; + font-weight: 400; + line-height: 48px; } + +.mdl-typography--display-2-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 45px; + font-weight: 400; + line-height: 48px; + opacity: 0.54; } + +.mdl-typography--display-1 { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 34px; + font-weight: 400; + line-height: 40px; } + +.mdl-typography--display-1-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 34px; + font-weight: 400; + line-height: 40px; + opacity: 0.54; } + +.mdl-typography--headline { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 24px; + font-weight: 400; + line-height: 32px; + -moz-osx-font-smoothing: grayscale; } + +.mdl-typography--headline-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 24px; + font-weight: 400; + line-height: 32px; + -moz-osx-font-smoothing: grayscale; + opacity: 0.87; } + +.mdl-typography--title { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 20px; + font-weight: 500; + line-height: 1; + letter-spacing: 0.02em; } + +.mdl-typography--title-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 20px; + font-weight: 500; + line-height: 1; + letter-spacing: 0.02em; + opacity: 0.87; } + +.mdl-typography--subhead { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0.04em; } + +.mdl-typography--subhead-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 16px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0.04em; + opacity: 0.87; } + +.mdl-typography--body-2 { + font-size: 14px; + font-weight: bold; + line-height: 24px; + letter-spacing: 0; } + +.mdl-typography--body-2-color-contrast { + font-size: 14px; + font-weight: bold; + line-height: 24px; + letter-spacing: 0; + opacity: 0.87; } + +.mdl-typography--body-1 { + font-size: 14px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0; } + +.mdl-typography--body-1-color-contrast { + font-size: 14px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0; + opacity: 0.87; } + +.mdl-typography--body-2-force-preferred-font { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 14px; + font-weight: 500; + line-height: 24px; + letter-spacing: 0; } + +.mdl-typography--body-2-force-preferred-font-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 14px; + font-weight: 500; + line-height: 24px; + letter-spacing: 0; + opacity: 0.87; } + +.mdl-typography--body-1-force-preferred-font { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 14px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0; } + +.mdl-typography--body-1-force-preferred-font-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 14px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0; + opacity: 0.87; } + +.mdl-typography--caption { + font-size: 12px; + font-weight: 400; + line-height: 1; + letter-spacing: 0; } + +.mdl-typography--caption-force-preferred-font { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 12px; + font-weight: 400; + line-height: 1; + letter-spacing: 0; } + +.mdl-typography--caption-color-contrast { + font-size: 12px; + font-weight: 400; + line-height: 1; + letter-spacing: 0; + opacity: 0.54; } + +.mdl-typography--caption-force-preferred-font-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 12px; + font-weight: 400; + line-height: 1; + letter-spacing: 0; + opacity: 0.54; } + +.mdl-typography--menu { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 14px; + font-weight: 500; + line-height: 1; + letter-spacing: 0; } + +.mdl-typography--menu-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 14px; + font-weight: 500; + line-height: 1; + letter-spacing: 0; + opacity: 0.87; } + +.mdl-typography--button { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 14px; + font-weight: 500; + text-transform: uppercase; + line-height: 1; + letter-spacing: 0; } + +.mdl-typography--button-color-contrast { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 14px; + font-weight: 500; + text-transform: uppercase; + line-height: 1; + letter-spacing: 0; + opacity: 0.87; } + +.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; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-color-text--red { + color: rgb(244,67,54) !important; } + +.mdl-color--red { + background-color: rgb(244,67,54) !important; } + +.mdl-color-text--red-50 { + color: rgb(255,235,238) !important; } + +.mdl-color--red-50 { + background-color: rgb(255,235,238) !important; } + +.mdl-color-text--red-100 { + color: rgb(255,205,210) !important; } + +.mdl-color--red-100 { + background-color: rgb(255,205,210) !important; } + +.mdl-color-text--red-200 { + color: rgb(239,154,154) !important; } + +.mdl-color--red-200 { + background-color: rgb(239,154,154) !important; } + +.mdl-color-text--red-300 { + color: rgb(229,115,115) !important; } + +.mdl-color--red-300 { + background-color: rgb(229,115,115) !important; } + +.mdl-color-text--red-400 { + color: rgb(239,83,80) !important; } + +.mdl-color--red-400 { + background-color: rgb(239,83,80) !important; } + +.mdl-color-text--red-500 { + color: rgb(244,67,54) !important; } + +.mdl-color--red-500 { + background-color: rgb(244,67,54) !important; } + +.mdl-color-text--red-600 { + color: rgb(229,57,53) !important; } + +.mdl-color--red-600 { + background-color: rgb(229,57,53) !important; } + +.mdl-color-text--red-700 { + color: rgb(211,47,47) !important; } + +.mdl-color--red-700 { + background-color: rgb(211,47,47) !important; } + +.mdl-color-text--red-800 { + color: rgb(198,40,40) !important; } + +.mdl-color--red-800 { + background-color: rgb(198,40,40) !important; } + +.mdl-color-text--red-900 { + color: rgb(183,28,28) !important; } + +.mdl-color--red-900 { + background-color: rgb(183,28,28) !important; } + +.mdl-color-text--red-A100 { + color: rgb(255,138,128) !important; } + +.mdl-color--red-A100 { + background-color: rgb(255,138,128) !important; } + +.mdl-color-text--red-A200 { + color: rgb(255,82,82) !important; } + +.mdl-color--red-A200 { + background-color: rgb(255,82,82) !important; } + +.mdl-color-text--red-A400 { + color: rgb(255,23,68) !important; } + +.mdl-color--red-A400 { + background-color: rgb(255,23,68) !important; } + +.mdl-color-text--red-A700 { + color: rgb(213,0,0) !important; } + +.mdl-color--red-A700 { + background-color: rgb(213,0,0) !important; } + +.mdl-color-text--pink { + color: rgb(233,30,99) !important; } + +.mdl-color--pink { + background-color: rgb(233,30,99) !important; } + +.mdl-color-text--pink-50 { + color: rgb(252,228,236) !important; } + +.mdl-color--pink-50 { + background-color: rgb(252,228,236) !important; } + +.mdl-color-text--pink-100 { + color: rgb(248,187,208) !important; } + +.mdl-color--pink-100 { + background-color: rgb(248,187,208) !important; } + +.mdl-color-text--pink-200 { + color: rgb(244,143,177) !important; } + +.mdl-color--pink-200 { + background-color: rgb(244,143,177) !important; } + +.mdl-color-text--pink-300 { + color: rgb(240,98,146) !important; } + +.mdl-color--pink-300 { + background-color: rgb(240,98,146) !important; } + +.mdl-color-text--pink-400 { + color: rgb(236,64,122) !important; } + +.mdl-color--pink-400 { + background-color: rgb(236,64,122) !important; } + +.mdl-color-text--pink-500 { + color: rgb(233,30,99) !important; } + +.mdl-color--pink-500 { + background-color: rgb(233,30,99) !important; } + +.mdl-color-text--pink-600 { + color: rgb(216,27,96) !important; } + +.mdl-color--pink-600 { + background-color: rgb(216,27,96) !important; } + +.mdl-color-text--pink-700 { + color: rgb(194,24,91) !important; } + +.mdl-color--pink-700 { + background-color: rgb(194,24,91) !important; } + +.mdl-color-text--pink-800 { + color: rgb(173,20,87) !important; } + +.mdl-color--pink-800 { + background-color: rgb(173,20,87) !important; } + +.mdl-color-text--pink-900 { + color: rgb(136,14,79) !important; } + +.mdl-color--pink-900 { + background-color: rgb(136,14,79) !important; } + +.mdl-color-text--pink-A100 { + color: rgb(255,128,171) !important; } + +.mdl-color--pink-A100 { + background-color: rgb(255,128,171) !important; } + +.mdl-color-text--pink-A200 { + color: rgb(255,64,129) !important; } + +.mdl-color--pink-A200 { + background-color: rgb(255,64,129) !important; } + +.mdl-color-text--pink-A400 { + color: rgb(245,0,87) !important; } + +.mdl-color--pink-A400 { + background-color: rgb(245,0,87) !important; } + +.mdl-color-text--pink-A700 { + color: rgb(197,17,98) !important; } + +.mdl-color--pink-A700 { + background-color: rgb(197,17,98) !important; } + +.mdl-color-text--purple { + color: rgb(156,39,176) !important; } + +.mdl-color--purple { + background-color: rgb(156,39,176) !important; } + +.mdl-color-text--purple-50 { + color: rgb(243,229,245) !important; } + +.mdl-color--purple-50 { + background-color: rgb(243,229,245) !important; } + +.mdl-color-text--purple-100 { + color: rgb(225,190,231) !important; } + +.mdl-color--purple-100 { + background-color: rgb(225,190,231) !important; } + +.mdl-color-text--purple-200 { + color: rgb(206,147,216) !important; } + +.mdl-color--purple-200 { + background-color: rgb(206,147,216) !important; } + +.mdl-color-text--purple-300 { + color: rgb(186,104,200) !important; } + +.mdl-color--purple-300 { + background-color: rgb(186,104,200) !important; } + +.mdl-color-text--purple-400 { + color: rgb(171,71,188) !important; } + +.mdl-color--purple-400 { + background-color: rgb(171,71,188) !important; } + +.mdl-color-text--purple-500 { + color: rgb(156,39,176) !important; } + +.mdl-color--purple-500 { + background-color: rgb(156,39,176) !important; } + +.mdl-color-text--purple-600 { + color: rgb(142,36,170) !important; } + +.mdl-color--purple-600 { + background-color: rgb(142,36,170) !important; } + +.mdl-color-text--purple-700 { + color: rgb(123,31,162) !important; } + +.mdl-color--purple-700 { + background-color: rgb(123,31,162) !important; } + +.mdl-color-text--purple-800 { + color: rgb(106,27,154) !important; } + +.mdl-color--purple-800 { + background-color: rgb(106,27,154) !important; } + +.mdl-color-text--purple-900 { + color: rgb(74,20,140) !important; } + +.mdl-color--purple-900 { + background-color: rgb(74,20,140) !important; } + +.mdl-color-text--purple-A100 { + color: rgb(234,128,252) !important; } + +.mdl-color--purple-A100 { + background-color: rgb(234,128,252) !important; } + +.mdl-color-text--purple-A200 { + color: rgb(224,64,251) !important; } + +.mdl-color--purple-A200 { + background-color: rgb(224,64,251) !important; } + +.mdl-color-text--purple-A400 { + color: rgb(213,0,249) !important; } + +.mdl-color--purple-A400 { + background-color: rgb(213,0,249) !important; } + +.mdl-color-text--purple-A700 { + color: rgb(170,0,255) !important; } + +.mdl-color--purple-A700 { + background-color: rgb(170,0,255) !important; } + +.mdl-color-text--deep-purple { + color: rgb(103,58,183) !important; } + +.mdl-color--deep-purple { + background-color: rgb(103,58,183) !important; } + +.mdl-color-text--deep-purple-50 { + color: rgb(237,231,246) !important; } + +.mdl-color--deep-purple-50 { + background-color: rgb(237,231,246) !important; } + +.mdl-color-text--deep-purple-100 { + color: rgb(209,196,233) !important; } + +.mdl-color--deep-purple-100 { + background-color: rgb(209,196,233) !important; } + +.mdl-color-text--deep-purple-200 { + color: rgb(179,157,219) !important; } + +.mdl-color--deep-purple-200 { + background-color: rgb(179,157,219) !important; } + +.mdl-color-text--deep-purple-300 { + color: rgb(149,117,205) !important; } + +.mdl-color--deep-purple-300 { + background-color: rgb(149,117,205) !important; } + +.mdl-color-text--deep-purple-400 { + color: rgb(126,87,194) !important; } + +.mdl-color--deep-purple-400 { + background-color: rgb(126,87,194) !important; } + +.mdl-color-text--deep-purple-500 { + color: rgb(103,58,183) !important; } + +.mdl-color--deep-purple-500 { + background-color: rgb(103,58,183) !important; } + +.mdl-color-text--deep-purple-600 { + color: rgb(94,53,177) !important; } + +.mdl-color--deep-purple-600 { + background-color: rgb(94,53,177) !important; } + +.mdl-color-text--deep-purple-700 { + color: rgb(81,45,168) !important; } + +.mdl-color--deep-purple-700 { + background-color: rgb(81,45,168) !important; } + +.mdl-color-text--deep-purple-800 { + color: rgb(69,39,160) !important; } + +.mdl-color--deep-purple-800 { + background-color: rgb(69,39,160) !important; } + +.mdl-color-text--deep-purple-900 { + color: rgb(49,27,146) !important; } + +.mdl-color--deep-purple-900 { + background-color: rgb(49,27,146) !important; } + +.mdl-color-text--deep-purple-A100 { + color: rgb(179,136,255) !important; } + +.mdl-color--deep-purple-A100 { + background-color: rgb(179,136,255) !important; } + +.mdl-color-text--deep-purple-A200 { + color: rgb(124,77,255) !important; } + +.mdl-color--deep-purple-A200 { + background-color: rgb(124,77,255) !important; } + +.mdl-color-text--deep-purple-A400 { + color: rgb(101,31,255) !important; } + +.mdl-color--deep-purple-A400 { + background-color: rgb(101,31,255) !important; } + +.mdl-color-text--deep-purple-A700 { + color: rgb(98,0,234) !important; } + +.mdl-color--deep-purple-A700 { + background-color: rgb(98,0,234) !important; } + +.mdl-color-text--indigo { + color: rgb(63,81,181) !important; } + +.mdl-color--indigo { + background-color: rgb(63,81,181) !important; } + +.mdl-color-text--indigo-50 { + color: rgb(232,234,246) !important; } + +.mdl-color--indigo-50 { + background-color: rgb(232,234,246) !important; } + +.mdl-color-text--indigo-100 { + color: rgb(197,202,233) !important; } + +.mdl-color--indigo-100 { + background-color: rgb(197,202,233) !important; } + +.mdl-color-text--indigo-200 { + color: rgb(159,168,218) !important; } + +.mdl-color--indigo-200 { + background-color: rgb(159,168,218) !important; } + +.mdl-color-text--indigo-300 { + color: rgb(121,134,203) !important; } + +.mdl-color--indigo-300 { + background-color: rgb(121,134,203) !important; } + +.mdl-color-text--indigo-400 { + color: rgb(92,107,192) !important; } + +.mdl-color--indigo-400 { + background-color: rgb(92,107,192) !important; } + +.mdl-color-text--indigo-500 { + color: rgb(63,81,181) !important; } + +.mdl-color--indigo-500 { + background-color: rgb(63,81,181) !important; } + +.mdl-color-text--indigo-600 { + color: rgb(57,73,171) !important; } + +.mdl-color--indigo-600 { + background-color: rgb(57,73,171) !important; } + +.mdl-color-text--indigo-700 { + color: rgb(48,63,159) !important; } + +.mdl-color--indigo-700 { + background-color: rgb(48,63,159) !important; } + +.mdl-color-text--indigo-800 { + color: rgb(40,53,147) !important; } + +.mdl-color--indigo-800 { + background-color: rgb(40,53,147) !important; } + +.mdl-color-text--indigo-900 { + color: rgb(26,35,126) !important; } + +.mdl-color--indigo-900 { + background-color: rgb(26,35,126) !important; } + +.mdl-color-text--indigo-A100 { + color: rgb(140,158,255) !important; } + +.mdl-color--indigo-A100 { + background-color: rgb(140,158,255) !important; } + +.mdl-color-text--indigo-A200 { + color: rgb(83,109,254) !important; } + +.mdl-color--indigo-A200 { + background-color: rgb(83,109,254) !important; } + +.mdl-color-text--indigo-A400 { + color: rgb(61,90,254) !important; } + +.mdl-color--indigo-A400 { + background-color: rgb(61,90,254) !important; } + +.mdl-color-text--indigo-A700 { + color: rgb(48,79,254) !important; } + +.mdl-color--indigo-A700 { + background-color: rgb(48,79,254) !important; } + +.mdl-color-text--blue { + color: rgb(33,150,243) !important; } + +.mdl-color--blue { + background-color: rgb(33,150,243) !important; } + +.mdl-color-text--blue-50 { + color: rgb(227,242,253) !important; } + +.mdl-color--blue-50 { + background-color: rgb(227,242,253) !important; } + +.mdl-color-text--blue-100 { + color: rgb(187,222,251) !important; } + +.mdl-color--blue-100 { + background-color: rgb(187,222,251) !important; } + +.mdl-color-text--blue-200 { + color: rgb(144,202,249) !important; } + +.mdl-color--blue-200 { + background-color: rgb(144,202,249) !important; } + +.mdl-color-text--blue-300 { + color: rgb(100,181,246) !important; } + +.mdl-color--blue-300 { + background-color: rgb(100,181,246) !important; } + +.mdl-color-text--blue-400 { + color: rgb(66,165,245) !important; } + +.mdl-color--blue-400 { + background-color: rgb(66,165,245) !important; } + +.mdl-color-text--blue-500 { + color: rgb(33,150,243) !important; } + +.mdl-color--blue-500 { + background-color: rgb(33,150,243) !important; } + +.mdl-color-text--blue-600 { + color: rgb(30,136,229) !important; } + +.mdl-color--blue-600 { + background-color: rgb(30,136,229) !important; } + +.mdl-color-text--blue-700 { + color: rgb(25,118,210) !important; } + +.mdl-color--blue-700 { + background-color: rgb(25,118,210) !important; } + +.mdl-color-text--blue-800 { + color: rgb(21,101,192) !important; } + +.mdl-color--blue-800 { + background-color: rgb(21,101,192) !important; } + +.mdl-color-text--blue-900 { + color: rgb(13,71,161) !important; } + +.mdl-color--blue-900 { + background-color: rgb(13,71,161) !important; } + +.mdl-color-text--blue-A100 { + color: rgb(130,177,255) !important; } + +.mdl-color--blue-A100 { + background-color: rgb(130,177,255) !important; } + +.mdl-color-text--blue-A200 { + color: rgb(68,138,255) !important; } + +.mdl-color--blue-A200 { + background-color: rgb(68,138,255) !important; } + +.mdl-color-text--blue-A400 { + color: rgb(41,121,255) !important; } + +.mdl-color--blue-A400 { + background-color: rgb(41,121,255) !important; } + +.mdl-color-text--blue-A700 { + color: rgb(41,98,255) !important; } + +.mdl-color--blue-A700 { + background-color: rgb(41,98,255) !important; } + +.mdl-color-text--light-blue { + color: rgb(3,169,244) !important; } + +.mdl-color--light-blue { + background-color: rgb(3,169,244) !important; } + +.mdl-color-text--light-blue-50 { + color: rgb(225,245,254) !important; } + +.mdl-color--light-blue-50 { + background-color: rgb(225,245,254) !important; } + +.mdl-color-text--light-blue-100 { + color: rgb(179,229,252) !important; } + +.mdl-color--light-blue-100 { + background-color: rgb(179,229,252) !important; } + +.mdl-color-text--light-blue-200 { + color: rgb(129,212,250) !important; } + +.mdl-color--light-blue-200 { + background-color: rgb(129,212,250) !important; } + +.mdl-color-text--light-blue-300 { + color: rgb(79,195,247) !important; } + +.mdl-color--light-blue-300 { + background-color: rgb(79,195,247) !important; } + +.mdl-color-text--light-blue-400 { + color: rgb(41,182,246) !important; } + +.mdl-color--light-blue-400 { + background-color: rgb(41,182,246) !important; } + +.mdl-color-text--light-blue-500 { + color: rgb(3,169,244) !important; } + +.mdl-color--light-blue-500 { + background-color: rgb(3,169,244) !important; } + +.mdl-color-text--light-blue-600 { + color: rgb(3,155,229) !important; } + +.mdl-color--light-blue-600 { + background-color: rgb(3,155,229) !important; } + +.mdl-color-text--light-blue-700 { + color: rgb(2,136,209) !important; } + +.mdl-color--light-blue-700 { + background-color: rgb(2,136,209) !important; } + +.mdl-color-text--light-blue-800 { + color: rgb(2,119,189) !important; } + +.mdl-color--light-blue-800 { + background-color: rgb(2,119,189) !important; } + +.mdl-color-text--light-blue-900 { + color: rgb(1,87,155) !important; } + +.mdl-color--light-blue-900 { + background-color: rgb(1,87,155) !important; } + +.mdl-color-text--light-blue-A100 { + color: rgb(128,216,255) !important; } + +.mdl-color--light-blue-A100 { + background-color: rgb(128,216,255) !important; } + +.mdl-color-text--light-blue-A200 { + color: rgb(64,196,255) !important; } + +.mdl-color--light-blue-A200 { + background-color: rgb(64,196,255) !important; } + +.mdl-color-text--light-blue-A400 { + color: rgb(0,176,255) !important; } + +.mdl-color--light-blue-A400 { + background-color: rgb(0,176,255) !important; } + +.mdl-color-text--light-blue-A700 { + color: rgb(0,145,234) !important; } + +.mdl-color--light-blue-A700 { + background-color: rgb(0,145,234) !important; } + +.mdl-color-text--cyan { + color: rgb(0,188,212) !important; } + +.mdl-color--cyan { + background-color: rgb(0,188,212) !important; } + +.mdl-color-text--cyan-50 { + color: rgb(224,247,250) !important; } + +.mdl-color--cyan-50 { + background-color: rgb(224,247,250) !important; } + +.mdl-color-text--cyan-100 { + color: rgb(178,235,242) !important; } + +.mdl-color--cyan-100 { + background-color: rgb(178,235,242) !important; } + +.mdl-color-text--cyan-200 { + color: rgb(128,222,234) !important; } + +.mdl-color--cyan-200 { + background-color: rgb(128,222,234) !important; } + +.mdl-color-text--cyan-300 { + color: rgb(77,208,225) !important; } + +.mdl-color--cyan-300 { + background-color: rgb(77,208,225) !important; } + +.mdl-color-text--cyan-400 { + color: rgb(38,198,218) !important; } + +.mdl-color--cyan-400 { + background-color: rgb(38,198,218) !important; } + +.mdl-color-text--cyan-500 { + color: rgb(0,188,212) !important; } + +.mdl-color--cyan-500 { + background-color: rgb(0,188,212) !important; } + +.mdl-color-text--cyan-600 { + color: rgb(0,172,193) !important; } + +.mdl-color--cyan-600 { + background-color: rgb(0,172,193) !important; } + +.mdl-color-text--cyan-700 { + color: rgb(0,151,167) !important; } + +.mdl-color--cyan-700 { + background-color: rgb(0,151,167) !important; } + +.mdl-color-text--cyan-800 { + color: rgb(0,131,143) !important; } + +.mdl-color--cyan-800 { + background-color: rgb(0,131,143) !important; } + +.mdl-color-text--cyan-900 { + color: rgb(0,96,100) !important; } + +.mdl-color--cyan-900 { + background-color: rgb(0,96,100) !important; } + +.mdl-color-text--cyan-A100 { + color: rgb(132,255,255) !important; } + +.mdl-color--cyan-A100 { + background-color: rgb(132,255,255) !important; } + +.mdl-color-text--cyan-A200 { + color: rgb(24,255,255) !important; } + +.mdl-color--cyan-A200 { + background-color: rgb(24,255,255) !important; } + +.mdl-color-text--cyan-A400 { + color: rgb(0,229,255) !important; } + +.mdl-color--cyan-A400 { + background-color: rgb(0,229,255) !important; } + +.mdl-color-text--cyan-A700 { + color: rgb(0,184,212) !important; } + +.mdl-color--cyan-A700 { + background-color: rgb(0,184,212) !important; } + +.mdl-color-text--teal { + color: rgb(0,150,136) !important; } + +.mdl-color--teal { + background-color: rgb(0,150,136) !important; } + +.mdl-color-text--teal-50 { + color: rgb(224,242,241) !important; } + +.mdl-color--teal-50 { + background-color: rgb(224,242,241) !important; } + +.mdl-color-text--teal-100 { + color: rgb(178,223,219) !important; } + +.mdl-color--teal-100 { + background-color: rgb(178,223,219) !important; } + +.mdl-color-text--teal-200 { + color: rgb(128,203,196) !important; } + +.mdl-color--teal-200 { + background-color: rgb(128,203,196) !important; } + +.mdl-color-text--teal-300 { + color: rgb(77,182,172) !important; } + +.mdl-color--teal-300 { + background-color: rgb(77,182,172) !important; } + +.mdl-color-text--teal-400 { + color: rgb(38,166,154) !important; } + +.mdl-color--teal-400 { + background-color: rgb(38,166,154) !important; } + +.mdl-color-text--teal-500 { + color: rgb(0,150,136) !important; } + +.mdl-color--teal-500 { + background-color: rgb(0,150,136) !important; } + +.mdl-color-text--teal-600 { + color: rgb(0,137,123) !important; } + +.mdl-color--teal-600 { + background-color: rgb(0,137,123) !important; } + +.mdl-color-text--teal-700 { + color: rgb(0,121,107) !important; } + +.mdl-color--teal-700 { + background-color: rgb(0,121,107) !important; } + +.mdl-color-text--teal-800 { + color: rgb(0,105,92) !important; } + +.mdl-color--teal-800 { + background-color: rgb(0,105,92) !important; } + +.mdl-color-text--teal-900 { + color: rgb(0,77,64) !important; } + +.mdl-color--teal-900 { + background-color: rgb(0,77,64) !important; } + +.mdl-color-text--teal-A100 { + color: rgb(167,255,235) !important; } + +.mdl-color--teal-A100 { + background-color: rgb(167,255,235) !important; } + +.mdl-color-text--teal-A200 { + color: rgb(100,255,218) !important; } + +.mdl-color--teal-A200 { + background-color: rgb(100,255,218) !important; } + +.mdl-color-text--teal-A400 { + color: rgb(29,233,182) !important; } + +.mdl-color--teal-A400 { + background-color: rgb(29,233,182) !important; } + +.mdl-color-text--teal-A700 { + color: rgb(0,191,165) !important; } + +.mdl-color--teal-A700 { + background-color: rgb(0,191,165) !important; } + +.mdl-color-text--green { + color: rgb(76,175,80) !important; } + +.mdl-color--green { + background-color: rgb(76,175,80) !important; } + +.mdl-color-text--green-50 { + color: rgb(232,245,233) !important; } + +.mdl-color--green-50 { + background-color: rgb(232,245,233) !important; } + +.mdl-color-text--green-100 { + color: rgb(200,230,201) !important; } + +.mdl-color--green-100 { + background-color: rgb(200,230,201) !important; } + +.mdl-color-text--green-200 { + color: rgb(165,214,167) !important; } + +.mdl-color--green-200 { + background-color: rgb(165,214,167) !important; } + +.mdl-color-text--green-300 { + color: rgb(129,199,132) !important; } + +.mdl-color--green-300 { + background-color: rgb(129,199,132) !important; } + +.mdl-color-text--green-400 { + color: rgb(102,187,106) !important; } + +.mdl-color--green-400 { + background-color: rgb(102,187,106) !important; } + +.mdl-color-text--green-500 { + color: rgb(76,175,80) !important; } + +.mdl-color--green-500 { + background-color: rgb(76,175,80) !important; } + +.mdl-color-text--green-600 { + color: rgb(67,160,71) !important; } + +.mdl-color--green-600 { + background-color: rgb(67,160,71) !important; } + +.mdl-color-text--green-700 { + color: rgb(56,142,60) !important; } + +.mdl-color--green-700 { + background-color: rgb(56,142,60) !important; } + +.mdl-color-text--green-800 { + color: rgb(46,125,50) !important; } + +.mdl-color--green-800 { + background-color: rgb(46,125,50) !important; } + +.mdl-color-text--green-900 { + color: rgb(27,94,32) !important; } + +.mdl-color--green-900 { + background-color: rgb(27,94,32) !important; } + +.mdl-color-text--green-A100 { + color: rgb(185,246,202) !important; } + +.mdl-color--green-A100 { + background-color: rgb(185,246,202) !important; } + +.mdl-color-text--green-A200 { + color: rgb(105,240,174) !important; } + +.mdl-color--green-A200 { + background-color: rgb(105,240,174) !important; } + +.mdl-color-text--green-A400 { + color: rgb(0,230,118) !important; } + +.mdl-color--green-A400 { + background-color: rgb(0,230,118) !important; } + +.mdl-color-text--green-A700 { + color: rgb(0,200,83) !important; } + +.mdl-color--green-A700 { + background-color: rgb(0,200,83) !important; } + +.mdl-color-text--light-green { + color: rgb(139,195,74) !important; } + +.mdl-color--light-green { + background-color: rgb(139,195,74) !important; } + +.mdl-color-text--light-green-50 { + color: rgb(241,248,233) !important; } + +.mdl-color--light-green-50 { + background-color: rgb(241,248,233) !important; } + +.mdl-color-text--light-green-100 { + color: rgb(220,237,200) !important; } + +.mdl-color--light-green-100 { + background-color: rgb(220,237,200) !important; } + +.mdl-color-text--light-green-200 { + color: rgb(197,225,165) !important; } + +.mdl-color--light-green-200 { + background-color: rgb(197,225,165) !important; } + +.mdl-color-text--light-green-300 { + color: rgb(174,213,129) !important; } + +.mdl-color--light-green-300 { + background-color: rgb(174,213,129) !important; } + +.mdl-color-text--light-green-400 { + color: rgb(156,204,101) !important; } + +.mdl-color--light-green-400 { + background-color: rgb(156,204,101) !important; } + +.mdl-color-text--light-green-500 { + color: rgb(139,195,74) !important; } + +.mdl-color--light-green-500 { + background-color: rgb(139,195,74) !important; } + +.mdl-color-text--light-green-600 { + color: rgb(124,179,66) !important; } + +.mdl-color--light-green-600 { + background-color: rgb(124,179,66) !important; } + +.mdl-color-text--light-green-700 { + color: rgb(104,159,56) !important; } + +.mdl-color--light-green-700 { + background-color: rgb(104,159,56) !important; } + +.mdl-color-text--light-green-800 { + color: rgb(85,139,47) !important; } + +.mdl-color--light-green-800 { + background-color: rgb(85,139,47) !important; } + +.mdl-color-text--light-green-900 { + color: rgb(51,105,30) !important; } + +.mdl-color--light-green-900 { + background-color: rgb(51,105,30) !important; } + +.mdl-color-text--light-green-A100 { + color: rgb(204,255,144) !important; } + +.mdl-color--light-green-A100 { + background-color: rgb(204,255,144) !important; } + +.mdl-color-text--light-green-A200 { + color: rgb(178,255,89) !important; } + +.mdl-color--light-green-A200 { + background-color: rgb(178,255,89) !important; } + +.mdl-color-text--light-green-A400 { + color: rgb(118,255,3) !important; } + +.mdl-color--light-green-A400 { + background-color: rgb(118,255,3) !important; } + +.mdl-color-text--light-green-A700 { + color: rgb(100,221,23) !important; } + +.mdl-color--light-green-A700 { + background-color: rgb(100,221,23) !important; } + +.mdl-color-text--lime { + color: rgb(205,220,57) !important; } + +.mdl-color--lime { + background-color: rgb(205,220,57) !important; } + +.mdl-color-text--lime-50 { + color: rgb(249,251,231) !important; } + +.mdl-color--lime-50 { + background-color: rgb(249,251,231) !important; } + +.mdl-color-text--lime-100 { + color: rgb(240,244,195) !important; } + +.mdl-color--lime-100 { + background-color: rgb(240,244,195) !important; } + +.mdl-color-text--lime-200 { + color: rgb(230,238,156) !important; } + +.mdl-color--lime-200 { + background-color: rgb(230,238,156) !important; } + +.mdl-color-text--lime-300 { + color: rgb(220,231,117) !important; } + +.mdl-color--lime-300 { + background-color: rgb(220,231,117) !important; } + +.mdl-color-text--lime-400 { + color: rgb(212,225,87) !important; } + +.mdl-color--lime-400 { + background-color: rgb(212,225,87) !important; } + +.mdl-color-text--lime-500 { + color: rgb(205,220,57) !important; } + +.mdl-color--lime-500 { + background-color: rgb(205,220,57) !important; } + +.mdl-color-text--lime-600 { + color: rgb(192,202,51) !important; } + +.mdl-color--lime-600 { + background-color: rgb(192,202,51) !important; } + +.mdl-color-text--lime-700 { + color: rgb(175,180,43) !important; } + +.mdl-color--lime-700 { + background-color: rgb(175,180,43) !important; } + +.mdl-color-text--lime-800 { + color: rgb(158,157,36) !important; } + +.mdl-color--lime-800 { + background-color: rgb(158,157,36) !important; } + +.mdl-color-text--lime-900 { + color: rgb(130,119,23) !important; } + +.mdl-color--lime-900 { + background-color: rgb(130,119,23) !important; } + +.mdl-color-text--lime-A100 { + color: rgb(244,255,129) !important; } + +.mdl-color--lime-A100 { + background-color: rgb(244,255,129) !important; } + +.mdl-color-text--lime-A200 { + color: rgb(238,255,65) !important; } + +.mdl-color--lime-A200 { + background-color: rgb(238,255,65) !important; } + +.mdl-color-text--lime-A400 { + color: rgb(198,255,0) !important; } + +.mdl-color--lime-A400 { + background-color: rgb(198,255,0) !important; } + +.mdl-color-text--lime-A700 { + color: rgb(174,234,0) !important; } + +.mdl-color--lime-A700 { + background-color: rgb(174,234,0) !important; } + +.mdl-color-text--yellow { + color: rgb(255,235,59) !important; } + +.mdl-color--yellow { + background-color: rgb(255,235,59) !important; } + +.mdl-color-text--yellow-50 { + color: rgb(255,253,231) !important; } + +.mdl-color--yellow-50 { + background-color: rgb(255,253,231) !important; } + +.mdl-color-text--yellow-100 { + color: rgb(255,249,196) !important; } + +.mdl-color--yellow-100 { + background-color: rgb(255,249,196) !important; } + +.mdl-color-text--yellow-200 { + color: rgb(255,245,157) !important; } + +.mdl-color--yellow-200 { + background-color: rgb(255,245,157) !important; } + +.mdl-color-text--yellow-300 { + color: rgb(255,241,118) !important; } + +.mdl-color--yellow-300 { + background-color: rgb(255,241,118) !important; } + +.mdl-color-text--yellow-400 { + color: rgb(255,238,88) !important; } + +.mdl-color--yellow-400 { + background-color: rgb(255,238,88) !important; } + +.mdl-color-text--yellow-500 { + color: rgb(255,235,59) !important; } + +.mdl-color--yellow-500 { + background-color: rgb(255,235,59) !important; } + +.mdl-color-text--yellow-600 { + color: rgb(253,216,53) !important; } + +.mdl-color--yellow-600 { + background-color: rgb(253,216,53) !important; } + +.mdl-color-text--yellow-700 { + color: rgb(251,192,45) !important; } + +.mdl-color--yellow-700 { + background-color: rgb(251,192,45) !important; } + +.mdl-color-text--yellow-800 { + color: rgb(249,168,37) !important; } + +.mdl-color--yellow-800 { + background-color: rgb(249,168,37) !important; } + +.mdl-color-text--yellow-900 { + color: rgb(245,127,23) !important; } + +.mdl-color--yellow-900 { + background-color: rgb(245,127,23) !important; } + +.mdl-color-text--yellow-A100 { + color: rgb(255,255,141) !important; } + +.mdl-color--yellow-A100 { + background-color: rgb(255,255,141) !important; } + +.mdl-color-text--yellow-A200 { + color: rgb(255,255,0) !important; } + +.mdl-color--yellow-A200 { + background-color: rgb(255,255,0) !important; } + +.mdl-color-text--yellow-A400 { + color: rgb(255,234,0) !important; } + +.mdl-color--yellow-A400 { + background-color: rgb(255,234,0) !important; } + +.mdl-color-text--yellow-A700 { + color: rgb(255,214,0) !important; } + +.mdl-color--yellow-A700 { + background-color: rgb(255,214,0) !important; } + +.mdl-color-text--amber { + color: rgb(255,193,7) !important; } + +.mdl-color--amber { + background-color: rgb(255,193,7) !important; } + +.mdl-color-text--amber-50 { + color: rgb(255,248,225) !important; } + +.mdl-color--amber-50 { + background-color: rgb(255,248,225) !important; } + +.mdl-color-text--amber-100 { + color: rgb(255,236,179) !important; } + +.mdl-color--amber-100 { + background-color: rgb(255,236,179) !important; } + +.mdl-color-text--amber-200 { + color: rgb(255,224,130) !important; } + +.mdl-color--amber-200 { + background-color: rgb(255,224,130) !important; } + +.mdl-color-text--amber-300 { + color: rgb(255,213,79) !important; } + +.mdl-color--amber-300 { + background-color: rgb(255,213,79) !important; } + +.mdl-color-text--amber-400 { + color: rgb(255,202,40) !important; } + +.mdl-color--amber-400 { + background-color: rgb(255,202,40) !important; } + +.mdl-color-text--amber-500 { + color: rgb(255,193,7) !important; } + +.mdl-color--amber-500 { + background-color: rgb(255,193,7) !important; } + +.mdl-color-text--amber-600 { + color: rgb(255,179,0) !important; } + +.mdl-color--amber-600 { + background-color: rgb(255,179,0) !important; } + +.mdl-color-text--amber-700 { + color: rgb(255,160,0) !important; } + +.mdl-color--amber-700 { + background-color: rgb(255,160,0) !important; } + +.mdl-color-text--amber-800 { + color: rgb(255,143,0) !important; } + +.mdl-color--amber-800 { + background-color: rgb(255,143,0) !important; } + +.mdl-color-text--amber-900 { + color: rgb(255,111,0) !important; } + +.mdl-color--amber-900 { + background-color: rgb(255,111,0) !important; } + +.mdl-color-text--amber-A100 { + color: rgb(255,229,127) !important; } + +.mdl-color--amber-A100 { + background-color: rgb(255,229,127) !important; } + +.mdl-color-text--amber-A200 { + color: rgb(255,215,64) !important; } + +.mdl-color--amber-A200 { + background-color: rgb(255,215,64) !important; } + +.mdl-color-text--amber-A400 { + color: rgb(255,196,0) !important; } + +.mdl-color--amber-A400 { + background-color: rgb(255,196,0) !important; } + +.mdl-color-text--amber-A700 { + color: rgb(255,171,0) !important; } + +.mdl-color--amber-A700 { + background-color: rgb(255,171,0) !important; } + +.mdl-color-text--orange { + color: rgb(255,152,0) !important; } + +.mdl-color--orange { + background-color: rgb(255,152,0) !important; } + +.mdl-color-text--orange-50 { + color: rgb(255,243,224) !important; } + +.mdl-color--orange-50 { + background-color: rgb(255,243,224) !important; } + +.mdl-color-text--orange-100 { + color: rgb(255,224,178) !important; } + +.mdl-color--orange-100 { + background-color: rgb(255,224,178) !important; } + +.mdl-color-text--orange-200 { + color: rgb(255,204,128) !important; } + +.mdl-color--orange-200 { + background-color: rgb(255,204,128) !important; } + +.mdl-color-text--orange-300 { + color: rgb(255,183,77) !important; } + +.mdl-color--orange-300 { + background-color: rgb(255,183,77) !important; } + +.mdl-color-text--orange-400 { + color: rgb(255,167,38) !important; } + +.mdl-color--orange-400 { + background-color: rgb(255,167,38) !important; } + +.mdl-color-text--orange-500 { + color: rgb(255,152,0) !important; } + +.mdl-color--orange-500 { + background-color: rgb(255,152,0) !important; } + +.mdl-color-text--orange-600 { + color: rgb(251,140,0) !important; } + +.mdl-color--orange-600 { + background-color: rgb(251,140,0) !important; } + +.mdl-color-text--orange-700 { + color: rgb(245,124,0) !important; } + +.mdl-color--orange-700 { + background-color: rgb(245,124,0) !important; } + +.mdl-color-text--orange-800 { + color: rgb(239,108,0) !important; } + +.mdl-color--orange-800 { + background-color: rgb(239,108,0) !important; } + +.mdl-color-text--orange-900 { + color: rgb(230,81,0) !important; } + +.mdl-color--orange-900 { + background-color: rgb(230,81,0) !important; } + +.mdl-color-text--orange-A100 { + color: rgb(255,209,128) !important; } + +.mdl-color--orange-A100 { + background-color: rgb(255,209,128) !important; } + +.mdl-color-text--orange-A200 { + color: rgb(255,171,64) !important; } + +.mdl-color--orange-A200 { + background-color: rgb(255,171,64) !important; } + +.mdl-color-text--orange-A400 { + color: rgb(255,145,0) !important; } + +.mdl-color--orange-A400 { + background-color: rgb(255,145,0) !important; } + +.mdl-color-text--orange-A700 { + color: rgb(255,109,0) !important; } + +.mdl-color--orange-A700 { + background-color: rgb(255,109,0) !important; } + +.mdl-color-text--deep-orange { + color: rgb(255,87,34) !important; } + +.mdl-color--deep-orange { + background-color: rgb(255,87,34) !important; } + +.mdl-color-text--deep-orange-50 { + color: rgb(251,233,231) !important; } + +.mdl-color--deep-orange-50 { + background-color: rgb(251,233,231) !important; } + +.mdl-color-text--deep-orange-100 { + color: rgb(255,204,188) !important; } + +.mdl-color--deep-orange-100 { + background-color: rgb(255,204,188) !important; } + +.mdl-color-text--deep-orange-200 { + color: rgb(255,171,145) !important; } + +.mdl-color--deep-orange-200 { + background-color: rgb(255,171,145) !important; } + +.mdl-color-text--deep-orange-300 { + color: rgb(255,138,101) !important; } + +.mdl-color--deep-orange-300 { + background-color: rgb(255,138,101) !important; } + +.mdl-color-text--deep-orange-400 { + color: rgb(255,112,67) !important; } + +.mdl-color--deep-orange-400 { + background-color: rgb(255,112,67) !important; } + +.mdl-color-text--deep-orange-500 { + color: rgb(255,87,34) !important; } + +.mdl-color--deep-orange-500 { + background-color: rgb(255,87,34) !important; } + +.mdl-color-text--deep-orange-600 { + color: rgb(244,81,30) !important; } + +.mdl-color--deep-orange-600 { + background-color: rgb(244,81,30) !important; } + +.mdl-color-text--deep-orange-700 { + color: rgb(230,74,25) !important; } + +.mdl-color--deep-orange-700 { + background-color: rgb(230,74,25) !important; } + +.mdl-color-text--deep-orange-800 { + color: rgb(216,67,21) !important; } + +.mdl-color--deep-orange-800 { + background-color: rgb(216,67,21) !important; } + +.mdl-color-text--deep-orange-900 { + color: rgb(191,54,12) !important; } + +.mdl-color--deep-orange-900 { + background-color: rgb(191,54,12) !important; } + +.mdl-color-text--deep-orange-A100 { + color: rgb(255,158,128) !important; } + +.mdl-color--deep-orange-A100 { + background-color: rgb(255,158,128) !important; } + +.mdl-color-text--deep-orange-A200 { + color: rgb(255,110,64) !important; } + +.mdl-color--deep-orange-A200 { + background-color: rgb(255,110,64) !important; } + +.mdl-color-text--deep-orange-A400 { + color: rgb(255,61,0) !important; } + +.mdl-color--deep-orange-A400 { + background-color: rgb(255,61,0) !important; } + +.mdl-color-text--deep-orange-A700 { + color: rgb(221,44,0) !important; } + +.mdl-color--deep-orange-A700 { + background-color: rgb(221,44,0) !important; } + +.mdl-color-text--brown { + color: rgb(121,85,72) !important; } + +.mdl-color--brown { + background-color: rgb(121,85,72) !important; } + +.mdl-color-text--brown-50 { + color: rgb(239,235,233) !important; } + +.mdl-color--brown-50 { + background-color: rgb(239,235,233) !important; } + +.mdl-color-text--brown-100 { + color: rgb(215,204,200) !important; } + +.mdl-color--brown-100 { + background-color: rgb(215,204,200) !important; } + +.mdl-color-text--brown-200 { + color: rgb(188,170,164) !important; } + +.mdl-color--brown-200 { + background-color: rgb(188,170,164) !important; } + +.mdl-color-text--brown-300 { + color: rgb(161,136,127) !important; } + +.mdl-color--brown-300 { + background-color: rgb(161,136,127) !important; } + +.mdl-color-text--brown-400 { + color: rgb(141,110,99) !important; } + +.mdl-color--brown-400 { + background-color: rgb(141,110,99) !important; } + +.mdl-color-text--brown-500 { + color: rgb(121,85,72) !important; } + +.mdl-color--brown-500 { + background-color: rgb(121,85,72) !important; } + +.mdl-color-text--brown-600 { + color: rgb(109,76,65) !important; } + +.mdl-color--brown-600 { + background-color: rgb(109,76,65) !important; } + +.mdl-color-text--brown-700 { + color: rgb(93,64,55) !important; } + +.mdl-color--brown-700 { + background-color: rgb(93,64,55) !important; } + +.mdl-color-text--brown-800 { + color: rgb(78,52,46) !important; } + +.mdl-color--brown-800 { + background-color: rgb(78,52,46) !important; } + +.mdl-color-text--brown-900 { + color: rgb(62,39,35) !important; } + +.mdl-color--brown-900 { + background-color: rgb(62,39,35) !important; } + +.mdl-color-text--grey { + color: rgb(158,158,158) !important; } + +.mdl-color--grey { + background-color: rgb(158,158,158) !important; } + +.mdl-color-text--grey-50 { + color: rgb(250,250,250) !important; } + +.mdl-color--grey-50 { + background-color: rgb(250,250,250) !important; } + +.mdl-color-text--grey-100 { + color: rgb(245,245,245) !important; } + +.mdl-color--grey-100 { + background-color: rgb(245,245,245) !important; } + +.mdl-color-text--grey-200 { + color: rgb(238,238,238) !important; } + +.mdl-color--grey-200 { + background-color: rgb(238,238,238) !important; } + +.mdl-color-text--grey-300 { + color: rgb(224,224,224) !important; } + +.mdl-color--grey-300 { + background-color: rgb(224,224,224) !important; } + +.mdl-color-text--grey-400 { + color: rgb(189,189,189) !important; } + +.mdl-color--grey-400 { + background-color: rgb(189,189,189) !important; } + +.mdl-color-text--grey-500 { + color: rgb(158,158,158) !important; } + +.mdl-color--grey-500 { + background-color: rgb(158,158,158) !important; } + +.mdl-color-text--grey-600 { + color: rgb(117,117,117) !important; } + +.mdl-color--grey-600 { + background-color: rgb(117,117,117) !important; } + +.mdl-color-text--grey-700 { + color: rgb(97,97,97) !important; } + +.mdl-color--grey-700 { + background-color: rgb(97,97,97) !important; } + +.mdl-color-text--grey-800 { + color: rgb(66,66,66) !important; } + +.mdl-color--grey-800 { + background-color: rgb(66,66,66) !important; } + +.mdl-color-text--grey-900 { + color: rgb(33,33,33) !important; } + +.mdl-color--grey-900 { + background-color: rgb(33,33,33) !important; } + +.mdl-color-text--blue-grey { + color: rgb(96,125,139) !important; } + +.mdl-color--blue-grey { + background-color: rgb(96,125,139) !important; } + +.mdl-color-text--blue-grey-50 { + color: rgb(236,239,241) !important; } + +.mdl-color--blue-grey-50 { + background-color: rgb(236,239,241) !important; } + +.mdl-color-text--blue-grey-100 { + color: rgb(207,216,220) !important; } + +.mdl-color--blue-grey-100 { + background-color: rgb(207,216,220) !important; } + +.mdl-color-text--blue-grey-200 { + color: rgb(176,190,197) !important; } + +.mdl-color--blue-grey-200 { + background-color: rgb(176,190,197) !important; } + +.mdl-color-text--blue-grey-300 { + color: rgb(144,164,174) !important; } + +.mdl-color--blue-grey-300 { + background-color: rgb(144,164,174) !important; } + +.mdl-color-text--blue-grey-400 { + color: rgb(120,144,156) !important; } + +.mdl-color--blue-grey-400 { + background-color: rgb(120,144,156) !important; } + +.mdl-color-text--blue-grey-500 { + color: rgb(96,125,139) !important; } + +.mdl-color--blue-grey-500 { + background-color: rgb(96,125,139) !important; } + +.mdl-color-text--blue-grey-600 { + color: rgb(84,110,122) !important; } + +.mdl-color--blue-grey-600 { + background-color: rgb(84,110,122) !important; } + +.mdl-color-text--blue-grey-700 { + color: rgb(69,90,100) !important; } + +.mdl-color--blue-grey-700 { + background-color: rgb(69,90,100) !important; } + +.mdl-color-text--blue-grey-800 { + color: rgb(55,71,79) !important; } + +.mdl-color--blue-grey-800 { + background-color: rgb(55,71,79) !important; } + +.mdl-color-text--blue-grey-900 { + color: rgb(38,50,56) !important; } + +.mdl-color--blue-grey-900 { + background-color: rgb(38,50,56) !important; } + +.mdl-color--black { + background-color: rgb(0,0,0) !important; } + +.mdl-color-text--black { + color: rgb(0,0,0) !important; } + +.mdl-color--white { + background-color: rgb(255,255,255) !important; } + +.mdl-color-text--white { + color: rgb(255,255,255) !important; } + +.mdl-color--primary { + background-color: rgb(63,81,181) !important; } + +.mdl-color--primary-contrast { + background-color: rgb(255,255,255) !important; } + +.mdl-color--primary-dark { + background-color: rgb(48,63,159) !important; } + +.mdl-color--accent { + background-color: rgb(255,64,129) !important; } + +.mdl-color--accent-contrast { + background-color: rgb(255,255,255) !important; } + +.mdl-color-text--primary { + color: rgb(63,81,181) !important; } + +.mdl-color-text--primary-contrast { + color: rgb(255,255,255) !important; } + +.mdl-color-text--primary-dark { + color: rgb(48,63,159) !important; } + +.mdl-color-text--accent { + color: rgb(255,64,129) !important; } + +.mdl-color-text--accent-contrast { + color: rgb(255,255,255) !important; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-ripple { + background: rgb(0,0,0); + border-radius: 50%; + height: 50px; + left: 0; + opacity: 0; + pointer-events: none; + position: absolute; + top: 0; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + width: 50px; + overflow: hidden; } + .mdl-ripple.is-animating { + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0, 0, 0.2, 1), width 0.3s cubic-bezier(0, 0, 0.2, 1), height 0.3s cubic-bezier(0, 0, 0.2, 1), opacity 0.6s cubic-bezier(0, 0, 0.2, 1); + transition: transform 0.3s cubic-bezier(0, 0, 0.2, 1), width 0.3s cubic-bezier(0, 0, 0.2, 1), height 0.3s cubic-bezier(0, 0, 0.2, 1), opacity 0.6s cubic-bezier(0, 0, 0.2, 1); } + .mdl-ripple.is-visible { + opacity: 0.3; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-animation--default { + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } + +.mdl-animation--fast-out-slow-in { + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } + +.mdl-animation--linear-out-slow-in { + -webkit-transition-timing-function: cubic-bezier(0, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); } + +.mdl-animation--fast-out-linear-in { + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 1, 1); + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-badge { + position: relative; + white-space: nowrap; + margin-right: 24px; } + .mdl-badge:not([data-badge]) { + margin-right: auto; } + .mdl-badge[data-badge]:after { + content: attr(data-badge); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-content: center; + -ms-flex-line-pack: center; + align-content: center; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + position: absolute; + top: -11px; + right: -24px; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 600; + font-size: 12px; + width: 22px; + height: 22px; + border-radius: 50%; + background: rgb(255,64,129); + color: rgb(255,255,255); } + .mdl-button .mdl-badge[data-badge]:after { + top: -10px; + right: -5px; } + .mdl-badge.mdl-badge--no-background[data-badge]:after { + color: rgb(255,64,129); + background: rgba(255,255,255,0.2); + box-shadow: 0 0 1px gray; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-button { + background: transparent; + border: none; + border-radius: 2px; + color: rgb(0,0,0); + position: relative; + height: 36px; + min-width: 64px; + padding: 0 8px; + display: inline-block; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 14px; + font-weight: 500; + text-transform: uppercase; + line-height: 1; + letter-spacing: 0; + overflow: hidden; + will-change: box-shadow, transform; + -webkit-transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); + transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); + outline: none; + cursor: pointer; + text-decoration: none; + text-align: center; + line-height: 36px; + vertical-align: middle; } + .mdl-button::-moz-focus-inner { + border: 0; } + .mdl-button:hover { + background-color: rgba(158,158,158, 0.20); } + .mdl-button:focus:not(:active) { + background-color: rgba(0,0,0, 0.12); } + .mdl-button:active { + background-color: rgba(158,158,158, 0.40); } + .mdl-button.mdl-button--colored { + color: rgb(63,81,181); } + .mdl-button.mdl-button--colored:focus:not(:active) { + background-color: rgba(0,0,0, 0.12); } + +input.mdl-button[type="submit"] { + -webkit-appearance: none; } + +.mdl-button--raised { + background: rgba(158,158,158, 0.20); + 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); } + .mdl-button--raised:active { + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); + background-color: rgba(158,158,158, 0.40); } + .mdl-button--raised:focus:not(:active) { + box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36); + background-color: rgba(158,158,158, 0.40); } + .mdl-button--raised.mdl-button--colored { + background: rgb(63,81,181); + color: rgb(255,255,255); } + .mdl-button--raised.mdl-button--colored:hover { + background-color: rgb(63,81,181); } + .mdl-button--raised.mdl-button--colored:active { + background-color: rgb(63,81,181); } + .mdl-button--raised.mdl-button--colored:focus:not(:active) { + background-color: rgb(63,81,181); } + .mdl-button--raised.mdl-button--colored .mdl-ripple { + background: rgb(255,255,255); } + +.mdl-button--fab { + border-radius: 50%; + font-size: 24px; + height: 56px; + margin: auto; + min-width: 56px; + width: 56px; + padding: 0; + overflow: hidden; + background: rgba(158,158,158, 0.20); + 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; } + .mdl-button--fab .material-icons { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-12px, -12px); + -ms-transform: translate(-12px, -12px); + transform: translate(-12px, -12px); + line-height: 24px; + width: 24px; } + .mdl-button--fab.mdl-button--mini-fab { + height: 40px; + min-width: 40px; + width: 40px; } + .mdl-button--fab .mdl-button__ripple-container { + border-radius: 50%; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); } + .mdl-button--fab:active { + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); + background-color: rgba(158,158,158, 0.40); } + .mdl-button--fab:focus:not(:active) { + box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36); + background-color: rgba(158,158,158, 0.40); } + .mdl-button--fab.mdl-button--colored { + background: rgb(255,64,129); + color: rgb(255,255,255); } + .mdl-button--fab.mdl-button--colored:hover { + background-color: rgb(255,64,129); } + .mdl-button--fab.mdl-button--colored:focus:not(:active) { + background-color: rgb(255,64,129); } + .mdl-button--fab.mdl-button--colored:active { + background-color: rgb(255,64,129); } + .mdl-button--fab.mdl-button--colored .mdl-ripple { + background: rgb(255,255,255); } + +.mdl-button--icon { + border-radius: 50%; + font-size: 24px; + height: 32px; + margin-left: 0; + margin-right: 0; + min-width: 32px; + width: 32px; + padding: 0; + overflow: hidden; + color: inherit; + line-height: normal; } + .mdl-button--icon .material-icons { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-12px, -12px); + -ms-transform: translate(-12px, -12px); + transform: translate(-12px, -12px); + line-height: 24px; + width: 24px; } + .mdl-button--icon.mdl-button--mini-icon { + height: 24px; + min-width: 24px; + width: 24px; } + .mdl-button--icon.mdl-button--mini-icon .material-icons { + top: 0px; + left: 0px; } + .mdl-button--icon .mdl-button__ripple-container { + border-radius: 50%; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); } + +.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-button__ripple-container .mdl-ripple, + .mdl-button.mdl-button--disabled .mdl-button__ripple-container .mdl-ripple { + background-color: transparent; } + +.mdl-button--primary.mdl-button--primary { + color: rgb(63,81,181); } + .mdl-button--primary.mdl-button--primary .mdl-ripple { + background: rgb(255,255,255); } + .mdl-button--primary.mdl-button--primary.mdl-button--raised, .mdl-button--primary.mdl-button--primary.mdl-button--fab { + color: rgb(255,255,255); + background-color: rgb(63,81,181); } + +.mdl-button--accent.mdl-button--accent { + color: rgb(255,64,129); } + .mdl-button--accent.mdl-button--accent .mdl-ripple { + background: rgb(255,255,255); } + .mdl-button--accent.mdl-button--accent.mdl-button--raised, .mdl-button--accent.mdl-button--accent.mdl-button--fab { + color: rgb(255,255,255); + background-color: rgb(255,64,129); } + +.mdl-button[disabled][disabled], +.mdl-button.mdl-button--disabled.mdl-button--disabled { + color: rgba(0,0,0, 0.26); + cursor: auto; + background-color: transparent; } + +.mdl-button--fab[disabled][disabled], +.mdl-button--fab.mdl-button--disabled.mdl-button--disabled { + background-color: rgba(0,0,0, 0.12); + color: rgba(0,0,0, 0.26); + 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); } + +.mdl-button--raised[disabled][disabled], +.mdl-button--raised.mdl-button--disabled.mdl-button--disabled { + background-color: rgba(0,0,0, 0.12); + color: rgba(0,0,0, 0.26); + 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); } + +.mdl-button--colored[disabled][disabled], +.mdl-button--colored.mdl-button--disabled.mdl-button--disabled { + color: rgba(0,0,0, 0.26); } + +.mdl-button .material-icons { + vertical-align: middle; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-card { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + font-size: 16px; + font-weight: 400; + min-height: 200px; + overflow: hidden; + width: 330px; + z-index: 1; + position: relative; + background: rgb(255,255,255); + border-radius: 2px; + box-sizing: border-box; } + +.mdl-card__media { + background-color: rgb(255,64,129); + background-repeat: repeat; + background-position: 50% 50%; + background-size: cover; + background-origin: padding-box; + background-attachment: scroll; + box-sizing: border-box; } + +.mdl-card__title { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + color: rgb(0,0,0); + display: block; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: stretch; + -webkit-justify-content: stretch; + -ms-flex-pack: stretch; + justify-content: stretch; + line-height: normal; + padding: 16px 16px; + -webkit-perspective-origin: 165px 56px; + perspective-origin: 165px 56px; + -webkit-transform-origin: 165px 56px; + -ms-transform-origin: 165px 56px; + transform-origin: 165px 56px; + box-sizing: border-box; } + .mdl-card__title.mdl-card--border { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); } + +.mdl-card__title-text { + -webkit-align-self: flex-end; + -ms-flex-item-align: end; + align-self: flex-end; + color: inherit; + display: block; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + font-size: 24px; + font-weight: 300; + line-height: normal; + overflow: hidden; + -webkit-transform-origin: 149px 48px; + -ms-transform-origin: 149px 48px; + transform-origin: 149px 48px; + margin: 0; } + +.mdl-card__subtitle-text { + font-size: 14px; + color: grey; + margin: 0; } + +.mdl-card__supporting-text { + color: rgba(0,0,0, 0.54); + font-size: 13px; + line-height: 18px; + overflow: hidden; + padding: 16px 16px; + width: 90%; } + +.mdl-card__actions { + font-size: 16px; + line-height: normal; + width: 100%; + background-color: transparent; + padding: 8px; + box-sizing: border-box; } + .mdl-card__actions.mdl-card--border { + border-top: 1px solid rgba(0, 0, 0, 0.1); } + +.mdl-card--expand { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } + +.mdl-card__menu { + position: absolute; + right: 16px; + top: 16px; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-checkbox { + position: relative; + z-index: 1; + vertical-align: middle; + display: inline-block; + box-sizing: border-box; + width: 100%; + height: 24px; + margin: 0; + padding: 0; } + .mdl-checkbox.is-upgraded { + padding-left: 24px; } + +.mdl-checkbox__input { + line-height: 24px; } + .mdl-checkbox.is-upgraded .mdl-checkbox__input { + 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: 3px; + left: 0; + display: inline-block; + box-sizing: border-box; + width: 16px; + height: 16px; + margin: 0; + cursor: pointer; + overflow: hidden; + border: 2px solid rgba(0,0,0, 0.54); + border-radius: 2px; + z-index: 2; } + .mdl-checkbox.is-checked .mdl-checkbox__box-outline { + border: 2px solid rgb(63,81,181); } + .mdl-checkbox.is-disabled .mdl-checkbox__box-outline { + border: 2px solid rgba(0,0,0, 0.26); + cursor: auto; } + +.mdl-checkbox__focus-helper { + position: absolute; + top: 3px; + left: 0; + display: inline-block; + box-sizing: border-box; + width: 16px; + height: 16px; + border-radius: 50%; + background-color: transparent; } + .mdl-checkbox.is-focused .mdl-checkbox__focus-helper { + box-shadow: 0 0 0px 8px rgba(0, 0, 0, 0.1); + background-color: rgba(0, 0, 0, 0.1); } + .mdl-checkbox.is-focused.is-checked .mdl-checkbox__focus-helper { + box-shadow: 0 0 0px 8px rgba(63,81,181, 0.26); + background-color: rgba(63,81,181, 0.26); } + +.mdl-checkbox__tick-outline { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + -webkit-mask: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcCI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gMCwwIDAsMSAxLDEgMSwwIDAsMCB6IE0gMC44NTM0Mzc1LDAuMTY3MTg3NSAwLjk1OTY4NzUsMC4yNzMxMjUgMC40MjkzNzUsMC44MDM0Mzc1IDAuMzIzMTI1LDAuOTA5Njg3NSAwLjIxNzE4NzUsMC44MDM0Mzc1IDAuMDQwMzEyNSwwLjYyNjg3NSAwLjE0NjU2MjUsMC41MjA2MjUgMC4zMjMxMjUsMC42OTc1IDAuODUzNDM3NSwwLjE2NzE4NzUgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8bWFzayBpZD0ibWFzayIgbWFza1VuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgbWFza0NvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgogICAgICA8cGF0aAogICAgICAgICBkPSJNIDAsMCAwLDEgMSwxIDEsMCAwLDAgeiBNIDAuODUzNDM3NSwwLjE2NzE4NzUgMC45NTk2ODc1LDAuMjczMTI1IDAuNDI5Mzc1LDAuODAzNDM3NSAwLjMyMzEyNSwwLjkwOTY4NzUgMC4yMTcxODc1LDAuODAzNDM3NSAwLjA0MDMxMjUsMC42MjY4NzUgMC4xNDY1NjI1LDAuNTIwNjI1IDAuMzIzMTI1LDAuNjk3NSAwLjg1MzQzNzUsMC4xNjcxODc1IHoiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+CiAgICA8L21hc2s+CiAgPC9kZWZzPgogIDxyZWN0CiAgICAgd2lkdGg9IjEiCiAgICAgaGVpZ2h0PSIxIgogICAgIHg9IjAiCiAgICAgeT0iMCIKICAgICBjbGlwLXBhdGg9InVybCgjY2xpcCkiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KPC9zdmc+Cg=="); + mask: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcCI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gMCwwIDAsMSAxLDEgMSwwIDAsMCB6IE0gMC44NTM0Mzc1LDAuMTY3MTg3NSAwLjk1OTY4NzUsMC4yNzMxMjUgMC40MjkzNzUsMC44MDM0Mzc1IDAuMzIzMTI1LDAuOTA5Njg3NSAwLjIxNzE4NzUsMC44MDM0Mzc1IDAuMDQwMzEyNSwwLjYyNjg3NSAwLjE0NjU2MjUsMC41MjA2MjUgMC4zMjMxMjUsMC42OTc1IDAuODUzNDM3NSwwLjE2NzE4NzUgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8bWFzayBpZD0ibWFzayIgbWFza1VuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgbWFza0NvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgogICAgICA8cGF0aAogICAgICAgICBkPSJNIDAsMCAwLDEgMSwxIDEsMCAwLDAgeiBNIDAuODUzNDM3NSwwLjE2NzE4NzUgMC45NTk2ODc1LDAuMjczMTI1IDAuNDI5Mzc1LDAuODAzNDM3NSAwLjMyMzEyNSwwLjkwOTY4NzUgMC4yMTcxODc1LDAuODAzNDM3NSAwLjA0MDMxMjUsMC42MjY4NzUgMC4xNDY1NjI1LDAuNTIwNjI1IDAuMzIzMTI1LDAuNjk3NSAwLjg1MzQzNzUsMC4xNjcxODc1IHoiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+CiAgICA8L21hc2s+CiAgPC9kZWZzPgogIDxyZWN0CiAgICAgd2lkdGg9IjEiCiAgICAgaGVpZ2h0PSIxIgogICAgIHg9IjAiCiAgICAgeT0iMCIKICAgICBjbGlwLXBhdGg9InVybCgjY2xpcCkiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KPC9zdmc+Cg=="); + background: transparent; + -webkit-transition-duration: 0.28s; + transition-duration: 0.28s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + -webkit-transition-property: background; + transition-property: background; } + .mdl-checkbox.is-checked .mdl-checkbox__tick-outline { + background: rgb(63,81,181) url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K"); } + .mdl-checkbox.is-checked.is-disabled .mdl-checkbox__tick-outline { + background: rgba(0,0,0, 0.26) url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K"); } + +.mdl-checkbox__label { + position: relative; + cursor: pointer; + font-size: 16px; + line-height: 24px; + margin: 0; } + .mdl-checkbox.is-disabled .mdl-checkbox__label { + color: rgba(0,0,0, 0.26); + cursor: auto; } + +.mdl-checkbox__ripple-container { + position: absolute; + z-index: 2; + top: -6px; + left: -10px; + box-sizing: border-box; + width: 36px; + height: 36px; + border-radius: 50%; + cursor: pointer; + overflow: hidden; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); } + .mdl-checkbox__ripple-container .mdl-ripple { + background: rgb(63,81,181); } + .mdl-checkbox.is-disabled .mdl-checkbox__ripple-container { + cursor: auto; } + .mdl-checkbox.is-disabled .mdl-checkbox__ripple-container .mdl-ripple { + background: transparent; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-data-table { + position: relative; + border: 1px solid rgba(0, 0, 0, 0.12); + border-collapse: collapse; + white-space: nowrap; + font-size: 13px; + background-color: rgb(255,255,255); } + .mdl-data-table thead { + padding-bottom: 3px; } + .mdl-data-table thead .mdl-data-table__select { + margin-top: 0; } + .mdl-data-table tbody tr { + position: relative; + height: 48px; + -webkit-transition-duration: 0.28s; + transition-duration: 0.28s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + -webkit-transition-property: background-color; + transition-property: background-color; } + .mdl-data-table tbody tr.is-selected { + background-color: #e0e0e0; } + .mdl-data-table tbody tr:hover { + background-color: #eeeeee; } + .mdl-data-table td, .mdl-data-table th { + padding: 0 18px 0 18px; + text-align: right; } + .mdl-data-table td:first-of-type, .mdl-data-table th:first-of-type { + padding-left: 24px; } + .mdl-data-table td:last-of-type, .mdl-data-table th:last-of-type { + padding-right: 24px; } + .mdl-data-table td { + position: relative; + vertical-align: top; + height: 48px; + border-top: 1px solid rgba(0, 0, 0, 0.12); + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + padding-top: 12px; + box-sizing: border-box; } + .mdl-data-table td .mdl-data-table__select { + vertical-align: top; + position: absolute; + left: 24px; } + .mdl-data-table th { + position: relative; + vertical-align: bottom; + text-overflow: ellipsis; + font-size: 14px; + font-weight: bold; + line-height: 24px; + letter-spacing: 0; + height: 48px; + font-size: 12px; + color: rgba(0, 0, 0, 0.54); + padding-bottom: 8px; + box-sizing: border-box; } + .mdl-data-table th .mdl-data-table__select { + position: absolute; + bottom: 8px; + left: 24px; } + +.mdl-data-table__select { + width: 16px; } + +.mdl-data-table__cell--non-numeric.mdl-data-table__cell--non-numeric { + text-align: left; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-mega-footer { + padding: 16px 40px; + color: rgb(158,158,158); + background-color: rgb(66,66,66); } + +.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: 16px; } + +.mdl-mega-footer--right-section, +.mdl-mega-footer__right-section { + margin-bottom: 16px; } + +.mdl-mega-footer--right-section a, +.mdl-mega-footer__right-section a { + display: block; + margin-bottom: 16px; + 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: 16px; + line-height: 36px; + vertical-align: middle; } } + +.mdl-mega-footer--social-btn, +.mdl-mega-footer__social-btn { + width: 36px; + height: 36px; + padding: 0; + margin: 0; + background-color: rgb(158,158,158); + 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; } + .mdl-mega-footer--drop-down-section:nth-child(3):after, + .mdl-mega-footer__drop-down-section:nth-child(3):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: 55.8px; + padding: 32px; + margin: 0; + margin-top: -16px; + cursor: pointer; + z-index: 1; + opacity: 0; } + .mdl-mega-footer--heading-checkbox ~ .mdl-mega-footer--heading:after, + .mdl-mega-footer--heading-checkbox ~ .mdl-mega-footer__heading:after, + .mdl-mega-footer__heading-checkbox ~ .mdl-mega-footer--heading:after, + .mdl-mega-footer__heading-checkbox ~ .mdl-mega-footer__heading:after { + font-family: 'Material Icons'; + content: '\E5CE'; } + +.mdl-mega-footer--heading-checkbox:checked ~ ul, +.mdl-mega-footer__heading-checkbox:checked ~ ul { + display: none; } + +.mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer--heading:after, +.mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer__heading:after, +.mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer--heading:after, +.mdl-mega-footer__heading-checkbox:checked ~ .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: 39.8px; + margin-bottom: 16px; + box-sizing: border-box; + font-size: 14px; + line-height: 23.8px; + font-weight: 500; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + color: rgb(224,224,224); } + +.mdl-mega-footer--heading:after, +.mdl-mega-footer__heading:after { + content: ''; + position: absolute; + top: 0; + right: 0; + display: block; + width: 23.8px; + height: 23.8px; + background-size: cover; } + +.mdl-mega-footer--link-list, +.mdl-mega-footer__link-list { + list-style: none; + margin: 0; + padding: 0; + margin-bottom: 32px; } + .mdl-mega-footer--link-list:after, + .mdl-mega-footer__link-list:after { + clear: both; + display: block; + content: ''; } + +.mdl-mega-footer--link-list li, +.mdl-mega-footer__link-list li { + font-size: 14px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0; + 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-checkbox ~ .mdl-mega-footer--heading:after, + .mdl-mega-footer--heading-checkbox ~ .mdl-mega-footer__heading:after, + .mdl-mega-footer__heading-checkbox ~ .mdl-mega-footer--heading:after, + .mdl-mega-footer__heading-checkbox ~ .mdl-mega-footer__heading:after { + background-image: none; } + .mdl-mega-footer--heading-checkbox:checked ~ ul, + .mdl-mega-footer__heading-checkbox:checked ~ ul { + display: block; } + .mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer--heading:after, + .mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer__heading:after, + .mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer--heading:after, + .mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer__heading:after { + content: ''; } } + +.mdl-mega-footer--bottom-section, +.mdl-mega-footer__bottom-section { + padding-top: 16px; + margin-bottom: 16px; } + +.mdl-logo { + margin-bottom: 16px; + 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: 16px; } + +@media screen and (min-width: 760px) { + .mdl-logo { + float: left; + margin-bottom: 0; + margin-right: 16px; } } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-mini-footer { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 32px 16px; + color: rgb(158,158,158); + background-color: rgb(66,66,66); } + .mdl-mini-footer:after { + content: ''; + display: block; } + .mdl-mini-footer .mdl-logo { + line-height: 36px; } + +.mdl-mini-footer--link-list, +.mdl-mini-footer__link-list { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + list-style: none; + margin: 0; + padding: 0; } + .mdl-mini-footer--link-list li, + .mdl-mini-footer__link-list li { + margin-bottom: 0; + margin-right: 16px; } + @media screen and (min-width: 760px) { + .mdl-mini-footer--link-list li, + .mdl-mini-footer__link-list li { + line-height: 36px; } } + .mdl-mini-footer--link-list a, + .mdl-mini-footer__link-list a { + color: inherit; + text-decoration: none; + white-space: nowrap; } + +.mdl-mini-footer--left-section, +.mdl-mini-footer__left-section { + display: inline-block; + -webkit-box-ordinal-group: 1; + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; } + +.mdl-mini-footer--right-section, +.mdl-mini-footer__right-section { + display: inline-block; + -webkit-box-ordinal-group: 2; + -webkit-order: 1; + -ms-flex-order: 1; + order: 1; } + +.mdl-mini-footer--social-btn, +.mdl-mini-footer__social-btn { + width: 36px; + height: 36px; + padding: 0; + margin: 0; + background-color: rgb(158,158,158); + border: none; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-icon-toggle { + position: relative; + z-index: 1; + vertical-align: middle; + display: inline-block; + height: 32px; + margin: 0; + padding: 0; } + +.mdl-icon-toggle__input { + line-height: 32px; } + .mdl-icon-toggle.is-upgraded .mdl-icon-toggle__input { + 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: 32px; + width: 32px; + min-width: 32px; + color: rgb(97,97,97); + border-radius: 50%; + padding: 0; + margin-left: 0; + margin-right: 0; + text-align: center; + background-color: transparent; + will-change: background-color; + -webkit-transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); + transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); } + .mdl-icon-toggle__label.material-icons { + line-height: 32px; + font-size: 24px; } + .mdl-icon-toggle.is-checked .mdl-icon-toggle__label { + color: rgb(63,81,181); } + .mdl-icon-toggle.is-disabled .mdl-icon-toggle__label { + color: rgba(0,0,0, 0.26); + cursor: auto; + -webkit-transition: none; + transition: none; } + .mdl-icon-toggle.is-focused .mdl-icon-toggle__label { + background-color: rgba(0,0,0, 0.12); } + .mdl-icon-toggle.is-focused.is-checked .mdl-icon-toggle__label { + background-color: rgba(63,81,181, 0.26); } + +.mdl-icon-toggle__ripple-container { + position: absolute; + z-index: 2; + top: -2px; + left: -2px; + box-sizing: border-box; + width: 36px; + height: 36px; + border-radius: 50%; + cursor: pointer; + overflow: hidden; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); } + .mdl-icon-toggle__ripple-container .mdl-ripple { + background: rgb(97,97,97); } + .mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container { + cursor: auto; } + .mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container .mdl-ripple { + background: transparent; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-menu__container { + display: block; + margin: 0; + padding: 0; + border: none; + position: absolute; + overflow: visible; + height: 0; + width: 0; + visibility: hidden; + z-index: -1; } + .mdl-menu__container.is-visible, + .mdl-menu__container.is-animating { + z-index: 999; + visibility: visible; } + +.mdl-menu__outline { + display: block; + background: rgb(255,255,255); + margin: 0; + padding: 0; + border: none; + border-radius: 2px; + position: absolute; + top: 0; + left: 0; + overflow: hidden; + opacity: 0; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + 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); + will-change: transform; + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1); + transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1); + z-index: -1; } + .mdl-menu__container.is-visible .mdl-menu__outline { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + z-index: 999; } + .mdl-menu__outline.mdl-menu--bottom-right { + -webkit-transform-origin: 100% 0; + -ms-transform-origin: 100% 0; + transform-origin: 100% 0; } + .mdl-menu__outline.mdl-menu--top-left { + -webkit-transform-origin: 0 100%; + -ms-transform-origin: 0 100%; + transform-origin: 0 100%; } + .mdl-menu__outline.mdl-menu--top-right { + -webkit-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + 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 .mdl-menu { + opacity: 1; + z-index: 999; } + .mdl-menu.is-animating { + -webkit-transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1), clip 0.3s cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1), clip 0.3s cubic-bezier(0.4, 0, 0.2, 1); } + .mdl-menu.mdl-menu--bottom-right { + left: auto; + right: 0; } + .mdl-menu.mdl-menu--top-left { + top: auto; + bottom: 0; } + .mdl-menu.mdl-menu--top-right { + top: auto; + left: auto; + bottom: 0; + right: 0; } + .mdl-menu.mdl-menu--unaligned { + top: auto; + left: auto; } + +.mdl-menu__item { + display: block; + border: none; + color: rgba(0,0,0, 0.87); + background-color: transparent; + text-align: left; + margin: 0; + padding: 0 16px; + outline-color: rgb(189,189,189); + position: relative; + overflow: hidden; + font-size: 14px; + font-weight: 400; + line-height: 24px; + letter-spacing: 0; + text-decoration: none; + cursor: pointer; + height: 48px; + line-height: 48px; + white-space: nowrap; + opacity: 0; + -webkit-transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1); + transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + .mdl-menu__container.is-visible .mdl-menu__item { + opacity: 1; } + .mdl-menu__item::-moz-focus-inner { + border: 0; } + .mdl-menu__item[disabled] { + color: rgb(189,189,189); + background-color: transparent; + cursor: auto; } + .mdl-menu__item[disabled]:hover { + background-color: transparent; } + .mdl-menu__item[disabled]:focus { + background-color: transparent; } + .mdl-menu__item[disabled] .mdl-ripple { + background: transparent; } + .mdl-menu__item:hover { + background-color: rgb(238,238,238); } + .mdl-menu__item:focus { + outline: none; + background-color: rgb(238,238,238); } + .mdl-menu__item:active { + background-color: rgb(224,224,224); } + +.mdl-menu__item--ripple-container { + display: block; + height: 100%; + left: 0px; + position: absolute; + top: 0px; + width: 100%; + z-index: 0; + overflow: hidden; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-progress { + display: block; + position: relative; + height: 4px; + width: 500px; } + +.mdl-progress > .bar { + display: block; + position: absolute; + top: 0; + bottom: 0; + width: 0%; + -webkit-transition: width 0.2s cubic-bezier(0.4, 0, 0.2, 1); + transition: width 0.2s cubic-bezier(0.4, 0, 0.2, 1); } + +.mdl-progress > .progressbar { + background-color: rgb(63,81,181); + z-index: 1; + left: 0; } + +.mdl-progress > .bufferbar { + background-image: -webkit-linear-gradient(left, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), -webkit-linear-gradient(left, rgb(63,81,181), rgb(63,81,181)); + background-image: linear-gradient(to right, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), linear-gradient(to right, rgb(63,81,181), rgb(63,81,181)); + z-index: 0; + left: 0; } + +.mdl-progress > .auxbar { + right: 0; } + +@supports (-webkit-appearance: none) { + .mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate) > .auxbar { + background-image: -webkit-linear-gradient(left, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), -webkit-linear-gradient(left, rgb(63,81,181), rgb(63,81,181)); + background-image: linear-gradient(to right, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), linear-gradient(to right, rgb(63,81,181), rgb(63,81,181)); + -webkit-mask: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjQiIHZpZXdQb3J0PSIwIDAgMTIgNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxlbGxpcHNlIGN4PSIyIiBjeT0iMiIgcng9IjIiIHJ5PSIyIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImN4IiBmcm9tPSIyIiB0bz0iLTEwIiBkdXI9IjAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogIDwvZWxsaXBzZT4KICA8ZWxsaXBzZSBjeD0iMTQiIGN5PSIyIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJsb2FkZXIiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY3giIGZyb209IjE0IiB0bz0iMiIgZHVyPSIwLjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICA8L2VsbGlwc2U+Cjwvc3ZnPgo="); + mask: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjQiIHZpZXdQb3J0PSIwIDAgMTIgNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxlbGxpcHNlIGN4PSIyIiBjeT0iMiIgcng9IjIiIHJ5PSIyIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImN4IiBmcm9tPSIyIiB0bz0iLTEwIiBkdXI9IjAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogIDwvZWxsaXBzZT4KICA8ZWxsaXBzZSBjeD0iMTQiIGN5PSIyIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJsb2FkZXIiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY3giIGZyb209IjE0IiB0bz0iMiIgZHVyPSIwLjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICA8L2VsbGlwc2U+Cjwvc3ZnPgo="); } } + +.mdl-progress:not(.mdl-progress__indeterminate) > .auxbar { + background-image: -webkit-linear-gradient(left, rgba(255,255,255, 0.9), rgba(255,255,255, 0.9)), -webkit-linear-gradient(left, rgb(63,81,181), rgb(63,81,181)); + background-image: linear-gradient(to right, rgba(255,255,255, 0.9), rgba(255,255,255, 0.9)), linear-gradient(to right, rgb(63,81,181), rgb(63,81,181)); } + +.mdl-progress.mdl-progress__indeterminate > .bar1 { + background-color: rgb(63,81,181); + -webkit-animation-name: indeterminate1; + animation-name: indeterminate1; + -webkit-animation-duration: 2s; + animation-duration: 2s; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; + animation-timing-function: linear; } + +.mdl-progress.mdl-progress__indeterminate > .bar3 { + background-image: none; + background-color: rgb(63,81,181); + -webkit-animation-name: indeterminate2; + animation-name: indeterminate2; + -webkit-animation-duration: 2s; + animation-duration: 2s; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + -webkit-animation-timing-function: linear; + animation-timing-function: linear; } + +@-webkit-keyframes indeterminate1 { + 0% { + left: 0%; + width: 0%; } + 50% { + left: 25%; + width: 75%; } + 75% { + left: 100%; + width: 0%; } } + +@keyframes indeterminate1 { + 0% { + left: 0%; + width: 0%; } + 50% { + left: 25%; + width: 75%; } + 75% { + left: 100%; + width: 0%; } } + +@-webkit-keyframes indeterminate2 { + 0% { + left: 0%; + width: 0%; } + 50% { + left: 0%; + width: 0%; } + 75% { + left: 0%; + width: 25%; } + 100% { + 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%; } } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-navigation { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + box-sizing: border-box; } + +.mdl-navigation__link { + color: rgb(66,66,66); + text-decoration: none; + font-weight: 500; + font-size: 13px; + margin: 0; } + +.mdl-layout { + width: 100%; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + overflow-y: auto; + overflow-x: hidden; + position: relative; + -webkit-overflow-scrolling: touch; } + +.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%; } + +.mdl-layout-title { + display: block; + position: relative; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 20px; + font-weight: 500; + line-height: 1; + letter-spacing: 0.02em; + font-weight: 400; + box-sizing: border-box; } + +.mdl-layout-spacer { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; } + +.mdl-layout__drawer { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + width: 240px; + height: 100%; + max-height: 100%; + position: absolute; + top: 0; + left: 0; + 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); + box-sizing: border-box; + border-right: 1px solid rgb(224,224,224); + background: rgb(250,250,250); + -webkit-transform: translateX(-250px); + -ms-transform: translateX(-250px); + transform: translateX(-250px); + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; + will-change: transform; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + -webkit-transition-property: -webkit-transform; + transition-property: transform; + color: rgb(66,66,66); + overflow: visible; + overflow-y: auto; + z-index: 5; } + .mdl-layout__drawer.is-visible { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); } + .mdl-layout__drawer > * { + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; } + .mdl-layout__drawer > .mdl-layout-title { + line-height: 64px; + padding-left: 40px; } + @media screen and (max-width: 1024px) { + .mdl-layout__drawer > .mdl-layout-title { + line-height: 56px; + padding-left: 16px; } } + .mdl-layout__drawer .mdl-navigation { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: stretch; + -webkit-align-items: stretch; + -ms-flex-align: stretch; + align-items: stretch; + padding-top: 16px; } + .mdl-layout__drawer .mdl-navigation .mdl-navigation__link { + display: block; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + padding: 16px 40px; + margin: 0; + color: #757575; } + @media screen and (max-width: 1024px) { + .mdl-layout__drawer .mdl-navigation .mdl-navigation__link { + padding: 16px 16px; } } + .mdl-layout__drawer .mdl-navigation .mdl-navigation__link:hover { + background-color: rgb(224,224,224); } + .mdl-layout__drawer .mdl-navigation .mdl-navigation__link--current { + background-color: rgb(0,0,0); + color: rgb(63,81,181); } + @media screen and (min-width: 1025px) { + .mdl-layout--fixed-drawer > .mdl-layout__drawer { + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); } } + +.mdl-layout__drawer-button { + display: block; + position: absolute; + height: 48px; + width: 48px; + border: 0; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + overflow: hidden; + text-align: center; + cursor: pointer; + font-size: 26px; + line-height: 50px; + font-family: Helvetica, Arial, sans-serif; + margin: 10px 12px; + top: 0; + left: 0; + color: rgb(255,255,255); + z-index: 4; } + .mdl-layout__header .mdl-layout__drawer-button { + position: absolute; + color: rgb(255,255,255); + background-color: inherit; } + @media screen and (max-width: 1024px) { + .mdl-layout__header .mdl-layout__drawer-button { + margin: 4px; } } + @media screen and (max-width: 1024px) { + .mdl-layout__drawer-button { + margin: 4px; + color: rgba(0, 0, 0, 0.5); } } + @media screen and (min-width: 1025px) { + .mdl-layout--fixed-drawer > .mdl-layout__drawer-button { + display: none; } } + +.mdl-layout__header { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + box-sizing: border-box; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + width: 100%; + margin: 0; + padding: 0; + border: none; + min-height: 64px; + max-height: 1000px; + z-index: 3; + background-color: rgb(63,81,181); + color: rgb(255,255,255); + 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); + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + -webkit-transition-property: max-height, box-shadow; + transition-property: max-height, box-shadow; } + @media screen and (max-width: 1024px) { + .mdl-layout__header { + min-height: 56px; } } + .mdl-layout--fixed-drawer:not(.is-small-screen) > .mdl-layout__header { + margin-left: 240px; + width: calc(100% - 240px); } + @media screen and (min-width: 1024px) { + .mdl-layout--fixed-drawer > .mdl-layout__header .mdl-layout__header-row { + padding-left: 40px; } } + .mdl-layout__header > .mdl-layout-icon { + position: absolute; + left: 40px; + top: 16px; + height: 32px; + width: 32px; + overflow: hidden; + z-index: 3; + display: block; } + @media screen and (max-width: 1024px) { + .mdl-layout__header > .mdl-layout-icon { + left: 16px; + top: 12px; } } + .mdl-layout.has-drawer .mdl-layout__header > .mdl-layout-icon { + display: none; } + .mdl-layout__header.is-compact { + max-height: 64px; } + @media screen and (max-width: 1024px) { + .mdl-layout__header.is-compact { + max-height: 56px; } } + .mdl-layout__header.is-compact.has-tabs { + height: 112px; } + @media screen and (max-width: 1024px) { + .mdl-layout__header.is-compact.has-tabs { + min-height: 104px; } } + @media screen and (max-width: 1024px) { + .mdl-layout__header { + display: none; } + .mdl-layout--fixed-header > .mdl-layout__header { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + 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; } + .mdl-layout__header--waterfall.is-casting-shadow { + 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); } + +.mdl-layout__header-row { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + box-sizing: border-box; + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + height: 64px; + margin: 0; + padding: 0 40px 0 80px; } + @media screen and (max-width: 1024px) { + .mdl-layout__header-row { + height: 56px; + padding: 0 16px 0 72px; } } + .mdl-layout__header-row > * { + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; } + .mdl-layout__header--scroll .mdl-layout__header-row { + width: 100%; } + .mdl-layout__header-row .mdl-navigation { + margin: 0; + padding: 0; + height: 64px; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; } + @media screen and (max-width: 1024px) { + .mdl-layout__header-row .mdl-navigation { + height: 56px; } } + .mdl-layout__header-row .mdl-navigation__link { + display: block; + color: rgb(255,255,255); + line-height: 64px; + padding: 0 24px; } + @media screen and (max-width: 1024px) { + .mdl-layout__header-row .mdl-navigation__link { + line-height: 56px; + padding: 0 16px; } } + +.mdl-layout__obfuscator { + background-color: transparent; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 4; + visibility: hidden; + -webkit-transition-property: background-color; + transition-property: background-color; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } + .mdl-layout__drawer.is-visible ~ .mdl-layout__obfuscator { + background-color: rgba(0, 0, 0, 0.5); + visibility: visible; } + +.mdl-layout__content { + -ms-flex: 0 1 auto; + display: inline-block; + overflow-y: auto; + overflow-x: hidden; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + z-index: 1; + -webkit-overflow-scrolling: touch; } + .mdl-layout--fixed-drawer > .mdl-layout__content { + margin-left: 240px; } + .mdl-layout__container.has-scrolling-header .mdl-layout__content { + overflow: visible; } + @media screen and (max-width: 1024px) { + .mdl-layout--fixed-drawer > .mdl-layout__content { + margin-left: 0; } + .mdl-layout__container.has-scrolling-header .mdl-layout__content { + overflow-y: auto; + overflow-x: hidden; } } + +.mdl-layout__tab-bar { + height: 96px; + margin: 0; + width: calc(100% - 112px); + padding: 0 0 0 56px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + background-color: rgb(63,81,181); + overflow-y: hidden; + overflow-x: scroll; } + .mdl-layout__tab-bar::-webkit-scrollbar { + display: none; } + @media screen and (max-width: 1024px) { + .mdl-layout__tab-bar { + width: calc(100% - 60px); + padding: 0 0 0 60px; } } + .mdl-layout--fixed-tabs .mdl-layout__tab-bar { + padding: 0; + overflow: hidden; + width: 100%; } + +.mdl-layout__tab-bar-container { + position: relative; + height: 48px; + width: 100%; + border: none; + margin: 0; + z-index: 2; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + overflow: hidden; } + .mdl-layout__container > .mdl-layout__tab-bar-container { + position: absolute; + top: 0; + left: 0; } + +.mdl-layout__tab-bar-button { + display: inline-block; + position: absolute; + top: 0; + height: 48px; + width: 56px; + z-index: 4; + text-align: center; + background-color: rgb(63,81,181); + color: transparent; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + @media screen and (max-width: 1024px) { + .mdl-layout__tab-bar-button { + display: none; + width: 60px; } } + .mdl-layout--fixed-tabs .mdl-layout__tab-bar-button { + display: none; } + .mdl-layout__tab-bar-button .material-icons { + line-height: 48px; } + .mdl-layout__tab-bar-button.is-active { + color: rgb(255,255,255); } + +.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 24px 0 24px; + float: left; + position: relative; + display: block; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + text-decoration: none; + height: 48px; + line-height: 48px; + text-align: center; + font-weight: 500; + font-size: 14px; + text-transform: uppercase; + color: rgba(255,255,255, 0.6); + overflow: hidden; } + @media screen and (max-width: 1024px) { + .mdl-layout__tab { + padding: 0 12px 0 12px; } } + .mdl-layout--fixed-tabs .mdl-layout__tab { + float: none; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + padding: 0; } + .mdl-layout.is-upgraded .mdl-layout__tab.is-active { + color: rgb(255,255,255); } + .mdl-layout.is-upgraded .mdl-layout__tab.is-active::after { + height: 2px; + width: 100%; + display: block; + content: " "; + bottom: 0; + left: 0; + position: absolute; + background: rgb(255,64,129); + -webkit-animation: border-expand 0.2s cubic-bezier(0.4, 0, 0.4, 1) 0.01s alternate forwards; + animation: border-expand 0.2s cubic-bezier(0.4, 0, 0.4, 1) 0.01s alternate forwards; + -webkit-transition: all 1s cubic-bezier(0.4, 0, 1, 1); + transition: all 1s cubic-bezier(0.4, 0, 1, 1); } + .mdl-layout__tab .mdl-layout__tab-ripple-container { + display: block; + position: absolute; + height: 100%; + width: 100%; + left: 0; + top: 0; + z-index: 1; + overflow: hidden; } + .mdl-layout__tab .mdl-layout__tab-ripple-container .mdl-ripple { + background-color: rgb(255,255,255); } + +.mdl-layout__tab-panel { + display: block; } + .mdl-layout.is-upgraded .mdl-layout__tab-panel { + display: none; } + .mdl-layout.is-upgraded .mdl-layout__tab-panel.is-active { + display: block; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-radio { + position: relative; + font-size: 16px; + line-height: 24px; + display: inline-block; + box-sizing: border-box; + margin: 0; + padding-left: 0; } + .mdl-radio.is-upgraded { + padding-left: 24px; } + +.mdl-radio__button { + line-height: 24px; } + .mdl-radio.is-upgraded .mdl-radio__button { + 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: 4px; + left: 0; + display: inline-block; + box-sizing: border-box; + width: 16px; + height: 16px; + margin: 0; + cursor: pointer; + border: 2px solid rgba(0,0,0, 0.54); + border-radius: 50%; + z-index: 2; } + .mdl-radio.is-checked .mdl-radio__outer-circle { + border: 2px solid rgb(63,81,181); } + .mdl-radio.is-disabled .mdl-radio__outer-circle { + border: 2px solid rgba(0,0,0, 0.26); + cursor: auto; } + +.mdl-radio__inner-circle { + position: absolute; + z-index: 1; + margin: 0; + top: 8px; + left: 4px; + box-sizing: border-box; + width: 8px; + height: 8px; + cursor: pointer; + -webkit-transition-duration: 0.28s; + transition-duration: 0.28s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + -webkit-transition-property: -webkit-transform; + transition-property: transform; + -webkit-transform: scale3d(0, 0, 0); + transform: scale3d(0, 0, 0); + border-radius: 50%; + background: rgb(63,81,181); } + .mdl-radio.is-checked .mdl-radio__inner-circle { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + .mdl-radio.is-disabled .mdl-radio__inner-circle { + background: rgba(0,0,0, 0.26); + cursor: auto; } + .mdl-radio.is-focused .mdl-radio__inner-circle { + box-shadow: 0 0 0px 10px rgba(0, 0, 0, 0.1); } + +.mdl-radio__label { + cursor: pointer; } + .mdl-radio.is-disabled .mdl-radio__label { + color: rgba(0,0,0, 0.26); + cursor: auto; } + +.mdl-radio__ripple-container { + position: absolute; + z-index: 2; + top: -9px; + left: -13px; + box-sizing: border-box; + width: 42px; + height: 42px; + border-radius: 50%; + cursor: pointer; + overflow: hidden; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); } + .mdl-radio__ripple-container .mdl-ripple { + background: rgb(63,81,181); } + .mdl-radio.is-disabled .mdl-radio__ripple-container { + cursor: auto; } + .mdl-radio.is-disabled .mdl-radio__ripple-container .mdl-ripple { + background: transparent; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +_:-ms-input-placeholder, :root .mdl-slider.mdl-slider.is-upgraded { + -ms-appearance: none; + height: 32px; + margin: 0; } + +.mdl-slider { + width: calc(100% - 40px); + margin: 0 20px; } + .mdl-slider.is-upgraded { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 2px; + background: transparent; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + outline: 0; + padding: 0; + color: rgb(63,81,181); + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; + z-index: 1; + cursor: pointer; + /**************************** Tracks ****************************/ + /**************************** Thumbs ****************************/ + /**************************** 0-value ****************************/ + /**************************** Disabled ****************************/ } + .mdl-slider.is-upgraded::-moz-focus-outer { + border: 0; } + .mdl-slider.is-upgraded::-ms-tooltip { + display: none; } + .mdl-slider.is-upgraded::-webkit-slider-runnable-track { + background: transparent; } + .mdl-slider.is-upgraded::-moz-range-track { + background: transparent; + border: none; } + .mdl-slider.is-upgraded::-ms-track { + background: none; + color: transparent; + height: 2px; + width: 100%; + border: none; } + .mdl-slider.is-upgraded::-ms-fill-lower { + padding: 0; + background: linear-gradient(to right, transparent, transparent 16px, rgb(63,81,181) 16px, rgb(63,81,181) 0); } + .mdl-slider.is-upgraded::-ms-fill-upper { + padding: 0; + background: linear-gradient(to left, transparent, transparent 16px, rgba(0,0,0, 0.26) 16px, rgba(0,0,0, 0.26) 0); } + .mdl-slider.is-upgraded::-webkit-slider-thumb { + -webkit-appearance: none; + width: 12px; + height: 12px; + box-sizing: border-box; + border-radius: 50%; + background: rgb(63,81,181); + border: none; + -webkit-transition: -webkit-transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); + transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); } + .mdl-slider.is-upgraded::-moz-range-thumb { + -moz-appearance: none; + width: 12px; + height: 12px; + box-sizing: border-box; + border-radius: 50%; + background-image: none; + background: rgb(63,81,181); + border: none; } + .mdl-slider.is-upgraded:focus:not(:active)::-webkit-slider-thumb { + box-shadow: 0 0 0 10px rgba(63,81,181, 0.26); } + .mdl-slider.is-upgraded:focus:not(:active)::-moz-range-thumb { + box-shadow: 0 0 0 10px rgba(63,81,181, 0.26); } + .mdl-slider.is-upgraded:active::-webkit-slider-thumb { + background-image: none; + background: rgb(63,81,181); + -webkit-transform: scale(1.5); + transform: scale(1.5); } + .mdl-slider.is-upgraded:active::-moz-range-thumb { + background-image: none; + background: rgb(63,81,181); + transform: scale(1.5); } + .mdl-slider.is-upgraded::-ms-thumb { + width: 32px; + height: 32px; + border: none; + border-radius: 50%; + background: rgb(63,81,181); + -ms-transform: scale(0.375); + transform: scale(0.375); + transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); } + .mdl-slider.is-upgraded:focus:not(:active)::-ms-thumb { + background: radial-gradient(circle closest-side, rgb(63,81,181) 0%, rgb(63,81,181) 37.5%, rgba(63,81,181, 0.26) 37.5%, rgba(63,81,181, 0.26) 100%); + -ms-transform: scale(1); + transform: scale(1); } + .mdl-slider.is-upgraded:active::-ms-thumb { + background: rgb(63,81,181); + -ms-transform: scale(0.5625); + transform: scale(0.5625); } + .mdl-slider.is-upgraded.is-lowest-value::-webkit-slider-thumb { + border: 2px solid rgba(0,0,0, 0.26); + background: transparent; } + .mdl-slider.is-upgraded.is-lowest-value::-moz-range-thumb { + border: 2px solid rgba(0,0,0, 0.26); + background: transparent; } + .mdl-slider.is-upgraded.is-lowest-value ~ +.mdl-slider__background-flex > .mdl-slider__background-upper { + left: 6px; } + .mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-webkit-slider-thumb { + box-shadow: 0 0 0 10px rgba(0,0,0, 0.12); + background: rgba(0,0,0, 0.12); } + .mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-moz-range-thumb { + box-shadow: 0 0 0 10px rgba(0,0,0, 0.12); + background: rgba(0,0,0, 0.12); } + .mdl-slider.is-upgraded.is-lowest-value:active::-webkit-slider-thumb { + border: 1.6px solid rgba(0,0,0, 0.26); + -webkit-transform: scale(1.5); + transform: scale(1.5); } + .mdl-slider.is-upgraded.is-lowest-value:active ~ +.mdl-slider__background-flex > .mdl-slider__background-upper { + left: 9px; } + .mdl-slider.is-upgraded.is-lowest-value:active::-moz-range-thumb { + border: 1.5px solid rgba(0,0,0, 0.26); + transform: scale(1.5); } + .mdl-slider.is-upgraded.is-lowest-value::-ms-thumb { + background: radial-gradient(circle closest-side, transparent 0%, transparent 66.67%, rgba(0,0,0, 0.26) 66.67%, rgba(0,0,0, 0.26) 100%); } + .mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-ms-thumb { + background: radial-gradient(circle closest-side, rgba(0,0,0, 0.12) 0%, rgba(0,0,0, 0.12) 25%, rgba(0,0,0, 0.26) 25%, rgba(0,0,0, 0.26) 37.5%, rgba(0,0,0, 0.12) 37.5%, rgba(0,0,0, 0.12) 100%); + -ms-transform: scale(1); + transform: scale(1); } + .mdl-slider.is-upgraded.is-lowest-value:active::-ms-thumb { + -ms-transform: scale(0.5625); + transform: scale(0.5625); + background: radial-gradient(circle closest-side, transparent 0%, transparent 77.78%, rgba(0,0,0, 0.26) 77.78%, rgba(0,0,0, 0.26) 100%); } + .mdl-slider.is-upgraded.is-lowest-value::-ms-fill-lower { + background: transparent; } + .mdl-slider.is-upgraded.is-lowest-value::-ms-fill-upper { + margin-left: 6px; } + .mdl-slider.is-upgraded.is-lowest-value:active::-ms-fill-upper { + margin-left: 9px; } + .mdl-slider.is-upgraded:disabled:focus::-webkit-slider-thumb, + .mdl-slider.is-upgraded:disabled:active::-webkit-slider-thumb, + .mdl-slider.is-upgraded:disabled::-webkit-slider-thumb { + -webkit-transform: scale(0.667); + transform: scale(0.667); + background: rgba(0,0,0, 0.26); } + .mdl-slider.is-upgraded:disabled:focus::-moz-range-thumb, + .mdl-slider.is-upgraded:disabled:active::-moz-range-thumb, + .mdl-slider.is-upgraded:disabled::-moz-range-thumb { + transform: scale(0.667); + background: rgba(0,0,0, 0.26); } + .mdl-slider.is-upgraded:disabled ~ +.mdl-slider__background-flex > .mdl-slider__background-lower { + background-color: rgba(0,0,0, 0.26); + left: -6px; } + .mdl-slider.is-upgraded:disabled ~ +.mdl-slider__background-flex > .mdl-slider__background-upper { + left: 6px; } + .mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-webkit-slider-thumb, + .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-webkit-slider-thumb, + .mdl-slider.is-upgraded.is-lowest-value:disabled::-webkit-slider-thumb { + border: 3px solid rgba(0,0,0, 0.26); + background: transparent; + -webkit-transform: scale(0.667); + transform: scale(0.667); } + .mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-moz-range-thumb, + .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-moz-range-thumb, + .mdl-slider.is-upgraded.is-lowest-value:disabled::-moz-range-thumb { + border: 3px solid rgba(0,0,0, 0.26); + background: transparent; + transform: scale(0.667); } + .mdl-slider.is-upgraded.is-lowest-value:disabled:active ~ +.mdl-slider__background-flex > .mdl-slider__background-upper { + left: 6px; } + .mdl-slider.is-upgraded:disabled:focus::-ms-thumb, + .mdl-slider.is-upgraded:disabled:active::-ms-thumb, + .mdl-slider.is-upgraded:disabled::-ms-thumb { + -ms-transform: scale(0.25); + transform: scale(0.25); + background: rgba(0,0,0, 0.26); } + .mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-ms-thumb, + .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-thumb, + .mdl-slider.is-upgraded.is-lowest-value:disabled::-ms-thumb { + -ms-transform: scale(0.25); + transform: scale(0.25); + background: radial-gradient(circle closest-side, transparent 0%, transparent 50%, rgba(0,0,0, 0.26) 50%, rgba(0,0,0, 0.26) 100%); } + .mdl-slider.is-upgraded:disabled::-ms-fill-lower { + margin-right: 6px; + background: linear-gradient(to right, transparent, transparent 25px, rgba(0,0,0, 0.26) 25px, rgba(0,0,0, 0.26) 0); } + .mdl-slider.is-upgraded:disabled::-ms-fill-upper { + margin-left: 6px; } + .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-fill-upper { + margin-left: 6px; } + +.mdl-slider__ie-container { + height: 18px; + overflow: visible; + border: none; + margin: none; + padding: none; } + +.mdl-slider__container { + height: 18px; + position: relative; + background: none; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; } + +.mdl-slider__background-flex { + background: transparent; + position: absolute; + height: 2px; + width: calc(100% - 52px); + top: 50%; + left: 0; + margin: 0 26px; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + overflow: hidden; + border: 0; + padding: 0; + -webkit-transform: translate(0, -1px); + -ms-transform: translate(0, -1px); + transform: translate(0, -1px); } + +.mdl-slider__background-lower { + background: rgb(63,81,181); + -webkit-box-flex: 0; + -webkit-flex: 0; + -ms-flex: 0; + flex: 0; + position: relative; + border: 0; + padding: 0; } + +.mdl-slider__background-upper { + background: rgba(0,0,0, 0.26); + -webkit-box-flex: 0; + -webkit-flex: 0; + -ms-flex: 0; + flex: 0; + position: relative; + border: 0; + padding: 0; + -webkit-transition: left 0.18s cubic-bezier(0.4, 0, 0.2, 1); + transition: left 0.18s cubic-bezier(0.4, 0, 0.2, 1); } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-spinner { + display: inline-block; + position: relative; + width: 28px; + height: 28px; } + .mdl-spinner:not(.is-upgraded).is-active:after { + content: "Loading..."; } + .mdl-spinner.is-upgraded.is-active { + -webkit-animation: mdl-spinner__container-rotate 1568.23529412ms linear infinite; + animation: mdl-spinner__container-rotate 1568.23529412ms linear infinite; } + +@-webkit-keyframes mdl-spinner__container-rotate { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +@keyframes mdl-spinner__container-rotate { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } + +.mdl-spinner__layer { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; } + +.mdl-spinner__layer-1 { + border-color: rgb(66,165,245); } + .mdl-spinner--single-color .mdl-spinner__layer-1 { + border-color: rgb(63,81,181); } + .mdl-spinner.is-active .mdl-spinner__layer-1 { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.mdl-spinner__layer-2 { + border-color: rgb(244,67,54); } + .mdl-spinner--single-color .mdl-spinner__layer-2 { + border-color: rgb(63,81,181); } + .mdl-spinner.is-active .mdl-spinner__layer-2 { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.mdl-spinner__layer-3 { + border-color: rgb(253,216,53); } + .mdl-spinner--single-color .mdl-spinner__layer-3 { + border-color: rgb(63,81,181); } + .mdl-spinner.is-active .mdl-spinner__layer-3 { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.mdl-spinner__layer-4 { + border-color: rgb(76,175,80); } + .mdl-spinner--single-color .mdl-spinner__layer-4 { + border-color: rgb(63,81,181); } + .mdl-spinner.is-active .mdl-spinner__layer-4 { + -webkit-animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +@-webkit-keyframes mdl-spinner__fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); + transform: rotate(135deg); } + 25% { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + 37.5% { + -webkit-transform: rotate(405deg); + transform: rotate(405deg); } + 50% { + -webkit-transform: rotate(540deg); + transform: rotate(540deg); } + 62.5% { + -webkit-transform: rotate(675deg); + transform: rotate(675deg); } + 75% { + -webkit-transform: rotate(810deg); + transform: rotate(810deg); } + 87.5% { + -webkit-transform: rotate(945deg); + transform: rotate(945deg); } + to { + -webkit-transform: rotate(1080deg); + transform: rotate(1080deg); } } + +@keyframes mdl-spinner__fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); + transform: rotate(135deg); } + 25% { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); } + 37.5% { + -webkit-transform: rotate(405deg); + transform: rotate(405deg); } + 50% { + -webkit-transform: rotate(540deg); + transform: rotate(540deg); } + 62.5% { + -webkit-transform: rotate(675deg); + transform: rotate(675deg); } + 75% { + -webkit-transform: rotate(810deg); + transform: rotate(810deg); } + 87.5% { + -webkit-transform: rotate(945deg); + transform: rotate(945deg); } + to { + -webkit-transform: rotate(1080deg); + transform: rotate(1080deg); } } + +/** +* 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 +*/ +@-webkit-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-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; } } + +@-webkit-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-2-fade-in-out { + from { + opacity: 0; } + 15% { + opacity: 0; } + 25% { + opacity: 0.99; } + 50% { + opacity: 0.99; } + 51% { + opacity: 0; } } + +@-webkit-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-3-fade-in-out { + from { + opacity: 0; } + 40% { + opacity: 0; } + 50% { + opacity: 0.99; } + 75% { + opacity: 0.99; } + 76% { + opacity: 0; } } + +@-webkit-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; } } + +@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__gap-patch .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__circle-clipper .mdl-spinner__circle { + width: 200%; } + +.mdl-spinner__circle { + box-sizing: border-box; + height: 100%; + border-width: 3px; + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; + -webkit-animation: none; + animation: none; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; } + .mdl-spinner__left .mdl-spinner__circle { + border-right-color: transparent !important; + -webkit-transform: rotate(129deg); + -ms-transform: rotate(129deg); + transform: rotate(129deg); } + .mdl-spinner.is-active .mdl-spinner__left .mdl-spinner__circle { + -webkit-animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + .mdl-spinner__right .mdl-spinner__circle { + left: -100%; + border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); + -ms-transform: rotate(-129deg); + transform: rotate(-129deg); } + .mdl-spinner.is-active .mdl-spinner__right .mdl-spinner__circle { + -webkit-animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +@-webkit-keyframes mdl-spinner__left-spin { + from { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); } + 50% { + -webkit-transform: rotate(-5deg); + transform: rotate(-5deg); } + to { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); } } + +@keyframes mdl-spinner__left-spin { + from { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); } + 50% { + -webkit-transform: rotate(-5deg); + transform: rotate(-5deg); } + to { + -webkit-transform: rotate(130deg); + transform: rotate(130deg); } } + +@-webkit-keyframes mdl-spinner__right-spin { + from { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); } + 50% { + -webkit-transform: rotate(5deg); + transform: rotate(5deg); } + to { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); } } + +@keyframes mdl-spinner__right-spin { + from { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); } + 50% { + -webkit-transform: rotate(5deg); + transform: rotate(5deg); } + to { + -webkit-transform: rotate(-130deg); + transform: rotate(-130deg); } } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-switch { + position: relative; + z-index: 1; + vertical-align: middle; + display: inline-block; + box-sizing: border-box; + width: 100%; + height: 24px; + margin: 0; + padding: 0; + overflow: visible; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + .mdl-switch.is-upgraded { + padding-left: 28px; } + +.mdl-switch__input { + line-height: 24px; } + .mdl-switch.is-upgraded .mdl-switch__input { + 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: rgba(0,0,0, 0.26); + position: absolute; + left: 0; + top: 5px; + height: 14px; + width: 36px; + border-radius: 14px; + cursor: pointer; } + .mdl-switch.is-checked .mdl-switch__track { + background: rgba(63,81,181, 0.5); } + .mdl-switch.is-disabled .mdl-switch__track { + background: rgba(0,0,0, 0.12); + cursor: auto; } + +.mdl-switch__thumb { + background: rgb(250,250,250); + position: absolute; + left: 0; + top: 2px; + height: 20px; + width: 20px; + border-radius: 50%; + cursor: pointer; + 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); + -webkit-transition-duration: 0.28s; + transition-duration: 0.28s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + -webkit-transition-property: left; + transition-property: left; } + .mdl-switch.is-checked .mdl-switch__thumb { + background: rgb(63,81,181); + left: 16px; + box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 8px 0 rgba(0, 0, 0, 0.12); } + .mdl-switch.is-disabled .mdl-switch__thumb { + background: rgb(189,189,189); + cursor: auto; } + +.mdl-switch__focus-helper { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-4px, -4px); + -ms-transform: translate(-4px, -4px); + transform: translate(-4px, -4px); + display: inline-block; + box-sizing: border-box; + width: 8px; + height: 8px; + border-radius: 50%; + background-color: transparent; } + .mdl-switch.is-focused .mdl-switch__focus-helper { + box-shadow: 0 0 0px 20px rgba(0, 0, 0, 0.1); + background-color: rgba(0, 0, 0, 0.1); } + .mdl-switch.is-focused.is-checked .mdl-switch__focus-helper { + box-shadow: 0 0 0px 20px rgba(63,81,181, 0.26); + background-color: rgba(63,81,181, 0.26); } + +.mdl-switch__label { + position: relative; + cursor: pointer; + font-size: 16px; + line-height: 24px; + margin: 0; + left: 24px; } + .mdl-switch.is-disabled .mdl-switch__label { + color: rgb(189,189,189); + cursor: auto; } + +.mdl-switch__ripple-container { + position: absolute; + z-index: 2; + top: -12px; + left: -14px; + box-sizing: border-box; + width: 48px; + height: 48px; + border-radius: 50%; + cursor: pointer; + overflow: hidden; + -webkit-mask-image: -webkit-radial-gradient(circle, white, black); + -webkit-transition-duration: 0.40s; + transition-duration: 0.40s; + -webkit-transition-timing-function: step-end; + transition-timing-function: step-end; + -webkit-transition-property: left; + transition-property: left; } + .mdl-switch__ripple-container .mdl-ripple { + background: rgb(63,81,181); } + .mdl-switch.is-disabled .mdl-switch__ripple-container { + cursor: auto; } + .mdl-switch.is-disabled .mdl-switch__ripple-container .mdl-ripple { + background: transparent; } + .mdl-switch.is-checked .mdl-switch__ripple-container { + cursor: auto; + left: 2px; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-tabs { + display: block; + width: 100%; } + +.mdl-tabs__tab-bar { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-content: space-between; + -ms-flex-line-pack: justify; + align-content: space-between; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + height: 48px; + padding: 0 0 0 0; + margin: 0; + border-bottom: 1px solid rgb(224,224,224); } + +.mdl-tabs__tab { + margin: 0; + border: none; + padding: 0 24px 0 24px; + float: left; + position: relative; + display: block; + color: red; + text-decoration: none; + height: 48px; + line-height: 48px; + text-align: center; + font-weight: 500; + font-size: 14px; + text-transform: uppercase; + color: rgba(0,0,0, 0.54); + overflow: hidden; } + .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active { + color: rgba(0,0,0, 0.87); } + .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after { + height: 2px; + width: 100%; + display: block; + content: " "; + bottom: 0px; + left: 0px; + position: absolute; + background: rgb(63,81,181); + -webkit-animation: border-expand 0.2s cubic-bezier(0.4, 0, 0.4, 1) 0.01s alternate forwards; + animation: border-expand 0.2s cubic-bezier(0.4, 0, 0.4, 1) 0.01s alternate forwards; + -webkit-transition: all 1s cubic-bezier(0.4, 0, 1, 1); + transition: all 1s cubic-bezier(0.4, 0, 1, 1); } + .mdl-tabs__tab .mdl-tabs__ripple-container { + display: block; + position: absolute; + height: 100%; + width: 100%; + left: 0px; + top: 0px; + z-index: 1; + overflow: hidden; } + .mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple { + background: rgb(63,81,181); } + +.mdl-tabs__panel { + display: block; } + .mdl-tabs.is-upgraded .mdl-tabs__panel { + display: none; } + .mdl-tabs.is-upgraded .mdl-tabs__panel.is-active { + display: block; } + +@-webkit-keyframes border-expand { + 0% { + opacity: 0; + width: 0; } + 100% { + opacity: 1; + width: 100%; } } + +@keyframes border-expand { + 0% { + opacity: 0; + width: 0; } + 100% { + opacity: 1; + width: 100%; } } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-textfield { + position: relative; + font-size: 16px; + display: inline-block; + box-sizing: border-box; + width: 300px; + max-width: 100%; + margin: 0; + padding: 20px 0; } + .mdl-textfield .mdl-button { + position: absolute; + bottom: 20px; } + +.mdl-textfield--align-right { + text-align: right; } + +.mdl-textfield--full-width { + width: 100%; } + +.mdl-textfield--expandable { + min-width: 32px; + width: auto; + min-height: 32px; } + +.mdl-textfield__input { + border: none; + border-bottom: 1px solid rgba(0,0,0, 0.12); + display: block; + font-size: 16px; + margin: 0; + padding: 4px 0; + width: 100%; + background: none; + text-align: left; + color: inherit; } + .mdl-textfield.is-focused .mdl-textfield__input { + outline: none; } + .mdl-textfield.is-invalid .mdl-textfield__input { + border-color: rgb(222, 50, 38); + box-shadow: none; } + .mdl-textfield.is-disabled .mdl-textfield__input { + background-color: transparent; + border-bottom: 1px dotted rgba(0,0,0, 0.12); + color: rgba(0,0,0, 0.26); } + +.mdl-textfield textarea.mdl-textfield__input { + display: block; } + +.mdl-textfield__label { + bottom: 0; + color: rgba(0,0,0, 0.26); + font-size: 16px; + left: 0; + right: 0; + pointer-events: none; + position: absolute; + display: block; + top: 24px; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-align: left; } + .mdl-textfield.is-dirty .mdl-textfield__label { + visibility: hidden; } + .mdl-textfield--floating-label .mdl-textfield__label { + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); } + .mdl-textfield.is-disabled.is-disabled .mdl-textfield__label { + color: rgba(0,0,0, 0.26); } + .mdl-textfield--floating-label.is-focused .mdl-textfield__label, + .mdl-textfield--floating-label.is-dirty .mdl-textfield__label { + color: rgb(63,81,181); + font-size: 12px; + top: 4px; + visibility: visible; } + .mdl-textfield--floating-label.is-focused .mdl-textfield__expandable-holder .mdl-textfield__label, + .mdl-textfield--floating-label.is-dirty .mdl-textfield__expandable-holder .mdl-textfield__label { + top: -16px; } + .mdl-textfield--floating-label.is-invalid .mdl-textfield__label { + color: rgb(222, 50, 38); + font-size: 12px; } + .mdl-textfield__label:after { + background-color: rgb(63,81,181); + bottom: 20px; + content: ''; + height: 2px; + left: 45%; + position: absolute; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + visibility: hidden; + width: 10px; } + .mdl-textfield.is-focused .mdl-textfield__label:after { + left: 0; + visibility: visible; + width: 100%; } + .mdl-textfield.is-invalid .mdl-textfield__label:after { + background-color: rgb(222, 50, 38); } + +.mdl-textfield__error { + color: rgb(222, 50, 38); + position: absolute; + font-size: 12px; + margin-top: 3px; + visibility: hidden; + display: block; } + .mdl-textfield.is-invalid .mdl-textfield__error { + visibility: visible; } + +.mdl-textfield__expandable-holder { + display: inline-block; + position: relative; + margin-left: 32px; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + display: inline-block; + max-width: 0.1px; } + .mdl-textfield.is-focused .mdl-textfield__expandable-holder, .mdl-textfield.is-dirty .mdl-textfield__expandable-holder { + max-width: 600px; } + .mdl-textfield__expandable-holder .mdl-textfield__label:after { + bottom: 0; } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-tooltip { + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transform-origin: top center; + -ms-transform-origin: top center; + transform-origin: top center; + will-change: transform; + z-index: 999; + background: rgba(97,97,97, 0.9); + border-radius: 2px; + color: rgb(255,255,255); + display: inline-block; + font-size: 10px; + font-weight: 500; + line-height: 14px; + max-width: 170px; + position: fixed; + top: -500px; + left: -500px; + padding: 8px; + text-align: center; } + +.mdl-tooltip.is-active { + -webkit-animation: pulse 200ms cubic-bezier(0, 0, 0.2, 1) forwards; + animation: pulse 200ms cubic-bezier(0, 0, 0.2, 1) forwards; } + +.mdl-tooltip--large { + line-height: 14px; + font-size: 14px; + padding: 16px; } + +@-webkit-keyframes pulse { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; } + 50% { + -webkit-transform: scale(0.99); + transform: scale(0.99); } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + visibility: visible; } } + +@keyframes pulse { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; } + 50% { + -webkit-transform: scale(0.99); + transform: scale(0.99); } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + visibility: visible; } } + +/** + * 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. + */ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +/** + * 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 */ +/* Shadows */ +/* Animations */ +.mdl-shadow--2dp { + 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); } + +.mdl-shadow--3dp { + box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 8px 0 rgba(0, 0, 0, 0.12); } + +.mdl-shadow--4dp { + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); } + +.mdl-shadow--6dp { + box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.2); } + +.mdl-shadow--8dp { + box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2); } + +.mdl-shadow--16dp { + box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2); } + +/** + * 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` +*/ +/** + * 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 + */ +/* ========== 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. +*/ +/* ========== COLORS ========== */ +/** +* +* Material design color palettes. +* @see http://www.google.com/design/spec/style/color.html +* +**/ +/** + * 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 ========== */ +/* colors.scss */ +/** + * 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 & Themes ========== */ +/* ========== Typography ========== */ +/* ========== Components ========== */ +/* ========== Standard Buttons ========== */ +/* ========== Icon Toggles ========== */ +/* ========== Radio Buttons ========== */ +/* ========== Ripple effect ========== */ +/* ========== Layout ========== */ +/* ========== Content Tabs ========== */ +/* ========== Checkboxes ========== */ +/* ========== Switches ========== */ +/* ========== Spinner ========== */ +/* ========== Text fields ========== */ +/* ========== Card ========== */ +/* ========== Sliders ========== */ +/* ========== Progress ========== */ +/* ========== List ========== */ +/* ========== Item ========== */ +/* ========== Dropdown menu ========== */ +/* ========== Tooltips ========== */ +/* ========== Footer ========== */ +/* TEXTFIELD */ +/* SWITCH */ +/* SPINNER */ +/* RADIO */ +/* MENU */ +/* LIST */ +/* LAYOUT */ +/* ICON TOGGLE */ +/* FOOTER */ +/*mega-footer*/ +/*mini-footer*/ +/* CHECKBOX */ +/* CARD */ +/* Card dimensions */ +/* Cover image */ +/* BUTTON */ +/** + * + * Dimensions + * + */ +/* ANIMATION */ +/* PROGRESS */ +/* BADGE */ +/* SHADOWS */ +/* GRID */ +/* DATA TABLE */ +/* TOOLTIP */ +.mdl-grid { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin: 0 auto 0 auto; + -webkit-box-align: stretch; + -webkit-align-items: stretch; + -ms-flex-align: stretch; + align-items: stretch; } + .mdl-grid.mdl-grid--no-spacing { + padding: 0; } + +.mdl-cell { + box-sizing: border-box; } + +.mdl-cell--top { + -webkit-align-self: flex-start; + -ms-flex-item-align: start; + align-self: flex-start; } + +.mdl-cell--middle { + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; } + +.mdl-cell--bottom { + -webkit-align-self: flex-end; + -ms-flex-item-align: end; + align-self: flex-end; } + +.mdl-cell--stretch { + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; } + +.mdl-grid.mdl-grid--no-spacing > .mdl-cell { + margin: 0; } + +@media (max-width: 479px) { + .mdl-grid { + padding: 8px; } + .mdl-cell { + margin: 8px; + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell { + width: 100%; } + .mdl-cell--hide-phone { + display: none !important; } + .mdl-cell--1-col, + .mdl-cell--1-col-phone.mdl-cell--1-col-phone { + width: calc(25% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--1-col, + .mdl-grid--no-spacing > .mdl-cell--1-col-phone.mdl-cell--1-col-phone { + width: 25%; } + .mdl-cell--2-col, + .mdl-cell--2-col-phone.mdl-cell--2-col-phone { + width: calc(50% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--2-col, + .mdl-grid--no-spacing > .mdl-cell--2-col-phone.mdl-cell--2-col-phone { + width: 50%; } + .mdl-cell--3-col, + .mdl-cell--3-col-phone.mdl-cell--3-col-phone { + width: calc(75% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--3-col, + .mdl-grid--no-spacing > .mdl-cell--3-col-phone.mdl-cell--3-col-phone { + width: 75%; } + .mdl-cell--4-col, + .mdl-cell--4-col-phone.mdl-cell--4-col-phone { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--4-col, + .mdl-grid--no-spacing > .mdl-cell--4-col-phone.mdl-cell--4-col-phone { + width: 100%; } + .mdl-cell--5-col, + .mdl-cell--5-col-phone.mdl-cell--5-col-phone { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--5-col, + .mdl-grid--no-spacing > .mdl-cell--5-col-phone.mdl-cell--5-col-phone { + width: 100%; } + .mdl-cell--6-col, + .mdl-cell--6-col-phone.mdl-cell--6-col-phone { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--6-col, + .mdl-grid--no-spacing > .mdl-cell--6-col-phone.mdl-cell--6-col-phone { + width: 100%; } + .mdl-cell--7-col, + .mdl-cell--7-col-phone.mdl-cell--7-col-phone { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--7-col, + .mdl-grid--no-spacing > .mdl-cell--7-col-phone.mdl-cell--7-col-phone { + width: 100%; } + .mdl-cell--8-col, + .mdl-cell--8-col-phone.mdl-cell--8-col-phone { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--8-col, + .mdl-grid--no-spacing > .mdl-cell--8-col-phone.mdl-cell--8-col-phone { + width: 100%; } + .mdl-cell--9-col, + .mdl-cell--9-col-phone.mdl-cell--9-col-phone { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--9-col, + .mdl-grid--no-spacing > .mdl-cell--9-col-phone.mdl-cell--9-col-phone { + width: 100%; } + .mdl-cell--10-col, + .mdl-cell--10-col-phone.mdl-cell--10-col-phone { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--10-col, + .mdl-grid--no-spacing > .mdl-cell--10-col-phone.mdl-cell--10-col-phone { + width: 100%; } + .mdl-cell--11-col, + .mdl-cell--11-col-phone.mdl-cell--11-col-phone { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--11-col, + .mdl-grid--no-spacing > .mdl-cell--11-col-phone.mdl-cell--11-col-phone { + width: 100%; } + .mdl-cell--12-col, + .mdl-cell--12-col-phone.mdl-cell--12-col-phone { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--12-col, + .mdl-grid--no-spacing > .mdl-cell--12-col-phone.mdl-cell--12-col-phone { + width: 100%; } } + +@media (min-width: 480px) and (max-width: 839px) { + .mdl-grid { + padding: 8px; } + .mdl-cell { + margin: 8px; + width: calc(50% - 16px); } + .mdl-grid--no-spacing > .mdl-cell { + width: 50%; } + .mdl-cell--hide-tablet { + display: none !important; } + .mdl-cell--1-col, + .mdl-cell--1-col-tablet.mdl-cell--1-col-tablet { + width: calc(12.5% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--1-col, + .mdl-grid--no-spacing > .mdl-cell--1-col-tablet.mdl-cell--1-col-tablet { + width: 12.5%; } + .mdl-cell--2-col, + .mdl-cell--2-col-tablet.mdl-cell--2-col-tablet { + width: calc(25% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--2-col, + .mdl-grid--no-spacing > .mdl-cell--2-col-tablet.mdl-cell--2-col-tablet { + width: 25%; } + .mdl-cell--3-col, + .mdl-cell--3-col-tablet.mdl-cell--3-col-tablet { + width: calc(37.5% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--3-col, + .mdl-grid--no-spacing > .mdl-cell--3-col-tablet.mdl-cell--3-col-tablet { + width: 37.5%; } + .mdl-cell--4-col, + .mdl-cell--4-col-tablet.mdl-cell--4-col-tablet { + width: calc(50% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--4-col, + .mdl-grid--no-spacing > .mdl-cell--4-col-tablet.mdl-cell--4-col-tablet { + width: 50%; } + .mdl-cell--5-col, + .mdl-cell--5-col-tablet.mdl-cell--5-col-tablet { + width: calc(62.5% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--5-col, + .mdl-grid--no-spacing > .mdl-cell--5-col-tablet.mdl-cell--5-col-tablet { + width: 62.5%; } + .mdl-cell--6-col, + .mdl-cell--6-col-tablet.mdl-cell--6-col-tablet { + width: calc(75% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--6-col, + .mdl-grid--no-spacing > .mdl-cell--6-col-tablet.mdl-cell--6-col-tablet { + width: 75%; } + .mdl-cell--7-col, + .mdl-cell--7-col-tablet.mdl-cell--7-col-tablet { + width: calc(87.5% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--7-col, + .mdl-grid--no-spacing > .mdl-cell--7-col-tablet.mdl-cell--7-col-tablet { + width: 87.5%; } + .mdl-cell--8-col, + .mdl-cell--8-col-tablet.mdl-cell--8-col-tablet { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--8-col, + .mdl-grid--no-spacing > .mdl-cell--8-col-tablet.mdl-cell--8-col-tablet { + width: 100%; } + .mdl-cell--9-col, + .mdl-cell--9-col-tablet.mdl-cell--9-col-tablet { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--9-col, + .mdl-grid--no-spacing > .mdl-cell--9-col-tablet.mdl-cell--9-col-tablet { + width: 100%; } + .mdl-cell--10-col, + .mdl-cell--10-col-tablet.mdl-cell--10-col-tablet { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--10-col, + .mdl-grid--no-spacing > .mdl-cell--10-col-tablet.mdl-cell--10-col-tablet { + width: 100%; } + .mdl-cell--11-col, + .mdl-cell--11-col-tablet.mdl-cell--11-col-tablet { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--11-col, + .mdl-grid--no-spacing > .mdl-cell--11-col-tablet.mdl-cell--11-col-tablet { + width: 100%; } + .mdl-cell--12-col, + .mdl-cell--12-col-tablet.mdl-cell--12-col-tablet { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--12-col, + .mdl-grid--no-spacing > .mdl-cell--12-col-tablet.mdl-cell--12-col-tablet { + width: 100%; } } + +@media (min-width: 840px) { + .mdl-grid { + padding: 8px; } + .mdl-cell { + margin: 8px; + width: calc(33.3333333333% - 16px); } + .mdl-grid--no-spacing > .mdl-cell { + width: 33.3333333333%; } + .mdl-cell--hide-desktop { + display: none !important; } + .mdl-cell--1-col, + .mdl-cell--1-col-desktop.mdl-cell--1-col-desktop { + width: calc(8.3333333333% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--1-col, + .mdl-grid--no-spacing > .mdl-cell--1-col-desktop.mdl-cell--1-col-desktop { + width: 8.3333333333%; } + .mdl-cell--2-col, + .mdl-cell--2-col-desktop.mdl-cell--2-col-desktop { + width: calc(16.6666666667% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--2-col, + .mdl-grid--no-spacing > .mdl-cell--2-col-desktop.mdl-cell--2-col-desktop { + width: 16.6666666667%; } + .mdl-cell--3-col, + .mdl-cell--3-col-desktop.mdl-cell--3-col-desktop { + width: calc(25% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--3-col, + .mdl-grid--no-spacing > .mdl-cell--3-col-desktop.mdl-cell--3-col-desktop { + width: 25%; } + .mdl-cell--4-col, + .mdl-cell--4-col-desktop.mdl-cell--4-col-desktop { + width: calc(33.3333333333% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--4-col, + .mdl-grid--no-spacing > .mdl-cell--4-col-desktop.mdl-cell--4-col-desktop { + width: 33.3333333333%; } + .mdl-cell--5-col, + .mdl-cell--5-col-desktop.mdl-cell--5-col-desktop { + width: calc(41.6666666667% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--5-col, + .mdl-grid--no-spacing > .mdl-cell--5-col-desktop.mdl-cell--5-col-desktop { + width: 41.6666666667%; } + .mdl-cell--6-col, + .mdl-cell--6-col-desktop.mdl-cell--6-col-desktop { + width: calc(50% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--6-col, + .mdl-grid--no-spacing > .mdl-cell--6-col-desktop.mdl-cell--6-col-desktop { + width: 50%; } + .mdl-cell--7-col, + .mdl-cell--7-col-desktop.mdl-cell--7-col-desktop { + width: calc(58.3333333333% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--7-col, + .mdl-grid--no-spacing > .mdl-cell--7-col-desktop.mdl-cell--7-col-desktop { + width: 58.3333333333%; } + .mdl-cell--8-col, + .mdl-cell--8-col-desktop.mdl-cell--8-col-desktop { + width: calc(66.6666666667% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--8-col, + .mdl-grid--no-spacing > .mdl-cell--8-col-desktop.mdl-cell--8-col-desktop { + width: 66.6666666667%; } + .mdl-cell--9-col, + .mdl-cell--9-col-desktop.mdl-cell--9-col-desktop { + width: calc(75% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--9-col, + .mdl-grid--no-spacing > .mdl-cell--9-col-desktop.mdl-cell--9-col-desktop { + width: 75%; } + .mdl-cell--10-col, + .mdl-cell--10-col-desktop.mdl-cell--10-col-desktop { + width: calc(83.3333333333% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--10-col, + .mdl-grid--no-spacing > .mdl-cell--10-col-desktop.mdl-cell--10-col-desktop { + width: 83.3333333333%; } + .mdl-cell--11-col, + .mdl-cell--11-col-desktop.mdl-cell--11-col-desktop { + width: calc(91.6666666667% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--11-col, + .mdl-grid--no-spacing > .mdl-cell--11-col-desktop.mdl-cell--11-col-desktop { + width: 91.6666666667%; } + .mdl-cell--12-col, + .mdl-cell--12-col-desktop.mdl-cell--12-col-desktop { + width: calc(100% - 16px); } + .mdl-grid--no-spacing > .mdl-cell--12-col, + .mdl-grid--no-spacing > .mdl-cell--12-col-desktop.mdl-cell--12-col-desktop { + width: 100%; } } diff --git a/material.js b/material.js new file mode 100644 index 000000000..7b7a121c2 --- /dev/null +++ b/material.js @@ -0,0 +1,3546 @@ +;(function() { +"use strict"; + +/** + * @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 */ +window.componentHandler = (function() { + 'use strict'; + + /** @type {!Array} */ + var registeredComponents_ = []; + + /** @type {!Array} */ + var createdComponents_ = []; + + var downgradeMethod_ = 'mdlDowngrade_'; + 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 (optReplace !== undefined) { + registeredComponents_[i] = optReplace; + } + return registeredComponents_[i]; + } + } + return false; + } + + /** + * Returns an array of the classNames of the upgraded classes on the element. + * + * @param {!HTMLElement} element The element to fetch data from. + * @return {!Array} + * @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 {!HTMLElement} 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; + } + + /** + * 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 (optJsClass === undefined && optCssClass === undefined) { + for (var i = 0; i < registeredComponents_.length; i++) { + upgradeDomInternal(registeredComponents_[i].className, + registeredComponents_[i].cssClass); + } + } else { + var jsClass = /** @type {String} */ (optJsClass); + if (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 {!HTMLElement} 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.'); + } + 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 ev = document.createEvent('Events'); + ev.initEvent('mdl-componentupgraded', true, true); + element.dispatchEvent(ev); + } + } + + /** + * Upgrades a specific list of elements rather than all in the DOM. + * + * @param {!HTMLElement|!Array|!NodeList|!HTMLCollection} elements + * The elements we wish to upgrade. + */ + function upgradeElementsInternal(elements) { + if (!Array.isArray(elements)) { + if (typeof elements.item === 'function') { + elements = Array.prototype.slice.call(/** @type {Array} */ (elements)); + } else { + elements = [elements]; + } + } + for (var i = 0, n = elements.length, element; i < n; i++) { + element = elements[i]; + if (element instanceof HTMLElement) { + if (element.children.length > 0) { + upgradeElementsInternal(element.children); + } + upgradeElementInternal(element); + } + } + } + + /** + * Registers a class for future use and attempts to upgrade existing DOM. + * + * @param {{constructor: !Function, classAsString: String, cssClass: String, widget: String}} config + */ + function registerInternal(config) { + var newConfig = /** @type {componentHandler.ComponentConfig} */ ({ + 'classConstructor': config.constructor, + 'className': config.classAsString, + 'cssClass': config.cssClass, + 'widget': config.widget === undefined ? true : config.widget, + 'callbacks': [] + }); + + registeredComponents_.forEach(function(item) { + if (item.cssClass === newConfig.cssClass) { + throw new Error('The provided cssClass has already been registered.'); + } + 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); + } + } + + /** + * Finds a created component by a given DOM node. + * + * @param {!Node} node + * @return {*} + */ + function findCreatedComponentByNodeInternal(node) { + for (var n = 0; n < createdComponents_.length; n++) { + var component = createdComponents_[n]; + if (component.element_ === node) { + return component; + } + } + } + + /** + * Check the component for the downgrade method. + * Execute if found. + * Remove component from createdComponents list. + * + * @param {*} component + */ + function deconstructComponentInternal(component) { + if (component && + component[componentConfigProperty_] + .classConstructor.prototype + .hasOwnProperty(downgradeMethod_)) { + component[downgradeMethod_](); + 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 = document.createEvent('Events'); + ev.initEvent('mdl-componentdowngraded', true, true); + component.element_.dispatchEvent(ev); + } + } + + /** + * Downgrade either a given node, an array of nodes, or a NodeList. + * + * @param {!Node|!Array|!NodeList} nodes + */ + function downgradeNodesInternal(nodes) { + var downgradeNode = function(node) { + deconstructComponentInternal(findCreatedComponentByNodeInternal(node)); + }; + 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 + }; +})(); + +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 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 { + componentHandler.upgradeElement = + componentHandler.register = function() {}; + } +}); + +/** + * 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, + * callbacks: !Array + * }} + */ +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 + +// 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 +if (!Date.now) { + Date.now = function () { + return new Date().getTime(); + }; +} +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']; +} +if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) { + var lastTime = 0; + 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; +} +/** + * @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 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_ = {}; +/** + * 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; +}; +/** + * Enable button. + * + * @public + */ +MaterialButton.prototype.enable = function () { + this.element_.disabled = false; +}; +/** + * 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); + } +}; +/** + * Downgrade the element. + * + * @private + */ +MaterialButton.prototype.mdlDowngrade_ = function () { + if (this.rippleElement_) { + this.rippleElement_.removeEventListener('mouseup', this.boundRippleBlurHandler); + } + this.element_.removeEventListener('mouseup', this.boundButtonBlurHandler); + this.element_.removeEventListener('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 +}); +/** + * @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 Checkbox 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 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. + * + * @param {Event} event The event that fired. + * @private + */ +MaterialCheckbox.prototype.blur_ = function (event) { + // 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), 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); + } +}; +/** + * 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); + } +}; +/** + * Disable checkbox. + * + * @public + */ +MaterialCheckbox.prototype.disable = function () { + this.inputElement_.disabled = true; + this.updateClasses_(); +}; +/** + * Enable checkbox. + * + * @public + */ +MaterialCheckbox.prototype.enable = function () { + this.inputElement_.disabled = false; + this.updateClasses_(); +}; +/** + * Check checkbox. + * + * @public + */ +MaterialCheckbox.prototype.check = function () { + this.inputElement_.checked = true; + this.updateClasses_(); +}; +/** + * Uncheck checkbox. + * + * @public + */ +MaterialCheckbox.prototype.uncheck = function () { + this.inputElement_.checked = false; + this.updateClasses_(); +}; +/** + * 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); + } +}; +/** + * Downgrade the component. + * + * @private + */ +MaterialCheckbox.prototype.mdlDowngrade_ = function () { + if (this.rippleContainerElement_) { + this.rippleContainerElement_.removeEventListener('mouseup', this.boundRippleMouseUp); + } + this.inputElement_.removeEventListener('change', this.boundInputOnChange); + this.inputElement_.removeEventListener('focus', this.boundInputOnFocus); + this.inputElement_.removeEventListener('blur', this.boundInputOnBlur); + this.element_.removeEventListener('mouseup', this.boundElementMouseUp); +}; +// 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 +}); +/** + * @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 icon toggle 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 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. + * + * @param {Event} event The event that fired. + * @private + */ +MaterialIconToggle.prototype.blur_ = function (event) { + // 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), 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); + } +}; +/** + * 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); + } +}; +/** + * Disable icon toggle. + * + * @public + */ +MaterialIconToggle.prototype.disable = function () { + this.inputElement_.disabled = true; + this.updateClasses_(); +}; +/** + * Enable icon toggle. + * + * @public + */ +MaterialIconToggle.prototype.enable = function () { + this.inputElement_.disabled = false; + this.updateClasses_(); +}; +/** + * Check icon toggle. + * + * @public + */ +MaterialIconToggle.prototype.check = function () { + this.inputElement_.checked = true; + this.updateClasses_(); +}; +/** + * Uncheck icon toggle. + * + * @public + */ +MaterialIconToggle.prototype.uncheck = function () { + this.inputElement_.checked = false; + this.updateClasses_(); +}; +/** + * 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'); + } +}; +/** + * Downgrade the component + * + * @private + */ +MaterialIconToggle.prototype.mdlDowngrade_ = function () { + if (this.rippleContainerElement_) { + this.rippleContainerElement_.removeEventListener('mouseup', this.boundRippleMouseUp); + } + this.inputElement_.removeEventListener('change', this.boundInputOnChange); + this.inputElement_.removeEventListener('focus', this.boundInputOnFocus); + this.inputElement_.removeEventListener('blur', this.boundInputOnBlur); + this.element_.removeEventListener('mouseup', this.boundElementOnMouseUp); +}; +// 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 +}); +/** + * @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 dropdown 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 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'); + 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)) { + } 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.getAttribute('disabled') !== null) { + 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), 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 = null; + } 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 = null; + } +}; +/** + * Adds an event listener to clean up after the animation ends. + * + * @private + */ +MaterialMenu.prototype.addAnimationEndListener_ = function () { + var cleanup = function () { + this.element_.removeEventListener('transitionend', cleanup); + this.element_.removeEventListener('webkitTransitionEnd', cleanup); + this.element_.classList.remove(this.CssClasses_.IS_ANIMATING); + }.bind(this); + // Remove animation class once the transition is done. + this.element_.addEventListener('transitionend', cleanup); + this.element_.addEventListener('webkitTransitionEnd', cleanup); +}; +/** + * 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. + if (e !== evt && !this.closing_) { + document.removeEventListener('click', callback); + this.hide(); + } + }.bind(this); + document.addEventListener('click', callback); + } +}; +/** + * 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.transitionDelay = null; + } + // Measure the inner element. + var height = this.element_.getBoundingClientRect().height; + var width = this.element_.getBoundingClientRect().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_(); + } +}; +/** + * 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); + } +}; +/** + * Downgrade the component. + * + * @private + */ +MaterialMenu.prototype.mdlDowngrade_ = function () { + var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM); + for (var i = 0; i < items.length; i++) { + items[i].removeEventListener('click', this.boundItemClick); + items[i].removeEventListener('keydown', this.boundItemKeydown); + } +}; +// 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 +}); +/** + * @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 Progress 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 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 + '%'; +}; +/** + * 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 + '%'; +}; +/** + * 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'); + } +}; +/** + * Downgrade the component + * + * @private + */ +MaterialProgress.prototype.mdlDowngrade_ = function () { + while (this.element_.firstChild) { + this.element_.removeChild(this.element_.firstChild); + } +}; +// 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 +}); +/** + * @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 Radio 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 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')) { + 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. + * + * @param {Event} event The event that fired. + * @private + */ +MaterialRadio.prototype.blur_ = function (event) { + // 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), 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); + } +}; +/** + * 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); + } +}; +/** + * Disable radio. + * + * @public + */ +MaterialRadio.prototype.disable = function () { + this.btnElement_.disabled = true; + this.updateClasses_(); +}; +/** + * Enable radio. + * + * @public + */ +MaterialRadio.prototype.enable = function () { + this.btnElement_.disabled = false; + this.updateClasses_(); +}; +/** + * Check radio. + * + * @public + */ +MaterialRadio.prototype.check = function () { + this.btnElement_.checked = true; + this.updateClasses_(); +}; +/** + * Uncheck radio. + * + * @public + */ +MaterialRadio.prototype.uncheck = function () { + this.btnElement_.checked = false; + this.updateClasses_(); +}; +/** + * Initialize element. + */ +MaterialRadio.prototype.init = function () { + if (this.element_) { + this.btnElement_ = this.element_.querySelector('.' + this.CssClasses_.RADIO_BTN); + 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.onMouseup_.bind(this)); + var ripple = document.createElement('span'); + ripple.classList.add(this.CssClasses_.RIPPLE); + rippleContainer.appendChild(ripple); + this.element_.appendChild(rippleContainer); + } + this.btnElement_.addEventListener('change', this.onChange_.bind(this)); + this.btnElement_.addEventListener('focus', this.onFocus_.bind(this)); + this.btnElement_.addEventListener('blur', this.onBlur_.bind(this)); + this.element_.addEventListener('mouseup', this.onMouseup_.bind(this)); + 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 +}); +/** + * @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 Slider 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 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_ = {}; +/** + * 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 + */ +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. + * + * @param {Event} event The event that fired. + * @private + */ +MaterialSlider.prototype.updateValueStyles_ = function (event) { + // 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; +}; +/** + * Enable slider. + * + * @public + */ +MaterialSlider.prototype.enable = function () { + this.element_.disabled = false; +}; +/** + * 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_(); +}; +/** + * 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); + } +}; +/** + * Downgrade the component + * + * @private + */ +MaterialSlider.prototype.mdlDowngrade_ = function () { + this.element_.removeEventListener('input', this.boundInputHandler); + this.element_.removeEventListener('change', this.boundChangeHandler); + this.element_.removeEventListener('mouseup', this.boundMouseUpHandler); + this.element_.parentElement.removeEventListener('mousedown', this.boundContainerMouseDownHandler); +}; +// 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 +}); +/** + * @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 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); +}; +/** + * 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'); +}; +/** + * 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'); +}; +/** + * 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 +}); +/** + * @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 Checkbox 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 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 (event) { + // 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), 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); + } +}; +/** + * 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); + } +}; +/** + * Disable switch. + * + * @public + */ +MaterialSwitch.prototype.disable = function () { + this.inputElement_.disabled = true; + this.updateClasses_(); +}; +/** + * Enable switch. + * + * @public + */ +MaterialSwitch.prototype.enable = function () { + this.inputElement_.disabled = false; + this.updateClasses_(); +}; +/** + * Activate switch. + * + * @public + */ +MaterialSwitch.prototype.on = function () { + this.inputElement_.checked = true; + this.updateClasses_(); +}; +/** + * Deactivate switch. + * + * @public + */ +MaterialSwitch.prototype.off = function () { + this.inputElement_.checked = false; + this.updateClasses_(); +}; +/** + * 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'); + } +}; +/** + * Downgrade the component. + * + * @private + */ +MaterialSwitch.prototype.mdlDowngrade_ = function () { + if (this.rippleContainerElement_) { + this.rippleContainerElement_.removeEventListener('mouseup', this.boundMouseUpHandler); + } + this.inputElement_.removeEventListener('change', this.boundChangeHandler); + this.inputElement_.removeEventListener('focus', this.boundFocusHandler); + this.inputElement_.removeEventListener('blur', this.boundBlurHandler); + this.element_.removeEventListener('mouseup', this.boundMouseUpHandler); +}; +// 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 +}); +/** + * @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 Tabs 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 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_ = {}; +/** + * 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_(); + } +}; +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) { + 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' +}); +/** + * @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 Textfield 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 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' +}; +/** + * 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 class updates. + * + * @private + */ +MaterialTextfield.prototype.updateClasses_ = function () { + this.checkDisabled(); + this.checkValidity(); + this.checkDirty(); +}; +// 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); + } +}; +/** + * Check the validity state and update field accordingly. + * + * @public + */ +MaterialTextfield.prototype.checkValidity = function () { + if (this.input_.validity.valid) { + this.element_.classList.remove(this.CssClasses_.IS_INVALID); + } else { + this.element_.classList.add(this.CssClasses_.IS_INVALID); + } +}; +/** + * 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); + } +}; +/** + * Disable text field. + * + * @public + */ +MaterialTextfield.prototype.disable = function () { + this.input_.disabled = true; + this.updateClasses_(); +}; +/** + * Enable text field. + * + * @public + */ +MaterialTextfield.prototype.enable = function () { + this.input_.disabled = false; + this.updateClasses_(); +}; +/** + * Update text field value. + * + * @param {String} value The value to which to set the control (optional). + * @public + */ +MaterialTextfield.prototype.change = function (value) { + if (value) { + this.input_.value = value; + } + this.updateClasses_(); +}; +/** + * 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(this.Constant_.MAX_ROWS_ATTRIBUTE)) { + this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10); + if (isNaN(this.maxRows)) { + this.maxRows = this.Constant_.NO_MAX_ROWS; + } + } + this.boundUpdateClassesHandler = this.updateClasses_.bind(this); + this.boundFocusHandler = this.onFocus_.bind(this); + this.boundBlurHandler = this.onBlur_.bind(this); + this.input_.addEventListener('input', this.boundUpdateClassesHandler); + this.input_.addEventListener('focus', this.boundFocusHandler); + this.input_.addEventListener('blur', this.boundBlurHandler); + 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); + } + this.updateClasses_(); + this.element_.classList.add(this.CssClasses_.IS_UPGRADED); + } + } +}; +/** + * Downgrade the component + * + * @private + */ +MaterialTextfield.prototype.mdlDowngrade_ = function () { + this.input_.removeEventListener('input', this.boundUpdateClassesHandler); + this.input_.removeEventListener('focus', this.boundFocusHandler); + this.input_.removeEventListener('blur', this.boundBlurHandler); + if (this.boundKeyDownHandler) { + this.input_.removeEventListener('keydown', this.boundKeyDownHandler); + } +}; +// 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 +}); +/** + * @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 Tooltip 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 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_ = {}; +/** + * 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' }; +/** + * Handle mouseenter for tooltip. + * + * @param {Event} event The event that fired. + * @private + */ +MaterialTooltip.prototype.handleMouseEnter_ = function (event) { + event.stopPropagation(); + var props = event.target.getBoundingClientRect(); + var left = props.left + props.width / 2; + var marginLeft = -1 * (this.element_.offsetWidth / 2); + 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'; + } + this.element_.style.top = props.top + props.height + 10 + 'px'; + this.element_.classList.add(this.CssClasses_.IS_ACTIVE); + window.addEventListener('scroll', this.boundMouseLeaveHandler, false); + window.addEventListener('touchmove', this.boundMouseLeaveHandler, false); +}; +/** + * Handle mouseleave for tooltip. + * + * @param {Event} event The event that fired. + * @private + */ +MaterialTooltip.prototype.handleMouseLeave_ = function (event) { + event.stopPropagation(); + this.element_.classList.remove(this.CssClasses_.IS_ACTIVE); + window.removeEventListener('scroll', this.boundMouseLeaveHandler); + window.removeEventListener('touchmove', this.boundMouseLeaveHandler, false); +}; +/** + * Initialize element. + */ +MaterialTooltip.prototype.init = function () { + if (this.element_) { + var forElId = this.element_.getAttribute('for'); + if (forElId) { + this.forElement_ = document.getElementById(forElId); + } + if (this.forElement_) { + // Tabindex needs to be set for `blur` events to be emitted + if (!this.forElement_.getAttribute('tabindex')) { + this.forElement_.setAttribute('tabindex', '0'); + } + this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this); + this.boundMouseLeaveHandler = this.handleMouseLeave_.bind(this); + this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false); + this.forElement_.addEventListener('click', this.boundMouseEnterHandler, false); + this.forElement_.addEventListener('blur', this.boundMouseLeaveHandler); + this.forElement_.addEventListener('touchstart', this.boundMouseEnterHandler, false); + this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveHandler); + } + } +}; +/** + * Downgrade the component + * + * @private + */ +MaterialTooltip.prototype.mdlDowngrade_ = function () { + if (this.forElement_) { + this.forElement_.removeEventListener('mouseenter', this.boundMouseEnterHandler, false); + this.forElement_.removeEventListener('click', this.boundMouseEnterHandler, false); + this.forElement_.removeEventListener('touchstart', this.boundMouseEnterHandler, false); + this.forElement_.removeEventListener('mouseleave', this.boundMouseLeaveHandler); + } +}; +// The component registers itself. It can assume componentHandler is available +// in the global scope. +componentHandler.register({ + constructor: MaterialTooltip, + classAsString: 'MaterialTooltip', + cssClass: 'mdl-tooltip' +}); +/** + * @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 Layout 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 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, + MENU_ICON: 'menu', + CHEVRON_LEFT: 'chevron_left', + CHEVRON_RIGHT: 'chevron_right' +}; +/** + * 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', + 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; + } + 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); + 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); + this.header_.classList.add(this.CssClasses_.IS_ANIMATING); + } +}; +/** + * 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); + } + } +}; +/** + * Handles toggling of the drawer. + * + * @private + */ +MaterialLayout.prototype.drawerToggleHandler_ = function () { + this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN); +}; +/** + * 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); + } +}; +/** + * Initialize element. + */ +MaterialLayout.prototype.init = function () { + if (this.element_) { + 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_); + var directChildren = this.element_.childNodes; + for (var c = 0; c < directChildren.length; 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; + } + } + if (this.header_) { + this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR); + } + var mode = this.Mode_.STANDARD; + // Keep an eye on screen size, and add/remove auxiliary class for styling + // of small screens. + this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH); + this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this)); + this.screenSizeHandler_(); + 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_(); + } + } + var eatEvent = function (ev) { + ev.preventDefault(); + }; + // Add drawer toggling button to our layout, if we have an openable drawer. + if (this.drawer_) { + var drawerButton = document.createElement('div'); + drawerButton.classList.add(this.CssClasses_.DRAWER_BTN); + 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); + } + var drawerButtonIcon = document.createElement('i'); + drawerButtonIcon.classList.add(this.CssClasses_.ICON); + drawerButtonIcon.textContent = this.Constant_.MENU_ICON; + drawerButton.appendChild(drawerButtonIcon); + drawerButton.addEventListener('click', 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); + this.drawer_.addEventListener('mousewheel', eatEvent); + // 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)); + obfuscator.addEventListener('mousewheel', eatEvent); + } + // 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 buttons depending on scroll position. + var tabScrollHandler = 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', tabScrollHandler); + tabScrollHandler(); + 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); + } +}; +function MaterialLayoutTab(tab, tabs, panels, layout) { + if (tab) { + 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); + } + tab.addEventListener('click', function (e) { + e.preventDefault(); + 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); + }); + } +} +// The component registers itself. It can assume componentHandler is available +// in the global scope. +componentHandler.register({ + constructor: MaterialLayout, + classAsString: 'MaterialLayout', + cssClass: 'mdl-js-layout' +}); +/** + * @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 Data Table Card 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 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_ = {}; +/** + * 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', + 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 {HTMLElement} checkbox Checkbox that toggles the selection state. + * @param {HTMLElement} row Row to toggle when checkbox changes. + * @param {HTMLElement[]} rows Rows to toggle when checkbox changes. + * @private + */ +MaterialDataTable.prototype.selectRow_ = function (checkbox, row, 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 (rows) { + return function () { + var i; + var el; + if (checkbox.checked) { + for (i = 0; i < rows.length; i++) { + el = rows[i].querySelector('td').querySelector('.mdl-checkbox'); + el.MaterialCheckbox.check(); + rows[i].classList.add(this.CssClasses_.IS_SELECTED); + } + } else { + for (i = 0; i < rows.length; i++) { + el = rows[i].querySelector('td').querySelector('.mdl-checkbox'); + el.MaterialCheckbox.uncheck(); + 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 {HTMLElement} row Row to toggle when checkbox changes. + * @param {HTMLElement[]} rows Rows to toggle when checkbox changes. + * @private + */ +MaterialDataTable.prototype.createCheckbox_ = function (row, rows) { + var label = document.createElement('label'); + label.classList.add('mdl-checkbox'); + label.classList.add('mdl-js-checkbox'); + label.classList.add('mdl-js-ripple-effect'); + label.classList.add('mdl-data-table__select'); + var checkbox = document.createElement('input'); + checkbox.type = 'checkbox'; + checkbox.classList.add('mdl-checkbox__input'); + if (row) { + checkbox.addEventListener('change', this.selectRow_(checkbox, row)); + } else if (rows) { + checkbox.addEventListener('change', this.selectRow_(checkbox, null, 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 rows = this.element_.querySelector('tbody').querySelectorAll('tr'); + 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'); + 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' +}); +/** + * @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 Ripple 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 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 ? event.clientX : event.touches[0].clientX; + var clientY = event.clientY ? 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) { + this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE); + } + // 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); + this.getFrameCount = function () { + return this.frameCount_; + }; + this.setFrameCount = function (fC) { + this.frameCount_ = fC; + }; + this.getRippleElement = function () { + return this.rippleElement_; + }; + this.setRippleXY = function (newX, newY) { + this.x_ = newX; + this.y_ = newY; + }; + 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); + } + } + }; + this.animFrameHandler = function () { + if (this.frameCount_-- > 0) { + window.requestAnimationFrame(this.animFrameHandler.bind(this)); + } else { + this.setRippleStyles(false); + } + }; + } + } +}; +/** + * Downgrade the component + * + * @private + */ +MaterialRipple.prototype.mdlDowngrade_ = function () { + this.element_.removeEventListener('mousedown', this.boundDownHandler); + this.element_.removeEventListener('touchstart', this.boundDownHandler); + this.element_.removeEventListener('mouseup', this.boundUpHandler); + this.element_.removeEventListener('mouseleave', this.boundUpHandler); + this.element_.removeEventListener('touchend', this.boundUpHandler); + this.element_.removeEventListener('blur', this.boundUpHandler); +}; +// 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/material.min.css b/material.min.css new file mode 100644 index 000000000..c49d8e548 --- /dev/null +++ b/material.min.css @@ -0,0 +1,9 @@ +/** + * material-design-lite - Material Design Components in CSS, JS and HTML + * @version v1.0.4 + * @license Apache-2.0 + * @copyright 2015 Google, Inc. + * @link https://github.com/google/material-design-lite + */ +@charset "UTF-8";html{color:rgba(0,0,0,.87)}::-moz-selection{background:#b3d4fc;text-shadow:none}::selection{background:#b3d4fc;text-shadow:none}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}.browserupgrade{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.hidden{display:none!important}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}@media print{*,*:before,*:after,*:first-letter,*:first-line{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}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}}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)}html{width:100%;height:100%;-ms-touch-action:manipulation;touch-action:manipulation}body{width:100%;min-height:100%;margin:0}main{display:block}*[hidden]{display:none!important}html,body{font-family:"Helvetica","Arial",sans-serif;font-size:14px;font-weight:400;line-height:20px}h1,h2,h3,h4,h5,h6,p{padding:0}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:400;line-height:1.35;letter-spacing:-.02em;opacity:.54;font-size:.6em}h1{font-size:56px;line-height:1.35;letter-spacing:-.02em;margin:24px 0}h1,h2{font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:400}h2{font-size:45px;line-height:48px}h2,h3{margin:24px 0}h3{font-size:34px;line-height:40px}h3,h4{font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:400}h4{font-size:24px;line-height:32px;-moz-osx-font-smoothing:grayscale;margin:24px 0 16px}h5{font-size:20px;font-weight:500;line-height:1;letter-spacing:.02em}h5,h6{font-family:"Roboto","Helvetica","Arial",sans-serif;margin:24px 0 16px}h6{font-size:16px;letter-spacing:.04em}h6,p{font-weight:400;line-height:24px}p{font-size:14px;letter-spacing:0;margin:0 0 16px}a{color:#ff4081;font-weight:500}blockquote{font-family:"Roboto","Helvetica","Arial",sans-serif;position:relative;font-size:24px;font-weight:300;font-style:italic;line-height:1.35;letter-spacing:.08em}blockquote:before{position:absolute;left:-.5em;content:'“'}blockquote:after{content:'”';margin-left:-.05em}mark{background-color:#f4ff81}dt{font-weight:700}address{font-size:12px;line-height:1;font-style:normal}address,ul,ol{font-weight:400;letter-spacing:0}ul,ol{font-size:14px;line-height:24px}.mdl-typography--display-4,.mdl-typography--display-4-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:112px;font-weight:300;line-height:1;letter-spacing:-.04em}.mdl-typography--display-4-color-contrast{opacity:.54}.mdl-typography--display-3,.mdl-typography--display-3-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:56px;font-weight:400;line-height:1.35;letter-spacing:-.02em}.mdl-typography--display-3-color-contrast{opacity:.54}.mdl-typography--display-2,.mdl-typography--display-2-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:45px;font-weight:400;line-height:48px}.mdl-typography--display-2-color-contrast{opacity:.54}.mdl-typography--display-1,.mdl-typography--display-1-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:34px;font-weight:400;line-height:40px}.mdl-typography--display-1-color-contrast{opacity:.54}.mdl-typography--headline,.mdl-typography--headline-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:24px;font-weight:400;line-height:32px;-moz-osx-font-smoothing:grayscale}.mdl-typography--headline-color-contrast{opacity:.87}.mdl-typography--title,.mdl-typography--title-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:20px;font-weight:500;line-height:1;letter-spacing:.02em}.mdl-typography--title-color-contrast{opacity:.87}.mdl-typography--subhead,.mdl-typography--subhead-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:.04em}.mdl-typography--subhead-color-contrast{opacity:.87}.mdl-typography--body-2,.mdl-typography--body-2-color-contrast{font-size:14px;font-weight:700;line-height:24px;letter-spacing:0}.mdl-typography--body-2-color-contrast{opacity:.87}.mdl-typography--body-1,.mdl-typography--body-1-color-contrast{font-size:14px;font-weight:400;line-height:24px;letter-spacing:0}.mdl-typography--body-1-color-contrast{opacity:.87}.mdl-typography--body-2-force-preferred-font,.mdl-typography--body-2-force-preferred-font-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:14px;font-weight:500;line-height:24px;letter-spacing:0}.mdl-typography--body-2-force-preferred-font-color-contrast{opacity:.87}.mdl-typography--body-1-force-preferred-font,.mdl-typography--body-1-force-preferred-font-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:14px;font-weight:400;line-height:24px;letter-spacing:0}.mdl-typography--body-1-force-preferred-font-color-contrast{opacity:.87}.mdl-typography--caption,.mdl-typography--caption-force-preferred-font{font-size:12px;font-weight:400;line-height:1;letter-spacing:0}.mdl-typography--caption-force-preferred-font{font-family:"Roboto","Helvetica","Arial",sans-serif}.mdl-typography--caption-color-contrast,.mdl-typography--caption-force-preferred-font-color-contrast{font-size:12px;font-weight:400;line-height:1;letter-spacing:0;opacity:.54}.mdl-typography--caption-force-preferred-font-color-contrast,.mdl-typography--menu{font-family:"Roboto","Helvetica","Arial",sans-serif}.mdl-typography--menu{font-size:14px;font-weight:500;line-height:1;letter-spacing:0}.mdl-typography--menu-color-contrast{opacity:.87}.mdl-typography--menu-color-contrast,.mdl-typography--button,.mdl-typography--button-color-contrast{font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:14px;font-weight:500;line-height:1;letter-spacing:0}.mdl-typography--button,.mdl-typography--button-color-contrast{text-transform:uppercase}.mdl-typography--button-color-contrast{opacity:.87}.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}.mdl-color-text--red{color:#f44336 !important}.mdl-color--red{background-color:#f44336 !important}.mdl-color-text--red-50{color:#ffebee !important}.mdl-color--red-50{background-color:#ffebee !important}.mdl-color-text--red-100{color:#ffcdd2 !important}.mdl-color--red-100{background-color:#ffcdd2 !important}.mdl-color-text--red-200{color:#ef9a9a !important}.mdl-color--red-200{background-color:#ef9a9a !important}.mdl-color-text--red-300{color:#e57373 !important}.mdl-color--red-300{background-color:#e57373 !important}.mdl-color-text--red-400{color:#ef5350 !important}.mdl-color--red-400{background-color:#ef5350 !important}.mdl-color-text--red-500{color:#f44336 !important}.mdl-color--red-500{background-color:#f44336 !important}.mdl-color-text--red-600{color:#e53935 !important}.mdl-color--red-600{background-color:#e53935 !important}.mdl-color-text--red-700{color:#d32f2f !important}.mdl-color--red-700{background-color:#d32f2f !important}.mdl-color-text--red-800{color:#c62828 !important}.mdl-color--red-800{background-color:#c62828 !important}.mdl-color-text--red-900{color:#b71c1c !important}.mdl-color--red-900{background-color:#b71c1c !important}.mdl-color-text--red-A100{color:#ff8a80 !important}.mdl-color--red-A100{background-color:#ff8a80 !important}.mdl-color-text--red-A200{color:#ff5252 !important}.mdl-color--red-A200{background-color:#ff5252 !important}.mdl-color-text--red-A400{color:#ff1744 !important}.mdl-color--red-A400{background-color:#ff1744 !important}.mdl-color-text--red-A700{color:#d50000 !important}.mdl-color--red-A700{background-color:#d50000 !important}.mdl-color-text--pink{color:#e91e63 !important}.mdl-color--pink{background-color:#e91e63 !important}.mdl-color-text--pink-50{color:#fce4ec !important}.mdl-color--pink-50{background-color:#fce4ec !important}.mdl-color-text--pink-100{color:#f8bbd0 !important}.mdl-color--pink-100{background-color:#f8bbd0 !important}.mdl-color-text--pink-200{color:#f48fb1 !important}.mdl-color--pink-200{background-color:#f48fb1 !important}.mdl-color-text--pink-300{color:#f06292 !important}.mdl-color--pink-300{background-color:#f06292 !important}.mdl-color-text--pink-400{color:#ec407a !important}.mdl-color--pink-400{background-color:#ec407a !important}.mdl-color-text--pink-500{color:#e91e63 !important}.mdl-color--pink-500{background-color:#e91e63 !important}.mdl-color-text--pink-600{color:#d81b60 !important}.mdl-color--pink-600{background-color:#d81b60 !important}.mdl-color-text--pink-700{color:#c2185b !important}.mdl-color--pink-700{background-color:#c2185b !important}.mdl-color-text--pink-800{color:#ad1457 !important}.mdl-color--pink-800{background-color:#ad1457 !important}.mdl-color-text--pink-900{color:#880e4f !important}.mdl-color--pink-900{background-color:#880e4f !important}.mdl-color-text--pink-A100{color:#ff80ab !important}.mdl-color--pink-A100{background-color:#ff80ab !important}.mdl-color-text--pink-A200{color:#ff4081 !important}.mdl-color--pink-A200{background-color:#ff4081 !important}.mdl-color-text--pink-A400{color:#f50057 !important}.mdl-color--pink-A400{background-color:#f50057 !important}.mdl-color-text--pink-A700{color:#c51162 !important}.mdl-color--pink-A700{background-color:#c51162 !important}.mdl-color-text--purple{color:#9c27b0 !important}.mdl-color--purple{background-color:#9c27b0 !important}.mdl-color-text--purple-50{color:#f3e5f5 !important}.mdl-color--purple-50{background-color:#f3e5f5 !important}.mdl-color-text--purple-100{color:#e1bee7 !important}.mdl-color--purple-100{background-color:#e1bee7 !important}.mdl-color-text--purple-200{color:#ce93d8 !important}.mdl-color--purple-200{background-color:#ce93d8 !important}.mdl-color-text--purple-300{color:#ba68c8 !important}.mdl-color--purple-300{background-color:#ba68c8 !important}.mdl-color-text--purple-400{color:#ab47bc !important}.mdl-color--purple-400{background-color:#ab47bc !important}.mdl-color-text--purple-500{color:#9c27b0 !important}.mdl-color--purple-500{background-color:#9c27b0 !important}.mdl-color-text--purple-600{color:#8e24aa !important}.mdl-color--purple-600{background-color:#8e24aa !important}.mdl-color-text--purple-700{color:#7b1fa2 !important}.mdl-color--purple-700{background-color:#7b1fa2 !important}.mdl-color-text--purple-800{color:#6a1b9a !important}.mdl-color--purple-800{background-color:#6a1b9a !important}.mdl-color-text--purple-900{color:#4a148c !important}.mdl-color--purple-900{background-color:#4a148c !important}.mdl-color-text--purple-A100{color:#ea80fc !important}.mdl-color--purple-A100{background-color:#ea80fc !important}.mdl-color-text--purple-A200{color:#e040fb !important}.mdl-color--purple-A200{background-color:#e040fb !important}.mdl-color-text--purple-A400{color:#d500f9 !important}.mdl-color--purple-A400{background-color:#d500f9 !important}.mdl-color-text--purple-A700{color:#a0f !important}.mdl-color--purple-A700{background-color:#a0f !important}.mdl-color-text--deep-purple{color:#673ab7 !important}.mdl-color--deep-purple{background-color:#673ab7 !important}.mdl-color-text--deep-purple-50{color:#ede7f6 !important}.mdl-color--deep-purple-50{background-color:#ede7f6 !important}.mdl-color-text--deep-purple-100{color:#d1c4e9 !important}.mdl-color--deep-purple-100{background-color:#d1c4e9 !important}.mdl-color-text--deep-purple-200{color:#b39ddb !important}.mdl-color--deep-purple-200{background-color:#b39ddb !important}.mdl-color-text--deep-purple-300{color:#9575cd !important}.mdl-color--deep-purple-300{background-color:#9575cd !important}.mdl-color-text--deep-purple-400{color:#7e57c2 !important}.mdl-color--deep-purple-400{background-color:#7e57c2 !important}.mdl-color-text--deep-purple-500{color:#673ab7 !important}.mdl-color--deep-purple-500{background-color:#673ab7 !important}.mdl-color-text--deep-purple-600{color:#5e35b1 !important}.mdl-color--deep-purple-600{background-color:#5e35b1 !important}.mdl-color-text--deep-purple-700{color:#512da8 !important}.mdl-color--deep-purple-700{background-color:#512da8 !important}.mdl-color-text--deep-purple-800{color:#4527a0 !important}.mdl-color--deep-purple-800{background-color:#4527a0 !important}.mdl-color-text--deep-purple-900{color:#311b92 !important}.mdl-color--deep-purple-900{background-color:#311b92 !important}.mdl-color-text--deep-purple-A100{color:#b388ff !important}.mdl-color--deep-purple-A100{background-color:#b388ff !important}.mdl-color-text--deep-purple-A200{color:#7c4dff !important}.mdl-color--deep-purple-A200{background-color:#7c4dff !important}.mdl-color-text--deep-purple-A400{color:#651fff !important}.mdl-color--deep-purple-A400{background-color:#651fff !important}.mdl-color-text--deep-purple-A700{color:#6200ea !important}.mdl-color--deep-purple-A700{background-color:#6200ea !important}.mdl-color-text--indigo{color:#3f51b5 !important}.mdl-color--indigo{background-color:#3f51b5 !important}.mdl-color-text--indigo-50{color:#e8eaf6 !important}.mdl-color--indigo-50{background-color:#e8eaf6 !important}.mdl-color-text--indigo-100{color:#c5cae9 !important}.mdl-color--indigo-100{background-color:#c5cae9 !important}.mdl-color-text--indigo-200{color:#9fa8da !important}.mdl-color--indigo-200{background-color:#9fa8da !important}.mdl-color-text--indigo-300{color:#7986cb !important}.mdl-color--indigo-300{background-color:#7986cb !important}.mdl-color-text--indigo-400{color:#5c6bc0 !important}.mdl-color--indigo-400{background-color:#5c6bc0 !important}.mdl-color-text--indigo-500{color:#3f51b5 !important}.mdl-color--indigo-500{background-color:#3f51b5 !important}.mdl-color-text--indigo-600{color:#3949ab !important}.mdl-color--indigo-600{background-color:#3949ab !important}.mdl-color-text--indigo-700{color:#303f9f !important}.mdl-color--indigo-700{background-color:#303f9f !important}.mdl-color-text--indigo-800{color:#283593 !important}.mdl-color--indigo-800{background-color:#283593 !important}.mdl-color-text--indigo-900{color:#1a237e !important}.mdl-color--indigo-900{background-color:#1a237e !important}.mdl-color-text--indigo-A100{color:#8c9eff !important}.mdl-color--indigo-A100{background-color:#8c9eff !important}.mdl-color-text--indigo-A200{color:#536dfe !important}.mdl-color--indigo-A200{background-color:#536dfe !important}.mdl-color-text--indigo-A400{color:#3d5afe !important}.mdl-color--indigo-A400{background-color:#3d5afe !important}.mdl-color-text--indigo-A700{color:#304ffe !important}.mdl-color--indigo-A700{background-color:#304ffe !important}.mdl-color-text--blue{color:#2196f3 !important}.mdl-color--blue{background-color:#2196f3 !important}.mdl-color-text--blue-50{color:#e3f2fd !important}.mdl-color--blue-50{background-color:#e3f2fd !important}.mdl-color-text--blue-100{color:#bbdefb !important}.mdl-color--blue-100{background-color:#bbdefb !important}.mdl-color-text--blue-200{color:#90caf9 !important}.mdl-color--blue-200{background-color:#90caf9 !important}.mdl-color-text--blue-300{color:#64b5f6 !important}.mdl-color--blue-300{background-color:#64b5f6 !important}.mdl-color-text--blue-400{color:#42a5f5 !important}.mdl-color--blue-400{background-color:#42a5f5 !important}.mdl-color-text--blue-500{color:#2196f3 !important}.mdl-color--blue-500{background-color:#2196f3 !important}.mdl-color-text--blue-600{color:#1e88e5 !important}.mdl-color--blue-600{background-color:#1e88e5 !important}.mdl-color-text--blue-700{color:#1976d2 !important}.mdl-color--blue-700{background-color:#1976d2 !important}.mdl-color-text--blue-800{color:#1565c0 !important}.mdl-color--blue-800{background-color:#1565c0 !important}.mdl-color-text--blue-900{color:#0d47a1 !important}.mdl-color--blue-900{background-color:#0d47a1 !important}.mdl-color-text--blue-A100{color:#82b1ff !important}.mdl-color--blue-A100{background-color:#82b1ff !important}.mdl-color-text--blue-A200{color:#448aff !important}.mdl-color--blue-A200{background-color:#448aff !important}.mdl-color-text--blue-A400{color:#2979ff !important}.mdl-color--blue-A400{background-color:#2979ff !important}.mdl-color-text--blue-A700{color:#2962ff !important}.mdl-color--blue-A700{background-color:#2962ff !important}.mdl-color-text--light-blue{color:#03a9f4 !important}.mdl-color--light-blue{background-color:#03a9f4 !important}.mdl-color-text--light-blue-50{color:#e1f5fe !important}.mdl-color--light-blue-50{background-color:#e1f5fe !important}.mdl-color-text--light-blue-100{color:#b3e5fc !important}.mdl-color--light-blue-100{background-color:#b3e5fc !important}.mdl-color-text--light-blue-200{color:#81d4fa !important}.mdl-color--light-blue-200{background-color:#81d4fa !important}.mdl-color-text--light-blue-300{color:#4fc3f7 !important}.mdl-color--light-blue-300{background-color:#4fc3f7 !important}.mdl-color-text--light-blue-400{color:#29b6f6 !important}.mdl-color--light-blue-400{background-color:#29b6f6 !important}.mdl-color-text--light-blue-500{color:#03a9f4 !important}.mdl-color--light-blue-500{background-color:#03a9f4 !important}.mdl-color-text--light-blue-600{color:#039be5 !important}.mdl-color--light-blue-600{background-color:#039be5 !important}.mdl-color-text--light-blue-700{color:#0288d1 !important}.mdl-color--light-blue-700{background-color:#0288d1 !important}.mdl-color-text--light-blue-800{color:#0277bd !important}.mdl-color--light-blue-800{background-color:#0277bd !important}.mdl-color-text--light-blue-900{color:#01579b !important}.mdl-color--light-blue-900{background-color:#01579b !important}.mdl-color-text--light-blue-A100{color:#80d8ff !important}.mdl-color--light-blue-A100{background-color:#80d8ff !important}.mdl-color-text--light-blue-A200{color:#40c4ff !important}.mdl-color--light-blue-A200{background-color:#40c4ff !important}.mdl-color-text--light-blue-A400{color:#00b0ff !important}.mdl-color--light-blue-A400{background-color:#00b0ff !important}.mdl-color-text--light-blue-A700{color:#0091ea !important}.mdl-color--light-blue-A700{background-color:#0091ea !important}.mdl-color-text--cyan{color:#00bcd4 !important}.mdl-color--cyan{background-color:#00bcd4 !important}.mdl-color-text--cyan-50{color:#e0f7fa !important}.mdl-color--cyan-50{background-color:#e0f7fa !important}.mdl-color-text--cyan-100{color:#b2ebf2 !important}.mdl-color--cyan-100{background-color:#b2ebf2 !important}.mdl-color-text--cyan-200{color:#80deea !important}.mdl-color--cyan-200{background-color:#80deea !important}.mdl-color-text--cyan-300{color:#4dd0e1 !important}.mdl-color--cyan-300{background-color:#4dd0e1 !important}.mdl-color-text--cyan-400{color:#26c6da !important}.mdl-color--cyan-400{background-color:#26c6da !important}.mdl-color-text--cyan-500{color:#00bcd4 !important}.mdl-color--cyan-500{background-color:#00bcd4 !important}.mdl-color-text--cyan-600{color:#00acc1 !important}.mdl-color--cyan-600{background-color:#00acc1 !important}.mdl-color-text--cyan-700{color:#0097a7 !important}.mdl-color--cyan-700{background-color:#0097a7 !important}.mdl-color-text--cyan-800{color:#00838f !important}.mdl-color--cyan-800{background-color:#00838f !important}.mdl-color-text--cyan-900{color:#006064 !important}.mdl-color--cyan-900{background-color:#006064 !important}.mdl-color-text--cyan-A100{color:#84ffff !important}.mdl-color--cyan-A100{background-color:#84ffff !important}.mdl-color-text--cyan-A200{color:#18ffff !important}.mdl-color--cyan-A200{background-color:#18ffff !important}.mdl-color-text--cyan-A400{color:#00e5ff !important}.mdl-color--cyan-A400{background-color:#00e5ff !important}.mdl-color-text--cyan-A700{color:#00b8d4 !important}.mdl-color--cyan-A700{background-color:#00b8d4 !important}.mdl-color-text--teal{color:#009688 !important}.mdl-color--teal{background-color:#009688 !important}.mdl-color-text--teal-50{color:#e0f2f1 !important}.mdl-color--teal-50{background-color:#e0f2f1 !important}.mdl-color-text--teal-100{color:#b2dfdb !important}.mdl-color--teal-100{background-color:#b2dfdb !important}.mdl-color-text--teal-200{color:#80cbc4 !important}.mdl-color--teal-200{background-color:#80cbc4 !important}.mdl-color-text--teal-300{color:#4db6ac !important}.mdl-color--teal-300{background-color:#4db6ac !important}.mdl-color-text--teal-400{color:#26a69a !important}.mdl-color--teal-400{background-color:#26a69a !important}.mdl-color-text--teal-500{color:#009688 !important}.mdl-color--teal-500{background-color:#009688 !important}.mdl-color-text--teal-600{color:#00897b !important}.mdl-color--teal-600{background-color:#00897b !important}.mdl-color-text--teal-700{color:#00796b !important}.mdl-color--teal-700{background-color:#00796b !important}.mdl-color-text--teal-800{color:#00695c !important}.mdl-color--teal-800{background-color:#00695c !important}.mdl-color-text--teal-900{color:#004d40 !important}.mdl-color--teal-900{background-color:#004d40 !important}.mdl-color-text--teal-A100{color:#a7ffeb !important}.mdl-color--teal-A100{background-color:#a7ffeb !important}.mdl-color-text--teal-A200{color:#64ffda !important}.mdl-color--teal-A200{background-color:#64ffda !important}.mdl-color-text--teal-A400{color:#1de9b6 !important}.mdl-color--teal-A400{background-color:#1de9b6 !important}.mdl-color-text--teal-A700{color:#00bfa5 !important}.mdl-color--teal-A700{background-color:#00bfa5 !important}.mdl-color-text--green{color:#4caf50 !important}.mdl-color--green{background-color:#4caf50 !important}.mdl-color-text--green-50{color:#e8f5e9 !important}.mdl-color--green-50{background-color:#e8f5e9 !important}.mdl-color-text--green-100{color:#c8e6c9 !important}.mdl-color--green-100{background-color:#c8e6c9 !important}.mdl-color-text--green-200{color:#a5d6a7 !important}.mdl-color--green-200{background-color:#a5d6a7 !important}.mdl-color-text--green-300{color:#81c784 !important}.mdl-color--green-300{background-color:#81c784 !important}.mdl-color-text--green-400{color:#66bb6a !important}.mdl-color--green-400{background-color:#66bb6a !important}.mdl-color-text--green-500{color:#4caf50 !important}.mdl-color--green-500{background-color:#4caf50 !important}.mdl-color-text--green-600{color:#43a047 !important}.mdl-color--green-600{background-color:#43a047 !important}.mdl-color-text--green-700{color:#388e3c !important}.mdl-color--green-700{background-color:#388e3c !important}.mdl-color-text--green-800{color:#2e7d32 !important}.mdl-color--green-800{background-color:#2e7d32 !important}.mdl-color-text--green-900{color:#1b5e20 !important}.mdl-color--green-900{background-color:#1b5e20 !important}.mdl-color-text--green-A100{color:#b9f6ca !important}.mdl-color--green-A100{background-color:#b9f6ca !important}.mdl-color-text--green-A200{color:#69f0ae !important}.mdl-color--green-A200{background-color:#69f0ae !important}.mdl-color-text--green-A400{color:#00e676 !important}.mdl-color--green-A400{background-color:#00e676 !important}.mdl-color-text--green-A700{color:#00c853 !important}.mdl-color--green-A700{background-color:#00c853 !important}.mdl-color-text--light-green{color:#8bc34a !important}.mdl-color--light-green{background-color:#8bc34a !important}.mdl-color-text--light-green-50{color:#f1f8e9 !important}.mdl-color--light-green-50{background-color:#f1f8e9 !important}.mdl-color-text--light-green-100{color:#dcedc8 !important}.mdl-color--light-green-100{background-color:#dcedc8 !important}.mdl-color-text--light-green-200{color:#c5e1a5 !important}.mdl-color--light-green-200{background-color:#c5e1a5 !important}.mdl-color-text--light-green-300{color:#aed581 !important}.mdl-color--light-green-300{background-color:#aed581 !important}.mdl-color-text--light-green-400{color:#9ccc65 !important}.mdl-color--light-green-400{background-color:#9ccc65 !important}.mdl-color-text--light-green-500{color:#8bc34a !important}.mdl-color--light-green-500{background-color:#8bc34a !important}.mdl-color-text--light-green-600{color:#7cb342 !important}.mdl-color--light-green-600{background-color:#7cb342 !important}.mdl-color-text--light-green-700{color:#689f38 !important}.mdl-color--light-green-700{background-color:#689f38 !important}.mdl-color-text--light-green-800{color:#558b2f !important}.mdl-color--light-green-800{background-color:#558b2f !important}.mdl-color-text--light-green-900{color:#33691e !important}.mdl-color--light-green-900{background-color:#33691e !important}.mdl-color-text--light-green-A100{color:#ccff90 !important}.mdl-color--light-green-A100{background-color:#ccff90 !important}.mdl-color-text--light-green-A200{color:#b2ff59 !important}.mdl-color--light-green-A200{background-color:#b2ff59 !important}.mdl-color-text--light-green-A400{color:#76ff03 !important}.mdl-color--light-green-A400{background-color:#76ff03 !important}.mdl-color-text--light-green-A700{color:#64dd17 !important}.mdl-color--light-green-A700{background-color:#64dd17 !important}.mdl-color-text--lime{color:#cddc39 !important}.mdl-color--lime{background-color:#cddc39 !important}.mdl-color-text--lime-50{color:#f9fbe7 !important}.mdl-color--lime-50{background-color:#f9fbe7 !important}.mdl-color-text--lime-100{color:#f0f4c3 !important}.mdl-color--lime-100{background-color:#f0f4c3 !important}.mdl-color-text--lime-200{color:#e6ee9c !important}.mdl-color--lime-200{background-color:#e6ee9c !important}.mdl-color-text--lime-300{color:#dce775 !important}.mdl-color--lime-300{background-color:#dce775 !important}.mdl-color-text--lime-400{color:#d4e157 !important}.mdl-color--lime-400{background-color:#d4e157 !important}.mdl-color-text--lime-500{color:#cddc39 !important}.mdl-color--lime-500{background-color:#cddc39 !important}.mdl-color-text--lime-600{color:#c0ca33 !important}.mdl-color--lime-600{background-color:#c0ca33 !important}.mdl-color-text--lime-700{color:#afb42b !important}.mdl-color--lime-700{background-color:#afb42b !important}.mdl-color-text--lime-800{color:#9e9d24 !important}.mdl-color--lime-800{background-color:#9e9d24 !important}.mdl-color-text--lime-900{color:#827717 !important}.mdl-color--lime-900{background-color:#827717 !important}.mdl-color-text--lime-A100{color:#f4ff81 !important}.mdl-color--lime-A100{background-color:#f4ff81 !important}.mdl-color-text--lime-A200{color:#eeff41 !important}.mdl-color--lime-A200{background-color:#eeff41 !important}.mdl-color-text--lime-A400{color:#c6ff00 !important}.mdl-color--lime-A400{background-color:#c6ff00 !important}.mdl-color-text--lime-A700{color:#aeea00 !important}.mdl-color--lime-A700{background-color:#aeea00 !important}.mdl-color-text--yellow{color:#ffeb3b !important}.mdl-color--yellow{background-color:#ffeb3b !important}.mdl-color-text--yellow-50{color:#fffde7 !important}.mdl-color--yellow-50{background-color:#fffde7 !important}.mdl-color-text--yellow-100{color:#fff9c4 !important}.mdl-color--yellow-100{background-color:#fff9c4 !important}.mdl-color-text--yellow-200{color:#fff59d !important}.mdl-color--yellow-200{background-color:#fff59d !important}.mdl-color-text--yellow-300{color:#fff176 !important}.mdl-color--yellow-300{background-color:#fff176 !important}.mdl-color-text--yellow-400{color:#ffee58 !important}.mdl-color--yellow-400{background-color:#ffee58 !important}.mdl-color-text--yellow-500{color:#ffeb3b !important}.mdl-color--yellow-500{background-color:#ffeb3b !important}.mdl-color-text--yellow-600{color:#fdd835 !important}.mdl-color--yellow-600{background-color:#fdd835 !important}.mdl-color-text--yellow-700{color:#fbc02d !important}.mdl-color--yellow-700{background-color:#fbc02d !important}.mdl-color-text--yellow-800{color:#f9a825 !important}.mdl-color--yellow-800{background-color:#f9a825 !important}.mdl-color-text--yellow-900{color:#f57f17 !important}.mdl-color--yellow-900{background-color:#f57f17 !important}.mdl-color-text--yellow-A100{color:#ffff8d !important}.mdl-color--yellow-A100{background-color:#ffff8d !important}.mdl-color-text--yellow-A200{color:#ff0 !important}.mdl-color--yellow-A200{background-color:#ff0 !important}.mdl-color-text--yellow-A400{color:#ffea00 !important}.mdl-color--yellow-A400{background-color:#ffea00 !important}.mdl-color-text--yellow-A700{color:#ffd600 !important}.mdl-color--yellow-A700{background-color:#ffd600 !important}.mdl-color-text--amber{color:#ffc107 !important}.mdl-color--amber{background-color:#ffc107 !important}.mdl-color-text--amber-50{color:#fff8e1 !important}.mdl-color--amber-50{background-color:#fff8e1 !important}.mdl-color-text--amber-100{color:#ffecb3 !important}.mdl-color--amber-100{background-color:#ffecb3 !important}.mdl-color-text--amber-200{color:#ffe082 !important}.mdl-color--amber-200{background-color:#ffe082 !important}.mdl-color-text--amber-300{color:#ffd54f !important}.mdl-color--amber-300{background-color:#ffd54f !important}.mdl-color-text--amber-400{color:#ffca28 !important}.mdl-color--amber-400{background-color:#ffca28 !important}.mdl-color-text--amber-500{color:#ffc107 !important}.mdl-color--amber-500{background-color:#ffc107 !important}.mdl-color-text--amber-600{color:#ffb300 !important}.mdl-color--amber-600{background-color:#ffb300 !important}.mdl-color-text--amber-700{color:#ffa000 !important}.mdl-color--amber-700{background-color:#ffa000 !important}.mdl-color-text--amber-800{color:#ff8f00 !important}.mdl-color--amber-800{background-color:#ff8f00 !important}.mdl-color-text--amber-900{color:#ff6f00 !important}.mdl-color--amber-900{background-color:#ff6f00 !important}.mdl-color-text--amber-A100{color:#ffe57f !important}.mdl-color--amber-A100{background-color:#ffe57f !important}.mdl-color-text--amber-A200{color:#ffd740 !important}.mdl-color--amber-A200{background-color:#ffd740 !important}.mdl-color-text--amber-A400{color:#ffc400 !important}.mdl-color--amber-A400{background-color:#ffc400 !important}.mdl-color-text--amber-A700{color:#ffab00 !important}.mdl-color--amber-A700{background-color:#ffab00 !important}.mdl-color-text--orange{color:#ff9800 !important}.mdl-color--orange{background-color:#ff9800 !important}.mdl-color-text--orange-50{color:#fff3e0 !important}.mdl-color--orange-50{background-color:#fff3e0 !important}.mdl-color-text--orange-100{color:#ffe0b2 !important}.mdl-color--orange-100{background-color:#ffe0b2 !important}.mdl-color-text--orange-200{color:#ffcc80 !important}.mdl-color--orange-200{background-color:#ffcc80 !important}.mdl-color-text--orange-300{color:#ffb74d !important}.mdl-color--orange-300{background-color:#ffb74d !important}.mdl-color-text--orange-400{color:#ffa726 !important}.mdl-color--orange-400{background-color:#ffa726 !important}.mdl-color-text--orange-500{color:#ff9800 !important}.mdl-color--orange-500{background-color:#ff9800 !important}.mdl-color-text--orange-600{color:#fb8c00 !important}.mdl-color--orange-600{background-color:#fb8c00 !important}.mdl-color-text--orange-700{color:#f57c00 !important}.mdl-color--orange-700{background-color:#f57c00 !important}.mdl-color-text--orange-800{color:#ef6c00 !important}.mdl-color--orange-800{background-color:#ef6c00 !important}.mdl-color-text--orange-900{color:#e65100 !important}.mdl-color--orange-900{background-color:#e65100 !important}.mdl-color-text--orange-A100{color:#ffd180 !important}.mdl-color--orange-A100{background-color:#ffd180 !important}.mdl-color-text--orange-A200{color:#ffab40 !important}.mdl-color--orange-A200{background-color:#ffab40 !important}.mdl-color-text--orange-A400{color:#ff9100 !important}.mdl-color--orange-A400{background-color:#ff9100 !important}.mdl-color-text--orange-A700{color:#ff6d00 !important}.mdl-color--orange-A700{background-color:#ff6d00 !important}.mdl-color-text--deep-orange{color:#ff5722 !important}.mdl-color--deep-orange{background-color:#ff5722 !important}.mdl-color-text--deep-orange-50{color:#fbe9e7 !important}.mdl-color--deep-orange-50{background-color:#fbe9e7 !important}.mdl-color-text--deep-orange-100{color:#ffccbc !important}.mdl-color--deep-orange-100{background-color:#ffccbc !important}.mdl-color-text--deep-orange-200{color:#ffab91 !important}.mdl-color--deep-orange-200{background-color:#ffab91 !important}.mdl-color-text--deep-orange-300{color:#ff8a65 !important}.mdl-color--deep-orange-300{background-color:#ff8a65 !important}.mdl-color-text--deep-orange-400{color:#ff7043 !important}.mdl-color--deep-orange-400{background-color:#ff7043 !important}.mdl-color-text--deep-orange-500{color:#ff5722 !important}.mdl-color--deep-orange-500{background-color:#ff5722 !important}.mdl-color-text--deep-orange-600{color:#f4511e !important}.mdl-color--deep-orange-600{background-color:#f4511e !important}.mdl-color-text--deep-orange-700{color:#e64a19 !important}.mdl-color--deep-orange-700{background-color:#e64a19 !important}.mdl-color-text--deep-orange-800{color:#d84315 !important}.mdl-color--deep-orange-800{background-color:#d84315 !important}.mdl-color-text--deep-orange-900{color:#bf360c !important}.mdl-color--deep-orange-900{background-color:#bf360c !important}.mdl-color-text--deep-orange-A100{color:#ff9e80 !important}.mdl-color--deep-orange-A100{background-color:#ff9e80 !important}.mdl-color-text--deep-orange-A200{color:#ff6e40 !important}.mdl-color--deep-orange-A200{background-color:#ff6e40 !important}.mdl-color-text--deep-orange-A400{color:#ff3d00 !important}.mdl-color--deep-orange-A400{background-color:#ff3d00 !important}.mdl-color-text--deep-orange-A700{color:#dd2c00 !important}.mdl-color--deep-orange-A700{background-color:#dd2c00 !important}.mdl-color-text--brown{color:#795548 !important}.mdl-color--brown{background-color:#795548 !important}.mdl-color-text--brown-50{color:#efebe9 !important}.mdl-color--brown-50{background-color:#efebe9 !important}.mdl-color-text--brown-100{color:#d7ccc8 !important}.mdl-color--brown-100{background-color:#d7ccc8 !important}.mdl-color-text--brown-200{color:#bcaaa4 !important}.mdl-color--brown-200{background-color:#bcaaa4 !important}.mdl-color-text--brown-300{color:#a1887f !important}.mdl-color--brown-300{background-color:#a1887f !important}.mdl-color-text--brown-400{color:#8d6e63 !important}.mdl-color--brown-400{background-color:#8d6e63 !important}.mdl-color-text--brown-500{color:#795548 !important}.mdl-color--brown-500{background-color:#795548 !important}.mdl-color-text--brown-600{color:#6d4c41 !important}.mdl-color--brown-600{background-color:#6d4c41 !important}.mdl-color-text--brown-700{color:#5d4037 !important}.mdl-color--brown-700{background-color:#5d4037 !important}.mdl-color-text--brown-800{color:#4e342e !important}.mdl-color--brown-800{background-color:#4e342e !important}.mdl-color-text--brown-900{color:#3e2723 !important}.mdl-color--brown-900{background-color:#3e2723 !important}.mdl-color-text--grey{color:#9e9e9e !important}.mdl-color--grey{background-color:#9e9e9e !important}.mdl-color-text--grey-50{color:#fafafa !important}.mdl-color--grey-50{background-color:#fafafa !important}.mdl-color-text--grey-100{color:#f5f5f5 !important}.mdl-color--grey-100{background-color:#f5f5f5 !important}.mdl-color-text--grey-200{color:#eee !important}.mdl-color--grey-200{background-color:#eee !important}.mdl-color-text--grey-300{color:#e0e0e0 !important}.mdl-color--grey-300{background-color:#e0e0e0 !important}.mdl-color-text--grey-400{color:#bdbdbd !important}.mdl-color--grey-400{background-color:#bdbdbd !important}.mdl-color-text--grey-500{color:#9e9e9e !important}.mdl-color--grey-500{background-color:#9e9e9e !important}.mdl-color-text--grey-600{color:#757575 !important}.mdl-color--grey-600{background-color:#757575 !important}.mdl-color-text--grey-700{color:#616161 !important}.mdl-color--grey-700{background-color:#616161 !important}.mdl-color-text--grey-800{color:#424242 !important}.mdl-color--grey-800{background-color:#424242 !important}.mdl-color-text--grey-900{color:#212121 !important}.mdl-color--grey-900{background-color:#212121 !important}.mdl-color-text--blue-grey{color:#607d8b !important}.mdl-color--blue-grey{background-color:#607d8b !important}.mdl-color-text--blue-grey-50{color:#eceff1 !important}.mdl-color--blue-grey-50{background-color:#eceff1 !important}.mdl-color-text--blue-grey-100{color:#cfd8dc !important}.mdl-color--blue-grey-100{background-color:#cfd8dc !important}.mdl-color-text--blue-grey-200{color:#b0bec5 !important}.mdl-color--blue-grey-200{background-color:#b0bec5 !important}.mdl-color-text--blue-grey-300{color:#90a4ae !important}.mdl-color--blue-grey-300{background-color:#90a4ae !important}.mdl-color-text--blue-grey-400{color:#78909c !important}.mdl-color--blue-grey-400{background-color:#78909c !important}.mdl-color-text--blue-grey-500{color:#607d8b !important}.mdl-color--blue-grey-500{background-color:#607d8b !important}.mdl-color-text--blue-grey-600{color:#546e7a !important}.mdl-color--blue-grey-600{background-color:#546e7a !important}.mdl-color-text--blue-grey-700{color:#455a64 !important}.mdl-color--blue-grey-700{background-color:#455a64 !important}.mdl-color-text--blue-grey-800{color:#37474f !important}.mdl-color--blue-grey-800{background-color:#37474f !important}.mdl-color-text--blue-grey-900{color:#263238 !important}.mdl-color--blue-grey-900{background-color:#263238 !important}.mdl-color--black{background-color:#000 !important}.mdl-color-text--black{color:#000 !important}.mdl-color--white{background-color:#fff !important}.mdl-color-text--white{color:#fff !important}.mdl-color--primary{background-color:#3f51b5 !important}.mdl-color--primary-contrast{background-color:#fff !important}.mdl-color--primary-dark{background-color:#303f9f !important}.mdl-color--accent{background-color:#ff4081 !important}.mdl-color--accent-contrast{background-color:#fff !important}.mdl-color-text--primary{color:#3f51b5 !important}.mdl-color-text--primary-contrast{color:#fff !important}.mdl-color-text--primary-dark{color:#303f9f !important}.mdl-color-text--accent{color:#ff4081 !important}.mdl-color-text--accent-contrast{color:#fff !important}.mdl-ripple{background:#000;border-radius:50%;height:50px;left:0;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:50px;overflow:hidden}.mdl-ripple.is-animating{-webkit-transition:-webkit-transform .3s cubic-bezier(0,0,.2,1),width .3s cubic-bezier(0,0,.2,1),height .3s cubic-bezier(0,0,.2,1),opacity .6s cubic-bezier(0,0,.2,1);transition:transform .3s cubic-bezier(0,0,.2,1),width .3s cubic-bezier(0,0,.2,1),height .3s cubic-bezier(0,0,.2,1),opacity .6s cubic-bezier(0,0,.2,1)}.mdl-ripple.is-visible{opacity:.3}.mdl-animation--default,.mdl-animation--fast-out-slow-in{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.mdl-animation--linear-out-slow-in{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.mdl-animation--fast-out-linear-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.mdl-badge{position:relative;white-space:nowrap;margin-right:24px}.mdl-badge:not([data-badge]){margin-right:auto}.mdl-badge[data-badge]:after{content:attr(data-badge);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;position:absolute;top:-11px;right:-24px;font-family:"Roboto","Helvetica","Arial",sans-serif;font-weight:600;font-size:12px;width:22px;height:22px;border-radius:50%;background:#ff4081;color:#fff}.mdl-button .mdl-badge[data-badge]:after{top:-10px;right:-5px}.mdl-badge.mdl-badge--no-background[data-badge]:after{color:#ff4081;background:rgba(255,255,255,.2);box-shadow:0 0 1px gray}.mdl-button{background:0 0;border:none;border-radius:2px;color:#000;position:relative;height:36px;min-width:64px;padding:0 8px;display:inline-block;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:14px;font-weight:500;text-transform:uppercase;letter-spacing:0;overflow:hidden;will-change:box-shadow,transform;-webkit-transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);outline:none;cursor:pointer;text-decoration:none;text-align:center;line-height:36px;vertical-align:middle}.mdl-button::-moz-focus-inner{border:0}.mdl-button:hover{background-color:rgba(158,158,158,.2)}.mdl-button:focus:not(:active){background-color:rgba(0,0,0,.12)}.mdl-button:active{background-color:rgba(158,158,158,.4)}.mdl-button.mdl-button--colored{color:#3f51b5}.mdl-button.mdl-button--colored:focus:not(:active){background-color:rgba(0,0,0,.12)}input.mdl-button[type="submit"]{-webkit-appearance:none}.mdl-button--raised{background:rgba(158,158,158,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-button--raised:active{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);background-color:rgba(158,158,158,.4)}.mdl-button--raised:focus:not(:active){box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);background-color:rgba(158,158,158,.4)}.mdl-button--raised.mdl-button--colored{background:#3f51b5;color:#fff}.mdl-button--raised.mdl-button--colored:hover{background-color:#3f51b5}.mdl-button--raised.mdl-button--colored:active{background-color:#3f51b5}.mdl-button--raised.mdl-button--colored:focus:not(:active){background-color:#3f51b5}.mdl-button--raised.mdl-button--colored .mdl-ripple{background:#fff}.mdl-button--fab{border-radius:50%;font-size:24px;height:56px;margin:auto;min-width:56px;width:56px;padding:0;overflow:hidden;background:rgba(158,158,158,.2);box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);position:relative;line-height:normal}.mdl-button--fab .material-icons{position:absolute;top:50%;left:50%;-webkit-transform:translate(-12px,-12px);-ms-transform:translate(-12px,-12px);transform:translate(-12px,-12px);line-height:24px;width:24px}.mdl-button--fab.mdl-button--mini-fab{height:40px;min-width:40px;width:40px}.mdl-button--fab .mdl-button__ripple-container{border-radius:50%;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-button--fab:active{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);background-color:rgba(158,158,158,.4)}.mdl-button--fab:focus:not(:active){box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);background-color:rgba(158,158,158,.4)}.mdl-button--fab.mdl-button--colored{background:#ff4081;color:#fff}.mdl-button--fab.mdl-button--colored:hover{background-color:#ff4081}.mdl-button--fab.mdl-button--colored:focus:not(:active){background-color:#ff4081}.mdl-button--fab.mdl-button--colored:active{background-color:#ff4081}.mdl-button--fab.mdl-button--colored .mdl-ripple{background:#fff}.mdl-button--icon{border-radius:50%;font-size:24px;height:32px;margin-left:0;margin-right:0;min-width:32px;width:32px;padding:0;overflow:hidden;color:inherit;line-height:normal}.mdl-button--icon .material-icons{position:absolute;top:50%;left:50%;-webkit-transform:translate(-12px,-12px);-ms-transform:translate(-12px,-12px);transform:translate(-12px,-12px);line-height:24px;width:24px}.mdl-button--icon.mdl-button--mini-icon{height:24px;min-width:24px;width:24px}.mdl-button--icon.mdl-button--mini-icon .material-icons{top:0;left:0}.mdl-button--icon .mdl-button__ripple-container{border-radius:50%;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-button__ripple-container{display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:0;overflow:hidden}.mdl-button[disabled] .mdl-button__ripple-container .mdl-ripple,.mdl-button.mdl-button--disabled .mdl-button__ripple-container .mdl-ripple{background-color:transparent}.mdl-button--primary.mdl-button--primary{color:#3f51b5}.mdl-button--primary.mdl-button--primary .mdl-ripple{background:#fff}.mdl-button--primary.mdl-button--primary.mdl-button--raised,.mdl-button--primary.mdl-button--primary.mdl-button--fab{color:#fff;background-color:#3f51b5}.mdl-button--accent.mdl-button--accent{color:#ff4081}.mdl-button--accent.mdl-button--accent .mdl-ripple{background:#fff}.mdl-button--accent.mdl-button--accent.mdl-button--raised,.mdl-button--accent.mdl-button--accent.mdl-button--fab{color:#fff;background-color:#ff4081}.mdl-button[disabled][disabled],.mdl-button.mdl-button--disabled.mdl-button--disabled{color:rgba(0,0,0,.26);cursor:auto;background-color:transparent}.mdl-button--fab[disabled][disabled],.mdl-button--fab.mdl-button--disabled.mdl-button--disabled,.mdl-button--raised[disabled][disabled],.mdl-button--raised.mdl-button--disabled.mdl-button--disabled{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.26);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-button--colored[disabled][disabled],.mdl-button--colored.mdl-button--disabled.mdl-button--disabled{color:rgba(0,0,0,.26)}.mdl-button .material-icons{vertical-align:middle}.mdl-card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font-size:16px;font-weight:400;min-height:200px;overflow:hidden;width:330px;z-index:1;position:relative;background:#fff;border-radius:2px;box-sizing:border-box}.mdl-card__media{background-color:#ff4081;background-repeat:repeat;background-position:50% 50%;background-size:cover;background-origin:padding-box;background-attachment:scroll;box-sizing:border-box}.mdl-card__title{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;color:#000;display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:stretch;-webkit-justify-content:stretch;-ms-flex-pack:stretch;justify-content:stretch;line-height:normal;padding:16px;-webkit-perspective-origin:165px 56px;perspective-origin:165px 56px;-webkit-transform-origin:165px 56px;-ms-transform-origin:165px 56px;transform-origin:165px 56px;box-sizing:border-box}.mdl-card__title.mdl-card--border{border-bottom:1px solid rgba(0,0,0,.1)}.mdl-card__title-text{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;color:inherit;display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:24px;font-weight:300;line-height:normal;overflow:hidden;-webkit-transform-origin:149px 48px;-ms-transform-origin:149px 48px;transform-origin:149px 48px;margin:0}.mdl-card__subtitle-text{font-size:14px;color:grey;margin:0}.mdl-card__supporting-text{color:rgba(0,0,0,.54);font-size:13px;line-height:18px;overflow:hidden;padding:16px;width:90%}.mdl-card__actions{font-size:16px;line-height:normal;width:100%;background-color:transparent;padding:8px;box-sizing:border-box}.mdl-card__actions.mdl-card--border{border-top:1px solid rgba(0,0,0,.1)}.mdl-card--expand{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.mdl-card__menu{position:absolute;right:16px;top:16px}.mdl-checkbox{position:relative;z-index:1;vertical-align:middle;display:inline-block;box-sizing:border-box;width:100%;height:24px;margin:0;padding:0}.mdl-checkbox.is-upgraded{padding-left:24px}.mdl-checkbox__input{line-height:24px}.mdl-checkbox.is-upgraded .mdl-checkbox__input{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:3px;left:0;display:inline-block;box-sizing:border-box;width:16px;height:16px;margin:0;cursor:pointer;overflow:hidden;border:2px solid rgba(0,0,0,.54);border-radius:2px;z-index:2}.mdl-checkbox.is-checked .mdl-checkbox__box-outline{border:2px solid #3f51b5}.mdl-checkbox.is-disabled .mdl-checkbox__box-outline{border:2px solid rgba(0,0,0,.26);cursor:auto}.mdl-checkbox__focus-helper{position:absolute;top:3px;left:0;display:inline-block;box-sizing:border-box;width:16px;height:16px;border-radius:50%;background-color:transparent}.mdl-checkbox.is-focused .mdl-checkbox__focus-helper{box-shadow:0 0 0 8px rgba(0,0,0,.1);background-color:rgba(0,0,0,.1)}.mdl-checkbox.is-focused.is-checked .mdl-checkbox__focus-helper{box-shadow:0 0 0 8px rgba(63,81,181,.26);background-color:rgba(63,81,181,.26)}.mdl-checkbox__tick-outline{position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcCI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gMCwwIDAsMSAxLDEgMSwwIDAsMCB6IE0gMC44NTM0Mzc1LDAuMTY3MTg3NSAwLjk1OTY4NzUsMC4yNzMxMjUgMC40MjkzNzUsMC44MDM0Mzc1IDAuMzIzMTI1LDAuOTA5Njg3NSAwLjIxNzE4NzUsMC44MDM0Mzc1IDAuMDQwMzEyNSwwLjYyNjg3NSAwLjE0NjU2MjUsMC41MjA2MjUgMC4zMjMxMjUsMC42OTc1IDAuODUzNDM3NSwwLjE2NzE4NzUgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8bWFzayBpZD0ibWFzayIgbWFza1VuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgbWFza0NvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgogICAgICA8cGF0aAogICAgICAgICBkPSJNIDAsMCAwLDEgMSwxIDEsMCAwLDAgeiBNIDAuODUzNDM3NSwwLjE2NzE4NzUgMC45NTk2ODc1LDAuMjczMTI1IDAuNDI5Mzc1LDAuODAzNDM3NSAwLjMyMzEyNSwwLjkwOTY4NzUgMC4yMTcxODc1LDAuODAzNDM3NSAwLjA0MDMxMjUsMC42MjY4NzUgMC4xNDY1NjI1LDAuNTIwNjI1IDAuMzIzMTI1LDAuNjk3NSAwLjg1MzQzNzUsMC4xNjcxODc1IHoiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+CiAgICA8L21hc2s+CiAgPC9kZWZzPgogIDxyZWN0CiAgICAgd2lkdGg9IjEiCiAgICAgaGVpZ2h0PSIxIgogICAgIHg9IjAiCiAgICAgeT0iMCIKICAgICBjbGlwLXBhdGg9InVybCgjY2xpcCkiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KPC9zdmc+Cg==");mask:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcCI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gMCwwIDAsMSAxLDEgMSwwIDAsMCB6IE0gMC44NTM0Mzc1LDAuMTY3MTg3NSAwLjk1OTY4NzUsMC4yNzMxMjUgMC40MjkzNzUsMC44MDM0Mzc1IDAuMzIzMTI1LDAuOTA5Njg3NSAwLjIxNzE4NzUsMC44MDM0Mzc1IDAuMDQwMzEyNSwwLjYyNjg3NSAwLjE0NjU2MjUsMC41MjA2MjUgMC4zMjMxMjUsMC42OTc1IDAuODUzNDM3NSwwLjE2NzE4NzUgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8bWFzayBpZD0ibWFzayIgbWFza1VuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgbWFza0NvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgogICAgICA8cGF0aAogICAgICAgICBkPSJNIDAsMCAwLDEgMSwxIDEsMCAwLDAgeiBNIDAuODUzNDM3NSwwLjE2NzE4NzUgMC45NTk2ODc1LDAuMjczMTI1IDAuNDI5Mzc1LDAuODAzNDM3NSAwLjMyMzEyNSwwLjkwOTY4NzUgMC4yMTcxODc1LDAuODAzNDM3NSAwLjA0MDMxMjUsMC42MjY4NzUgMC4xNDY1NjI1LDAuNTIwNjI1IDAuMzIzMTI1LDAuNjk3NSAwLjg1MzQzNzUsMC4xNjcxODc1IHoiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+CiAgICA8L21hc2s+CiAgPC9kZWZzPgogIDxyZWN0CiAgICAgd2lkdGg9IjEiCiAgICAgaGVpZ2h0PSIxIgogICAgIHg9IjAiCiAgICAgeT0iMCIKICAgICBjbGlwLXBhdGg9InVybCgjY2xpcCkiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KPC9zdmc+Cg==");background:0 0;-webkit-transition-duration:.28s;transition-duration:.28s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-property:background;transition-property:background}.mdl-checkbox.is-checked .mdl-checkbox__tick-outline{background:#3f51b5 url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K")}.mdl-checkbox.is-checked.is-disabled .mdl-checkbox__tick-outline{background:rgba(0,0,0,.26)url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K")}.mdl-checkbox__label{position:relative;cursor:pointer;font-size:16px;line-height:24px;margin:0}.mdl-checkbox.is-disabled .mdl-checkbox__label{color:rgba(0,0,0,.26);cursor:auto}.mdl-checkbox__ripple-container{position:absolute;z-index:2;top:-6px;left:-10px;box-sizing:border-box;width:36px;height:36px;border-radius:50%;cursor:pointer;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-checkbox__ripple-container .mdl-ripple{background:#3f51b5}.mdl-checkbox.is-disabled .mdl-checkbox__ripple-container{cursor:auto}.mdl-checkbox.is-disabled .mdl-checkbox__ripple-container .mdl-ripple{background:0 0}.mdl-data-table{position:relative;border:1px solid rgba(0,0,0,.12);border-collapse:collapse;white-space:nowrap;font-size:13px;background-color:#fff}.mdl-data-table thead{padding-bottom:3px}.mdl-data-table thead .mdl-data-table__select{margin-top:0}.mdl-data-table tbody tr{position:relative;height:48px;-webkit-transition-duration:.28s;transition-duration:.28s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-property:background-color;transition-property:background-color}.mdl-data-table tbody tr.is-selected{background-color:#e0e0e0}.mdl-data-table tbody tr:hover{background-color:#eee}.mdl-data-table td{text-align:right}.mdl-data-table th{padding:0 18px 0 18px;text-align:right}.mdl-data-table td:first-of-type,.mdl-data-table th:first-of-type{padding-left:24px}.mdl-data-table td:last-of-type,.mdl-data-table th:last-of-type{padding-right:24px}.mdl-data-table td{position:relative;vertical-align:top;height:48px;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12);padding:12px 18px 0;box-sizing:border-box}.mdl-data-table td .mdl-data-table__select{vertical-align:top;position:absolute;left:24px}.mdl-data-table th{position:relative;vertical-align:bottom;text-overflow:ellipsis;font-weight:700;line-height:24px;letter-spacing:0;height:48px;font-size:12px;color:rgba(0,0,0,.54);padding-bottom:8px;box-sizing:border-box}.mdl-data-table th .mdl-data-table__select{position:absolute;bottom:8px;left:24px}.mdl-data-table__select{width:16px}.mdl-data-table__cell--non-numeric.mdl-data-table__cell--non-numeric{text-align:left}.mdl-mega-footer{padding:16px 40px;color:#9e9e9e;background-color:#424242}.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,.mdl-mega-footer--right-section,.mdl-mega-footer__right-section{margin-bottom:16px}.mdl-mega-footer--right-section a,.mdl-mega-footer__right-section a{display:block;margin-bottom:16px;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:16px;line-height:36px;vertical-align:middle}}.mdl-mega-footer--social-btn,.mdl-mega-footer__social-btn{width:36px;height:36px;padding:0;margin:0;background-color:#9e9e9e;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}.mdl-mega-footer--drop-down-section:nth-child(3):after,.mdl-mega-footer__drop-down-section:nth-child(3):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:55.8px;padding:32px;margin:-16px 0 0;cursor:pointer;z-index:1;opacity:0}.mdl-mega-footer--heading-checkbox~.mdl-mega-footer--heading:after,.mdl-mega-footer--heading-checkbox~.mdl-mega-footer__heading:after,.mdl-mega-footer__heading-checkbox~.mdl-mega-footer--heading:after,.mdl-mega-footer__heading-checkbox~.mdl-mega-footer__heading:after{font-family:'Material Icons';content:'\E5CE'}.mdl-mega-footer--heading-checkbox:checked~ul,.mdl-mega-footer__heading-checkbox:checked~ul{display:none}.mdl-mega-footer--heading-checkbox:checked~.mdl-mega-footer--heading:after,.mdl-mega-footer--heading-checkbox:checked~.mdl-mega-footer__heading:after,.mdl-mega-footer__heading-checkbox:checked~.mdl-mega-footer--heading:after,.mdl-mega-footer__heading-checkbox:checked~.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:39.8px;margin-bottom:16px;box-sizing:border-box;font-size:14px;line-height:23.8px;font-weight:500;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#e0e0e0}.mdl-mega-footer--heading:after,.mdl-mega-footer__heading:after{content:'';position:absolute;top:0;right:0;display:block;width:23.8px;height:23.8px;background-size:cover}.mdl-mega-footer--link-list,.mdl-mega-footer__link-list{list-style:none;padding:0;margin:0 0 32px}.mdl-mega-footer--link-list:after,.mdl-mega-footer__link-list:after{clear:both;display:block;content:''}.mdl-mega-footer--link-list li,.mdl-mega-footer__link-list li{font-size:14px;font-weight:400;letter-spacing:0;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-checkbox~.mdl-mega-footer--heading:after,.mdl-mega-footer--heading-checkbox~.mdl-mega-footer__heading:after,.mdl-mega-footer__heading-checkbox~.mdl-mega-footer--heading:after,.mdl-mega-footer__heading-checkbox~.mdl-mega-footer__heading:after{background-image:none}.mdl-mega-footer--heading-checkbox:checked~ul,.mdl-mega-footer__heading-checkbox:checked~ul{display:block}.mdl-mega-footer--heading-checkbox:checked~.mdl-mega-footer--heading:after,.mdl-mega-footer--heading-checkbox:checked~.mdl-mega-footer__heading:after,.mdl-mega-footer__heading-checkbox:checked~.mdl-mega-footer--heading:after,.mdl-mega-footer__heading-checkbox:checked~.mdl-mega-footer__heading:after{content:''}}.mdl-mega-footer--bottom-section,.mdl-mega-footer__bottom-section{padding-top:16px;margin-bottom:16px}.mdl-logo{margin-bottom:16px;color:#fff}.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:16px}@media screen and (min-width:760px){.mdl-logo{float:left;margin-bottom:0;margin-right:16px}}.mdl-mini-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:32px 16px;color:#9e9e9e;background-color:#424242}.mdl-mini-footer:after{content:'';display:block}.mdl-mini-footer .mdl-logo{line-height:36px}.mdl-mini-footer--link-list,.mdl-mini-footer__link-list{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;list-style:none;margin:0;padding:0}.mdl-mini-footer--link-list li,.mdl-mini-footer__link-list li{margin-bottom:0;margin-right:16px}@media screen and (min-width:760px){.mdl-mini-footer--link-list li,.mdl-mini-footer__link-list li{line-height:36px}}.mdl-mini-footer--link-list a,.mdl-mini-footer__link-list a{color:inherit;text-decoration:none;white-space:nowrap}.mdl-mini-footer--left-section,.mdl-mini-footer__left-section{display:inline-block;-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.mdl-mini-footer--right-section,.mdl-mini-footer__right-section{display:inline-block;-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.mdl-mini-footer--social-btn,.mdl-mini-footer__social-btn{width:36px;height:36px;padding:0;margin:0;background-color:#9e9e9e;border:none}.mdl-icon-toggle{position:relative;z-index:1;vertical-align:middle;display:inline-block;height:32px;margin:0;padding:0}.mdl-icon-toggle__input{line-height:32px}.mdl-icon-toggle.is-upgraded .mdl-icon-toggle__input{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:32px;width:32px;min-width:32px;color:#616161;border-radius:50%;padding:0;margin-left:0;margin-right:0;text-align:center;background-color:transparent;will-change:background-color;-webkit-transition:background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);transition:background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1)}.mdl-icon-toggle__label.material-icons{line-height:32px;font-size:24px}.mdl-icon-toggle.is-checked .mdl-icon-toggle__label{color:#3f51b5}.mdl-icon-toggle.is-disabled .mdl-icon-toggle__label{color:rgba(0,0,0,.26);cursor:auto;-webkit-transition:none;transition:none}.mdl-icon-toggle.is-focused .mdl-icon-toggle__label{background-color:rgba(0,0,0,.12)}.mdl-icon-toggle.is-focused.is-checked .mdl-icon-toggle__label{background-color:rgba(63,81,181,.26)}.mdl-icon-toggle__ripple-container{position:absolute;z-index:2;top:-2px;left:-2px;box-sizing:border-box;width:36px;height:36px;border-radius:50%;cursor:pointer;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-icon-toggle__ripple-container .mdl-ripple{background:#616161}.mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container{cursor:auto}.mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container .mdl-ripple{background:0 0}.mdl-menu__container{display:block;margin:0;padding:0;border:none;position:absolute;overflow:visible;height:0;width:0;visibility:hidden;z-index:-1}.mdl-menu__container.is-visible,.mdl-menu__container.is-animating{z-index:999;visibility:visible}.mdl-menu__outline{display:block;background:#fff;margin:0;padding:0;border:none;border-radius:2px;position:absolute;top:0;left:0;overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);will-change:transform;-webkit-transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1),opacity .2s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .2s cubic-bezier(.4,0,.2,1);z-index:-1}.mdl-menu__container.is-visible .mdl-menu__outline{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);z-index:999}.mdl-menu__outline.mdl-menu--bottom-right{-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.mdl-menu__outline.mdl-menu--top-left{-webkit-transform-origin:0 100%;-ms-transform-origin:0 100%;transform-origin:0 100%}.mdl-menu__outline.mdl-menu--top-right{-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;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 .mdl-menu{opacity:1;z-index:999}.mdl-menu.is-animating{-webkit-transition:opacity .2s cubic-bezier(.4,0,.2,1),clip .3s cubic-bezier(.4,0,.2,1);transition:opacity .2s cubic-bezier(.4,0,.2,1),clip .3s cubic-bezier(.4,0,.2,1)}.mdl-menu.mdl-menu--bottom-right{left:auto;right:0}.mdl-menu.mdl-menu--top-left{top:auto;bottom:0}.mdl-menu.mdl-menu--top-right{top:auto;left:auto;bottom:0;right:0}.mdl-menu.mdl-menu--unaligned{top:auto;left:auto}.mdl-menu__item{display:block;border:none;color:rgba(0,0,0,.87);background-color:transparent;text-align:left;margin:0;padding:0 16px;outline-color:#bdbdbd;position:relative;overflow:hidden;font-size:14px;font-weight:400;letter-spacing:0;text-decoration:none;cursor:pointer;height:48px;line-height:48px;white-space:nowrap;opacity:0;-webkit-transition:opacity .2s cubic-bezier(.4,0,.2,1);transition:opacity .2s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdl-menu__container.is-visible .mdl-menu__item{opacity:1}.mdl-menu__item::-moz-focus-inner{border:0}.mdl-menu__item[disabled]{color:#bdbdbd;background-color:transparent;cursor:auto}.mdl-menu__item[disabled]:hover{background-color:transparent}.mdl-menu__item[disabled]:focus{background-color:transparent}.mdl-menu__item[disabled] .mdl-ripple{background:0 0}.mdl-menu__item:hover{background-color:#eee}.mdl-menu__item:focus{outline:none;background-color:#eee}.mdl-menu__item:active{background-color:#e0e0e0}.mdl-menu__item--ripple-container{display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:0;overflow:hidden}.mdl-progress{display:block;position:relative;height:4px;width:500px}.mdl-progress>.bar{display:block;position:absolute;top:0;bottom:0;width:0%;-webkit-transition:width .2s cubic-bezier(.4,0,.2,1);transition:width .2s cubic-bezier(.4,0,.2,1)}.mdl-progress>.progressbar{background-color:#3f51b5;z-index:1;left:0}.mdl-progress>.bufferbar{background-image:-webkit-linear-gradient(left,rgba(255,255,255,.7),rgba(255,255,255,.7)),-webkit-linear-gradient(left,#3f51b5 ,#3f51b5);background-image:linear-gradient(to right,rgba(255,255,255,.7),rgba(255,255,255,.7)),linear-gradient(to right,#3f51b5 ,#3f51b5);z-index:0;left:0}.mdl-progress>.auxbar{right:0}@supports (-webkit-appearance:none){.mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate)>.auxbar{background-image:-webkit-linear-gradient(left,rgba(255,255,255,.7),rgba(255,255,255,.7)),-webkit-linear-gradient(left,#3f51b5 ,#3f51b5);background-image:linear-gradient(to right,rgba(255,255,255,.7),rgba(255,255,255,.7)),linear-gradient(to right,#3f51b5 ,#3f51b5);-webkit-mask:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjQiIHZpZXdQb3J0PSIwIDAgMTIgNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxlbGxpcHNlIGN4PSIyIiBjeT0iMiIgcng9IjIiIHJ5PSIyIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImN4IiBmcm9tPSIyIiB0bz0iLTEwIiBkdXI9IjAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogIDwvZWxsaXBzZT4KICA8ZWxsaXBzZSBjeD0iMTQiIGN5PSIyIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJsb2FkZXIiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY3giIGZyb209IjE0IiB0bz0iMiIgZHVyPSIwLjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICA8L2VsbGlwc2U+Cjwvc3ZnPgo=");mask:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjQiIHZpZXdQb3J0PSIwIDAgMTIgNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxlbGxpcHNlIGN4PSIyIiBjeT0iMiIgcng9IjIiIHJ5PSIyIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImN4IiBmcm9tPSIyIiB0bz0iLTEwIiBkdXI9IjAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogIDwvZWxsaXBzZT4KICA8ZWxsaXBzZSBjeD0iMTQiIGN5PSIyIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJsb2FkZXIiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY3giIGZyb209IjE0IiB0bz0iMiIgZHVyPSIwLjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICA8L2VsbGlwc2U+Cjwvc3ZnPgo=")}}.mdl-progress:not(.mdl-progress__indeterminate)>.auxbar{background-image:-webkit-linear-gradient(left,rgba(255,255,255,.9),rgba(255,255,255,.9)),-webkit-linear-gradient(left,#3f51b5 ,#3f51b5);background-image:linear-gradient(to right,rgba(255,255,255,.9),rgba(255,255,255,.9)),linear-gradient(to right,#3f51b5 ,#3f51b5)}.mdl-progress.mdl-progress__indeterminate>.bar1{-webkit-animation-name:indeterminate1;animation-name:indeterminate1}.mdl-progress.mdl-progress__indeterminate>.bar1,.mdl-progress.mdl-progress__indeterminate>.bar3{background-color:#3f51b5;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mdl-progress.mdl-progress__indeterminate>.bar3{background-image:none;-webkit-animation-name:indeterminate2;animation-name:indeterminate2}@-webkit-keyframes indeterminate1{0%{left:0%;width:0%}50%{left:25%;width:75%}75%{left:100%;width:0%}}@keyframes indeterminate1{0%{left:0%;width:0%}50%{left:25%;width:75%}75%{left:100%;width:0%}}@-webkit-keyframes indeterminate2{0%,50%{left:0%;width:0%}75%{left:0%;width:25%}100%{left:100%;width:0%}}@keyframes indeterminate2{0%,50%{left:0%;width:0%}75%{left:0%;width:25%}100%{left:100%;width:0%}}.mdl-navigation{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;box-sizing:border-box}.mdl-navigation__link{color:#424242;text-decoration:none;font-weight:500;font-size:13px;margin:0}.mdl-layout{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow-y:auto;overflow-x:hidden;position:relative;-webkit-overflow-scrolling:touch}.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%}.mdl-layout-title{display:block;position:relative;font-family:"Roboto","Helvetica","Arial",sans-serif;font-size:20px;line-height:1;letter-spacing:.02em;font-weight:400;box-sizing:border-box}.mdl-layout-spacer{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.mdl-layout__drawer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:240px;height:100%;max-height:100%;position:absolute;top:0;left:0;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);box-sizing:border-box;border-right:1px solid #e0e0e0;background:#fafafa;-webkit-transform:translateX(-250px);-ms-transform:translateX(-250px);transform:translateX(-250px);-webkit-transform-style:preserve-3d;transform-style:preserve-3d;will-change:transform;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-property:-webkit-transform;transition-property:transform;color:#424242;overflow:visible;overflow-y:auto;z-index:5}.mdl-layout__drawer.is-visible{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.mdl-layout__drawer>*{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.mdl-layout__drawer>.mdl-layout-title{line-height:64px;padding-left:40px}@media screen and (max-width:1024px){.mdl-layout__drawer>.mdl-layout-title{line-height:56px;padding-left:16px}}.mdl-layout__drawer .mdl-navigation{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch;padding-top:16px}.mdl-layout__drawer .mdl-navigation .mdl-navigation__link{display:block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;padding:16px 40px;margin:0;color:#757575}@media screen and (max-width:1024px){.mdl-layout__drawer .mdl-navigation .mdl-navigation__link{padding:16px}}.mdl-layout__drawer .mdl-navigation .mdl-navigation__link:hover{background-color:#e0e0e0}.mdl-layout__drawer .mdl-navigation .mdl-navigation__link--current{background-color:#000;color:#3f51b5}@media screen and (min-width:1025px){.mdl-layout--fixed-drawer>.mdl-layout__drawer{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.mdl-layout__drawer-button{display:block;position:absolute;height:48px;width:48px;border:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;overflow:hidden;text-align:center;cursor:pointer;font-size:26px;line-height:50px;font-family:Helvetica,Arial,sans-serif;margin:10px 12px;top:0;left:0;color:#fff;z-index:4}.mdl-layout__header .mdl-layout__drawer-button{position:absolute;color:#fff;background-color:inherit}@media screen and (max-width:1024px){.mdl-layout__header .mdl-layout__drawer-button{margin:4px}}@media screen and (max-width:1024px){.mdl-layout__drawer-button{margin:4px;color:rgba(0,0,0,.5)}}@media screen and (min-width:1025px){.mdl-layout--fixed-drawer>.mdl-layout__drawer-button{display:none}}.mdl-layout__header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;box-sizing:border-box;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%;margin:0;padding:0;border:none;min-height:64px;max-height:1000px;z-index:3;background-color:#3f51b5;color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-property:max-height,box-shadow;transition-property:max-height,box-shadow}@media screen and (max-width:1024px){.mdl-layout__header{min-height:56px}}.mdl-layout--fixed-drawer:not(.is-small-screen)>.mdl-layout__header{margin-left:240px;width:calc(100% - 240px)}@media screen and (min-width:1024px){.mdl-layout--fixed-drawer>.mdl-layout__header .mdl-layout__header-row{padding-left:40px}}.mdl-layout__header>.mdl-layout-icon{position:absolute;left:40px;top:16px;height:32px;width:32px;overflow:hidden;z-index:3;display:block}@media screen and (max-width:1024px){.mdl-layout__header>.mdl-layout-icon{left:16px;top:12px}}.mdl-layout.has-drawer .mdl-layout__header>.mdl-layout-icon{display:none}.mdl-layout__header.is-compact{max-height:64px}@media screen and (max-width:1024px){.mdl-layout__header.is-compact{max-height:56px}}.mdl-layout__header.is-compact.has-tabs{height:112px}@media screen and (max-width:1024px){.mdl-layout__header.is-compact.has-tabs{min-height:104px}}@media screen and (max-width:1024px){.mdl-layout__header{display:none}.mdl-layout--fixed-header>.mdl-layout__header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}}.mdl-layout__header--transparent.mdl-layout__header--transparent{background-color:transparent;box-shadow:none}.mdl-layout__header--seamed,.mdl-layout__header--scroll{box-shadow:none}.mdl-layout__header--waterfall{box-shadow:none;overflow:hidden}.mdl-layout__header--waterfall.is-casting-shadow{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-layout__header-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;box-sizing:border-box;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:64px;margin:0;padding:0 40px 0 80px}@media screen and (max-width:1024px){.mdl-layout__header-row{height:56px;padding:0 16px 0 72px}}.mdl-layout__header-row>*{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.mdl-layout__header--scroll .mdl-layout__header-row{width:100%}.mdl-layout__header-row .mdl-navigation{margin:0;padding:0;height:64px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}@media screen and (max-width:1024px){.mdl-layout__header-row .mdl-navigation{height:56px}}.mdl-layout__header-row .mdl-navigation__link{display:block;color:#fff;line-height:64px;padding:0 24px}@media screen and (max-width:1024px){.mdl-layout__header-row .mdl-navigation__link{line-height:56px;padding:0 16px}}.mdl-layout__obfuscator{background-color:transparent;position:absolute;top:0;left:0;height:100%;width:100%;z-index:4;visibility:hidden;-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.mdl-layout__drawer.is-visible~.mdl-layout__obfuscator{background-color:rgba(0,0,0,.5);visibility:visible}.mdl-layout__content{-ms-flex:0 1 auto;display:inline-block;overflow-y:auto;overflow-x:hidden;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;z-index:1;-webkit-overflow-scrolling:touch}.mdl-layout--fixed-drawer>.mdl-layout__content{margin-left:240px}.mdl-layout__container.has-scrolling-header .mdl-layout__content{overflow:visible}@media screen and (max-width:1024px){.mdl-layout--fixed-drawer>.mdl-layout__content{margin-left:0}.mdl-layout__container.has-scrolling-header .mdl-layout__content{overflow-y:auto;overflow-x:hidden}}.mdl-layout__tab-bar{height:96px;margin:0;width:calc(100% - 112px);padding:0 0 0 56px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#3f51b5;overflow-y:hidden;overflow-x:scroll}.mdl-layout__tab-bar::-webkit-scrollbar{display:none}@media screen and (max-width:1024px){.mdl-layout__tab-bar{width:calc(100% - 60px);padding:0 0 0 60px}}.mdl-layout--fixed-tabs .mdl-layout__tab-bar{padding:0;overflow:hidden;width:100%}.mdl-layout__tab-bar-container{position:relative;height:48px;width:100%;border:none;margin:0;z-index:2;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.mdl-layout__container>.mdl-layout__tab-bar-container{position:absolute;top:0;left:0}.mdl-layout__tab-bar-button{display:inline-block;position:absolute;top:0;height:48px;width:56px;z-index:4;text-align:center;background-color:#3f51b5;color:transparent;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media screen and (max-width:1024px){.mdl-layout__tab-bar-button{display:none;width:60px}}.mdl-layout--fixed-tabs .mdl-layout__tab-bar-button{display:none}.mdl-layout__tab-bar-button .material-icons{line-height:48px}.mdl-layout__tab-bar-button.is-active{color:#fff}.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 24px;float:left;position:relative;display:block;-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;text-decoration:none;height:48px;line-height:48px;text-align:center;font-weight:500;font-size:14px;text-transform:uppercase;color:rgba(255,255,255,.6);overflow:hidden}@media screen and (max-width:1024px){.mdl-layout__tab{padding:0 12px}}.mdl-layout--fixed-tabs .mdl-layout__tab{float:none;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:0}.mdl-layout.is-upgraded .mdl-layout__tab.is-active{color:#fff}.mdl-layout.is-upgraded .mdl-layout__tab.is-active::after{height:2px;width:100%;display:block;content:" ";bottom:0;left:0;position:absolute;background:#ff4081;-webkit-animation:border-expand .2s cubic-bezier(.4,0,.4,1).01s alternate forwards;animation:border-expand .2s cubic-bezier(.4,0,.4,1).01s alternate forwards;-webkit-transition:all 1s cubic-bezier(.4,0,1,1);transition:all 1s cubic-bezier(.4,0,1,1)}.mdl-layout__tab .mdl-layout__tab-ripple-container{display:block;position:absolute;height:100%;width:100%;left:0;top:0;z-index:1;overflow:hidden}.mdl-layout__tab .mdl-layout__tab-ripple-container .mdl-ripple{background-color:#fff}.mdl-layout__tab-panel{display:block}.mdl-layout.is-upgraded .mdl-layout__tab-panel{display:none}.mdl-layout.is-upgraded .mdl-layout__tab-panel.is-active{display:block}.mdl-radio{position:relative;font-size:16px;line-height:24px;display:inline-block;box-sizing:border-box;margin:0;padding-left:0}.mdl-radio.is-upgraded{padding-left:24px}.mdl-radio__button{line-height:24px}.mdl-radio.is-upgraded .mdl-radio__button{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:4px;left:0;display:inline-block;box-sizing:border-box;width:16px;height:16px;margin:0;cursor:pointer;border:2px solid rgba(0,0,0,.54);border-radius:50%;z-index:2}.mdl-radio.is-checked .mdl-radio__outer-circle{border:2px solid #3f51b5}.mdl-radio.is-disabled .mdl-radio__outer-circle{border:2px solid rgba(0,0,0,.26);cursor:auto}.mdl-radio__inner-circle{position:absolute;z-index:1;margin:0;top:8px;left:4px;box-sizing:border-box;width:8px;height:8px;cursor:pointer;-webkit-transition-duration:.28s;transition-duration:.28s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transform:scale3d(0,0,0);transform:scale3d(0,0,0);border-radius:50%;background:#3f51b5}.mdl-radio.is-checked .mdl-radio__inner-circle{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.mdl-radio.is-disabled .mdl-radio__inner-circle{background:rgba(0,0,0,.26);cursor:auto}.mdl-radio.is-focused .mdl-radio__inner-circle{box-shadow:0 0 0 10px rgba(0,0,0,.1)}.mdl-radio__label{cursor:pointer}.mdl-radio.is-disabled .mdl-radio__label{color:rgba(0,0,0,.26);cursor:auto}.mdl-radio__ripple-container{position:absolute;z-index:2;top:-9px;left:-13px;box-sizing:border-box;width:42px;height:42px;border-radius:50%;cursor:pointer;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-radio__ripple-container .mdl-ripple{background:#3f51b5}.mdl-radio.is-disabled .mdl-radio__ripple-container{cursor:auto}.mdl-radio.is-disabled .mdl-radio__ripple-container .mdl-ripple{background:0 0}_:-ms-input-placeholder,:root .mdl-slider.mdl-slider.is-upgraded{-ms-appearance:none;height:32px;margin:0}.mdl-slider{width:calc(100% - 40px);margin:0 20px}.mdl-slider.is-upgraded{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:2px;background:0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0;padding:0;color:#3f51b5;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;z-index:1;cursor:pointer}.mdl-slider.is-upgraded::-moz-focus-outer{border:0}.mdl-slider.is-upgraded::-ms-tooltip{display:none}.mdl-slider.is-upgraded::-webkit-slider-runnable-track{background:0 0}.mdl-slider.is-upgraded::-moz-range-track{background:0 0;border:none}.mdl-slider.is-upgraded::-ms-track{background:0 0;color:transparent;height:2px;width:100%;border:none}.mdl-slider.is-upgraded::-ms-fill-lower{padding:0;background:linear-gradient(to right,transparent,transparent 16px,#3f51b5 16px,#3f51b5 0)}.mdl-slider.is-upgraded::-ms-fill-upper{padding:0;background:linear-gradient(to left,transparent,transparent 16px,rgba(0,0,0,.26)16px,rgba(0,0,0,.26)0)}.mdl-slider.is-upgraded::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;box-sizing:border-box;border-radius:50%;background:#3f51b5;border:none;-webkit-transition:-webkit-transform .18s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1);transition:transform .18s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1)}.mdl-slider.is-upgraded::-moz-range-thumb{-moz-appearance:none;width:12px;height:12px;box-sizing:border-box;border-radius:50%;background-image:none;background:#3f51b5;border:none}.mdl-slider.is-upgraded:focus:not(:active)::-webkit-slider-thumb{box-shadow:0 0 0 10px rgba(63,81,181,.26)}.mdl-slider.is-upgraded:focus:not(:active)::-moz-range-thumb{box-shadow:0 0 0 10px rgba(63,81,181,.26)}.mdl-slider.is-upgraded:active::-webkit-slider-thumb{background-image:none;background:#3f51b5;-webkit-transform:scale(1.5);transform:scale(1.5)}.mdl-slider.is-upgraded:active::-moz-range-thumb{background-image:none;background:#3f51b5;transform:scale(1.5)}.mdl-slider.is-upgraded::-ms-thumb{width:32px;height:32px;border:none;border-radius:50%;background:#3f51b5;-ms-transform:scale(.375);transform:scale(.375);transition:transform .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1)}.mdl-slider.is-upgraded:focus:not(:active)::-ms-thumb{background:radial-gradient(circle closest-side,#3f51b5 0%,#3f51b5 37.5%,rgba(63,81,181,.26)37.5%,rgba(63,81,181,.26)100%);-ms-transform:scale(1);transform:scale(1)}.mdl-slider.is-upgraded:active::-ms-thumb{background:#3f51b5;-ms-transform:scale(.5625);transform:scale(.5625)}.mdl-slider.is-upgraded.is-lowest-value::-webkit-slider-thumb{border:2px solid rgba(0,0,0,.26);background:0 0}.mdl-slider.is-upgraded.is-lowest-value::-moz-range-thumb{border:2px solid rgba(0,0,0,.26);background:0 0}.mdl-slider.is-upgraded.is-lowest-value~.mdl-slider__background-flex>.mdl-slider__background-upper{left:6px}.mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-webkit-slider-thumb{box-shadow:0 0 0 10px rgba(0,0,0,.12);background:rgba(0,0,0,.12)}.mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-moz-range-thumb{box-shadow:0 0 0 10px rgba(0,0,0,.12);background:rgba(0,0,0,.12)}.mdl-slider.is-upgraded.is-lowest-value:active::-webkit-slider-thumb{border:1.6px solid rgba(0,0,0,.26);-webkit-transform:scale(1.5);transform:scale(1.5)}.mdl-slider.is-upgraded.is-lowest-value:active~.mdl-slider__background-flex>.mdl-slider__background-upper{left:9px}.mdl-slider.is-upgraded.is-lowest-value:active::-moz-range-thumb{border:1.5px solid rgba(0,0,0,.26);transform:scale(1.5)}.mdl-slider.is-upgraded.is-lowest-value::-ms-thumb{background:radial-gradient(circle closest-side,transparent 0%,transparent 66.67%,rgba(0,0,0,.26)66.67%,rgba(0,0,0,.26)100%)}.mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-ms-thumb{background:radial-gradient(circle closest-side,rgba(0,0,0,.12)0%,rgba(0,0,0,.12)25%,rgba(0,0,0,.26)25%,rgba(0,0,0,.26)37.5%,rgba(0,0,0,.12)37.5%,rgba(0,0,0,.12)100%);-ms-transform:scale(1);transform:scale(1)}.mdl-slider.is-upgraded.is-lowest-value:active::-ms-thumb{-ms-transform:scale(.5625);transform:scale(.5625);background:radial-gradient(circle closest-side,transparent 0%,transparent 77.78%,rgba(0,0,0,.26)77.78%,rgba(0,0,0,.26)100%)}.mdl-slider.is-upgraded.is-lowest-value::-ms-fill-lower{background:0 0}.mdl-slider.is-upgraded.is-lowest-value::-ms-fill-upper{margin-left:6px}.mdl-slider.is-upgraded.is-lowest-value:active::-ms-fill-upper{margin-left:9px}.mdl-slider.is-upgraded:disabled:focus::-webkit-slider-thumb,.mdl-slider.is-upgraded:disabled:active::-webkit-slider-thumb,.mdl-slider.is-upgraded:disabled::-webkit-slider-thumb{-webkit-transform:scale(.667);transform:scale(.667);background:rgba(0,0,0,.26)}.mdl-slider.is-upgraded:disabled:focus::-moz-range-thumb,.mdl-slider.is-upgraded:disabled:active::-moz-range-thumb,.mdl-slider.is-upgraded:disabled::-moz-range-thumb{transform:scale(.667);background:rgba(0,0,0,.26)}.mdl-slider.is-upgraded:disabled~.mdl-slider__background-flex>.mdl-slider__background-lower{background-color:rgba(0,0,0,.26);left:-6px}.mdl-slider.is-upgraded:disabled~.mdl-slider__background-flex>.mdl-slider__background-upper{left:6px}.mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-webkit-slider-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled:active::-webkit-slider-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled::-webkit-slider-thumb{border:3px solid rgba(0,0,0,.26);background:0 0;-webkit-transform:scale(.667);transform:scale(.667)}.mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-moz-range-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled:active::-moz-range-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled::-moz-range-thumb{border:3px solid rgba(0,0,0,.26);background:0 0;transform:scale(.667)}.mdl-slider.is-upgraded.is-lowest-value:disabled:active~.mdl-slider__background-flex>.mdl-slider__background-upper{left:6px}.mdl-slider.is-upgraded:disabled:focus::-ms-thumb,.mdl-slider.is-upgraded:disabled:active::-ms-thumb,.mdl-slider.is-upgraded:disabled::-ms-thumb{-ms-transform:scale(.25);transform:scale(.25);background:rgba(0,0,0,.26)}.mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-ms-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled::-ms-thumb{-ms-transform:scale(.25);transform:scale(.25);background:radial-gradient(circle closest-side,transparent 0%,transparent 50%,rgba(0,0,0,.26)50%,rgba(0,0,0,.26)100%)}.mdl-slider.is-upgraded:disabled::-ms-fill-lower{margin-right:6px;background:linear-gradient(to right,transparent,transparent 25px,rgba(0,0,0,.26)25px,rgba(0,0,0,.26)0)}.mdl-slider.is-upgraded:disabled::-ms-fill-upper{margin-left:6px}.mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-fill-upper{margin-left:6px}.mdl-slider__ie-container{height:18px;overflow:visible;border:none;margin:none;padding:none}.mdl-slider__container{height:18px;position:relative;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.mdl-slider__container,.mdl-slider__background-flex{background:0 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.mdl-slider__background-flex{position:absolute;height:2px;width:calc(100% - 52px);top:50%;left:0;margin:0 26px;overflow:hidden;border:0;padding:0;-webkit-transform:translate(0,-1px);-ms-transform:translate(0,-1px);transform:translate(0,-1px)}.mdl-slider__background-lower{background:#3f51b5}.mdl-slider__background-lower,.mdl-slider__background-upper{-webkit-box-flex:0;-webkit-flex:0;-ms-flex:0;flex:0;position:relative;border:0;padding:0}.mdl-slider__background-upper{background:rgba(0,0,0,.26);-webkit-transition:left .18s cubic-bezier(.4,0,.2,1);transition:left .18s cubic-bezier(.4,0,.2,1)}.mdl-spinner{display:inline-block;position:relative;width:28px;height:28px}.mdl-spinner:not(.is-upgraded).is-active:after{content:"Loading..."}.mdl-spinner.is-upgraded.is-active{-webkit-animation:mdl-spinner__container-rotate 1568.23529412ms linear infinite;animation:mdl-spinner__container-rotate 1568.23529412ms linear infinite}@-webkit-keyframes mdl-spinner__container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mdl-spinner__container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.mdl-spinner__layer{position:absolute;width:100%;height:100%;opacity:0}.mdl-spinner__layer-1{border-color:#42a5f5}.mdl-spinner--single-color .mdl-spinner__layer-1{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-1{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1)infinite both,mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1)infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1)infinite both,mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1)infinite both}.mdl-spinner__layer-2{border-color:#f44336}.mdl-spinner--single-color .mdl-spinner__layer-2{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-2{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1)infinite both,mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1)infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1)infinite both,mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1)infinite both}.mdl-spinner__layer-3{border-color:#fdd835}.mdl-spinner--single-color .mdl-spinner__layer-3{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-3{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1)infinite both,mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1)infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1)infinite both,mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1)infinite both}.mdl-spinner__layer-4{border-color:#4caf50}.mdl-spinner--single-color .mdl-spinner__layer-4{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-4{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1)infinite both,mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1)infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1)infinite both,mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1)infinite both}@-webkit-keyframes mdl-spinner__fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@keyframes mdl-spinner__fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes mdl-spinner__layer-1-fade-in-out{from,25%{opacity:.99}26%,89%{opacity:0}90%,100%{opacity:.99}}@keyframes mdl-spinner__layer-1-fade-in-out{from,25%{opacity:.99}26%,89%{opacity:0}90%,100%{opacity:.99}}@-webkit-keyframes mdl-spinner__layer-2-fade-in-out{from,15%{opacity:0}25%,50%{opacity:.99}51%{opacity:0}}@keyframes mdl-spinner__layer-2-fade-in-out{from,15%{opacity:0}25%,50%{opacity:.99}51%{opacity:0}}@-webkit-keyframes mdl-spinner__layer-3-fade-in-out{from,40%{opacity:0}50%,75%{opacity:.99}76%{opacity:0}}@keyframes mdl-spinner__layer-3-fade-in-out{from,40%{opacity:0}50%,75%{opacity:.99}76%{opacity:0}}@-webkit-keyframes mdl-spinner__layer-4-fade-in-out{from,65%{opacity:0}75%,90%{opacity:.99}100%{opacity:0}}@keyframes mdl-spinner__layer-4-fade-in-out{from,65%{opacity:0}75%,90%{opacity:.99}100%{opacity:0}}.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__gap-patch .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__circle-clipper .mdl-spinner__circle{width:200%}.mdl-spinner__circle{box-sizing:border-box;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0;left:0}.mdl-spinner__left .mdl-spinner__circle{border-right-color:transparent!important;-webkit-transform:rotate(129deg);-ms-transform:rotate(129deg);transform:rotate(129deg)}.mdl-spinner.is-active .mdl-spinner__left .mdl-spinner__circle{-webkit-animation:mdl-spinner__left-spin 1333ms cubic-bezier(.4,0,.2,1)infinite both;animation:mdl-spinner__left-spin 1333ms cubic-bezier(.4,0,.2,1)infinite both}.mdl-spinner__right .mdl-spinner__circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);-ms-transform:rotate(-129deg);transform:rotate(-129deg)}.mdl-spinner.is-active .mdl-spinner__right .mdl-spinner__circle{-webkit-animation:mdl-spinner__right-spin 1333ms cubic-bezier(.4,0,.2,1)infinite both;animation:mdl-spinner__right-spin 1333ms cubic-bezier(.4,0,.2,1)infinite both}@-webkit-keyframes mdl-spinner__left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@keyframes mdl-spinner__left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes mdl-spinner__right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}@keyframes mdl-spinner__right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}.mdl-switch{position:relative;z-index:1;vertical-align:middle;display:inline-block;box-sizing:border-box;width:100%;height:24px;margin:0;padding:0;overflow:visible;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdl-switch.is-upgraded{padding-left:28px}.mdl-switch__input{line-height:24px}.mdl-switch.is-upgraded .mdl-switch__input{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:rgba(0,0,0,.26);position:absolute;left:0;top:5px;height:14px;width:36px;border-radius:14px;cursor:pointer}.mdl-switch.is-checked .mdl-switch__track{background:rgba(63,81,181,.5)}.mdl-switch.is-disabled .mdl-switch__track{background:rgba(0,0,0,.12);cursor:auto}.mdl-switch__thumb{background:#fafafa;position:absolute;left:0;top:2px;height:20px;width:20px;border-radius:50%;cursor:pointer;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);-webkit-transition-duration:.28s;transition-duration:.28s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-property:left;transition-property:left}.mdl-switch.is-checked .mdl-switch__thumb{background:#3f51b5;left:16px;box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px 8px 0 rgba(0,0,0,.12)}.mdl-switch.is-disabled .mdl-switch__thumb{background:#bdbdbd;cursor:auto}.mdl-switch__focus-helper{position:absolute;top:50%;left:50%;-webkit-transform:translate(-4px,-4px);-ms-transform:translate(-4px,-4px);transform:translate(-4px,-4px);display:inline-block;box-sizing:border-box;width:8px;height:8px;border-radius:50%;background-color:transparent}.mdl-switch.is-focused .mdl-switch__focus-helper{box-shadow:0 0 0 20px rgba(0,0,0,.1);background-color:rgba(0,0,0,.1)}.mdl-switch.is-focused.is-checked .mdl-switch__focus-helper{box-shadow:0 0 0 20px rgba(63,81,181,.26);background-color:rgba(63,81,181,.26)}.mdl-switch__label{position:relative;cursor:pointer;font-size:16px;line-height:24px;margin:0;left:24px}.mdl-switch.is-disabled .mdl-switch__label{color:#bdbdbd;cursor:auto}.mdl-switch__ripple-container{position:absolute;z-index:2;top:-12px;left:-14px;box-sizing:border-box;width:48px;height:48px;border-radius:50%;cursor:pointer;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000);-webkit-transition-duration:.4s;transition-duration:.4s;-webkit-transition-timing-function:step-end;transition-timing-function:step-end;-webkit-transition-property:left;transition-property:left}.mdl-switch__ripple-container .mdl-ripple{background:#3f51b5}.mdl-switch.is-disabled .mdl-switch__ripple-container{cursor:auto}.mdl-switch.is-disabled .mdl-switch__ripple-container .mdl-ripple{background:0 0}.mdl-switch.is-checked .mdl-switch__ripple-container{cursor:auto;left:2px}.mdl-tabs{display:block;width:100%}.mdl-tabs__tab-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-content:space-between;-ms-flex-line-pack:justify;align-content:space-between;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;height:48px;padding:0;margin:0;border-bottom:1px solid #e0e0e0}.mdl-tabs__tab{margin:0;border:none;padding:0 24px;float:left;position:relative;display:block;color:red;text-decoration:none;height:48px;line-height:48px;text-align:center;font-weight:500;font-size:14px;text-transform:uppercase;color:rgba(0,0,0,.54);overflow:hidden}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active{color:rgba(0,0,0,.87)}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after{height:2px;width:100%;display:block;content:" ";bottom:0;left:0;position:absolute;background:#3f51b5;-webkit-animation:border-expand .2s cubic-bezier(.4,0,.4,1).01s alternate forwards;animation:border-expand .2s cubic-bezier(.4,0,.4,1).01s alternate forwards;-webkit-transition:all 1s cubic-bezier(.4,0,1,1);transition:all 1s cubic-bezier(.4,0,1,1)}.mdl-tabs__tab .mdl-tabs__ripple-container{display:block;position:absolute;height:100%;width:100%;left:0;top:0;z-index:1;overflow:hidden}.mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple{background:#3f51b5}.mdl-tabs__panel{display:block}.mdl-tabs.is-upgraded .mdl-tabs__panel{display:none}.mdl-tabs.is-upgraded .mdl-tabs__panel.is-active{display:block}@-webkit-keyframes border-expand{0%{opacity:0;width:0}100%{opacity:1;width:100%}}@keyframes border-expand{0%{opacity:0;width:0}100%{opacity:1;width:100%}}.mdl-textfield{position:relative;font-size:16px;display:inline-block;box-sizing:border-box;width:300px;max-width:100%;margin:0;padding:20px 0}.mdl-textfield .mdl-button{position:absolute;bottom:20px}.mdl-textfield--align-right{text-align:right}.mdl-textfield--full-width{width:100%}.mdl-textfield--expandable{min-width:32px;width:auto;min-height:32px}.mdl-textfield__input{border:none;border-bottom:1px solid rgba(0,0,0,.12);display:block;font-size:16px;margin:0;padding:4px 0;width:100%;background:0 0;text-align:left;color:inherit}.mdl-textfield.is-focused .mdl-textfield__input{outline:none}.mdl-textfield.is-invalid .mdl-textfield__input{border-color:#de3226;box-shadow:none}.mdl-textfield.is-disabled .mdl-textfield__input{background-color:transparent;border-bottom:1px dotted rgba(0,0,0,.12);color:rgba(0,0,0,.26)}.mdl-textfield textarea.mdl-textfield__input{display:block}.mdl-textfield__label{bottom:0;color:rgba(0,0,0,.26);font-size:16px;left:0;right:0;pointer-events:none;position:absolute;display:block;top:24px;width:100%;overflow:hidden;white-space:nowrap;text-align:left}.mdl-textfield.is-dirty .mdl-textfield__label{visibility:hidden}.mdl-textfield--floating-label .mdl-textfield__label{-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.mdl-textfield.is-disabled.is-disabled .mdl-textfield__label{color:rgba(0,0,0,.26)}.mdl-textfield--floating-label.is-focused .mdl-textfield__label,.mdl-textfield--floating-label.is-dirty .mdl-textfield__label{color:#3f51b5;font-size:12px;top:4px;visibility:visible}.mdl-textfield--floating-label.is-focused .mdl-textfield__expandable-holder .mdl-textfield__label,.mdl-textfield--floating-label.is-dirty .mdl-textfield__expandable-holder .mdl-textfield__label{top:-16px}.mdl-textfield--floating-label.is-invalid .mdl-textfield__label{color:#de3226;font-size:12px}.mdl-textfield__label:after{background-color:#3f51b5;bottom:20px;content:'';height:2px;left:45%;position:absolute;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);visibility:hidden;width:10px}.mdl-textfield.is-focused .mdl-textfield__label:after{left:0;visibility:visible;width:100%}.mdl-textfield.is-invalid .mdl-textfield__label:after{background-color:#de3226}.mdl-textfield__error{color:#de3226;position:absolute;font-size:12px;margin-top:3px;visibility:hidden;display:block}.mdl-textfield.is-invalid .mdl-textfield__error{visibility:visible}.mdl-textfield__expandable-holder{display:inline-block;position:relative;margin-left:32px;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-block;max-width:.1px}.mdl-textfield.is-focused .mdl-textfield__expandable-holder,.mdl-textfield.is-dirty .mdl-textfield__expandable-holder{max-width:600px}.mdl-textfield__expandable-holder .mdl-textfield__label:after{bottom:0}.mdl-tooltip{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;will-change:transform;z-index:999;background:rgba(97,97,97,.9);border-radius:2px;color:#fff;display:inline-block;font-size:10px;font-weight:500;line-height:14px;max-width:170px;position:fixed;top:-500px;left:-500px;padding:8px;text-align:center}.mdl-tooltip.is-active{-webkit-animation:pulse 200ms cubic-bezier(0,0,.2,1)forwards;animation:pulse 200ms cubic-bezier(0,0,.2,1)forwards}.mdl-tooltip--large{line-height:14px;font-size:14px;padding:16px}@-webkit-keyframes pulse{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}50%{-webkit-transform:scale(.99);transform:scale(.99)}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1;visibility:visible}}@keyframes pulse{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}50%{-webkit-transform:scale(.99);transform:scale(.99)}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1;visibility:visible}}.mdl-shadow--2dp{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-shadow--3dp{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px 8px 0 rgba(0,0,0,.12)}.mdl-shadow--4dp{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.mdl-shadow--6dp{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.2)}.mdl-shadow--8dp{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2)}.mdl-shadow--16dp{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.2)}.mdl-grid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;margin:0 auto;-webkit-box-align:stretch;-webkit-align-items:stretch;-ms-flex-align:stretch;align-items:stretch}.mdl-grid.mdl-grid--no-spacing{padding:0}.mdl-cell{box-sizing:border-box}.mdl-cell--top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.mdl-cell--middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.mdl-cell--bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.mdl-cell--stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.mdl-grid.mdl-grid--no-spacing>.mdl-cell{margin:0}@media (max-width:479px){.mdl-grid{padding:8px}.mdl-cell{margin:8px;width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell{width:100%}.mdl-cell--hide-phone{display:none!important}.mdl-cell--1-col,.mdl-cell--1-col-phone.mdl-cell--1-col-phone{width:calc(25% - 16px)}.mdl-grid--no-spacing>.mdl-cell--1-col,.mdl-grid--no-spacing>.mdl-cell--1-col-phone.mdl-cell--1-col-phone{width:25%}.mdl-cell--2-col,.mdl-cell--2-col-phone.mdl-cell--2-col-phone{width:calc(50% - 16px)}.mdl-grid--no-spacing>.mdl-cell--2-col,.mdl-grid--no-spacing>.mdl-cell--2-col-phone.mdl-cell--2-col-phone{width:50%}.mdl-cell--3-col,.mdl-cell--3-col-phone.mdl-cell--3-col-phone{width:calc(75% - 16px)}.mdl-grid--no-spacing>.mdl-cell--3-col,.mdl-grid--no-spacing>.mdl-cell--3-col-phone.mdl-cell--3-col-phone{width:75%}.mdl-cell--4-col,.mdl-cell--4-col-phone.mdl-cell--4-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--4-col,.mdl-grid--no-spacing>.mdl-cell--4-col-phone.mdl-cell--4-col-phone{width:100%}.mdl-cell--5-col,.mdl-cell--5-col-phone.mdl-cell--5-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--5-col,.mdl-grid--no-spacing>.mdl-cell--5-col-phone.mdl-cell--5-col-phone{width:100%}.mdl-cell--6-col,.mdl-cell--6-col-phone.mdl-cell--6-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--6-col,.mdl-grid--no-spacing>.mdl-cell--6-col-phone.mdl-cell--6-col-phone{width:100%}.mdl-cell--7-col,.mdl-cell--7-col-phone.mdl-cell--7-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--7-col,.mdl-grid--no-spacing>.mdl-cell--7-col-phone.mdl-cell--7-col-phone{width:100%}.mdl-cell--8-col,.mdl-cell--8-col-phone.mdl-cell--8-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--8-col,.mdl-grid--no-spacing>.mdl-cell--8-col-phone.mdl-cell--8-col-phone{width:100%}.mdl-cell--9-col,.mdl-cell--9-col-phone.mdl-cell--9-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--9-col,.mdl-grid--no-spacing>.mdl-cell--9-col-phone.mdl-cell--9-col-phone{width:100%}.mdl-cell--10-col,.mdl-cell--10-col-phone.mdl-cell--10-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--10-col,.mdl-grid--no-spacing>.mdl-cell--10-col-phone.mdl-cell--10-col-phone{width:100%}.mdl-cell--11-col,.mdl-cell--11-col-phone.mdl-cell--11-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--11-col,.mdl-grid--no-spacing>.mdl-cell--11-col-phone.mdl-cell--11-col-phone{width:100%}.mdl-cell--12-col,.mdl-cell--12-col-phone.mdl-cell--12-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--12-col,.mdl-grid--no-spacing>.mdl-cell--12-col-phone.mdl-cell--12-col-phone{width:100%}}@media (min-width:480px) and (max-width:839px){.mdl-grid{padding:8px}.mdl-cell{margin:8px;width:calc(50% - 16px)}.mdl-grid--no-spacing>.mdl-cell{width:50%}.mdl-cell--hide-tablet{display:none!important}.mdl-cell--1-col,.mdl-cell--1-col-tablet.mdl-cell--1-col-tablet{width:calc(12.5% - 16px)}.mdl-grid--no-spacing>.mdl-cell--1-col,.mdl-grid--no-spacing>.mdl-cell--1-col-tablet.mdl-cell--1-col-tablet{width:12.5%}.mdl-cell--2-col,.mdl-cell--2-col-tablet.mdl-cell--2-col-tablet{width:calc(25% - 16px)}.mdl-grid--no-spacing>.mdl-cell--2-col,.mdl-grid--no-spacing>.mdl-cell--2-col-tablet.mdl-cell--2-col-tablet{width:25%}.mdl-cell--3-col,.mdl-cell--3-col-tablet.mdl-cell--3-col-tablet{width:calc(37.5% - 16px)}.mdl-grid--no-spacing>.mdl-cell--3-col,.mdl-grid--no-spacing>.mdl-cell--3-col-tablet.mdl-cell--3-col-tablet{width:37.5%}.mdl-cell--4-col,.mdl-cell--4-col-tablet.mdl-cell--4-col-tablet{width:calc(50% - 16px)}.mdl-grid--no-spacing>.mdl-cell--4-col,.mdl-grid--no-spacing>.mdl-cell--4-col-tablet.mdl-cell--4-col-tablet{width:50%}.mdl-cell--5-col,.mdl-cell--5-col-tablet.mdl-cell--5-col-tablet{width:calc(62.5% - 16px)}.mdl-grid--no-spacing>.mdl-cell--5-col,.mdl-grid--no-spacing>.mdl-cell--5-col-tablet.mdl-cell--5-col-tablet{width:62.5%}.mdl-cell--6-col,.mdl-cell--6-col-tablet.mdl-cell--6-col-tablet{width:calc(75% - 16px)}.mdl-grid--no-spacing>.mdl-cell--6-col,.mdl-grid--no-spacing>.mdl-cell--6-col-tablet.mdl-cell--6-col-tablet{width:75%}.mdl-cell--7-col,.mdl-cell--7-col-tablet.mdl-cell--7-col-tablet{width:calc(87.5% - 16px)}.mdl-grid--no-spacing>.mdl-cell--7-col,.mdl-grid--no-spacing>.mdl-cell--7-col-tablet.mdl-cell--7-col-tablet{width:87.5%}.mdl-cell--8-col,.mdl-cell--8-col-tablet.mdl-cell--8-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--8-col,.mdl-grid--no-spacing>.mdl-cell--8-col-tablet.mdl-cell--8-col-tablet{width:100%}.mdl-cell--9-col,.mdl-cell--9-col-tablet.mdl-cell--9-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--9-col,.mdl-grid--no-spacing>.mdl-cell--9-col-tablet.mdl-cell--9-col-tablet{width:100%}.mdl-cell--10-col,.mdl-cell--10-col-tablet.mdl-cell--10-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--10-col,.mdl-grid--no-spacing>.mdl-cell--10-col-tablet.mdl-cell--10-col-tablet{width:100%}.mdl-cell--11-col,.mdl-cell--11-col-tablet.mdl-cell--11-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--11-col,.mdl-grid--no-spacing>.mdl-cell--11-col-tablet.mdl-cell--11-col-tablet{width:100%}.mdl-cell--12-col,.mdl-cell--12-col-tablet.mdl-cell--12-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--12-col,.mdl-grid--no-spacing>.mdl-cell--12-col-tablet.mdl-cell--12-col-tablet{width:100%}}@media (min-width:840px){.mdl-grid{padding:8px}.mdl-cell{margin:8px;width:calc(33.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell{width:33.3333333333%}.mdl-cell--hide-desktop{display:none!important}.mdl-cell--1-col,.mdl-cell--1-col-desktop.mdl-cell--1-col-desktop{width:calc(8.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell--1-col,.mdl-grid--no-spacing>.mdl-cell--1-col-desktop.mdl-cell--1-col-desktop{width:8.3333333333%}.mdl-cell--2-col,.mdl-cell--2-col-desktop.mdl-cell--2-col-desktop{width:calc(16.6666666667% - 16px)}.mdl-grid--no-spacing>.mdl-cell--2-col,.mdl-grid--no-spacing>.mdl-cell--2-col-desktop.mdl-cell--2-col-desktop{width:16.6666666667%}.mdl-cell--3-col,.mdl-cell--3-col-desktop.mdl-cell--3-col-desktop{width:calc(25% - 16px)}.mdl-grid--no-spacing>.mdl-cell--3-col,.mdl-grid--no-spacing>.mdl-cell--3-col-desktop.mdl-cell--3-col-desktop{width:25%}.mdl-cell--4-col,.mdl-cell--4-col-desktop.mdl-cell--4-col-desktop{width:calc(33.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell--4-col,.mdl-grid--no-spacing>.mdl-cell--4-col-desktop.mdl-cell--4-col-desktop{width:33.3333333333%}.mdl-cell--5-col,.mdl-cell--5-col-desktop.mdl-cell--5-col-desktop{width:calc(41.6666666667% - 16px)}.mdl-grid--no-spacing>.mdl-cell--5-col,.mdl-grid--no-spacing>.mdl-cell--5-col-desktop.mdl-cell--5-col-desktop{width:41.6666666667%}.mdl-cell--6-col,.mdl-cell--6-col-desktop.mdl-cell--6-col-desktop{width:calc(50% - 16px)}.mdl-grid--no-spacing>.mdl-cell--6-col,.mdl-grid--no-spacing>.mdl-cell--6-col-desktop.mdl-cell--6-col-desktop{width:50%}.mdl-cell--7-col,.mdl-cell--7-col-desktop.mdl-cell--7-col-desktop{width:calc(58.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell--7-col,.mdl-grid--no-spacing>.mdl-cell--7-col-desktop.mdl-cell--7-col-desktop{width:58.3333333333%}.mdl-cell--8-col,.mdl-cell--8-col-desktop.mdl-cell--8-col-desktop{width:calc(66.6666666667% - 16px)}.mdl-grid--no-spacing>.mdl-cell--8-col,.mdl-grid--no-spacing>.mdl-cell--8-col-desktop.mdl-cell--8-col-desktop{width:66.6666666667%}.mdl-cell--9-col,.mdl-cell--9-col-desktop.mdl-cell--9-col-desktop{width:calc(75% - 16px)}.mdl-grid--no-spacing>.mdl-cell--9-col,.mdl-grid--no-spacing>.mdl-cell--9-col-desktop.mdl-cell--9-col-desktop{width:75%}.mdl-cell--10-col,.mdl-cell--10-col-desktop.mdl-cell--10-col-desktop{width:calc(83.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell--10-col,.mdl-grid--no-spacing>.mdl-cell--10-col-desktop.mdl-cell--10-col-desktop{width:83.3333333333%}.mdl-cell--11-col,.mdl-cell--11-col-desktop.mdl-cell--11-col-desktop{width:calc(91.6666666667% - 16px)}.mdl-grid--no-spacing>.mdl-cell--11-col,.mdl-grid--no-spacing>.mdl-cell--11-col-desktop.mdl-cell--11-col-desktop{width:91.6666666667%}.mdl-cell--12-col,.mdl-cell--12-col-desktop.mdl-cell--12-col-desktop{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--12-col,.mdl-grid--no-spacing>.mdl-cell--12-col-desktop.mdl-cell--12-col-desktop{width:100%}} +/*# sourceMappingURL=material.min.css.map */ \ No newline at end of file diff --git a/material.min.css.map b/material.min.css.map new file mode 100644 index 000000000..fe1f2b02a --- /dev/null +++ b/material.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["material-design-lite.css","material-design-lite.scss","_variables.scss","_color-definitions.scss","_functions.scss","_mixins.scss","resets/_resets.scss","resets/_h5bp.scss","resets/_mobile.scss","typography/_typography.scss","palette/_palette.scss","ripple/_ripple.scss","animation/_animation.scss","badge/_badge.scss","button/_button.scss","card/_card.scss","checkbox/_checkbox.scss","data-table/_data-table.scss","footer/_mega_footer.scss","footer/_mini_footer.scss","icon-toggle/_icon-toggle.scss","menu/_menu.scss","progress/_progress.scss","layout/_layout.scss","radio/_radio.scss","slider/_slider.scss","spinner/_spinner.scss","switch/_switch.scss","tabs/_tabs.scss","textfield/_textfield.scss","tooltip/_tooltip.scss","shadow/_shadow.scss","grid/_grid.scss"],"names":[],"mappings":"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","file":"material.min.css","sourcesContent":["@charset \"UTF-8\";\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Material Design Lite */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/*\n * What follows is the result of much research on cross-browser styling.\n * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,\n * Kroc Camen, and the H5BP dev community and team.\n */\n/* ==========================================================================\n Base styles: opinionated defaults\n ========================================================================== */\nhtml {\n color: rgba(0,0,0, 0.87);\n font-size: 1em;\n line-height: 1.4; }\n\n/*\n * Remove text-shadow in selection highlight:\n * https://twitter.com/miketaylr/status/12228805301\n *\n * These selection rule sets have to be separate.\n * Customize the background color to match your design.\n */\n::selection {\n background: #b3d4fc;\n text-shadow: none; }\n\n/*\n * A better looking default horizontal rule\n */\nhr {\n display: block;\n height: 1px;\n border: 0;\n border-top: 1px solid #ccc;\n margin: 1em 0;\n padding: 0; }\n\n/*\n * Remove the gap between audio, canvas, iframes,\n * images, videos and the bottom of their containers:\n * https://github.com/h5bp/html5-boilerplate/issues/440\n */\naudio,\ncanvas,\niframe,\nimg,\nsvg,\nvideo {\n vertical-align: middle; }\n\n/*\n * Remove default fieldset styles.\n */\nfieldset {\n border: 0;\n margin: 0;\n padding: 0; }\n\n/*\n * Allow only vertical resizing of textareas.\n */\ntextarea {\n resize: vertical; }\n\n/* ==========================================================================\n Browser Upgrade Prompt\n ========================================================================== */\n.browserupgrade {\n margin: 0.2em 0;\n background: #ccc;\n color: #000;\n padding: 0.2em 0; }\n\n/* ==========================================================================\n Author's custom styles\n ========================================================================== */\n/* ==========================================================================\n Helper classes\n ========================================================================== */\n/*\n * Hide visually and from screen readers:\n */\n.hidden {\n display: none !important; }\n\n/*\n * Hide only visually, but have it available for screen readers:\n * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility\n */\n.visuallyhidden {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n/*\n * Extends the .visuallyhidden class to allow the element\n * to be focusable when navigated to via the keyboard:\n * https://www.drupal.org/node/897638\n */\n.visuallyhidden.focusable:active,\n.visuallyhidden.focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n\n/*\n * Hide visually and from screen readers, but maintain layout\n */\n.invisible {\n visibility: hidden; }\n\n/*\n * Clearfix: contain floats\n *\n * For modern browsers\n * 1. The space content is one way to avoid an Opera bug when the\n * `contenteditable` attribute is included anywhere else in the document.\n * Otherwise it causes space to appear at the top and bottom of elements\n * that receive the `clearfix` class.\n * 2. The use of `table` rather than `block` is only necessary if using\n * `:before` to contain the top-margins of child elements.\n */\n.clearfix:before,\n.clearfix:after {\n content: \" \";\n /* 1 */\n display: table;\n /* 2 */ }\n\n.clearfix:after {\n clear: both; }\n\n/* ==========================================================================\n EXAMPLE Media Queries for Responsive Design.\n These examples override the primary ('mobile first') styles.\n Modify as content requires.\n ========================================================================== */\n/* ==========================================================================\n Print styles.\n Inlined to avoid the additional HTTP request:\n http://www.phpied.com/delay-loading-your-print-css/\n ========================================================================== */\n@media print {\n *,\n *:before,\n *:after,\n *:first-letter,\n *:first-line {\n background: transparent !important;\n color: #000 !important;\n /* Black prints faster: http://www.sanbeiji.com/archives/953 */\n box-shadow: none !important;\n text-shadow: none !important; }\n a,\n a:visited {\n text-decoration: underline; }\n a[href]:after {\n content: \" (\" attr(href) \")\"; }\n abbr[title]:after {\n content: \" (\" attr(title) \")\"; }\n /*\n * Don't show links that are fragment identifiers,\n * or use the `javascript:` pseudo protocol\n */\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\"; }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid; }\n /*\n * Printing Tables:\n * http://css-discuss.incutio.com/wiki/Printing_Tables\n */\n thead {\n display: table-header-group; }\n tr,\n img {\n page-break-inside: avoid; }\n img {\n max-width: 100% !important; }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3; }\n h2,\n h3 {\n page-break-after: avoid; } }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Remove the unwanted box around FAB buttons */\n/* More info: http://goo.gl/IPwKi */\na, .mdl-accordion, .mdl-button, .mdl-card, .mdl-checkbox, .mdl-dropdown-menu,\n.mdl-icon-toggle, .mdl-item, .mdl-radio, .mdl-slider, .mdl-switch, .mdl-tabs__tab {\n -webkit-tap-highlight-color: transparent;\n -webkit-tap-highlight-color: rgba(255, 255, 255, 0); }\n\n/*\n * Make html take up the entire screen\n * Then set touch-action to avoid touch delay on mobile IE\n */\nhtml {\n width: 100%;\n height: 100%;\n -ms-touch-action: manipulation;\n touch-action: manipulation; }\n\n/*\n* Make body take up the entire screen\n* Remove body margin so layout containers don't cause extra overflow.\n*/\nbody {\n width: 100%;\n min-height: 100%;\n margin: 0; }\n\n/*\n * Main display reset for IE support.\n * Source: http://weblog.west-wind.com/posts/2015/Jan/12/main-HTML5-Tag-not-working-in-Internet-Explorer-91011\n */\nmain {\n display: block; }\n\n/*\n* Apply no display to elements with the hidden attribute.\n* IE 9 and 10 support.\n*/\n*[hidden] {\n display: none !important; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\nhtml, body {\n font-family: \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px; }\n\nh1, h2, h3, h4, h5, h6, p {\n margin: 0;\n padding: 0; }\n\n/**\n * Styles for HTML elements\n */\nh1 small, h2 small, h3 small, h4 small, h5 small, h6 small {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 56px;\n font-weight: 400;\n line-height: 1.35;\n letter-spacing: -0.02em;\n opacity: 0.54;\n font-size: 0.6em; }\n\nh1 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 56px;\n font-weight: 400;\n line-height: 1.35;\n letter-spacing: -0.02em;\n margin-top: 24px;\n margin-bottom: 24px; }\n\nh2 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 45px;\n font-weight: 400;\n line-height: 48px;\n margin-top: 24px;\n margin-bottom: 24px; }\n\nh3 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 34px;\n font-weight: 400;\n line-height: 40px;\n margin-top: 24px;\n margin-bottom: 24px; }\n\nh4 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 24px;\n font-weight: 400;\n line-height: 32px;\n -moz-osx-font-smoothing: grayscale;\n margin-top: 24px;\n margin-bottom: 16px; }\n\nh5 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 20px;\n font-weight: 500;\n line-height: 1;\n letter-spacing: 0.02em;\n margin-top: 24px;\n margin-bottom: 16px; }\n\nh6 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0.04em;\n margin-top: 24px;\n margin-bottom: 16px; }\n\np {\n font-size: 14px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0;\n margin-bottom: 16px; }\n\na {\n color: rgb(255,64,129);\n font-weight: 500; }\n\nblockquote {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n position: relative;\n font-size: 24px;\n font-weight: 300;\n font-style: italic;\n line-height: 1.35;\n letter-spacing: 0.08em; }\n blockquote:before {\n position: absolute;\n left: -0.5em;\n content: '“'; }\n blockquote:after {\n content: '”';\n margin-left: -0.05em; }\n\nmark {\n background-color: #f4ff81; }\n\ndt {\n font-weight: 700; }\n\naddress {\n font-size: 12px;\n font-weight: 400;\n line-height: 1;\n letter-spacing: 0;\n font-style: normal; }\n\nul, ol {\n font-size: 14px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0; }\n\n/**\n * Class Name Styles\n */\n.mdl-typography--display-4 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 112px;\n font-weight: 300;\n line-height: 1;\n letter-spacing: -0.04em; }\n\n.mdl-typography--display-4-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 112px;\n font-weight: 300;\n line-height: 1;\n letter-spacing: -0.04em;\n opacity: 0.54; }\n\n.mdl-typography--display-3 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 56px;\n font-weight: 400;\n line-height: 1.35;\n letter-spacing: -0.02em; }\n\n.mdl-typography--display-3-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 56px;\n font-weight: 400;\n line-height: 1.35;\n letter-spacing: -0.02em;\n opacity: 0.54; }\n\n.mdl-typography--display-2 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 45px;\n font-weight: 400;\n line-height: 48px; }\n\n.mdl-typography--display-2-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 45px;\n font-weight: 400;\n line-height: 48px;\n opacity: 0.54; }\n\n.mdl-typography--display-1 {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 34px;\n font-weight: 400;\n line-height: 40px; }\n\n.mdl-typography--display-1-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 34px;\n font-weight: 400;\n line-height: 40px;\n opacity: 0.54; }\n\n.mdl-typography--headline {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 24px;\n font-weight: 400;\n line-height: 32px;\n -moz-osx-font-smoothing: grayscale; }\n\n.mdl-typography--headline-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 24px;\n font-weight: 400;\n line-height: 32px;\n -moz-osx-font-smoothing: grayscale;\n opacity: 0.87; }\n\n.mdl-typography--title {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 20px;\n font-weight: 500;\n line-height: 1;\n letter-spacing: 0.02em; }\n\n.mdl-typography--title-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 20px;\n font-weight: 500;\n line-height: 1;\n letter-spacing: 0.02em;\n opacity: 0.87; }\n\n.mdl-typography--subhead {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0.04em; }\n\n.mdl-typography--subhead-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 16px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0.04em;\n opacity: 0.87; }\n\n.mdl-typography--body-2 {\n font-size: 14px;\n font-weight: bold;\n line-height: 24px;\n letter-spacing: 0; }\n\n.mdl-typography--body-2-color-contrast {\n font-size: 14px;\n font-weight: bold;\n line-height: 24px;\n letter-spacing: 0;\n opacity: 0.87; }\n\n.mdl-typography--body-1 {\n font-size: 14px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0; }\n\n.mdl-typography--body-1-color-contrast {\n font-size: 14px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0;\n opacity: 0.87; }\n\n.mdl-typography--body-2-force-preferred-font {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n line-height: 24px;\n letter-spacing: 0; }\n\n.mdl-typography--body-2-force-preferred-font-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n line-height: 24px;\n letter-spacing: 0;\n opacity: 0.87; }\n\n.mdl-typography--body-1-force-preferred-font {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0; }\n\n.mdl-typography--body-1-force-preferred-font-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0;\n opacity: 0.87; }\n\n.mdl-typography--caption {\n font-size: 12px;\n font-weight: 400;\n line-height: 1;\n letter-spacing: 0; }\n\n.mdl-typography--caption-force-preferred-font {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 12px;\n font-weight: 400;\n line-height: 1;\n letter-spacing: 0; }\n\n.mdl-typography--caption-color-contrast {\n font-size: 12px;\n font-weight: 400;\n line-height: 1;\n letter-spacing: 0;\n opacity: 0.54; }\n\n.mdl-typography--caption-force-preferred-font-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 12px;\n font-weight: 400;\n line-height: 1;\n letter-spacing: 0;\n opacity: 0.54; }\n\n.mdl-typography--menu {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n line-height: 1;\n letter-spacing: 0; }\n\n.mdl-typography--menu-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n line-height: 1;\n letter-spacing: 0;\n opacity: 0.87; }\n\n.mdl-typography--button {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n text-transform: uppercase;\n line-height: 1;\n letter-spacing: 0; }\n\n.mdl-typography--button-color-contrast {\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n text-transform: uppercase;\n line-height: 1;\n letter-spacing: 0;\n opacity: 0.87; }\n\n.mdl-typography--text-left {\n text-align: left; }\n\n.mdl-typography--text-right {\n text-align: right; }\n\n.mdl-typography--text-center {\n text-align: center; }\n\n.mdl-typography--text-justify {\n text-align: justify; }\n\n.mdl-typography--text-nowrap {\n white-space: nowrap; }\n\n.mdl-typography--text-lowercase {\n text-transform: lowercase; }\n\n.mdl-typography--text-uppercase {\n text-transform: uppercase; }\n\n.mdl-typography--text-capitalize {\n text-transform: capitalize; }\n\n.mdl-typography--font-thin {\n font-weight: 200 !important; }\n\n.mdl-typography--font-light {\n font-weight: 300 !important; }\n\n.mdl-typography--font-regular {\n font-weight: 400 !important; }\n\n.mdl-typography--font-medium {\n font-weight: 500 !important; }\n\n.mdl-typography--font-bold {\n font-weight: 700 !important; }\n\n.mdl-typography--font-black {\n font-weight: 900 !important; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-color-text--red {\n color: rgb(244,67,54) !important; }\n\n.mdl-color--red {\n background-color: rgb(244,67,54) !important; }\n\n.mdl-color-text--red-50 {\n color: rgb(255,235,238) !important; }\n\n.mdl-color--red-50 {\n background-color: rgb(255,235,238) !important; }\n\n.mdl-color-text--red-100 {\n color: rgb(255,205,210) !important; }\n\n.mdl-color--red-100 {\n background-color: rgb(255,205,210) !important; }\n\n.mdl-color-text--red-200 {\n color: rgb(239,154,154) !important; }\n\n.mdl-color--red-200 {\n background-color: rgb(239,154,154) !important; }\n\n.mdl-color-text--red-300 {\n color: rgb(229,115,115) !important; }\n\n.mdl-color--red-300 {\n background-color: rgb(229,115,115) !important; }\n\n.mdl-color-text--red-400 {\n color: rgb(239,83,80) !important; }\n\n.mdl-color--red-400 {\n background-color: rgb(239,83,80) !important; }\n\n.mdl-color-text--red-500 {\n color: rgb(244,67,54) !important; }\n\n.mdl-color--red-500 {\n background-color: rgb(244,67,54) !important; }\n\n.mdl-color-text--red-600 {\n color: rgb(229,57,53) !important; }\n\n.mdl-color--red-600 {\n background-color: rgb(229,57,53) !important; }\n\n.mdl-color-text--red-700 {\n color: rgb(211,47,47) !important; }\n\n.mdl-color--red-700 {\n background-color: rgb(211,47,47) !important; }\n\n.mdl-color-text--red-800 {\n color: rgb(198,40,40) !important; }\n\n.mdl-color--red-800 {\n background-color: rgb(198,40,40) !important; }\n\n.mdl-color-text--red-900 {\n color: rgb(183,28,28) !important; }\n\n.mdl-color--red-900 {\n background-color: rgb(183,28,28) !important; }\n\n.mdl-color-text--red-A100 {\n color: rgb(255,138,128) !important; }\n\n.mdl-color--red-A100 {\n background-color: rgb(255,138,128) !important; }\n\n.mdl-color-text--red-A200 {\n color: rgb(255,82,82) !important; }\n\n.mdl-color--red-A200 {\n background-color: rgb(255,82,82) !important; }\n\n.mdl-color-text--red-A400 {\n color: rgb(255,23,68) !important; }\n\n.mdl-color--red-A400 {\n background-color: rgb(255,23,68) !important; }\n\n.mdl-color-text--red-A700 {\n color: rgb(213,0,0) !important; }\n\n.mdl-color--red-A700 {\n background-color: rgb(213,0,0) !important; }\n\n.mdl-color-text--pink {\n color: rgb(233,30,99) !important; }\n\n.mdl-color--pink {\n background-color: rgb(233,30,99) !important; }\n\n.mdl-color-text--pink-50 {\n color: rgb(252,228,236) !important; }\n\n.mdl-color--pink-50 {\n background-color: rgb(252,228,236) !important; }\n\n.mdl-color-text--pink-100 {\n color: rgb(248,187,208) !important; }\n\n.mdl-color--pink-100 {\n background-color: rgb(248,187,208) !important; }\n\n.mdl-color-text--pink-200 {\n color: rgb(244,143,177) !important; }\n\n.mdl-color--pink-200 {\n background-color: rgb(244,143,177) !important; }\n\n.mdl-color-text--pink-300 {\n color: rgb(240,98,146) !important; }\n\n.mdl-color--pink-300 {\n background-color: rgb(240,98,146) !important; }\n\n.mdl-color-text--pink-400 {\n color: rgb(236,64,122) !important; }\n\n.mdl-color--pink-400 {\n background-color: rgb(236,64,122) !important; }\n\n.mdl-color-text--pink-500 {\n color: rgb(233,30,99) !important; }\n\n.mdl-color--pink-500 {\n background-color: rgb(233,30,99) !important; }\n\n.mdl-color-text--pink-600 {\n color: rgb(216,27,96) !important; }\n\n.mdl-color--pink-600 {\n background-color: rgb(216,27,96) !important; }\n\n.mdl-color-text--pink-700 {\n color: rgb(194,24,91) !important; }\n\n.mdl-color--pink-700 {\n background-color: rgb(194,24,91) !important; }\n\n.mdl-color-text--pink-800 {\n color: rgb(173,20,87) !important; }\n\n.mdl-color--pink-800 {\n background-color: rgb(173,20,87) !important; }\n\n.mdl-color-text--pink-900 {\n color: rgb(136,14,79) !important; }\n\n.mdl-color--pink-900 {\n background-color: rgb(136,14,79) !important; }\n\n.mdl-color-text--pink-A100 {\n color: rgb(255,128,171) !important; }\n\n.mdl-color--pink-A100 {\n background-color: rgb(255,128,171) !important; }\n\n.mdl-color-text--pink-A200 {\n color: rgb(255,64,129) !important; }\n\n.mdl-color--pink-A200 {\n background-color: rgb(255,64,129) !important; }\n\n.mdl-color-text--pink-A400 {\n color: rgb(245,0,87) !important; }\n\n.mdl-color--pink-A400 {\n background-color: rgb(245,0,87) !important; }\n\n.mdl-color-text--pink-A700 {\n color: rgb(197,17,98) !important; }\n\n.mdl-color--pink-A700 {\n background-color: rgb(197,17,98) !important; }\n\n.mdl-color-text--purple {\n color: rgb(156,39,176) !important; }\n\n.mdl-color--purple {\n background-color: rgb(156,39,176) !important; }\n\n.mdl-color-text--purple-50 {\n color: rgb(243,229,245) !important; }\n\n.mdl-color--purple-50 {\n background-color: rgb(243,229,245) !important; }\n\n.mdl-color-text--purple-100 {\n color: rgb(225,190,231) !important; }\n\n.mdl-color--purple-100 {\n background-color: rgb(225,190,231) !important; }\n\n.mdl-color-text--purple-200 {\n color: rgb(206,147,216) !important; }\n\n.mdl-color--purple-200 {\n background-color: rgb(206,147,216) !important; }\n\n.mdl-color-text--purple-300 {\n color: rgb(186,104,200) !important; }\n\n.mdl-color--purple-300 {\n background-color: rgb(186,104,200) !important; }\n\n.mdl-color-text--purple-400 {\n color: rgb(171,71,188) !important; }\n\n.mdl-color--purple-400 {\n background-color: rgb(171,71,188) !important; }\n\n.mdl-color-text--purple-500 {\n color: rgb(156,39,176) !important; }\n\n.mdl-color--purple-500 {\n background-color: rgb(156,39,176) !important; }\n\n.mdl-color-text--purple-600 {\n color: rgb(142,36,170) !important; }\n\n.mdl-color--purple-600 {\n background-color: rgb(142,36,170) !important; }\n\n.mdl-color-text--purple-700 {\n color: rgb(123,31,162) !important; }\n\n.mdl-color--purple-700 {\n background-color: rgb(123,31,162) !important; }\n\n.mdl-color-text--purple-800 {\n color: rgb(106,27,154) !important; }\n\n.mdl-color--purple-800 {\n background-color: rgb(106,27,154) !important; }\n\n.mdl-color-text--purple-900 {\n color: rgb(74,20,140) !important; }\n\n.mdl-color--purple-900 {\n background-color: rgb(74,20,140) !important; }\n\n.mdl-color-text--purple-A100 {\n color: rgb(234,128,252) !important; }\n\n.mdl-color--purple-A100 {\n background-color: rgb(234,128,252) !important; }\n\n.mdl-color-text--purple-A200 {\n color: rgb(224,64,251) !important; }\n\n.mdl-color--purple-A200 {\n background-color: rgb(224,64,251) !important; }\n\n.mdl-color-text--purple-A400 {\n color: rgb(213,0,249) !important; }\n\n.mdl-color--purple-A400 {\n background-color: rgb(213,0,249) !important; }\n\n.mdl-color-text--purple-A700 {\n color: rgb(170,0,255) !important; }\n\n.mdl-color--purple-A700 {\n background-color: rgb(170,0,255) !important; }\n\n.mdl-color-text--deep-purple {\n color: rgb(103,58,183) !important; }\n\n.mdl-color--deep-purple {\n background-color: rgb(103,58,183) !important; }\n\n.mdl-color-text--deep-purple-50 {\n color: rgb(237,231,246) !important; }\n\n.mdl-color--deep-purple-50 {\n background-color: rgb(237,231,246) !important; }\n\n.mdl-color-text--deep-purple-100 {\n color: rgb(209,196,233) !important; }\n\n.mdl-color--deep-purple-100 {\n background-color: rgb(209,196,233) !important; }\n\n.mdl-color-text--deep-purple-200 {\n color: rgb(179,157,219) !important; }\n\n.mdl-color--deep-purple-200 {\n background-color: rgb(179,157,219) !important; }\n\n.mdl-color-text--deep-purple-300 {\n color: rgb(149,117,205) !important; }\n\n.mdl-color--deep-purple-300 {\n background-color: rgb(149,117,205) !important; }\n\n.mdl-color-text--deep-purple-400 {\n color: rgb(126,87,194) !important; }\n\n.mdl-color--deep-purple-400 {\n background-color: rgb(126,87,194) !important; }\n\n.mdl-color-text--deep-purple-500 {\n color: rgb(103,58,183) !important; }\n\n.mdl-color--deep-purple-500 {\n background-color: rgb(103,58,183) !important; }\n\n.mdl-color-text--deep-purple-600 {\n color: rgb(94,53,177) !important; }\n\n.mdl-color--deep-purple-600 {\n background-color: rgb(94,53,177) !important; }\n\n.mdl-color-text--deep-purple-700 {\n color: rgb(81,45,168) !important; }\n\n.mdl-color--deep-purple-700 {\n background-color: rgb(81,45,168) !important; }\n\n.mdl-color-text--deep-purple-800 {\n color: rgb(69,39,160) !important; }\n\n.mdl-color--deep-purple-800 {\n background-color: rgb(69,39,160) !important; }\n\n.mdl-color-text--deep-purple-900 {\n color: rgb(49,27,146) !important; }\n\n.mdl-color--deep-purple-900 {\n background-color: rgb(49,27,146) !important; }\n\n.mdl-color-text--deep-purple-A100 {\n color: rgb(179,136,255) !important; }\n\n.mdl-color--deep-purple-A100 {\n background-color: rgb(179,136,255) !important; }\n\n.mdl-color-text--deep-purple-A200 {\n color: rgb(124,77,255) !important; }\n\n.mdl-color--deep-purple-A200 {\n background-color: rgb(124,77,255) !important; }\n\n.mdl-color-text--deep-purple-A400 {\n color: rgb(101,31,255) !important; }\n\n.mdl-color--deep-purple-A400 {\n background-color: rgb(101,31,255) !important; }\n\n.mdl-color-text--deep-purple-A700 {\n color: rgb(98,0,234) !important; }\n\n.mdl-color--deep-purple-A700 {\n background-color: rgb(98,0,234) !important; }\n\n.mdl-color-text--indigo {\n color: rgb(63,81,181) !important; }\n\n.mdl-color--indigo {\n background-color: rgb(63,81,181) !important; }\n\n.mdl-color-text--indigo-50 {\n color: rgb(232,234,246) !important; }\n\n.mdl-color--indigo-50 {\n background-color: rgb(232,234,246) !important; }\n\n.mdl-color-text--indigo-100 {\n color: rgb(197,202,233) !important; }\n\n.mdl-color--indigo-100 {\n background-color: rgb(197,202,233) !important; }\n\n.mdl-color-text--indigo-200 {\n color: rgb(159,168,218) !important; }\n\n.mdl-color--indigo-200 {\n background-color: rgb(159,168,218) !important; }\n\n.mdl-color-text--indigo-300 {\n color: rgb(121,134,203) !important; }\n\n.mdl-color--indigo-300 {\n background-color: rgb(121,134,203) !important; }\n\n.mdl-color-text--indigo-400 {\n color: rgb(92,107,192) !important; }\n\n.mdl-color--indigo-400 {\n background-color: rgb(92,107,192) !important; }\n\n.mdl-color-text--indigo-500 {\n color: rgb(63,81,181) !important; }\n\n.mdl-color--indigo-500 {\n background-color: rgb(63,81,181) !important; }\n\n.mdl-color-text--indigo-600 {\n color: rgb(57,73,171) !important; }\n\n.mdl-color--indigo-600 {\n background-color: rgb(57,73,171) !important; }\n\n.mdl-color-text--indigo-700 {\n color: rgb(48,63,159) !important; }\n\n.mdl-color--indigo-700 {\n background-color: rgb(48,63,159) !important; }\n\n.mdl-color-text--indigo-800 {\n color: rgb(40,53,147) !important; }\n\n.mdl-color--indigo-800 {\n background-color: rgb(40,53,147) !important; }\n\n.mdl-color-text--indigo-900 {\n color: rgb(26,35,126) !important; }\n\n.mdl-color--indigo-900 {\n background-color: rgb(26,35,126) !important; }\n\n.mdl-color-text--indigo-A100 {\n color: rgb(140,158,255) !important; }\n\n.mdl-color--indigo-A100 {\n background-color: rgb(140,158,255) !important; }\n\n.mdl-color-text--indigo-A200 {\n color: rgb(83,109,254) !important; }\n\n.mdl-color--indigo-A200 {\n background-color: rgb(83,109,254) !important; }\n\n.mdl-color-text--indigo-A400 {\n color: rgb(61,90,254) !important; }\n\n.mdl-color--indigo-A400 {\n background-color: rgb(61,90,254) !important; }\n\n.mdl-color-text--indigo-A700 {\n color: rgb(48,79,254) !important; }\n\n.mdl-color--indigo-A700 {\n background-color: rgb(48,79,254) !important; }\n\n.mdl-color-text--blue {\n color: rgb(33,150,243) !important; }\n\n.mdl-color--blue {\n background-color: rgb(33,150,243) !important; }\n\n.mdl-color-text--blue-50 {\n color: rgb(227,242,253) !important; }\n\n.mdl-color--blue-50 {\n background-color: rgb(227,242,253) !important; }\n\n.mdl-color-text--blue-100 {\n color: rgb(187,222,251) !important; }\n\n.mdl-color--blue-100 {\n background-color: rgb(187,222,251) !important; }\n\n.mdl-color-text--blue-200 {\n color: rgb(144,202,249) !important; }\n\n.mdl-color--blue-200 {\n background-color: rgb(144,202,249) !important; }\n\n.mdl-color-text--blue-300 {\n color: rgb(100,181,246) !important; }\n\n.mdl-color--blue-300 {\n background-color: rgb(100,181,246) !important; }\n\n.mdl-color-text--blue-400 {\n color: rgb(66,165,245) !important; }\n\n.mdl-color--blue-400 {\n background-color: rgb(66,165,245) !important; }\n\n.mdl-color-text--blue-500 {\n color: rgb(33,150,243) !important; }\n\n.mdl-color--blue-500 {\n background-color: rgb(33,150,243) !important; }\n\n.mdl-color-text--blue-600 {\n color: rgb(30,136,229) !important; }\n\n.mdl-color--blue-600 {\n background-color: rgb(30,136,229) !important; }\n\n.mdl-color-text--blue-700 {\n color: rgb(25,118,210) !important; }\n\n.mdl-color--blue-700 {\n background-color: rgb(25,118,210) !important; }\n\n.mdl-color-text--blue-800 {\n color: rgb(21,101,192) !important; }\n\n.mdl-color--blue-800 {\n background-color: rgb(21,101,192) !important; }\n\n.mdl-color-text--blue-900 {\n color: rgb(13,71,161) !important; }\n\n.mdl-color--blue-900 {\n background-color: rgb(13,71,161) !important; }\n\n.mdl-color-text--blue-A100 {\n color: rgb(130,177,255) !important; }\n\n.mdl-color--blue-A100 {\n background-color: rgb(130,177,255) !important; }\n\n.mdl-color-text--blue-A200 {\n color: rgb(68,138,255) !important; }\n\n.mdl-color--blue-A200 {\n background-color: rgb(68,138,255) !important; }\n\n.mdl-color-text--blue-A400 {\n color: rgb(41,121,255) !important; }\n\n.mdl-color--blue-A400 {\n background-color: rgb(41,121,255) !important; }\n\n.mdl-color-text--blue-A700 {\n color: rgb(41,98,255) !important; }\n\n.mdl-color--blue-A700 {\n background-color: rgb(41,98,255) !important; }\n\n.mdl-color-text--light-blue {\n color: rgb(3,169,244) !important; }\n\n.mdl-color--light-blue {\n background-color: rgb(3,169,244) !important; }\n\n.mdl-color-text--light-blue-50 {\n color: rgb(225,245,254) !important; }\n\n.mdl-color--light-blue-50 {\n background-color: rgb(225,245,254) !important; }\n\n.mdl-color-text--light-blue-100 {\n color: rgb(179,229,252) !important; }\n\n.mdl-color--light-blue-100 {\n background-color: rgb(179,229,252) !important; }\n\n.mdl-color-text--light-blue-200 {\n color: rgb(129,212,250) !important; }\n\n.mdl-color--light-blue-200 {\n background-color: rgb(129,212,250) !important; }\n\n.mdl-color-text--light-blue-300 {\n color: rgb(79,195,247) !important; }\n\n.mdl-color--light-blue-300 {\n background-color: rgb(79,195,247) !important; }\n\n.mdl-color-text--light-blue-400 {\n color: rgb(41,182,246) !important; }\n\n.mdl-color--light-blue-400 {\n background-color: rgb(41,182,246) !important; }\n\n.mdl-color-text--light-blue-500 {\n color: rgb(3,169,244) !important; }\n\n.mdl-color--light-blue-500 {\n background-color: rgb(3,169,244) !important; }\n\n.mdl-color-text--light-blue-600 {\n color: rgb(3,155,229) !important; }\n\n.mdl-color--light-blue-600 {\n background-color: rgb(3,155,229) !important; }\n\n.mdl-color-text--light-blue-700 {\n color: rgb(2,136,209) !important; }\n\n.mdl-color--light-blue-700 {\n background-color: rgb(2,136,209) !important; }\n\n.mdl-color-text--light-blue-800 {\n color: rgb(2,119,189) !important; }\n\n.mdl-color--light-blue-800 {\n background-color: rgb(2,119,189) !important; }\n\n.mdl-color-text--light-blue-900 {\n color: rgb(1,87,155) !important; }\n\n.mdl-color--light-blue-900 {\n background-color: rgb(1,87,155) !important; }\n\n.mdl-color-text--light-blue-A100 {\n color: rgb(128,216,255) !important; }\n\n.mdl-color--light-blue-A100 {\n background-color: rgb(128,216,255) !important; }\n\n.mdl-color-text--light-blue-A200 {\n color: rgb(64,196,255) !important; }\n\n.mdl-color--light-blue-A200 {\n background-color: rgb(64,196,255) !important; }\n\n.mdl-color-text--light-blue-A400 {\n color: rgb(0,176,255) !important; }\n\n.mdl-color--light-blue-A400 {\n background-color: rgb(0,176,255) !important; }\n\n.mdl-color-text--light-blue-A700 {\n color: rgb(0,145,234) !important; }\n\n.mdl-color--light-blue-A700 {\n background-color: rgb(0,145,234) !important; }\n\n.mdl-color-text--cyan {\n color: rgb(0,188,212) !important; }\n\n.mdl-color--cyan {\n background-color: rgb(0,188,212) !important; }\n\n.mdl-color-text--cyan-50 {\n color: rgb(224,247,250) !important; }\n\n.mdl-color--cyan-50 {\n background-color: rgb(224,247,250) !important; }\n\n.mdl-color-text--cyan-100 {\n color: rgb(178,235,242) !important; }\n\n.mdl-color--cyan-100 {\n background-color: rgb(178,235,242) !important; }\n\n.mdl-color-text--cyan-200 {\n color: rgb(128,222,234) !important; }\n\n.mdl-color--cyan-200 {\n background-color: rgb(128,222,234) !important; }\n\n.mdl-color-text--cyan-300 {\n color: rgb(77,208,225) !important; }\n\n.mdl-color--cyan-300 {\n background-color: rgb(77,208,225) !important; }\n\n.mdl-color-text--cyan-400 {\n color: rgb(38,198,218) !important; }\n\n.mdl-color--cyan-400 {\n background-color: rgb(38,198,218) !important; }\n\n.mdl-color-text--cyan-500 {\n color: rgb(0,188,212) !important; }\n\n.mdl-color--cyan-500 {\n background-color: rgb(0,188,212) !important; }\n\n.mdl-color-text--cyan-600 {\n color: rgb(0,172,193) !important; }\n\n.mdl-color--cyan-600 {\n background-color: rgb(0,172,193) !important; }\n\n.mdl-color-text--cyan-700 {\n color: rgb(0,151,167) !important; }\n\n.mdl-color--cyan-700 {\n background-color: rgb(0,151,167) !important; }\n\n.mdl-color-text--cyan-800 {\n color: rgb(0,131,143) !important; }\n\n.mdl-color--cyan-800 {\n background-color: rgb(0,131,143) !important; }\n\n.mdl-color-text--cyan-900 {\n color: rgb(0,96,100) !important; }\n\n.mdl-color--cyan-900 {\n background-color: rgb(0,96,100) !important; }\n\n.mdl-color-text--cyan-A100 {\n color: rgb(132,255,255) !important; }\n\n.mdl-color--cyan-A100 {\n background-color: rgb(132,255,255) !important; }\n\n.mdl-color-text--cyan-A200 {\n color: rgb(24,255,255) !important; }\n\n.mdl-color--cyan-A200 {\n background-color: rgb(24,255,255) !important; }\n\n.mdl-color-text--cyan-A400 {\n color: rgb(0,229,255) !important; }\n\n.mdl-color--cyan-A400 {\n background-color: rgb(0,229,255) !important; }\n\n.mdl-color-text--cyan-A700 {\n color: rgb(0,184,212) !important; }\n\n.mdl-color--cyan-A700 {\n background-color: rgb(0,184,212) !important; }\n\n.mdl-color-text--teal {\n color: rgb(0,150,136) !important; }\n\n.mdl-color--teal {\n background-color: rgb(0,150,136) !important; }\n\n.mdl-color-text--teal-50 {\n color: rgb(224,242,241) !important; }\n\n.mdl-color--teal-50 {\n background-color: rgb(224,242,241) !important; }\n\n.mdl-color-text--teal-100 {\n color: rgb(178,223,219) !important; }\n\n.mdl-color--teal-100 {\n background-color: rgb(178,223,219) !important; }\n\n.mdl-color-text--teal-200 {\n color: rgb(128,203,196) !important; }\n\n.mdl-color--teal-200 {\n background-color: rgb(128,203,196) !important; }\n\n.mdl-color-text--teal-300 {\n color: rgb(77,182,172) !important; }\n\n.mdl-color--teal-300 {\n background-color: rgb(77,182,172) !important; }\n\n.mdl-color-text--teal-400 {\n color: rgb(38,166,154) !important; }\n\n.mdl-color--teal-400 {\n background-color: rgb(38,166,154) !important; }\n\n.mdl-color-text--teal-500 {\n color: rgb(0,150,136) !important; }\n\n.mdl-color--teal-500 {\n background-color: rgb(0,150,136) !important; }\n\n.mdl-color-text--teal-600 {\n color: rgb(0,137,123) !important; }\n\n.mdl-color--teal-600 {\n background-color: rgb(0,137,123) !important; }\n\n.mdl-color-text--teal-700 {\n color: rgb(0,121,107) !important; }\n\n.mdl-color--teal-700 {\n background-color: rgb(0,121,107) !important; }\n\n.mdl-color-text--teal-800 {\n color: rgb(0,105,92) !important; }\n\n.mdl-color--teal-800 {\n background-color: rgb(0,105,92) !important; }\n\n.mdl-color-text--teal-900 {\n color: rgb(0,77,64) !important; }\n\n.mdl-color--teal-900 {\n background-color: rgb(0,77,64) !important; }\n\n.mdl-color-text--teal-A100 {\n color: rgb(167,255,235) !important; }\n\n.mdl-color--teal-A100 {\n background-color: rgb(167,255,235) !important; }\n\n.mdl-color-text--teal-A200 {\n color: rgb(100,255,218) !important; }\n\n.mdl-color--teal-A200 {\n background-color: rgb(100,255,218) !important; }\n\n.mdl-color-text--teal-A400 {\n color: rgb(29,233,182) !important; }\n\n.mdl-color--teal-A400 {\n background-color: rgb(29,233,182) !important; }\n\n.mdl-color-text--teal-A700 {\n color: rgb(0,191,165) !important; }\n\n.mdl-color--teal-A700 {\n background-color: rgb(0,191,165) !important; }\n\n.mdl-color-text--green {\n color: rgb(76,175,80) !important; }\n\n.mdl-color--green {\n background-color: rgb(76,175,80) !important; }\n\n.mdl-color-text--green-50 {\n color: rgb(232,245,233) !important; }\n\n.mdl-color--green-50 {\n background-color: rgb(232,245,233) !important; }\n\n.mdl-color-text--green-100 {\n color: rgb(200,230,201) !important; }\n\n.mdl-color--green-100 {\n background-color: rgb(200,230,201) !important; }\n\n.mdl-color-text--green-200 {\n color: rgb(165,214,167) !important; }\n\n.mdl-color--green-200 {\n background-color: rgb(165,214,167) !important; }\n\n.mdl-color-text--green-300 {\n color: rgb(129,199,132) !important; }\n\n.mdl-color--green-300 {\n background-color: rgb(129,199,132) !important; }\n\n.mdl-color-text--green-400 {\n color: rgb(102,187,106) !important; }\n\n.mdl-color--green-400 {\n background-color: rgb(102,187,106) !important; }\n\n.mdl-color-text--green-500 {\n color: rgb(76,175,80) !important; }\n\n.mdl-color--green-500 {\n background-color: rgb(76,175,80) !important; }\n\n.mdl-color-text--green-600 {\n color: rgb(67,160,71) !important; }\n\n.mdl-color--green-600 {\n background-color: rgb(67,160,71) !important; }\n\n.mdl-color-text--green-700 {\n color: rgb(56,142,60) !important; }\n\n.mdl-color--green-700 {\n background-color: rgb(56,142,60) !important; }\n\n.mdl-color-text--green-800 {\n color: rgb(46,125,50) !important; }\n\n.mdl-color--green-800 {\n background-color: rgb(46,125,50) !important; }\n\n.mdl-color-text--green-900 {\n color: rgb(27,94,32) !important; }\n\n.mdl-color--green-900 {\n background-color: rgb(27,94,32) !important; }\n\n.mdl-color-text--green-A100 {\n color: rgb(185,246,202) !important; }\n\n.mdl-color--green-A100 {\n background-color: rgb(185,246,202) !important; }\n\n.mdl-color-text--green-A200 {\n color: rgb(105,240,174) !important; }\n\n.mdl-color--green-A200 {\n background-color: rgb(105,240,174) !important; }\n\n.mdl-color-text--green-A400 {\n color: rgb(0,230,118) !important; }\n\n.mdl-color--green-A400 {\n background-color: rgb(0,230,118) !important; }\n\n.mdl-color-text--green-A700 {\n color: rgb(0,200,83) !important; }\n\n.mdl-color--green-A700 {\n background-color: rgb(0,200,83) !important; }\n\n.mdl-color-text--light-green {\n color: rgb(139,195,74) !important; }\n\n.mdl-color--light-green {\n background-color: rgb(139,195,74) !important; }\n\n.mdl-color-text--light-green-50 {\n color: rgb(241,248,233) !important; }\n\n.mdl-color--light-green-50 {\n background-color: rgb(241,248,233) !important; }\n\n.mdl-color-text--light-green-100 {\n color: rgb(220,237,200) !important; }\n\n.mdl-color--light-green-100 {\n background-color: rgb(220,237,200) !important; }\n\n.mdl-color-text--light-green-200 {\n color: rgb(197,225,165) !important; }\n\n.mdl-color--light-green-200 {\n background-color: rgb(197,225,165) !important; }\n\n.mdl-color-text--light-green-300 {\n color: rgb(174,213,129) !important; }\n\n.mdl-color--light-green-300 {\n background-color: rgb(174,213,129) !important; }\n\n.mdl-color-text--light-green-400 {\n color: rgb(156,204,101) !important; }\n\n.mdl-color--light-green-400 {\n background-color: rgb(156,204,101) !important; }\n\n.mdl-color-text--light-green-500 {\n color: rgb(139,195,74) !important; }\n\n.mdl-color--light-green-500 {\n background-color: rgb(139,195,74) !important; }\n\n.mdl-color-text--light-green-600 {\n color: rgb(124,179,66) !important; }\n\n.mdl-color--light-green-600 {\n background-color: rgb(124,179,66) !important; }\n\n.mdl-color-text--light-green-700 {\n color: rgb(104,159,56) !important; }\n\n.mdl-color--light-green-700 {\n background-color: rgb(104,159,56) !important; }\n\n.mdl-color-text--light-green-800 {\n color: rgb(85,139,47) !important; }\n\n.mdl-color--light-green-800 {\n background-color: rgb(85,139,47) !important; }\n\n.mdl-color-text--light-green-900 {\n color: rgb(51,105,30) !important; }\n\n.mdl-color--light-green-900 {\n background-color: rgb(51,105,30) !important; }\n\n.mdl-color-text--light-green-A100 {\n color: rgb(204,255,144) !important; }\n\n.mdl-color--light-green-A100 {\n background-color: rgb(204,255,144) !important; }\n\n.mdl-color-text--light-green-A200 {\n color: rgb(178,255,89) !important; }\n\n.mdl-color--light-green-A200 {\n background-color: rgb(178,255,89) !important; }\n\n.mdl-color-text--light-green-A400 {\n color: rgb(118,255,3) !important; }\n\n.mdl-color--light-green-A400 {\n background-color: rgb(118,255,3) !important; }\n\n.mdl-color-text--light-green-A700 {\n color: rgb(100,221,23) !important; }\n\n.mdl-color--light-green-A700 {\n background-color: rgb(100,221,23) !important; }\n\n.mdl-color-text--lime {\n color: rgb(205,220,57) !important; }\n\n.mdl-color--lime {\n background-color: rgb(205,220,57) !important; }\n\n.mdl-color-text--lime-50 {\n color: rgb(249,251,231) !important; }\n\n.mdl-color--lime-50 {\n background-color: rgb(249,251,231) !important; }\n\n.mdl-color-text--lime-100 {\n color: rgb(240,244,195) !important; }\n\n.mdl-color--lime-100 {\n background-color: rgb(240,244,195) !important; }\n\n.mdl-color-text--lime-200 {\n color: rgb(230,238,156) !important; }\n\n.mdl-color--lime-200 {\n background-color: rgb(230,238,156) !important; }\n\n.mdl-color-text--lime-300 {\n color: rgb(220,231,117) !important; }\n\n.mdl-color--lime-300 {\n background-color: rgb(220,231,117) !important; }\n\n.mdl-color-text--lime-400 {\n color: rgb(212,225,87) !important; }\n\n.mdl-color--lime-400 {\n background-color: rgb(212,225,87) !important; }\n\n.mdl-color-text--lime-500 {\n color: rgb(205,220,57) !important; }\n\n.mdl-color--lime-500 {\n background-color: rgb(205,220,57) !important; }\n\n.mdl-color-text--lime-600 {\n color: rgb(192,202,51) !important; }\n\n.mdl-color--lime-600 {\n background-color: rgb(192,202,51) !important; }\n\n.mdl-color-text--lime-700 {\n color: rgb(175,180,43) !important; }\n\n.mdl-color--lime-700 {\n background-color: rgb(175,180,43) !important; }\n\n.mdl-color-text--lime-800 {\n color: rgb(158,157,36) !important; }\n\n.mdl-color--lime-800 {\n background-color: rgb(158,157,36) !important; }\n\n.mdl-color-text--lime-900 {\n color: rgb(130,119,23) !important; }\n\n.mdl-color--lime-900 {\n background-color: rgb(130,119,23) !important; }\n\n.mdl-color-text--lime-A100 {\n color: rgb(244,255,129) !important; }\n\n.mdl-color--lime-A100 {\n background-color: rgb(244,255,129) !important; }\n\n.mdl-color-text--lime-A200 {\n color: rgb(238,255,65) !important; }\n\n.mdl-color--lime-A200 {\n background-color: rgb(238,255,65) !important; }\n\n.mdl-color-text--lime-A400 {\n color: rgb(198,255,0) !important; }\n\n.mdl-color--lime-A400 {\n background-color: rgb(198,255,0) !important; }\n\n.mdl-color-text--lime-A700 {\n color: rgb(174,234,0) !important; }\n\n.mdl-color--lime-A700 {\n background-color: rgb(174,234,0) !important; }\n\n.mdl-color-text--yellow {\n color: rgb(255,235,59) !important; }\n\n.mdl-color--yellow {\n background-color: rgb(255,235,59) !important; }\n\n.mdl-color-text--yellow-50 {\n color: rgb(255,253,231) !important; }\n\n.mdl-color--yellow-50 {\n background-color: rgb(255,253,231) !important; }\n\n.mdl-color-text--yellow-100 {\n color: rgb(255,249,196) !important; }\n\n.mdl-color--yellow-100 {\n background-color: rgb(255,249,196) !important; }\n\n.mdl-color-text--yellow-200 {\n color: rgb(255,245,157) !important; }\n\n.mdl-color--yellow-200 {\n background-color: rgb(255,245,157) !important; }\n\n.mdl-color-text--yellow-300 {\n color: rgb(255,241,118) !important; }\n\n.mdl-color--yellow-300 {\n background-color: rgb(255,241,118) !important; }\n\n.mdl-color-text--yellow-400 {\n color: rgb(255,238,88) !important; }\n\n.mdl-color--yellow-400 {\n background-color: rgb(255,238,88) !important; }\n\n.mdl-color-text--yellow-500 {\n color: rgb(255,235,59) !important; }\n\n.mdl-color--yellow-500 {\n background-color: rgb(255,235,59) !important; }\n\n.mdl-color-text--yellow-600 {\n color: rgb(253,216,53) !important; }\n\n.mdl-color--yellow-600 {\n background-color: rgb(253,216,53) !important; }\n\n.mdl-color-text--yellow-700 {\n color: rgb(251,192,45) !important; }\n\n.mdl-color--yellow-700 {\n background-color: rgb(251,192,45) !important; }\n\n.mdl-color-text--yellow-800 {\n color: rgb(249,168,37) !important; }\n\n.mdl-color--yellow-800 {\n background-color: rgb(249,168,37) !important; }\n\n.mdl-color-text--yellow-900 {\n color: rgb(245,127,23) !important; }\n\n.mdl-color--yellow-900 {\n background-color: rgb(245,127,23) !important; }\n\n.mdl-color-text--yellow-A100 {\n color: rgb(255,255,141) !important; }\n\n.mdl-color--yellow-A100 {\n background-color: rgb(255,255,141) !important; }\n\n.mdl-color-text--yellow-A200 {\n color: rgb(255,255,0) !important; }\n\n.mdl-color--yellow-A200 {\n background-color: rgb(255,255,0) !important; }\n\n.mdl-color-text--yellow-A400 {\n color: rgb(255,234,0) !important; }\n\n.mdl-color--yellow-A400 {\n background-color: rgb(255,234,0) !important; }\n\n.mdl-color-text--yellow-A700 {\n color: rgb(255,214,0) !important; }\n\n.mdl-color--yellow-A700 {\n background-color: rgb(255,214,0) !important; }\n\n.mdl-color-text--amber {\n color: rgb(255,193,7) !important; }\n\n.mdl-color--amber {\n background-color: rgb(255,193,7) !important; }\n\n.mdl-color-text--amber-50 {\n color: rgb(255,248,225) !important; }\n\n.mdl-color--amber-50 {\n background-color: rgb(255,248,225) !important; }\n\n.mdl-color-text--amber-100 {\n color: rgb(255,236,179) !important; }\n\n.mdl-color--amber-100 {\n background-color: rgb(255,236,179) !important; }\n\n.mdl-color-text--amber-200 {\n color: rgb(255,224,130) !important; }\n\n.mdl-color--amber-200 {\n background-color: rgb(255,224,130) !important; }\n\n.mdl-color-text--amber-300 {\n color: rgb(255,213,79) !important; }\n\n.mdl-color--amber-300 {\n background-color: rgb(255,213,79) !important; }\n\n.mdl-color-text--amber-400 {\n color: rgb(255,202,40) !important; }\n\n.mdl-color--amber-400 {\n background-color: rgb(255,202,40) !important; }\n\n.mdl-color-text--amber-500 {\n color: rgb(255,193,7) !important; }\n\n.mdl-color--amber-500 {\n background-color: rgb(255,193,7) !important; }\n\n.mdl-color-text--amber-600 {\n color: rgb(255,179,0) !important; }\n\n.mdl-color--amber-600 {\n background-color: rgb(255,179,0) !important; }\n\n.mdl-color-text--amber-700 {\n color: rgb(255,160,0) !important; }\n\n.mdl-color--amber-700 {\n background-color: rgb(255,160,0) !important; }\n\n.mdl-color-text--amber-800 {\n color: rgb(255,143,0) !important; }\n\n.mdl-color--amber-800 {\n background-color: rgb(255,143,0) !important; }\n\n.mdl-color-text--amber-900 {\n color: rgb(255,111,0) !important; }\n\n.mdl-color--amber-900 {\n background-color: rgb(255,111,0) !important; }\n\n.mdl-color-text--amber-A100 {\n color: rgb(255,229,127) !important; }\n\n.mdl-color--amber-A100 {\n background-color: rgb(255,229,127) !important; }\n\n.mdl-color-text--amber-A200 {\n color: rgb(255,215,64) !important; }\n\n.mdl-color--amber-A200 {\n background-color: rgb(255,215,64) !important; }\n\n.mdl-color-text--amber-A400 {\n color: rgb(255,196,0) !important; }\n\n.mdl-color--amber-A400 {\n background-color: rgb(255,196,0) !important; }\n\n.mdl-color-text--amber-A700 {\n color: rgb(255,171,0) !important; }\n\n.mdl-color--amber-A700 {\n background-color: rgb(255,171,0) !important; }\n\n.mdl-color-text--orange {\n color: rgb(255,152,0) !important; }\n\n.mdl-color--orange {\n background-color: rgb(255,152,0) !important; }\n\n.mdl-color-text--orange-50 {\n color: rgb(255,243,224) !important; }\n\n.mdl-color--orange-50 {\n background-color: rgb(255,243,224) !important; }\n\n.mdl-color-text--orange-100 {\n color: rgb(255,224,178) !important; }\n\n.mdl-color--orange-100 {\n background-color: rgb(255,224,178) !important; }\n\n.mdl-color-text--orange-200 {\n color: rgb(255,204,128) !important; }\n\n.mdl-color--orange-200 {\n background-color: rgb(255,204,128) !important; }\n\n.mdl-color-text--orange-300 {\n color: rgb(255,183,77) !important; }\n\n.mdl-color--orange-300 {\n background-color: rgb(255,183,77) !important; }\n\n.mdl-color-text--orange-400 {\n color: rgb(255,167,38) !important; }\n\n.mdl-color--orange-400 {\n background-color: rgb(255,167,38) !important; }\n\n.mdl-color-text--orange-500 {\n color: rgb(255,152,0) !important; }\n\n.mdl-color--orange-500 {\n background-color: rgb(255,152,0) !important; }\n\n.mdl-color-text--orange-600 {\n color: rgb(251,140,0) !important; }\n\n.mdl-color--orange-600 {\n background-color: rgb(251,140,0) !important; }\n\n.mdl-color-text--orange-700 {\n color: rgb(245,124,0) !important; }\n\n.mdl-color--orange-700 {\n background-color: rgb(245,124,0) !important; }\n\n.mdl-color-text--orange-800 {\n color: rgb(239,108,0) !important; }\n\n.mdl-color--orange-800 {\n background-color: rgb(239,108,0) !important; }\n\n.mdl-color-text--orange-900 {\n color: rgb(230,81,0) !important; }\n\n.mdl-color--orange-900 {\n background-color: rgb(230,81,0) !important; }\n\n.mdl-color-text--orange-A100 {\n color: rgb(255,209,128) !important; }\n\n.mdl-color--orange-A100 {\n background-color: rgb(255,209,128) !important; }\n\n.mdl-color-text--orange-A200 {\n color: rgb(255,171,64) !important; }\n\n.mdl-color--orange-A200 {\n background-color: rgb(255,171,64) !important; }\n\n.mdl-color-text--orange-A400 {\n color: rgb(255,145,0) !important; }\n\n.mdl-color--orange-A400 {\n background-color: rgb(255,145,0) !important; }\n\n.mdl-color-text--orange-A700 {\n color: rgb(255,109,0) !important; }\n\n.mdl-color--orange-A700 {\n background-color: rgb(255,109,0) !important; }\n\n.mdl-color-text--deep-orange {\n color: rgb(255,87,34) !important; }\n\n.mdl-color--deep-orange {\n background-color: rgb(255,87,34) !important; }\n\n.mdl-color-text--deep-orange-50 {\n color: rgb(251,233,231) !important; }\n\n.mdl-color--deep-orange-50 {\n background-color: rgb(251,233,231) !important; }\n\n.mdl-color-text--deep-orange-100 {\n color: rgb(255,204,188) !important; }\n\n.mdl-color--deep-orange-100 {\n background-color: rgb(255,204,188) !important; }\n\n.mdl-color-text--deep-orange-200 {\n color: rgb(255,171,145) !important; }\n\n.mdl-color--deep-orange-200 {\n background-color: rgb(255,171,145) !important; }\n\n.mdl-color-text--deep-orange-300 {\n color: rgb(255,138,101) !important; }\n\n.mdl-color--deep-orange-300 {\n background-color: rgb(255,138,101) !important; }\n\n.mdl-color-text--deep-orange-400 {\n color: rgb(255,112,67) !important; }\n\n.mdl-color--deep-orange-400 {\n background-color: rgb(255,112,67) !important; }\n\n.mdl-color-text--deep-orange-500 {\n color: rgb(255,87,34) !important; }\n\n.mdl-color--deep-orange-500 {\n background-color: rgb(255,87,34) !important; }\n\n.mdl-color-text--deep-orange-600 {\n color: rgb(244,81,30) !important; }\n\n.mdl-color--deep-orange-600 {\n background-color: rgb(244,81,30) !important; }\n\n.mdl-color-text--deep-orange-700 {\n color: rgb(230,74,25) !important; }\n\n.mdl-color--deep-orange-700 {\n background-color: rgb(230,74,25) !important; }\n\n.mdl-color-text--deep-orange-800 {\n color: rgb(216,67,21) !important; }\n\n.mdl-color--deep-orange-800 {\n background-color: rgb(216,67,21) !important; }\n\n.mdl-color-text--deep-orange-900 {\n color: rgb(191,54,12) !important; }\n\n.mdl-color--deep-orange-900 {\n background-color: rgb(191,54,12) !important; }\n\n.mdl-color-text--deep-orange-A100 {\n color: rgb(255,158,128) !important; }\n\n.mdl-color--deep-orange-A100 {\n background-color: rgb(255,158,128) !important; }\n\n.mdl-color-text--deep-orange-A200 {\n color: rgb(255,110,64) !important; }\n\n.mdl-color--deep-orange-A200 {\n background-color: rgb(255,110,64) !important; }\n\n.mdl-color-text--deep-orange-A400 {\n color: rgb(255,61,0) !important; }\n\n.mdl-color--deep-orange-A400 {\n background-color: rgb(255,61,0) !important; }\n\n.mdl-color-text--deep-orange-A700 {\n color: rgb(221,44,0) !important; }\n\n.mdl-color--deep-orange-A700 {\n background-color: rgb(221,44,0) !important; }\n\n.mdl-color-text--brown {\n color: rgb(121,85,72) !important; }\n\n.mdl-color--brown {\n background-color: rgb(121,85,72) !important; }\n\n.mdl-color-text--brown-50 {\n color: rgb(239,235,233) !important; }\n\n.mdl-color--brown-50 {\n background-color: rgb(239,235,233) !important; }\n\n.mdl-color-text--brown-100 {\n color: rgb(215,204,200) !important; }\n\n.mdl-color--brown-100 {\n background-color: rgb(215,204,200) !important; }\n\n.mdl-color-text--brown-200 {\n color: rgb(188,170,164) !important; }\n\n.mdl-color--brown-200 {\n background-color: rgb(188,170,164) !important; }\n\n.mdl-color-text--brown-300 {\n color: rgb(161,136,127) !important; }\n\n.mdl-color--brown-300 {\n background-color: rgb(161,136,127) !important; }\n\n.mdl-color-text--brown-400 {\n color: rgb(141,110,99) !important; }\n\n.mdl-color--brown-400 {\n background-color: rgb(141,110,99) !important; }\n\n.mdl-color-text--brown-500 {\n color: rgb(121,85,72) !important; }\n\n.mdl-color--brown-500 {\n background-color: rgb(121,85,72) !important; }\n\n.mdl-color-text--brown-600 {\n color: rgb(109,76,65) !important; }\n\n.mdl-color--brown-600 {\n background-color: rgb(109,76,65) !important; }\n\n.mdl-color-text--brown-700 {\n color: rgb(93,64,55) !important; }\n\n.mdl-color--brown-700 {\n background-color: rgb(93,64,55) !important; }\n\n.mdl-color-text--brown-800 {\n color: rgb(78,52,46) !important; }\n\n.mdl-color--brown-800 {\n background-color: rgb(78,52,46) !important; }\n\n.mdl-color-text--brown-900 {\n color: rgb(62,39,35) !important; }\n\n.mdl-color--brown-900 {\n background-color: rgb(62,39,35) !important; }\n\n.mdl-color-text--grey {\n color: rgb(158,158,158) !important; }\n\n.mdl-color--grey {\n background-color: rgb(158,158,158) !important; }\n\n.mdl-color-text--grey-50 {\n color: rgb(250,250,250) !important; }\n\n.mdl-color--grey-50 {\n background-color: rgb(250,250,250) !important; }\n\n.mdl-color-text--grey-100 {\n color: rgb(245,245,245) !important; }\n\n.mdl-color--grey-100 {\n background-color: rgb(245,245,245) !important; }\n\n.mdl-color-text--grey-200 {\n color: rgb(238,238,238) !important; }\n\n.mdl-color--grey-200 {\n background-color: rgb(238,238,238) !important; }\n\n.mdl-color-text--grey-300 {\n color: rgb(224,224,224) !important; }\n\n.mdl-color--grey-300 {\n background-color: rgb(224,224,224) !important; }\n\n.mdl-color-text--grey-400 {\n color: rgb(189,189,189) !important; }\n\n.mdl-color--grey-400 {\n background-color: rgb(189,189,189) !important; }\n\n.mdl-color-text--grey-500 {\n color: rgb(158,158,158) !important; }\n\n.mdl-color--grey-500 {\n background-color: rgb(158,158,158) !important; }\n\n.mdl-color-text--grey-600 {\n color: rgb(117,117,117) !important; }\n\n.mdl-color--grey-600 {\n background-color: rgb(117,117,117) !important; }\n\n.mdl-color-text--grey-700 {\n color: rgb(97,97,97) !important; }\n\n.mdl-color--grey-700 {\n background-color: rgb(97,97,97) !important; }\n\n.mdl-color-text--grey-800 {\n color: rgb(66,66,66) !important; }\n\n.mdl-color--grey-800 {\n background-color: rgb(66,66,66) !important; }\n\n.mdl-color-text--grey-900 {\n color: rgb(33,33,33) !important; }\n\n.mdl-color--grey-900 {\n background-color: rgb(33,33,33) !important; }\n\n.mdl-color-text--blue-grey {\n color: rgb(96,125,139) !important; }\n\n.mdl-color--blue-grey {\n background-color: rgb(96,125,139) !important; }\n\n.mdl-color-text--blue-grey-50 {\n color: rgb(236,239,241) !important; }\n\n.mdl-color--blue-grey-50 {\n background-color: rgb(236,239,241) !important; }\n\n.mdl-color-text--blue-grey-100 {\n color: rgb(207,216,220) !important; }\n\n.mdl-color--blue-grey-100 {\n background-color: rgb(207,216,220) !important; }\n\n.mdl-color-text--blue-grey-200 {\n color: rgb(176,190,197) !important; }\n\n.mdl-color--blue-grey-200 {\n background-color: rgb(176,190,197) !important; }\n\n.mdl-color-text--blue-grey-300 {\n color: rgb(144,164,174) !important; }\n\n.mdl-color--blue-grey-300 {\n background-color: rgb(144,164,174) !important; }\n\n.mdl-color-text--blue-grey-400 {\n color: rgb(120,144,156) !important; }\n\n.mdl-color--blue-grey-400 {\n background-color: rgb(120,144,156) !important; }\n\n.mdl-color-text--blue-grey-500 {\n color: rgb(96,125,139) !important; }\n\n.mdl-color--blue-grey-500 {\n background-color: rgb(96,125,139) !important; }\n\n.mdl-color-text--blue-grey-600 {\n color: rgb(84,110,122) !important; }\n\n.mdl-color--blue-grey-600 {\n background-color: rgb(84,110,122) !important; }\n\n.mdl-color-text--blue-grey-700 {\n color: rgb(69,90,100) !important; }\n\n.mdl-color--blue-grey-700 {\n background-color: rgb(69,90,100) !important; }\n\n.mdl-color-text--blue-grey-800 {\n color: rgb(55,71,79) !important; }\n\n.mdl-color--blue-grey-800 {\n background-color: rgb(55,71,79) !important; }\n\n.mdl-color-text--blue-grey-900 {\n color: rgb(38,50,56) !important; }\n\n.mdl-color--blue-grey-900 {\n background-color: rgb(38,50,56) !important; }\n\n.mdl-color--black {\n background-color: rgb(0,0,0) !important; }\n\n.mdl-color-text--black {\n color: rgb(0,0,0) !important; }\n\n.mdl-color--white {\n background-color: rgb(255,255,255) !important; }\n\n.mdl-color-text--white {\n color: rgb(255,255,255) !important; }\n\n.mdl-color--primary {\n background-color: rgb(63,81,181) !important; }\n\n.mdl-color--primary-contrast {\n background-color: rgb(255,255,255) !important; }\n\n.mdl-color--primary-dark {\n background-color: rgb(48,63,159) !important; }\n\n.mdl-color--accent {\n background-color: rgb(255,64,129) !important; }\n\n.mdl-color--accent-contrast {\n background-color: rgb(255,255,255) !important; }\n\n.mdl-color-text--primary {\n color: rgb(63,81,181) !important; }\n\n.mdl-color-text--primary-contrast {\n color: rgb(255,255,255) !important; }\n\n.mdl-color-text--primary-dark {\n color: rgb(48,63,159) !important; }\n\n.mdl-color-text--accent {\n color: rgb(255,64,129) !important; }\n\n.mdl-color-text--accent-contrast {\n color: rgb(255,255,255) !important; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-ripple {\n background: rgb(0,0,0);\n border-radius: 50%;\n height: 50px;\n left: 0;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n transform: translate(-50%, -50%);\n width: 50px;\n overflow: hidden; }\n .mdl-ripple.is-animating {\n transition: transform 0.3s cubic-bezier(0, 0, 0.2, 1), width 0.3s cubic-bezier(0, 0, 0.2, 1), height 0.3s cubic-bezier(0, 0, 0.2, 1), opacity 0.6s cubic-bezier(0, 0, 0.2, 1); }\n .mdl-ripple.is-visible {\n opacity: 0.3; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-animation--default {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }\n\n.mdl-animation--fast-out-slow-in {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }\n\n.mdl-animation--linear-out-slow-in {\n transition-timing-function: cubic-bezier(0, 0, 0.2, 1); }\n\n.mdl-animation--fast-out-linear-in {\n transition-timing-function: cubic-bezier(0.4, 0, 1, 1); }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-badge {\n position: relative;\n white-space: nowrap;\n margin-right: 24px; }\n .mdl-badge:not([data-badge]) {\n margin-right: auto; }\n .mdl-badge[data-badge]:after {\n content: attr(data-badge);\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-content: center;\n align-items: center;\n position: absolute;\n top: -11px;\n right: -24px;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-weight: 600;\n font-size: 12px;\n width: 22px;\n height: 22px;\n border-radius: 50%;\n background: rgb(255,64,129);\n color: rgb(255,255,255); }\n .mdl-button .mdl-badge[data-badge]:after {\n top: -10px;\n right: -5px; }\n .mdl-badge.mdl-badge--no-background[data-badge]:after {\n color: rgb(255,64,129);\n background: rgba(255,255,255,0.2);\n box-shadow: 0 0 1px gray; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-button {\n background: transparent;\n border: none;\n border-radius: 2px;\n color: rgb(0,0,0);\n position: relative;\n height: 36px;\n min-width: 64px;\n padding: 0 8px;\n display: inline-block;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n text-transform: uppercase;\n line-height: 1;\n letter-spacing: 0;\n overflow: hidden;\n will-change: box-shadow, transform;\n transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n outline: none;\n cursor: pointer;\n text-decoration: none;\n text-align: center;\n line-height: 36px;\n vertical-align: middle; }\n .mdl-button::-moz-focus-inner {\n border: 0; }\n .mdl-button:hover {\n background-color: rgba(158,158,158, 0.20); }\n .mdl-button:focus:not(:active) {\n background-color: rgba(0,0,0, 0.12); }\n .mdl-button:active {\n background-color: rgba(158,158,158, 0.40); }\n .mdl-button.mdl-button--colored {\n color: rgb(63,81,181); }\n .mdl-button.mdl-button--colored:focus:not(:active) {\n background-color: rgba(0,0,0, 0.12); }\n\ninput.mdl-button[type=\"submit\"] {\n -webkit-appearance: none; }\n\n.mdl-button--raised {\n background: rgba(158,158,158, 0.20);\n 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); }\n .mdl-button--raised:active {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2);\n background-color: rgba(158,158,158, 0.40); }\n .mdl-button--raised:focus:not(:active) {\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36);\n background-color: rgba(158,158,158, 0.40); }\n .mdl-button--raised.mdl-button--colored {\n background: rgb(63,81,181);\n color: rgb(255,255,255); }\n .mdl-button--raised.mdl-button--colored:hover {\n background-color: rgb(63,81,181); }\n .mdl-button--raised.mdl-button--colored:active {\n background-color: rgb(63,81,181); }\n .mdl-button--raised.mdl-button--colored:focus:not(:active) {\n background-color: rgb(63,81,181); }\n .mdl-button--raised.mdl-button--colored .mdl-ripple {\n background: rgb(255,255,255); }\n\n.mdl-button--fab {\n border-radius: 50%;\n font-size: 24px;\n height: 56px;\n margin: auto;\n min-width: 56px;\n width: 56px;\n padding: 0;\n overflow: hidden;\n background: rgba(158,158,158, 0.20);\n box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24);\n position: relative;\n line-height: normal; }\n .mdl-button--fab .material-icons {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-12px, -12px);\n line-height: 24px;\n width: 24px; }\n .mdl-button--fab.mdl-button--mini-fab {\n height: 40px;\n min-width: 40px;\n width: 40px; }\n .mdl-button--fab .mdl-button__ripple-container {\n border-radius: 50%;\n -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }\n .mdl-button--fab:active {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2);\n background-color: rgba(158,158,158, 0.40); }\n .mdl-button--fab:focus:not(:active) {\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36);\n background-color: rgba(158,158,158, 0.40); }\n .mdl-button--fab.mdl-button--colored {\n background: rgb(255,64,129);\n color: rgb(255,255,255); }\n .mdl-button--fab.mdl-button--colored:hover {\n background-color: rgb(255,64,129); }\n .mdl-button--fab.mdl-button--colored:focus:not(:active) {\n background-color: rgb(255,64,129); }\n .mdl-button--fab.mdl-button--colored:active {\n background-color: rgb(255,64,129); }\n .mdl-button--fab.mdl-button--colored .mdl-ripple {\n background: rgb(255,255,255); }\n\n.mdl-button--icon {\n border-radius: 50%;\n font-size: 24px;\n height: 32px;\n margin-left: 0;\n margin-right: 0;\n min-width: 32px;\n width: 32px;\n padding: 0;\n overflow: hidden;\n color: inherit;\n line-height: normal; }\n .mdl-button--icon .material-icons {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-12px, -12px);\n line-height: 24px;\n width: 24px; }\n .mdl-button--icon.mdl-button--mini-icon {\n height: 24px;\n min-width: 24px;\n width: 24px; }\n .mdl-button--icon.mdl-button--mini-icon .material-icons {\n top: 0px;\n left: 0px; }\n .mdl-button--icon .mdl-button__ripple-container {\n border-radius: 50%;\n -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }\n\n.mdl-button__ripple-container {\n display: block;\n height: 100%;\n left: 0px;\n position: absolute;\n top: 0px;\n width: 100%;\n z-index: 0;\n overflow: hidden; }\n .mdl-button[disabled] .mdl-button__ripple-container .mdl-ripple,\n .mdl-button.mdl-button--disabled .mdl-button__ripple-container .mdl-ripple {\n background-color: transparent; }\n\n.mdl-button--primary.mdl-button--primary {\n color: rgb(63,81,181); }\n .mdl-button--primary.mdl-button--primary .mdl-ripple {\n background: rgb(255,255,255); }\n .mdl-button--primary.mdl-button--primary.mdl-button--raised, .mdl-button--primary.mdl-button--primary.mdl-button--fab {\n color: rgb(255,255,255);\n background-color: rgb(63,81,181); }\n\n.mdl-button--accent.mdl-button--accent {\n color: rgb(255,64,129); }\n .mdl-button--accent.mdl-button--accent .mdl-ripple {\n background: rgb(255,255,255); }\n .mdl-button--accent.mdl-button--accent.mdl-button--raised, .mdl-button--accent.mdl-button--accent.mdl-button--fab {\n color: rgb(255,255,255);\n background-color: rgb(255,64,129); }\n\n.mdl-button[disabled][disabled],\n.mdl-button.mdl-button--disabled.mdl-button--disabled {\n color: rgba(0,0,0, 0.26);\n cursor: auto;\n background-color: transparent; }\n\n.mdl-button--fab[disabled][disabled],\n.mdl-button--fab.mdl-button--disabled.mdl-button--disabled {\n background-color: rgba(0,0,0, 0.12);\n color: rgba(0,0,0, 0.26);\n 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); }\n\n.mdl-button--raised[disabled][disabled],\n.mdl-button--raised.mdl-button--disabled.mdl-button--disabled {\n background-color: rgba(0,0,0, 0.12);\n color: rgba(0,0,0, 0.26);\n 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); }\n\n.mdl-button--colored[disabled][disabled],\n.mdl-button--colored.mdl-button--disabled.mdl-button--disabled {\n color: rgba(0,0,0, 0.26); }\n\n.mdl-button .material-icons {\n vertical-align: middle; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-card {\n display: flex;\n flex-direction: column;\n font-size: 16px;\n font-weight: 400;\n min-height: 200px;\n overflow: hidden;\n width: 330px;\n z-index: 1;\n position: relative;\n background: rgb(255,255,255);\n border-radius: 2px;\n box-sizing: border-box; }\n\n.mdl-card__media {\n background-color: rgb(255,64,129);\n background-repeat: repeat;\n background-position: 50% 50%;\n background-size: cover;\n background-origin: padding-box;\n background-attachment: scroll;\n box-sizing: border-box; }\n\n.mdl-card__title {\n align-items: center;\n color: rgb(0,0,0);\n display: block;\n display: flex;\n justify-content: stretch;\n line-height: normal;\n padding: 16px 16px;\n perspective-origin: 165px 56px;\n transform-origin: 165px 56px;\n box-sizing: border-box; }\n .mdl-card__title.mdl-card--border {\n border-bottom: 1px solid rgba(0, 0, 0, 0.1); }\n\n.mdl-card__title-text {\n align-self: flex-end;\n color: inherit;\n display: block;\n display: flex;\n font-size: 24px;\n font-weight: 300;\n line-height: normal;\n overflow: hidden;\n transform-origin: 149px 48px;\n margin: 0; }\n\n.mdl-card__subtitle-text {\n font-size: 14px;\n color: grey;\n margin: 0; }\n\n.mdl-card__supporting-text {\n color: rgba(0,0,0, 0.54);\n font-size: 13px;\n line-height: 18px;\n overflow: hidden;\n padding: 16px 16px;\n width: 90%; }\n\n.mdl-card__actions {\n font-size: 16px;\n line-height: normal;\n width: 100%;\n background-color: transparent;\n padding: 8px;\n box-sizing: border-box; }\n .mdl-card__actions.mdl-card--border {\n border-top: 1px solid rgba(0, 0, 0, 0.1); }\n\n.mdl-card--expand {\n flex-grow: 1; }\n\n.mdl-card__menu {\n position: absolute;\n right: 16px;\n top: 16px; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-checkbox {\n position: relative;\n z-index: 1;\n vertical-align: middle;\n display: inline-block;\n box-sizing: border-box;\n width: 100%;\n height: 24px;\n margin: 0;\n padding: 0; }\n .mdl-checkbox.is-upgraded {\n padding-left: 24px; }\n\n.mdl-checkbox__input {\n line-height: 24px; }\n .mdl-checkbox.is-upgraded .mdl-checkbox__input {\n position: absolute;\n width: 0;\n height: 0;\n margin: 0;\n padding: 0;\n opacity: 0;\n -ms-appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border: none; }\n\n.mdl-checkbox__box-outline {\n position: absolute;\n top: 3px;\n left: 0;\n display: inline-block;\n box-sizing: border-box;\n width: 16px;\n height: 16px;\n margin: 0;\n cursor: pointer;\n overflow: hidden;\n border: 2px solid rgba(0,0,0, 0.54);\n border-radius: 2px;\n z-index: 2; }\n .mdl-checkbox.is-checked .mdl-checkbox__box-outline {\n border: 2px solid rgb(63,81,181); }\n .mdl-checkbox.is-disabled .mdl-checkbox__box-outline {\n border: 2px solid rgba(0,0,0, 0.26);\n cursor: auto; }\n\n.mdl-checkbox__focus-helper {\n position: absolute;\n top: 3px;\n left: 0;\n display: inline-block;\n box-sizing: border-box;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: transparent; }\n .mdl-checkbox.is-focused .mdl-checkbox__focus-helper {\n box-shadow: 0 0 0px 8px rgba(0, 0, 0, 0.1);\n background-color: rgba(0, 0, 0, 0.1); }\n .mdl-checkbox.is-focused.is-checked .mdl-checkbox__focus-helper {\n box-shadow: 0 0 0px 8px rgba(63,81,181, 0.26);\n background-color: rgba(63,81,181, 0.26); }\n\n.mdl-checkbox__tick-outline {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n mask: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcCI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gMCwwIDAsMSAxLDEgMSwwIDAsMCB6IE0gMC44NTM0Mzc1LDAuMTY3MTg3NSAwLjk1OTY4NzUsMC4yNzMxMjUgMC40MjkzNzUsMC44MDM0Mzc1IDAuMzIzMTI1LDAuOTA5Njg3NSAwLjIxNzE4NzUsMC44MDM0Mzc1IDAuMDQwMzEyNSwwLjYyNjg3NSAwLjE0NjU2MjUsMC41MjA2MjUgMC4zMjMxMjUsMC42OTc1IDAuODUzNDM3NSwwLjE2NzE4NzUgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8bWFzayBpZD0ibWFzayIgbWFza1VuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgbWFza0NvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgogICAgICA8cGF0aAogICAgICAgICBkPSJNIDAsMCAwLDEgMSwxIDEsMCAwLDAgeiBNIDAuODUzNDM3NSwwLjE2NzE4NzUgMC45NTk2ODc1LDAuMjczMTI1IDAuNDI5Mzc1LDAuODAzNDM3NSAwLjMyMzEyNSwwLjkwOTY4NzUgMC4yMTcxODc1LDAuODAzNDM3NSAwLjA0MDMxMjUsMC42MjY4NzUgMC4xNDY1NjI1LDAuNTIwNjI1IDAuMzIzMTI1LDAuNjk3NSAwLjg1MzQzNzUsMC4xNjcxODc1IHoiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+CiAgICA8L21hc2s+CiAgPC9kZWZzPgogIDxyZWN0CiAgICAgd2lkdGg9IjEiCiAgICAgaGVpZ2h0PSIxIgogICAgIHg9IjAiCiAgICAgeT0iMCIKICAgICBjbGlwLXBhdGg9InVybCgjY2xpcCkiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KPC9zdmc+Cg==\");\n background: transparent;\n transition-duration: 0.28s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-property: background; }\n .mdl-checkbox.is-checked .mdl-checkbox__tick-outline {\n background: rgb(63,81,181) url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K\"); }\n .mdl-checkbox.is-checked.is-disabled .mdl-checkbox__tick-outline {\n background: rgba(0,0,0, 0.26) url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K\"); }\n\n.mdl-checkbox__label {\n position: relative;\n cursor: pointer;\n font-size: 16px;\n line-height: 24px;\n margin: 0; }\n .mdl-checkbox.is-disabled .mdl-checkbox__label {\n color: rgba(0,0,0, 0.26);\n cursor: auto; }\n\n.mdl-checkbox__ripple-container {\n position: absolute;\n z-index: 2;\n top: -6px;\n left: -10px;\n box-sizing: border-box;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n cursor: pointer;\n overflow: hidden;\n -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }\n .mdl-checkbox__ripple-container .mdl-ripple {\n background: rgb(63,81,181); }\n .mdl-checkbox.is-disabled .mdl-checkbox__ripple-container {\n cursor: auto; }\n .mdl-checkbox.is-disabled .mdl-checkbox__ripple-container .mdl-ripple {\n background: transparent; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-data-table {\n position: relative;\n border: 1px solid rgba(0, 0, 0, 0.12);\n border-collapse: collapse;\n white-space: nowrap;\n font-size: 13px;\n background-color: rgb(255,255,255); }\n .mdl-data-table thead {\n padding-bottom: 3px; }\n .mdl-data-table thead .mdl-data-table__select {\n margin-top: 0; }\n .mdl-data-table tbody tr {\n position: relative;\n height: 48px;\n transition-duration: 0.28s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-property: background-color; }\n .mdl-data-table tbody tr.is-selected {\n background-color: #e0e0e0; }\n .mdl-data-table tbody tr:hover {\n background-color: #eeeeee; }\n .mdl-data-table td, .mdl-data-table th {\n padding: 0 18px 0 18px;\n text-align: right; }\n .mdl-data-table td:first-of-type, .mdl-data-table th:first-of-type {\n padding-left: 24px; }\n .mdl-data-table td:last-of-type, .mdl-data-table th:last-of-type {\n padding-right: 24px; }\n .mdl-data-table td {\n position: relative;\n vertical-align: top;\n height: 48px;\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n padding-top: 12px;\n box-sizing: border-box; }\n .mdl-data-table td .mdl-data-table__select {\n vertical-align: top;\n position: absolute;\n left: 24px; }\n .mdl-data-table th {\n position: relative;\n vertical-align: bottom;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: bold;\n line-height: 24px;\n letter-spacing: 0;\n height: 48px;\n font-size: 12px;\n color: rgba(0, 0, 0, 0.54);\n padding-bottom: 8px;\n box-sizing: border-box; }\n .mdl-data-table th .mdl-data-table__select {\n position: absolute;\n bottom: 8px;\n left: 24px; }\n\n.mdl-data-table__select {\n width: 16px; }\n\n.mdl-data-table__cell--non-numeric.mdl-data-table__cell--non-numeric {\n text-align: left; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-mega-footer {\n padding: 16px 40px;\n color: rgb(158,158,158);\n background-color: rgb(66,66,66); }\n\n.mdl-mega-footer--top-section:after,\n.mdl-mega-footer--middle-section:after,\n.mdl-mega-footer--bottom-section:after,\n.mdl-mega-footer__top-section:after,\n.mdl-mega-footer__middle-section:after,\n.mdl-mega-footer__bottom-section:after {\n content: '';\n display: block;\n clear: both; }\n\n.mdl-mega-footer--left-section,\n.mdl-mega-footer__left-section {\n margin-bottom: 16px; }\n\n.mdl-mega-footer--right-section,\n.mdl-mega-footer__right-section {\n margin-bottom: 16px; }\n\n.mdl-mega-footer--right-section a,\n.mdl-mega-footer__right-section a {\n display: block;\n margin-bottom: 16px;\n color: inherit;\n text-decoration: none; }\n\n@media screen and (min-width: 760px) {\n .mdl-mega-footer--left-section,\n .mdl-mega-footer__left-section {\n float: left; }\n .mdl-mega-footer--right-section,\n .mdl-mega-footer__right-section {\n float: right; }\n .mdl-mega-footer--right-section a,\n .mdl-mega-footer__right-section a {\n display: inline-block;\n margin-left: 16px;\n line-height: 36px;\n vertical-align: middle; } }\n\n.mdl-mega-footer--social-btn,\n.mdl-mega-footer__social-btn {\n width: 36px;\n height: 36px;\n padding: 0;\n margin: 0;\n background-color: rgb(158,158,158);\n border: none; }\n\n.mdl-mega-footer--drop-down-section,\n.mdl-mega-footer__drop-down-section {\n display: block;\n position: relative; }\n\n@media screen and (min-width: 760px) {\n .mdl-mega-footer--drop-down-section,\n .mdl-mega-footer__drop-down-section {\n width: 33%; }\n .mdl-mega-footer--drop-down-section:nth-child(1),\n .mdl-mega-footer--drop-down-section:nth-child(2),\n .mdl-mega-footer__drop-down-section:nth-child(1),\n .mdl-mega-footer__drop-down-section:nth-child(2) {\n float: left; }\n .mdl-mega-footer--drop-down-section:nth-child(3),\n .mdl-mega-footer__drop-down-section:nth-child(3) {\n float: right; }\n .mdl-mega-footer--drop-down-section:nth-child(3):after,\n .mdl-mega-footer__drop-down-section:nth-child(3):after {\n clear: right; }\n .mdl-mega-footer--drop-down-section:nth-child(4),\n .mdl-mega-footer__drop-down-section:nth-child(4) {\n clear: right;\n float: right; }\n .mdl-mega-footer--middle-section:after,\n .mdl-mega-footer__middle-section:after {\n content: '';\n display: block;\n clear: both; }\n .mdl-mega-footer--bottom-section,\n .mdl-mega-footer__bottom-section {\n padding-top: 0; } }\n\n@media screen and (min-width: 1024px) {\n .mdl-mega-footer--drop-down-section,\n .mdl-mega-footer--drop-down-section:nth-child(3),\n .mdl-mega-footer--drop-down-section:nth-child(4),\n .mdl-mega-footer__drop-down-section,\n .mdl-mega-footer__drop-down-section:nth-child(3),\n .mdl-mega-footer__drop-down-section:nth-child(4) {\n width: 24%;\n float: left; } }\n\n.mdl-mega-footer--heading-checkbox,\n.mdl-mega-footer__heading-checkbox {\n position: absolute;\n width: 100%;\n height: 55.8px;\n padding: 32px;\n margin: 0;\n margin-top: -16px;\n cursor: pointer;\n z-index: 1;\n opacity: 0; }\n .mdl-mega-footer--heading-checkbox ~ .mdl-mega-footer--heading:after,\n .mdl-mega-footer--heading-checkbox ~ .mdl-mega-footer__heading:after,\n .mdl-mega-footer__heading-checkbox ~ .mdl-mega-footer--heading:after,\n .mdl-mega-footer__heading-checkbox ~ .mdl-mega-footer__heading:after {\n font-family: 'Material Icons';\n content: '\\E5CE'; }\n\n.mdl-mega-footer--heading-checkbox:checked ~ ul,\n.mdl-mega-footer__heading-checkbox:checked ~ ul {\n display: none; }\n\n.mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer--heading:after,\n.mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer__heading:after,\n.mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer--heading:after,\n.mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer__heading:after {\n font-family: 'Material Icons';\n content: '\\E5CF'; }\n\n.mdl-mega-footer--heading,\n.mdl-mega-footer__heading {\n position: relative;\n width: 100%;\n padding-right: 39.8px;\n margin-bottom: 16px;\n box-sizing: border-box;\n font-size: 14px;\n line-height: 23.8px;\n font-weight: 500;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n color: rgb(224,224,224); }\n\n.mdl-mega-footer--heading:after,\n.mdl-mega-footer__heading:after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n display: block;\n width: 23.8px;\n height: 23.8px;\n background-size: cover; }\n\n.mdl-mega-footer--link-list,\n.mdl-mega-footer__link-list {\n list-style: none;\n margin: 0;\n padding: 0;\n margin-bottom: 32px; }\n .mdl-mega-footer--link-list:after,\n .mdl-mega-footer__link-list:after {\n clear: both;\n display: block;\n content: ''; }\n\n.mdl-mega-footer--link-list li,\n.mdl-mega-footer__link-list li {\n font-size: 14px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0;\n line-height: 20px; }\n\n.mdl-mega-footer--link-list a,\n.mdl-mega-footer__link-list a {\n color: inherit;\n text-decoration: none;\n white-space: nowrap; }\n\n@media screen and (min-width: 760px) {\n .mdl-mega-footer--heading-checkbox,\n .mdl-mega-footer__heading-checkbox {\n display: none; }\n .mdl-mega-footer--heading-checkbox ~ .mdl-mega-footer--heading:after,\n .mdl-mega-footer--heading-checkbox ~ .mdl-mega-footer__heading:after,\n .mdl-mega-footer__heading-checkbox ~ .mdl-mega-footer--heading:after,\n .mdl-mega-footer__heading-checkbox ~ .mdl-mega-footer__heading:after {\n background-image: none; }\n .mdl-mega-footer--heading-checkbox:checked ~ ul,\n .mdl-mega-footer__heading-checkbox:checked ~ ul {\n display: block; }\n .mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer--heading:after,\n .mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer__heading:after,\n .mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer--heading:after,\n .mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer__heading:after {\n content: ''; } }\n\n.mdl-mega-footer--bottom-section,\n.mdl-mega-footer__bottom-section {\n padding-top: 16px;\n margin-bottom: 16px; }\n\n.mdl-logo {\n margin-bottom: 16px;\n color: white; }\n\n.mdl-mega-footer--bottom-section .mdl-mega-footer--link-list li,\n.mdl-mega-footer__bottom-section .mdl-mega-footer__link-list li {\n float: left;\n margin-bottom: 0;\n margin-right: 16px; }\n\n@media screen and (min-width: 760px) {\n .mdl-logo {\n float: left;\n margin-bottom: 0;\n margin-right: 16px; } }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-mini-footer {\n display: flex;\n flex-flow: row wrap;\n justify-content: space-between;\n padding: 32px 16px;\n color: rgb(158,158,158);\n background-color: rgb(66,66,66); }\n .mdl-mini-footer:after {\n content: '';\n display: block; }\n .mdl-mini-footer .mdl-logo {\n line-height: 36px; }\n\n.mdl-mini-footer--link-list,\n.mdl-mini-footer__link-list {\n display: flex;\n flex-flow: row nowrap;\n list-style: none;\n margin: 0;\n padding: 0; }\n .mdl-mini-footer--link-list li,\n .mdl-mini-footer__link-list li {\n margin-bottom: 0;\n margin-right: 16px; }\n @media screen and (min-width: 760px) {\n .mdl-mini-footer--link-list li,\n .mdl-mini-footer__link-list li {\n line-height: 36px; } }\n .mdl-mini-footer--link-list a,\n .mdl-mini-footer__link-list a {\n color: inherit;\n text-decoration: none;\n white-space: nowrap; }\n\n.mdl-mini-footer--left-section,\n.mdl-mini-footer__left-section {\n display: inline-block;\n order: 0; }\n\n.mdl-mini-footer--right-section,\n.mdl-mini-footer__right-section {\n display: inline-block;\n order: 1; }\n\n.mdl-mini-footer--social-btn,\n.mdl-mini-footer__social-btn {\n width: 36px;\n height: 36px;\n padding: 0;\n margin: 0;\n background-color: rgb(158,158,158);\n border: none; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-icon-toggle {\n position: relative;\n z-index: 1;\n vertical-align: middle;\n display: inline-block;\n height: 32px;\n margin: 0;\n padding: 0; }\n\n.mdl-icon-toggle__input {\n line-height: 32px; }\n .mdl-icon-toggle.is-upgraded .mdl-icon-toggle__input {\n position: absolute;\n width: 0;\n height: 0;\n margin: 0;\n padding: 0;\n opacity: 0;\n -ms-appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border: none; }\n\n.mdl-icon-toggle__label {\n display: inline-block;\n position: relative;\n cursor: pointer;\n height: 32px;\n width: 32px;\n min-width: 32px;\n color: rgb(97,97,97);\n border-radius: 50%;\n padding: 0;\n margin-left: 0;\n margin-right: 0;\n text-align: center;\n background-color: transparent;\n will-change: background-color;\n transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); }\n .mdl-icon-toggle__label.material-icons {\n line-height: 32px;\n font-size: 24px; }\n .mdl-icon-toggle.is-checked .mdl-icon-toggle__label {\n color: rgb(63,81,181); }\n .mdl-icon-toggle.is-disabled .mdl-icon-toggle__label {\n color: rgba(0,0,0, 0.26);\n cursor: auto;\n transition: none; }\n .mdl-icon-toggle.is-focused .mdl-icon-toggle__label {\n background-color: rgba(0,0,0, 0.12); }\n .mdl-icon-toggle.is-focused.is-checked .mdl-icon-toggle__label {\n background-color: rgba(63,81,181, 0.26); }\n\n.mdl-icon-toggle__ripple-container {\n position: absolute;\n z-index: 2;\n top: -2px;\n left: -2px;\n box-sizing: border-box;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n cursor: pointer;\n overflow: hidden;\n -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }\n .mdl-icon-toggle__ripple-container .mdl-ripple {\n background: rgb(97,97,97); }\n .mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container {\n cursor: auto; }\n .mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container .mdl-ripple {\n background: transparent; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-menu__container {\n display: block;\n margin: 0;\n padding: 0;\n border: none;\n position: absolute;\n overflow: visible;\n height: 0;\n width: 0;\n visibility: hidden;\n z-index: -1; }\n .mdl-menu__container.is-visible,\n .mdl-menu__container.is-animating {\n z-index: 999;\n visibility: visible; }\n\n.mdl-menu__outline {\n display: block;\n background: rgb(255,255,255);\n margin: 0;\n padding: 0;\n border: none;\n border-radius: 2px;\n position: absolute;\n top: 0;\n left: 0;\n overflow: hidden;\n opacity: 0;\n transform: scale(0);\n transform-origin: 0 0;\n 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);\n will-change: transform;\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n z-index: -1; }\n .mdl-menu__container.is-visible .mdl-menu__outline {\n opacity: 1;\n transform: scale(1);\n z-index: 999; }\n .mdl-menu__outline.mdl-menu--bottom-right {\n transform-origin: 100% 0; }\n .mdl-menu__outline.mdl-menu--top-left {\n transform-origin: 0 100%; }\n .mdl-menu__outline.mdl-menu--top-right {\n transform-origin: 100% 100%; }\n\n.mdl-menu {\n position: absolute;\n list-style: none;\n top: 0;\n left: 0;\n height: auto;\n width: auto;\n min-width: 124px;\n padding: 8px 0;\n margin: 0;\n opacity: 0;\n clip: rect(0 0 0 0);\n z-index: -1; }\n .mdl-menu__container.is-visible .mdl-menu {\n opacity: 1;\n z-index: 999; }\n .mdl-menu.is-animating {\n transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1), clip 0.3s cubic-bezier(0.4, 0, 0.2, 1); }\n .mdl-menu.mdl-menu--bottom-right {\n left: auto;\n right: 0; }\n .mdl-menu.mdl-menu--top-left {\n top: auto;\n bottom: 0; }\n .mdl-menu.mdl-menu--top-right {\n top: auto;\n left: auto;\n bottom: 0;\n right: 0; }\n .mdl-menu.mdl-menu--unaligned {\n top: auto;\n left: auto; }\n\n.mdl-menu__item {\n display: block;\n border: none;\n color: rgba(0,0,0, 0.87);\n background-color: transparent;\n text-align: left;\n margin: 0;\n padding: 0 16px;\n outline-color: rgb(189,189,189);\n position: relative;\n overflow: hidden;\n font-size: 14px;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0;\n text-decoration: none;\n cursor: pointer;\n height: 48px;\n line-height: 48px;\n white-space: nowrap;\n opacity: 0;\n transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n user-select: none; }\n .mdl-menu__container.is-visible .mdl-menu__item {\n opacity: 1; }\n .mdl-menu__item::-moz-focus-inner {\n border: 0; }\n .mdl-menu__item[disabled] {\n color: rgb(189,189,189);\n background-color: transparent;\n cursor: auto; }\n .mdl-menu__item[disabled]:hover {\n background-color: transparent; }\n .mdl-menu__item[disabled]:focus {\n background-color: transparent; }\n .mdl-menu__item[disabled] .mdl-ripple {\n background: transparent; }\n .mdl-menu__item:hover {\n background-color: rgb(238,238,238); }\n .mdl-menu__item:focus {\n outline: none;\n background-color: rgb(238,238,238); }\n .mdl-menu__item:active {\n background-color: rgb(224,224,224); }\n\n.mdl-menu__item--ripple-container {\n display: block;\n height: 100%;\n left: 0px;\n position: absolute;\n top: 0px;\n width: 100%;\n z-index: 0;\n overflow: hidden; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-progress {\n display: block;\n position: relative;\n height: 4px;\n width: 500px; }\n\n.mdl-progress > .bar {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n width: 0%;\n transition: width 0.2s cubic-bezier(0.4, 0, 0.2, 1); }\n\n.mdl-progress > .progressbar {\n background-color: rgb(63,81,181);\n z-index: 1;\n left: 0; }\n\n.mdl-progress > .bufferbar {\n background-image: linear-gradient(to right, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), linear-gradient(to right, rgb(63,81,181), rgb(63,81,181));\n z-index: 0;\n left: 0; }\n\n.mdl-progress > .auxbar {\n right: 0; }\n\n@supports (-webkit-appearance: none) {\n .mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate) > .auxbar {\n background-image: linear-gradient(to right, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), linear-gradient(to right, rgb(63,81,181), rgb(63,81,181));\n mask: url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjQiIHZpZXdQb3J0PSIwIDAgMTIgNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxlbGxpcHNlIGN4PSIyIiBjeT0iMiIgcng9IjIiIHJ5PSIyIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImN4IiBmcm9tPSIyIiB0bz0iLTEwIiBkdXI9IjAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogIDwvZWxsaXBzZT4KICA8ZWxsaXBzZSBjeD0iMTQiIGN5PSIyIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJsb2FkZXIiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY3giIGZyb209IjE0IiB0bz0iMiIgZHVyPSIwLjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICA8L2VsbGlwc2U+Cjwvc3ZnPgo=\"); } }\n\n.mdl-progress:not(.mdl-progress__indeterminate) > .auxbar {\n background-image: linear-gradient(to right, rgba(255,255,255, 0.9), rgba(255,255,255, 0.9)), linear-gradient(to right, rgb(63,81,181), rgb(63,81,181)); }\n\n.mdl-progress.mdl-progress__indeterminate > .bar1 {\n background-color: rgb(63,81,181);\n animation-name: indeterminate1;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-timing-function: linear; }\n\n.mdl-progress.mdl-progress__indeterminate > .bar3 {\n background-image: none;\n background-color: rgb(63,81,181);\n animation-name: indeterminate2;\n animation-duration: 2s;\n animation-iteration-count: infinite;\n animation-timing-function: linear; }\n\n@keyframes indeterminate1 {\n 0% {\n left: 0%;\n width: 0%; }\n 50% {\n left: 25%;\n width: 75%; }\n 75% {\n left: 100%;\n width: 0%; } }\n\n@keyframes indeterminate2 {\n 0% {\n left: 0%;\n width: 0%; }\n 50% {\n left: 0%;\n width: 0%; }\n 75% {\n left: 0%;\n width: 25%; }\n 100% {\n left: 100%;\n width: 0%; } }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-navigation {\n display: flex;\n flex-wrap: nowrap;\n box-sizing: border-box; }\n\n.mdl-navigation__link {\n color: rgb(66,66,66);\n text-decoration: none;\n font-weight: 500;\n font-size: 13px;\n margin: 0; }\n\n.mdl-layout {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n -webkit-overflow-scrolling: touch; }\n\n.mdl-layout.is-small-screen .mdl-layout--large-screen-only {\n display: none; }\n\n.mdl-layout:not(.is-small-screen) .mdl-layout--small-screen-only {\n display: none; }\n\n.mdl-layout__container {\n position: absolute;\n width: 100%;\n height: 100%; }\n\n.mdl-layout-title {\n display: block;\n position: relative;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n font-size: 20px;\n font-weight: 500;\n line-height: 1;\n letter-spacing: 0.02em;\n font-weight: 400;\n box-sizing: border-box; }\n\n.mdl-layout-spacer {\n flex-grow: 1; }\n\n.mdl-layout__drawer {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n width: 240px;\n height: 100%;\n max-height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n 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);\n box-sizing: border-box;\n border-right: 1px solid rgb(224,224,224);\n background: rgb(250,250,250);\n transform: translateX(-250px);\n transform-style: preserve-3d;\n will-change: transform;\n transition-duration: 0.2s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-property: transform;\n color: rgb(66,66,66);\n overflow: visible;\n overflow-y: auto;\n z-index: 5; }\n .mdl-layout__drawer.is-visible {\n transform: translateX(0); }\n .mdl-layout__drawer > * {\n flex-shrink: 0; }\n .mdl-layout__drawer > .mdl-layout-title {\n line-height: 64px;\n padding-left: 40px; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__drawer > .mdl-layout-title {\n line-height: 56px;\n padding-left: 16px; } }\n .mdl-layout__drawer .mdl-navigation {\n flex-direction: column;\n align-items: stretch;\n padding-top: 16px; }\n .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {\n display: block;\n flex-shrink: 0;\n padding: 16px 40px;\n margin: 0;\n color: #757575; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {\n padding: 16px 16px; } }\n .mdl-layout__drawer .mdl-navigation .mdl-navigation__link:hover {\n background-color: rgb(224,224,224); }\n .mdl-layout__drawer .mdl-navigation .mdl-navigation__link--current {\n background-color: rgb(0,0,0);\n color: rgb(63,81,181); }\n @media screen and (min-width: 1025px) {\n .mdl-layout--fixed-drawer > .mdl-layout__drawer {\n transform: translateX(0); } }\n\n.mdl-layout__drawer-button {\n display: block;\n position: absolute;\n height: 48px;\n width: 48px;\n border: 0;\n flex-shrink: 0;\n overflow: hidden;\n text-align: center;\n cursor: pointer;\n font-size: 26px;\n line-height: 50px;\n font-family: Helvetica, Arial, sans-serif;\n margin: 10px 12px;\n top: 0;\n left: 0;\n color: rgb(255,255,255);\n z-index: 4; }\n .mdl-layout__header .mdl-layout__drawer-button {\n position: absolute;\n color: rgb(255,255,255);\n background-color: inherit; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__header .mdl-layout__drawer-button {\n margin: 4px; } }\n @media screen and (max-width: 1024px) {\n .mdl-layout__drawer-button {\n margin: 4px;\n color: rgba(0, 0, 0, 0.5); } }\n @media screen and (min-width: 1025px) {\n .mdl-layout--fixed-drawer > .mdl-layout__drawer-button {\n display: none; } }\n\n.mdl-layout__header {\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n margin: 0;\n padding: 0;\n border: none;\n min-height: 64px;\n max-height: 1000px;\n z-index: 3;\n background-color: rgb(63,81,181);\n color: rgb(255,255,255);\n 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);\n transition-duration: 0.2s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-property: max-height, box-shadow; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__header {\n min-height: 56px; } }\n .mdl-layout--fixed-drawer:not(.is-small-screen) > .mdl-layout__header {\n margin-left: 240px;\n width: calc(100% - 240px); }\n @media screen and (min-width: 1024px) {\n .mdl-layout--fixed-drawer > .mdl-layout__header .mdl-layout__header-row {\n padding-left: 40px; } }\n .mdl-layout__header > .mdl-layout-icon {\n position: absolute;\n left: 40px;\n top: 16px;\n height: 32px;\n width: 32px;\n overflow: hidden;\n z-index: 3;\n display: block; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__header > .mdl-layout-icon {\n left: 16px;\n top: 12px; } }\n .mdl-layout.has-drawer .mdl-layout__header > .mdl-layout-icon {\n display: none; }\n .mdl-layout__header.is-compact {\n max-height: 64px; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__header.is-compact {\n max-height: 56px; } }\n .mdl-layout__header.is-compact.has-tabs {\n height: 112px; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__header.is-compact.has-tabs {\n min-height: 104px; } }\n @media screen and (max-width: 1024px) {\n .mdl-layout__header {\n display: none; }\n .mdl-layout--fixed-header > .mdl-layout__header {\n display: flex; } }\n\n.mdl-layout__header--transparent.mdl-layout__header--transparent {\n background-color: transparent;\n box-shadow: none; }\n\n.mdl-layout__header--seamed {\n box-shadow: none; }\n\n.mdl-layout__header--scroll {\n box-shadow: none; }\n\n.mdl-layout__header--waterfall {\n box-shadow: none;\n overflow: hidden; }\n .mdl-layout__header--waterfall.is-casting-shadow {\n 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); }\n\n.mdl-layout__header-row {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n flex-shrink: 0;\n box-sizing: border-box;\n align-self: stretch;\n align-items: center;\n height: 64px;\n margin: 0;\n padding: 0 40px 0 80px; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__header-row {\n height: 56px;\n padding: 0 16px 0 72px; } }\n .mdl-layout__header-row > * {\n flex-shrink: 0; }\n .mdl-layout__header--scroll .mdl-layout__header-row {\n width: 100%; }\n .mdl-layout__header-row .mdl-navigation {\n margin: 0;\n padding: 0;\n height: 64px;\n flex-direction: row;\n align-items: center; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__header-row .mdl-navigation {\n height: 56px; } }\n .mdl-layout__header-row .mdl-navigation__link {\n display: block;\n color: rgb(255,255,255);\n line-height: 64px;\n padding: 0 24px; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__header-row .mdl-navigation__link {\n line-height: 56px;\n padding: 0 16px; } }\n\n.mdl-layout__obfuscator {\n background-color: transparent;\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n z-index: 4;\n visibility: hidden;\n transition-property: background-color;\n transition-duration: 0.2s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }\n .mdl-layout__drawer.is-visible ~ .mdl-layout__obfuscator {\n background-color: rgba(0, 0, 0, 0.5);\n visibility: visible; }\n\n.mdl-layout__content {\n -ms-flex: 0 1 auto;\n display: inline-block;\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n z-index: 1;\n -webkit-overflow-scrolling: touch; }\n .mdl-layout--fixed-drawer > .mdl-layout__content {\n margin-left: 240px; }\n .mdl-layout__container.has-scrolling-header .mdl-layout__content {\n overflow: visible; }\n @media screen and (max-width: 1024px) {\n .mdl-layout--fixed-drawer > .mdl-layout__content {\n margin-left: 0; }\n .mdl-layout__container.has-scrolling-header .mdl-layout__content {\n overflow-y: auto;\n overflow-x: hidden; } }\n\n.mdl-layout__tab-bar {\n height: 96px;\n margin: 0;\n width: calc(100% - 112px);\n padding: 0 0 0 56px;\n display: flex;\n background-color: rgb(63,81,181);\n overflow-y: hidden;\n overflow-x: scroll; }\n .mdl-layout__tab-bar::-webkit-scrollbar {\n display: none; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__tab-bar {\n width: calc(100% - 60px);\n padding: 0 0 0 60px; } }\n .mdl-layout--fixed-tabs .mdl-layout__tab-bar {\n padding: 0;\n overflow: hidden;\n width: 100%; }\n\n.mdl-layout__tab-bar-container {\n position: relative;\n height: 48px;\n width: 100%;\n border: none;\n margin: 0;\n z-index: 2;\n flex-grow: 0;\n flex-shrink: 0;\n overflow: hidden; }\n .mdl-layout__container > .mdl-layout__tab-bar-container {\n position: absolute;\n top: 0;\n left: 0; }\n\n.mdl-layout__tab-bar-button {\n display: inline-block;\n position: absolute;\n top: 0;\n height: 48px;\n width: 56px;\n z-index: 4;\n text-align: center;\n background-color: rgb(63,81,181);\n color: transparent;\n cursor: pointer;\n user-select: none; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__tab-bar-button {\n display: none;\n width: 60px; } }\n .mdl-layout--fixed-tabs .mdl-layout__tab-bar-button {\n display: none; }\n .mdl-layout__tab-bar-button .material-icons {\n line-height: 48px; }\n .mdl-layout__tab-bar-button.is-active {\n color: rgb(255,255,255); }\n\n.mdl-layout__tab-bar-left-button {\n left: 0; }\n\n.mdl-layout__tab-bar-right-button {\n right: 0; }\n\n.mdl-layout__tab {\n margin: 0;\n border: none;\n padding: 0 24px 0 24px;\n float: left;\n position: relative;\n display: block;\n flex-grow: 0;\n flex-shrink: 0;\n text-decoration: none;\n height: 48px;\n line-height: 48px;\n text-align: center;\n font-weight: 500;\n font-size: 14px;\n text-transform: uppercase;\n color: rgba(255,255,255, 0.6);\n overflow: hidden; }\n @media screen and (max-width: 1024px) {\n .mdl-layout__tab {\n padding: 0 12px 0 12px; } }\n .mdl-layout--fixed-tabs .mdl-layout__tab {\n float: none;\n flex-grow: 1;\n padding: 0; }\n .mdl-layout.is-upgraded .mdl-layout__tab.is-active {\n color: rgb(255,255,255); }\n .mdl-layout.is-upgraded .mdl-layout__tab.is-active::after {\n height: 2px;\n width: 100%;\n display: block;\n content: \" \";\n bottom: 0;\n left: 0;\n position: absolute;\n background: rgb(255,64,129);\n animation: border-expand 0.2s cubic-bezier(0.4, 0, 0.4, 1) 0.01s alternate forwards;\n transition: all 1s cubic-bezier(0.4, 0, 1, 1); }\n .mdl-layout__tab .mdl-layout__tab-ripple-container {\n display: block;\n position: absolute;\n height: 100%;\n width: 100%;\n left: 0;\n top: 0;\n z-index: 1;\n overflow: hidden; }\n .mdl-layout__tab .mdl-layout__tab-ripple-container .mdl-ripple {\n background-color: rgb(255,255,255); }\n\n.mdl-layout__tab-panel {\n display: block; }\n .mdl-layout.is-upgraded .mdl-layout__tab-panel {\n display: none; }\n .mdl-layout.is-upgraded .mdl-layout__tab-panel.is-active {\n display: block; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-radio {\n position: relative;\n font-size: 16px;\n line-height: 24px;\n display: inline-block;\n box-sizing: border-box;\n margin: 0;\n padding-left: 0; }\n .mdl-radio.is-upgraded {\n padding-left: 24px; }\n\n.mdl-radio__button {\n line-height: 24px; }\n .mdl-radio.is-upgraded .mdl-radio__button {\n position: absolute;\n width: 0;\n height: 0;\n margin: 0;\n padding: 0;\n opacity: 0;\n -ms-appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border: none; }\n\n.mdl-radio__outer-circle {\n position: absolute;\n top: 4px;\n left: 0;\n display: inline-block;\n box-sizing: border-box;\n width: 16px;\n height: 16px;\n margin: 0;\n cursor: pointer;\n border: 2px solid rgba(0,0,0, 0.54);\n border-radius: 50%;\n z-index: 2; }\n .mdl-radio.is-checked .mdl-radio__outer-circle {\n border: 2px solid rgb(63,81,181); }\n .mdl-radio.is-disabled .mdl-radio__outer-circle {\n border: 2px solid rgba(0,0,0, 0.26);\n cursor: auto; }\n\n.mdl-radio__inner-circle {\n position: absolute;\n z-index: 1;\n margin: 0;\n top: 8px;\n left: 4px;\n box-sizing: border-box;\n width: 8px;\n height: 8px;\n cursor: pointer;\n transition-duration: 0.28s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-property: transform;\n transform: scale3d(0, 0, 0);\n border-radius: 50%;\n background: rgb(63,81,181); }\n .mdl-radio.is-checked .mdl-radio__inner-circle {\n transform: scale3d(1, 1, 1); }\n .mdl-radio.is-disabled .mdl-radio__inner-circle {\n background: rgba(0,0,0, 0.26);\n cursor: auto; }\n .mdl-radio.is-focused .mdl-radio__inner-circle {\n box-shadow: 0 0 0px 10px rgba(0, 0, 0, 0.1); }\n\n.mdl-radio__label {\n cursor: pointer; }\n .mdl-radio.is-disabled .mdl-radio__label {\n color: rgba(0,0,0, 0.26);\n cursor: auto; }\n\n.mdl-radio__ripple-container {\n position: absolute;\n z-index: 2;\n top: -9px;\n left: -13px;\n box-sizing: border-box;\n width: 42px;\n height: 42px;\n border-radius: 50%;\n cursor: pointer;\n overflow: hidden;\n -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }\n .mdl-radio__ripple-container .mdl-ripple {\n background: rgb(63,81,181); }\n .mdl-radio.is-disabled .mdl-radio__ripple-container {\n cursor: auto; }\n .mdl-radio.is-disabled .mdl-radio__ripple-container .mdl-ripple {\n background: transparent; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n_:-ms-input-placeholder, :root .mdl-slider.mdl-slider.is-upgraded {\n -ms-appearance: none;\n height: 32px;\n margin: 0; }\n\n.mdl-slider {\n width: calc(100% - 40px);\n margin: 0 20px; }\n .mdl-slider.is-upgraded {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n height: 2px;\n background: transparent;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n outline: 0;\n padding: 0;\n color: rgb(63,81,181);\n align-self: center;\n z-index: 1;\n cursor: pointer;\n /**************************** Tracks ****************************/\n /**************************** Thumbs ****************************/\n /**************************** 0-value ****************************/\n /**************************** Disabled ****************************/ }\n .mdl-slider.is-upgraded::-moz-focus-outer {\n border: 0; }\n .mdl-slider.is-upgraded::-ms-tooltip {\n display: none; }\n .mdl-slider.is-upgraded::-webkit-slider-runnable-track {\n background: transparent; }\n .mdl-slider.is-upgraded::-moz-range-track {\n background: transparent;\n border: none; }\n .mdl-slider.is-upgraded::-ms-track {\n background: none;\n color: transparent;\n height: 2px;\n width: 100%;\n border: none; }\n .mdl-slider.is-upgraded::-ms-fill-lower {\n padding: 0;\n background: linear-gradient(to right, transparent, transparent 16px, rgb(63,81,181) 16px, rgb(63,81,181) 0); }\n .mdl-slider.is-upgraded::-ms-fill-upper {\n padding: 0;\n background: linear-gradient(to left, transparent, transparent 16px, rgba(0,0,0, 0.26) 16px, rgba(0,0,0, 0.26) 0); }\n .mdl-slider.is-upgraded::-webkit-slider-thumb {\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border-radius: 50%;\n background: rgb(63,81,181);\n border: none;\n transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); }\n .mdl-slider.is-upgraded::-moz-range-thumb {\n -moz-appearance: none;\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border-radius: 50%;\n background-image: none;\n background: rgb(63,81,181);\n border: none; }\n .mdl-slider.is-upgraded:focus:not(:active)::-webkit-slider-thumb {\n box-shadow: 0 0 0 10px rgba(63,81,181, 0.26); }\n .mdl-slider.is-upgraded:focus:not(:active)::-moz-range-thumb {\n box-shadow: 0 0 0 10px rgba(63,81,181, 0.26); }\n .mdl-slider.is-upgraded:active::-webkit-slider-thumb {\n background-image: none;\n background: rgb(63,81,181);\n transform: scale(1.5); }\n .mdl-slider.is-upgraded:active::-moz-range-thumb {\n background-image: none;\n background: rgb(63,81,181);\n transform: scale(1.5); }\n .mdl-slider.is-upgraded::-ms-thumb {\n width: 32px;\n height: 32px;\n border: none;\n border-radius: 50%;\n background: rgb(63,81,181);\n transform: scale(0.375);\n transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); }\n .mdl-slider.is-upgraded:focus:not(:active)::-ms-thumb {\n background: radial-gradient(circle closest-side, rgb(63,81,181) 0%, rgb(63,81,181) 37.5%, rgba(63,81,181, 0.26) 37.5%, rgba(63,81,181, 0.26) 100%);\n transform: scale(1); }\n .mdl-slider.is-upgraded:active::-ms-thumb {\n background: rgb(63,81,181);\n transform: scale(0.5625); }\n .mdl-slider.is-upgraded.is-lowest-value::-webkit-slider-thumb {\n border: 2px solid rgba(0,0,0, 0.26);\n background: transparent; }\n .mdl-slider.is-upgraded.is-lowest-value::-moz-range-thumb {\n border: 2px solid rgba(0,0,0, 0.26);\n background: transparent; }\n .mdl-slider.is-upgraded.is-lowest-value ~\n.mdl-slider__background-flex > .mdl-slider__background-upper {\n left: 6px; }\n .mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-webkit-slider-thumb {\n box-shadow: 0 0 0 10px rgba(0,0,0, 0.12);\n background: rgba(0,0,0, 0.12); }\n .mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-moz-range-thumb {\n box-shadow: 0 0 0 10px rgba(0,0,0, 0.12);\n background: rgba(0,0,0, 0.12); }\n .mdl-slider.is-upgraded.is-lowest-value:active::-webkit-slider-thumb {\n border: 1.6px solid rgba(0,0,0, 0.26);\n transform: scale(1.5); }\n .mdl-slider.is-upgraded.is-lowest-value:active ~\n.mdl-slider__background-flex > .mdl-slider__background-upper {\n left: 9px; }\n .mdl-slider.is-upgraded.is-lowest-value:active::-moz-range-thumb {\n border: 1.5px solid rgba(0,0,0, 0.26);\n transform: scale(1.5); }\n .mdl-slider.is-upgraded.is-lowest-value::-ms-thumb {\n background: radial-gradient(circle closest-side, transparent 0%, transparent 66.67%, rgba(0,0,0, 0.26) 66.67%, rgba(0,0,0, 0.26) 100%); }\n .mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-ms-thumb {\n background: radial-gradient(circle closest-side, rgba(0,0,0, 0.12) 0%, rgba(0,0,0, 0.12) 25%, rgba(0,0,0, 0.26) 25%, rgba(0,0,0, 0.26) 37.5%, rgba(0,0,0, 0.12) 37.5%, rgba(0,0,0, 0.12) 100%);\n transform: scale(1); }\n .mdl-slider.is-upgraded.is-lowest-value:active::-ms-thumb {\n transform: scale(0.5625);\n background: radial-gradient(circle closest-side, transparent 0%, transparent 77.78%, rgba(0,0,0, 0.26) 77.78%, rgba(0,0,0, 0.26) 100%); }\n .mdl-slider.is-upgraded.is-lowest-value::-ms-fill-lower {\n background: transparent; }\n .mdl-slider.is-upgraded.is-lowest-value::-ms-fill-upper {\n margin-left: 6px; }\n .mdl-slider.is-upgraded.is-lowest-value:active::-ms-fill-upper {\n margin-left: 9px; }\n .mdl-slider.is-upgraded:disabled:focus::-webkit-slider-thumb,\n .mdl-slider.is-upgraded:disabled:active::-webkit-slider-thumb,\n .mdl-slider.is-upgraded:disabled::-webkit-slider-thumb {\n transform: scale(0.667);\n background: rgba(0,0,0, 0.26); }\n .mdl-slider.is-upgraded:disabled:focus::-moz-range-thumb,\n .mdl-slider.is-upgraded:disabled:active::-moz-range-thumb,\n .mdl-slider.is-upgraded:disabled::-moz-range-thumb {\n transform: scale(0.667);\n background: rgba(0,0,0, 0.26); }\n .mdl-slider.is-upgraded:disabled ~\n.mdl-slider__background-flex > .mdl-slider__background-lower {\n background-color: rgba(0,0,0, 0.26);\n left: -6px; }\n .mdl-slider.is-upgraded:disabled ~\n.mdl-slider__background-flex > .mdl-slider__background-upper {\n left: 6px; }\n .mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-webkit-slider-thumb,\n .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-webkit-slider-thumb,\n .mdl-slider.is-upgraded.is-lowest-value:disabled::-webkit-slider-thumb {\n border: 3px solid rgba(0,0,0, 0.26);\n background: transparent;\n transform: scale(0.667); }\n .mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-moz-range-thumb,\n .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-moz-range-thumb,\n .mdl-slider.is-upgraded.is-lowest-value:disabled::-moz-range-thumb {\n border: 3px solid rgba(0,0,0, 0.26);\n background: transparent;\n transform: scale(0.667); }\n .mdl-slider.is-upgraded.is-lowest-value:disabled:active ~\n.mdl-slider__background-flex > .mdl-slider__background-upper {\n left: 6px; }\n .mdl-slider.is-upgraded:disabled:focus::-ms-thumb,\n .mdl-slider.is-upgraded:disabled:active::-ms-thumb,\n .mdl-slider.is-upgraded:disabled::-ms-thumb {\n transform: scale(0.25);\n background: rgba(0,0,0, 0.26); }\n .mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-ms-thumb,\n .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-thumb,\n .mdl-slider.is-upgraded.is-lowest-value:disabled::-ms-thumb {\n transform: scale(0.25);\n background: radial-gradient(circle closest-side, transparent 0%, transparent 50%, rgba(0,0,0, 0.26) 50%, rgba(0,0,0, 0.26) 100%); }\n .mdl-slider.is-upgraded:disabled::-ms-fill-lower {\n margin-right: 6px;\n background: linear-gradient(to right, transparent, transparent 25px, rgba(0,0,0, 0.26) 25px, rgba(0,0,0, 0.26) 0); }\n .mdl-slider.is-upgraded:disabled::-ms-fill-upper {\n margin-left: 6px; }\n .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-fill-upper {\n margin-left: 6px; }\n\n.mdl-slider__ie-container {\n height: 18px;\n overflow: visible;\n border: none;\n margin: none;\n padding: none; }\n\n.mdl-slider__container {\n height: 18px;\n position: relative;\n background: none;\n display: flex;\n flex-direction: row; }\n\n.mdl-slider__background-flex {\n background: transparent;\n position: absolute;\n height: 2px;\n width: calc(100% - 52px);\n top: 50%;\n left: 0;\n margin: 0 26px;\n display: flex;\n overflow: hidden;\n border: 0;\n padding: 0;\n transform: translate(0, -1px); }\n\n.mdl-slider__background-lower {\n background: rgb(63,81,181);\n flex: 0;\n position: relative;\n border: 0;\n padding: 0; }\n\n.mdl-slider__background-upper {\n background: rgba(0,0,0, 0.26);\n flex: 0;\n position: relative;\n border: 0;\n padding: 0;\n transition: left 0.18s cubic-bezier(0.4, 0, 0.2, 1); }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-spinner {\n display: inline-block;\n position: relative;\n width: 28px;\n height: 28px; }\n .mdl-spinner:not(.is-upgraded).is-active:after {\n content: \"Loading...\"; }\n .mdl-spinner.is-upgraded.is-active {\n animation: mdl-spinner__container-rotate 1568.23529412ms linear infinite; }\n\n@keyframes mdl-spinner__container-rotate {\n to {\n transform: rotate(360deg); } }\n\n.mdl-spinner__layer {\n position: absolute;\n width: 100%;\n height: 100%;\n opacity: 0; }\n\n.mdl-spinner__layer-1 {\n border-color: rgb(66,165,245); }\n .mdl-spinner--single-color .mdl-spinner__layer-1 {\n border-color: rgb(63,81,181); }\n .mdl-spinner.is-active .mdl-spinner__layer-1 {\n animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }\n\n.mdl-spinner__layer-2 {\n border-color: rgb(244,67,54); }\n .mdl-spinner--single-color .mdl-spinner__layer-2 {\n border-color: rgb(63,81,181); }\n .mdl-spinner.is-active .mdl-spinner__layer-2 {\n animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }\n\n.mdl-spinner__layer-3 {\n border-color: rgb(253,216,53); }\n .mdl-spinner--single-color .mdl-spinner__layer-3 {\n border-color: rgb(63,81,181); }\n .mdl-spinner.is-active .mdl-spinner__layer-3 {\n animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }\n\n.mdl-spinner__layer-4 {\n border-color: rgb(76,175,80); }\n .mdl-spinner--single-color .mdl-spinner__layer-4 {\n border-color: rgb(63,81,181); }\n .mdl-spinner.is-active .mdl-spinner__layer-4 {\n animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }\n\n@keyframes mdl-spinner__fill-unfill-rotate {\n 12.5% {\n transform: rotate(135deg); }\n 25% {\n transform: rotate(270deg); }\n 37.5% {\n transform: rotate(405deg); }\n 50% {\n transform: rotate(540deg); }\n 62.5% {\n transform: rotate(675deg); }\n 75% {\n transform: rotate(810deg); }\n 87.5% {\n transform: rotate(945deg); }\n to {\n transform: rotate(1080deg); } }\n\n/**\n* HACK: Even though the intention is to have the current .mdl-spinner__layer-N\n* at `opacity: 1`, we set it to `opacity: 0.99` instead since this forces Chrome\n* to do proper subpixel rendering for the elements being animated. This is\n* especially visible in Chrome 39 on Ubuntu 14.04. See:\n*\n* - https://github.com/Polymer/paper-spinner/issues/9\n* - https://code.google.com/p/chromium/issues/detail?id=436255\n*/\n@keyframes mdl-spinner__layer-1-fade-in-out {\n from {\n opacity: 0.99; }\n 25% {\n opacity: 0.99; }\n 26% {\n opacity: 0; }\n 89% {\n opacity: 0; }\n 90% {\n opacity: 0.99; }\n 100% {\n opacity: 0.99; } }\n\n@keyframes mdl-spinner__layer-2-fade-in-out {\n from {\n opacity: 0; }\n 15% {\n opacity: 0; }\n 25% {\n opacity: 0.99; }\n 50% {\n opacity: 0.99; }\n 51% {\n opacity: 0; } }\n\n@keyframes mdl-spinner__layer-3-fade-in-out {\n from {\n opacity: 0; }\n 40% {\n opacity: 0; }\n 50% {\n opacity: 0.99; }\n 75% {\n opacity: 0.99; }\n 76% {\n opacity: 0; } }\n\n@keyframes mdl-spinner__layer-4-fade-in-out {\n from {\n opacity: 0; }\n 65% {\n opacity: 0; }\n 75% {\n opacity: 0.99; }\n 90% {\n opacity: 0.99; }\n 100% {\n opacity: 0; } }\n\n/**\n* Patch the gap that appear between the two adjacent\n* div.mdl-spinner__circle-clipper while the spinner is rotating\n* (appears on Chrome 38, Safari 7.1, and IE 11).\n*\n* Update: the gap no longer appears on Chrome when .mdl-spinner__layer-N's\n* opacity is 0.99, but still does on Safari and IE.\n*/\n.mdl-spinner__gap-patch {\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 45%;\n width: 10%;\n height: 100%;\n overflow: hidden;\n border-color: inherit; }\n .mdl-spinner__gap-patch .mdl-spinner__circle {\n width: 1000%;\n left: -450%; }\n\n.mdl-spinner__circle-clipper {\n display: inline-block;\n position: relative;\n width: 50%;\n height: 100%;\n overflow: hidden;\n border-color: inherit; }\n .mdl-spinner__circle-clipper .mdl-spinner__circle {\n width: 200%; }\n\n.mdl-spinner__circle {\n box-sizing: border-box;\n height: 100%;\n border-width: 3px;\n border-style: solid;\n border-color: inherit;\n border-bottom-color: transparent !important;\n border-radius: 50%;\n animation: none;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0; }\n .mdl-spinner__left .mdl-spinner__circle {\n border-right-color: transparent !important;\n transform: rotate(129deg); }\n .mdl-spinner.is-active .mdl-spinner__left .mdl-spinner__circle {\n animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }\n .mdl-spinner__right .mdl-spinner__circle {\n left: -100%;\n border-left-color: transparent !important;\n transform: rotate(-129deg); }\n .mdl-spinner.is-active .mdl-spinner__right .mdl-spinner__circle {\n animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }\n\n@keyframes mdl-spinner__left-spin {\n from {\n transform: rotate(130deg); }\n 50% {\n transform: rotate(-5deg); }\n to {\n transform: rotate(130deg); } }\n\n@keyframes mdl-spinner__right-spin {\n from {\n transform: rotate(-130deg); }\n 50% {\n transform: rotate(5deg); }\n to {\n transform: rotate(-130deg); } }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-switch {\n position: relative;\n z-index: 1;\n vertical-align: middle;\n display: inline-block;\n box-sizing: border-box;\n width: 100%;\n height: 24px;\n margin: 0;\n padding: 0;\n overflow: visible;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n .mdl-switch.is-upgraded {\n padding-left: 28px; }\n\n.mdl-switch__input {\n line-height: 24px; }\n .mdl-switch.is-upgraded .mdl-switch__input {\n position: absolute;\n width: 0;\n height: 0;\n margin: 0;\n padding: 0;\n opacity: 0;\n -ms-appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n appearance: none;\n border: none; }\n\n.mdl-switch__track {\n background: rgba(0,0,0, 0.26);\n position: absolute;\n left: 0;\n top: 5px;\n height: 14px;\n width: 36px;\n border-radius: 14px;\n cursor: pointer; }\n .mdl-switch.is-checked .mdl-switch__track {\n background: rgba(63,81,181, 0.5); }\n .mdl-switch.is-disabled .mdl-switch__track {\n background: rgba(0,0,0, 0.12);\n cursor: auto; }\n\n.mdl-switch__thumb {\n background: rgb(250,250,250);\n position: absolute;\n left: 0;\n top: 2px;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n cursor: pointer;\n 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);\n transition-duration: 0.28s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-property: left; }\n .mdl-switch.is-checked .mdl-switch__thumb {\n background: rgb(63,81,181);\n left: 16px;\n box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 8px 0 rgba(0, 0, 0, 0.12); }\n .mdl-switch.is-disabled .mdl-switch__thumb {\n background: rgb(189,189,189);\n cursor: auto; }\n\n.mdl-switch__focus-helper {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-4px, -4px);\n display: inline-block;\n box-sizing: border-box;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: transparent; }\n .mdl-switch.is-focused .mdl-switch__focus-helper {\n box-shadow: 0 0 0px 20px rgba(0, 0, 0, 0.1);\n background-color: rgba(0, 0, 0, 0.1); }\n .mdl-switch.is-focused.is-checked .mdl-switch__focus-helper {\n box-shadow: 0 0 0px 20px rgba(63,81,181, 0.26);\n background-color: rgba(63,81,181, 0.26); }\n\n.mdl-switch__label {\n position: relative;\n cursor: pointer;\n font-size: 16px;\n line-height: 24px;\n margin: 0;\n left: 24px; }\n .mdl-switch.is-disabled .mdl-switch__label {\n color: rgb(189,189,189);\n cursor: auto; }\n\n.mdl-switch__ripple-container {\n position: absolute;\n z-index: 2;\n top: -12px;\n left: -14px;\n box-sizing: border-box;\n width: 48px;\n height: 48px;\n border-radius: 50%;\n cursor: pointer;\n overflow: hidden;\n -webkit-mask-image: -webkit-radial-gradient(circle, white, black);\n transition-duration: 0.40s;\n transition-timing-function: step-end;\n transition-property: left; }\n .mdl-switch__ripple-container .mdl-ripple {\n background: rgb(63,81,181); }\n .mdl-switch.is-disabled .mdl-switch__ripple-container {\n cursor: auto; }\n .mdl-switch.is-disabled .mdl-switch__ripple-container .mdl-ripple {\n background: transparent; }\n .mdl-switch.is-checked .mdl-switch__ripple-container {\n cursor: auto;\n left: 2px; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-tabs {\n display: block;\n width: 100%; }\n\n.mdl-tabs__tab-bar {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-content: space-between;\n align-items: flex-start;\n height: 48px;\n padding: 0 0 0 0;\n margin: 0;\n border-bottom: 1px solid rgb(224,224,224); }\n\n.mdl-tabs__tab {\n margin: 0;\n border: none;\n padding: 0 24px 0 24px;\n float: left;\n position: relative;\n display: block;\n color: red;\n text-decoration: none;\n height: 48px;\n line-height: 48px;\n text-align: center;\n font-weight: 500;\n font-size: 14px;\n text-transform: uppercase;\n color: rgba(0,0,0, 0.54);\n overflow: hidden; }\n .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active {\n color: rgba(0,0,0, 0.87); }\n .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after {\n height: 2px;\n width: 100%;\n display: block;\n content: \" \";\n bottom: 0px;\n left: 0px;\n position: absolute;\n background: rgb(63,81,181);\n animation: border-expand 0.2s cubic-bezier(0.4, 0, 0.4, 1) 0.01s alternate forwards;\n transition: all 1s cubic-bezier(0.4, 0, 1, 1); }\n .mdl-tabs__tab .mdl-tabs__ripple-container {\n display: block;\n position: absolute;\n height: 100%;\n width: 100%;\n left: 0px;\n top: 0px;\n z-index: 1;\n overflow: hidden; }\n .mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple {\n background: rgb(63,81,181); }\n\n.mdl-tabs__panel {\n display: block; }\n .mdl-tabs.is-upgraded .mdl-tabs__panel {\n display: none; }\n .mdl-tabs.is-upgraded .mdl-tabs__panel.is-active {\n display: block; }\n\n@keyframes border-expand {\n 0% {\n opacity: 0;\n width: 0; }\n 100% {\n opacity: 1;\n width: 100%; } }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-textfield {\n position: relative;\n font-size: 16px;\n display: inline-block;\n box-sizing: border-box;\n width: 300px;\n max-width: 100%;\n margin: 0;\n padding: 20px 0; }\n .mdl-textfield .mdl-button {\n position: absolute;\n bottom: 20px; }\n\n.mdl-textfield--align-right {\n text-align: right; }\n\n.mdl-textfield--full-width {\n width: 100%; }\n\n.mdl-textfield--expandable {\n min-width: 32px;\n width: auto;\n min-height: 32px; }\n\n.mdl-textfield__input {\n border: none;\n border-bottom: 1px solid rgba(0,0,0, 0.12);\n display: block;\n font-size: 16px;\n margin: 0;\n padding: 4px 0;\n width: 100%;\n background: none;\n text-align: left;\n color: inherit; }\n .mdl-textfield.is-focused .mdl-textfield__input {\n outline: none; }\n .mdl-textfield.is-invalid .mdl-textfield__input {\n border-color: rgb(222, 50, 38);\n box-shadow: none; }\n .mdl-textfield.is-disabled .mdl-textfield__input {\n background-color: transparent;\n border-bottom: 1px dotted rgba(0,0,0, 0.12);\n color: rgba(0,0,0, 0.26); }\n\n.mdl-textfield textarea.mdl-textfield__input {\n display: block; }\n\n.mdl-textfield__label {\n bottom: 0;\n color: rgba(0,0,0, 0.26);\n font-size: 16px;\n left: 0;\n right: 0;\n pointer-events: none;\n position: absolute;\n display: block;\n top: 24px;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-align: left; }\n .mdl-textfield.is-dirty .mdl-textfield__label {\n visibility: hidden; }\n .mdl-textfield--floating-label .mdl-textfield__label {\n transition-duration: 0.2s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }\n .mdl-textfield.is-disabled.is-disabled .mdl-textfield__label {\n color: rgba(0,0,0, 0.26); }\n .mdl-textfield--floating-label.is-focused .mdl-textfield__label,\n .mdl-textfield--floating-label.is-dirty .mdl-textfield__label {\n color: rgb(63,81,181);\n font-size: 12px;\n top: 4px;\n visibility: visible; }\n .mdl-textfield--floating-label.is-focused .mdl-textfield__expandable-holder .mdl-textfield__label,\n .mdl-textfield--floating-label.is-dirty .mdl-textfield__expandable-holder .mdl-textfield__label {\n top: -16px; }\n .mdl-textfield--floating-label.is-invalid .mdl-textfield__label {\n color: rgb(222, 50, 38);\n font-size: 12px; }\n .mdl-textfield__label:after {\n background-color: rgb(63,81,181);\n bottom: 20px;\n content: '';\n height: 2px;\n left: 45%;\n position: absolute;\n transition-duration: 0.2s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n visibility: hidden;\n width: 10px; }\n .mdl-textfield.is-focused .mdl-textfield__label:after {\n left: 0;\n visibility: visible;\n width: 100%; }\n .mdl-textfield.is-invalid .mdl-textfield__label:after {\n background-color: rgb(222, 50, 38); }\n\n.mdl-textfield__error {\n color: rgb(222, 50, 38);\n position: absolute;\n font-size: 12px;\n margin-top: 3px;\n visibility: hidden;\n display: block; }\n .mdl-textfield.is-invalid .mdl-textfield__error {\n visibility: visible; }\n\n.mdl-textfield__expandable-holder {\n display: inline-block;\n position: relative;\n margin-left: 32px;\n transition-duration: 0.2s;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n display: inline-block;\n max-width: 0.1px; }\n .mdl-textfield.is-focused .mdl-textfield__expandable-holder, .mdl-textfield.is-dirty .mdl-textfield__expandable-holder {\n max-width: 600px; }\n .mdl-textfield__expandable-holder .mdl-textfield__label:after {\n bottom: 0; }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-tooltip {\n transform: scale(0);\n transform-origin: top center;\n will-change: transform;\n z-index: 999;\n background: rgba(97,97,97, 0.9);\n border-radius: 2px;\n color: rgb(255,255,255);\n display: inline-block;\n font-size: 10px;\n font-weight: 500;\n line-height: 14px;\n max-width: 170px;\n position: fixed;\n top: -500px;\n left: -500px;\n padding: 8px;\n text-align: center; }\n\n.mdl-tooltip.is-active {\n animation: pulse 200ms cubic-bezier(0, 0, 0.2, 1) forwards; }\n\n.mdl-tooltip--large {\n line-height: 14px;\n font-size: 14px;\n padding: 16px; }\n\n@keyframes pulse {\n 0% {\n transform: scale(0);\n opacity: 0; }\n 50% {\n transform: scale(0.99); }\n 100% {\n transform: scale(1);\n opacity: 1;\n visibility: visible; } }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Typography */\n/* Shadows */\n/* Animations */\n.mdl-shadow--2dp {\n 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); }\n\n.mdl-shadow--3dp {\n box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 8px 0 rgba(0, 0, 0, 0.12); }\n\n.mdl-shadow--4dp {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); }\n\n.mdl-shadow--6dp {\n box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.2); }\n\n.mdl-shadow--8dp {\n box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2); }\n\n.mdl-shadow--16dp {\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2); }\n\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*\n* NOTE: Some rules here are applied using duplicate selectors.\n* This is on purpose to increase their specificity when applied.\n* For example: `.mdl-cell--1-col-phone.mdl-cell--1-col-phone`\n*/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*------------------------------------* $CONTENTS\n\\*------------------------------------*/\n/**\n * STYLE GUIDE VARIABLES------------------Declarations of Sass variables\n * -----Typography\n * -----Colors\n * -----Textfield\n * -----Switch\n * -----Spinner\n * -----Radio\n * -----Menu\n * -----List\n * -----Layout\n * -----Icon toggles\n * -----Footer\n * -----Column\n * -----Checkbox\n * -----Card\n * -----Button\n * -----Animation\n * -----Progress\n * -----Badge\n * -----Shadows\n * -----Grid\n * -----Data table\n */\n/* ========== TYPOGRAPHY ========== */\n/* We're splitting fonts into \"preferred\" and \"performance\" in order to optimize\n page loading. For important text, such as the body, we want it to load\n immediately and not wait for the web font load, whereas for other sections,\n such as headers and titles, we're OK with things taking a bit longer to load.\n We do have some optional classes and parameters in the mixins, in case you\n definitely want to make sure you're using the preferred font and don't mind\n the performance hit.\n We should be able to improve on this once CSS Font Loading L3 becomes more\n widely available.\n*/\n/* ========== COLORS ========== */\n/**\n*\n* Material design color palettes.\n* @see http://www.google.com/design/spec/style/color.html\n*\n**/\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color Palettes ========== */\n/* colors.scss */\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* ========== Color & Themes ========== */\n/* ========== Typography ========== */\n/* ========== Components ========== */\n/* ========== Standard Buttons ========== */\n/* ========== Icon Toggles ========== */\n/* ========== Radio Buttons ========== */\n/* ========== Ripple effect ========== */\n/* ========== Layout ========== */\n/* ========== Content Tabs ========== */\n/* ========== Checkboxes ========== */\n/* ========== Switches ========== */\n/* ========== Spinner ========== */\n/* ========== Text fields ========== */\n/* ========== Card ========== */\n/* ========== Sliders ========== */\n/* ========== Progress ========== */\n/* ========== List ========== */\n/* ========== Item ========== */\n/* ========== Dropdown menu ========== */\n/* ========== Tooltips ========== */\n/* ========== Footer ========== */\n/* TEXTFIELD */\n/* SWITCH */\n/* SPINNER */\n/* RADIO */\n/* MENU */\n/* LIST */\n/* LAYOUT */\n/* ICON TOGGLE */\n/* FOOTER */\n/*mega-footer*/\n/*mini-footer*/\n/* CHECKBOX */\n/* CARD */\n/* Card dimensions */\n/* Cover image */\n/* BUTTON */\n/**\n *\n * Dimensions\n *\n */\n/* ANIMATION */\n/* PROGRESS */\n/* BADGE */\n/* SHADOWS */\n/* GRID */\n/* DATA TABLE */\n/* TOOLTIP */\n.mdl-grid {\n display: flex;\n flex-flow: row wrap;\n margin: 0 auto 0 auto;\n align-items: stretch; }\n .mdl-grid.mdl-grid--no-spacing {\n padding: 0; }\n\n.mdl-cell {\n box-sizing: border-box; }\n\n.mdl-cell--top {\n align-self: flex-start; }\n\n.mdl-cell--middle {\n align-self: center; }\n\n.mdl-cell--bottom {\n align-self: flex-end; }\n\n.mdl-cell--stretch {\n align-self: stretch; }\n\n.mdl-grid.mdl-grid--no-spacing > .mdl-cell {\n margin: 0; }\n\n@media (max-width: 479px) {\n .mdl-grid {\n padding: 8px; }\n .mdl-cell {\n margin: 8px;\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell {\n width: 100%; }\n .mdl-cell--hide-phone {\n display: none !important; }\n .mdl-cell--1-col,\n .mdl-cell--1-col-phone.mdl-cell--1-col-phone {\n width: calc(25% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--1-col,\n .mdl-grid--no-spacing > .mdl-cell--1-col-phone.mdl-cell--1-col-phone {\n width: 25%; }\n .mdl-cell--2-col,\n .mdl-cell--2-col-phone.mdl-cell--2-col-phone {\n width: calc(50% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--2-col,\n .mdl-grid--no-spacing > .mdl-cell--2-col-phone.mdl-cell--2-col-phone {\n width: 50%; }\n .mdl-cell--3-col,\n .mdl-cell--3-col-phone.mdl-cell--3-col-phone {\n width: calc(75% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--3-col,\n .mdl-grid--no-spacing > .mdl-cell--3-col-phone.mdl-cell--3-col-phone {\n width: 75%; }\n .mdl-cell--4-col,\n .mdl-cell--4-col-phone.mdl-cell--4-col-phone {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--4-col,\n .mdl-grid--no-spacing > .mdl-cell--4-col-phone.mdl-cell--4-col-phone {\n width: 100%; }\n .mdl-cell--5-col,\n .mdl-cell--5-col-phone.mdl-cell--5-col-phone {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--5-col,\n .mdl-grid--no-spacing > .mdl-cell--5-col-phone.mdl-cell--5-col-phone {\n width: 100%; }\n .mdl-cell--6-col,\n .mdl-cell--6-col-phone.mdl-cell--6-col-phone {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--6-col,\n .mdl-grid--no-spacing > .mdl-cell--6-col-phone.mdl-cell--6-col-phone {\n width: 100%; }\n .mdl-cell--7-col,\n .mdl-cell--7-col-phone.mdl-cell--7-col-phone {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--7-col,\n .mdl-grid--no-spacing > .mdl-cell--7-col-phone.mdl-cell--7-col-phone {\n width: 100%; }\n .mdl-cell--8-col,\n .mdl-cell--8-col-phone.mdl-cell--8-col-phone {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--8-col,\n .mdl-grid--no-spacing > .mdl-cell--8-col-phone.mdl-cell--8-col-phone {\n width: 100%; }\n .mdl-cell--9-col,\n .mdl-cell--9-col-phone.mdl-cell--9-col-phone {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--9-col,\n .mdl-grid--no-spacing > .mdl-cell--9-col-phone.mdl-cell--9-col-phone {\n width: 100%; }\n .mdl-cell--10-col,\n .mdl-cell--10-col-phone.mdl-cell--10-col-phone {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--10-col,\n .mdl-grid--no-spacing > .mdl-cell--10-col-phone.mdl-cell--10-col-phone {\n width: 100%; }\n .mdl-cell--11-col,\n .mdl-cell--11-col-phone.mdl-cell--11-col-phone {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--11-col,\n .mdl-grid--no-spacing > .mdl-cell--11-col-phone.mdl-cell--11-col-phone {\n width: 100%; }\n .mdl-cell--12-col,\n .mdl-cell--12-col-phone.mdl-cell--12-col-phone {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--12-col,\n .mdl-grid--no-spacing > .mdl-cell--12-col-phone.mdl-cell--12-col-phone {\n width: 100%; } }\n\n@media (min-width: 480px) and (max-width: 839px) {\n .mdl-grid {\n padding: 8px; }\n .mdl-cell {\n margin: 8px;\n width: calc(50% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell {\n width: 50%; }\n .mdl-cell--hide-tablet {\n display: none !important; }\n .mdl-cell--1-col,\n .mdl-cell--1-col-tablet.mdl-cell--1-col-tablet {\n width: calc(12.5% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--1-col,\n .mdl-grid--no-spacing > .mdl-cell--1-col-tablet.mdl-cell--1-col-tablet {\n width: 12.5%; }\n .mdl-cell--2-col,\n .mdl-cell--2-col-tablet.mdl-cell--2-col-tablet {\n width: calc(25% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--2-col,\n .mdl-grid--no-spacing > .mdl-cell--2-col-tablet.mdl-cell--2-col-tablet {\n width: 25%; }\n .mdl-cell--3-col,\n .mdl-cell--3-col-tablet.mdl-cell--3-col-tablet {\n width: calc(37.5% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--3-col,\n .mdl-grid--no-spacing > .mdl-cell--3-col-tablet.mdl-cell--3-col-tablet {\n width: 37.5%; }\n .mdl-cell--4-col,\n .mdl-cell--4-col-tablet.mdl-cell--4-col-tablet {\n width: calc(50% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--4-col,\n .mdl-grid--no-spacing > .mdl-cell--4-col-tablet.mdl-cell--4-col-tablet {\n width: 50%; }\n .mdl-cell--5-col,\n .mdl-cell--5-col-tablet.mdl-cell--5-col-tablet {\n width: calc(62.5% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--5-col,\n .mdl-grid--no-spacing > .mdl-cell--5-col-tablet.mdl-cell--5-col-tablet {\n width: 62.5%; }\n .mdl-cell--6-col,\n .mdl-cell--6-col-tablet.mdl-cell--6-col-tablet {\n width: calc(75% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--6-col,\n .mdl-grid--no-spacing > .mdl-cell--6-col-tablet.mdl-cell--6-col-tablet {\n width: 75%; }\n .mdl-cell--7-col,\n .mdl-cell--7-col-tablet.mdl-cell--7-col-tablet {\n width: calc(87.5% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--7-col,\n .mdl-grid--no-spacing > .mdl-cell--7-col-tablet.mdl-cell--7-col-tablet {\n width: 87.5%; }\n .mdl-cell--8-col,\n .mdl-cell--8-col-tablet.mdl-cell--8-col-tablet {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--8-col,\n .mdl-grid--no-spacing > .mdl-cell--8-col-tablet.mdl-cell--8-col-tablet {\n width: 100%; }\n .mdl-cell--9-col,\n .mdl-cell--9-col-tablet.mdl-cell--9-col-tablet {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--9-col,\n .mdl-grid--no-spacing > .mdl-cell--9-col-tablet.mdl-cell--9-col-tablet {\n width: 100%; }\n .mdl-cell--10-col,\n .mdl-cell--10-col-tablet.mdl-cell--10-col-tablet {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--10-col,\n .mdl-grid--no-spacing > .mdl-cell--10-col-tablet.mdl-cell--10-col-tablet {\n width: 100%; }\n .mdl-cell--11-col,\n .mdl-cell--11-col-tablet.mdl-cell--11-col-tablet {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--11-col,\n .mdl-grid--no-spacing > .mdl-cell--11-col-tablet.mdl-cell--11-col-tablet {\n width: 100%; }\n .mdl-cell--12-col,\n .mdl-cell--12-col-tablet.mdl-cell--12-col-tablet {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--12-col,\n .mdl-grid--no-spacing > .mdl-cell--12-col-tablet.mdl-cell--12-col-tablet {\n width: 100%; } }\n\n@media (min-width: 840px) {\n .mdl-grid {\n padding: 8px; }\n .mdl-cell {\n margin: 8px;\n width: calc(33.3333333333% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell {\n width: 33.3333333333%; }\n .mdl-cell--hide-desktop {\n display: none !important; }\n .mdl-cell--1-col,\n .mdl-cell--1-col-desktop.mdl-cell--1-col-desktop {\n width: calc(8.3333333333% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--1-col,\n .mdl-grid--no-spacing > .mdl-cell--1-col-desktop.mdl-cell--1-col-desktop {\n width: 8.3333333333%; }\n .mdl-cell--2-col,\n .mdl-cell--2-col-desktop.mdl-cell--2-col-desktop {\n width: calc(16.6666666667% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--2-col,\n .mdl-grid--no-spacing > .mdl-cell--2-col-desktop.mdl-cell--2-col-desktop {\n width: 16.6666666667%; }\n .mdl-cell--3-col,\n .mdl-cell--3-col-desktop.mdl-cell--3-col-desktop {\n width: calc(25% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--3-col,\n .mdl-grid--no-spacing > .mdl-cell--3-col-desktop.mdl-cell--3-col-desktop {\n width: 25%; }\n .mdl-cell--4-col,\n .mdl-cell--4-col-desktop.mdl-cell--4-col-desktop {\n width: calc(33.3333333333% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--4-col,\n .mdl-grid--no-spacing > .mdl-cell--4-col-desktop.mdl-cell--4-col-desktop {\n width: 33.3333333333%; }\n .mdl-cell--5-col,\n .mdl-cell--5-col-desktop.mdl-cell--5-col-desktop {\n width: calc(41.6666666667% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--5-col,\n .mdl-grid--no-spacing > .mdl-cell--5-col-desktop.mdl-cell--5-col-desktop {\n width: 41.6666666667%; }\n .mdl-cell--6-col,\n .mdl-cell--6-col-desktop.mdl-cell--6-col-desktop {\n width: calc(50% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--6-col,\n .mdl-grid--no-spacing > .mdl-cell--6-col-desktop.mdl-cell--6-col-desktop {\n width: 50%; }\n .mdl-cell--7-col,\n .mdl-cell--7-col-desktop.mdl-cell--7-col-desktop {\n width: calc(58.3333333333% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--7-col,\n .mdl-grid--no-spacing > .mdl-cell--7-col-desktop.mdl-cell--7-col-desktop {\n width: 58.3333333333%; }\n .mdl-cell--8-col,\n .mdl-cell--8-col-desktop.mdl-cell--8-col-desktop {\n width: calc(66.6666666667% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--8-col,\n .mdl-grid--no-spacing > .mdl-cell--8-col-desktop.mdl-cell--8-col-desktop {\n width: 66.6666666667%; }\n .mdl-cell--9-col,\n .mdl-cell--9-col-desktop.mdl-cell--9-col-desktop {\n width: calc(75% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--9-col,\n .mdl-grid--no-spacing > .mdl-cell--9-col-desktop.mdl-cell--9-col-desktop {\n width: 75%; }\n .mdl-cell--10-col,\n .mdl-cell--10-col-desktop.mdl-cell--10-col-desktop {\n width: calc(83.3333333333% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--10-col,\n .mdl-grid--no-spacing > .mdl-cell--10-col-desktop.mdl-cell--10-col-desktop {\n width: 83.3333333333%; }\n .mdl-cell--11-col,\n .mdl-cell--11-col-desktop.mdl-cell--11-col-desktop {\n width: calc(91.6666666667% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--11-col,\n .mdl-grid--no-spacing > .mdl-cell--11-col-desktop.mdl-cell--11-col-desktop {\n width: 91.6666666667%; }\n .mdl-cell--12-col,\n .mdl-cell--12-col-desktop.mdl-cell--12-col-desktop {\n width: calc(100% - 16px); }\n .mdl-grid--no-spacing > .mdl-cell--12-col,\n .mdl-grid--no-spacing > .mdl-cell--12-col-desktop.mdl-cell--12-col-desktop {\n width: 100%; } }\n","/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Material Design Lite */\n\n// Variables and mixins\n@import \"variables\";\n@import \"mixins\";\n\n// Resets and dependencies\n@import \"resets/resets\";\n@import \"typography/typography\";\n\n// Components\n@import \"palette/palette\";\n@import \"ripple/ripple\";\n@import \"animation/animation\";\n@import \"badge/badge\";\n@import \"button/button\";\n@import \"card/card\";\n@import \"checkbox/checkbox\";\n@import \"data-table/data-table\";\n@import \"footer/mega_footer\";\n@import \"footer/mini_footer\";\n@import \"icon-toggle/icon-toggle\";\n@import \"menu/menu\";\n@import \"progress/progress\";\n@import \"layout/layout\";\n@import \"radio/radio\";\n@import \"slider/slider\";\n@import \"spinner/spinner\";\n@import \"switch/switch\";\n@import \"tabs/tabs\";\n@import \"textfield/textfield\";\n@import \"tooltip/tooltip\";\n@import \"shadow/shadow\";\n@import \"grid/grid\";\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/material.min.js b/material.min.js new file mode 100644 index 000000000..e791c23b8 --- /dev/null +++ b/material.min.js @@ -0,0 +1,11 @@ +/** + * material-design-lite - Material Design Components in CSS, JS and HTML + * @version v1.0.4 + * @license Apache-2.0 + * @copyright 2015 Google, Inc. + * @link https://github.com/google/material-design-lite + */ +!function(){"use strict";function e(e,s){if(e){if(s.element_.classList.contains(s.CssClasses_.MDL_JS_RIPPLE_EFFECT)){var t=document.createElement("span");t.classList.add(s.CssClasses_.MDL_RIPPLE_CONTAINER),t.classList.add(s.CssClasses_.MDL_JS_RIPPLE_EFFECT);var i=document.createElement("span");i.classList.add(s.CssClasses_.MDL_RIPPLE),t.appendChild(i),e.appendChild(t)}e.addEventListener("click",function(t){t.preventDefault();var i=e.href.split("#")[1],n=s.element_.querySelector("#"+i);s.resetTabState_(),s.resetPanelState_(),e.classList.add(s.CssClasses_.ACTIVE_CLASS),n.classList.add(s.CssClasses_.ACTIVE_CLASS)})}}function s(e,s,t,i){if(e){if(i.tabBar_.classList.contains(i.CssClasses_.JS_RIPPLE_EFFECT)){var n=document.createElement("span");n.classList.add(i.CssClasses_.RIPPLE_CONTAINER),n.classList.add(i.CssClasses_.JS_RIPPLE_EFFECT);var a=document.createElement("span");a.classList.add(i.CssClasses_.RIPPLE),n.appendChild(a),e.appendChild(n)}e.addEventListener("click",function(n){n.preventDefault();var a=e.href.split("#")[1],l=i.content_.querySelector("#"+a);i.resetTabState_(s),i.resetPanelState_(t),e.classList.add(i.CssClasses_.IS_ACTIVE),l.classList.add(i.CssClasses_.IS_ACTIVE)})}}window.componentHandler=function(){function e(e,s){for(var t=0;t_;_++){if(r=l[_],!r)throw new Error("Unable to find a registered component for the given class.");a.push(r.className),i.setAttribute("data-upgraded",a.join(","));var h=new r.classConstructor(i);h[C]=r,p.push(h);for(var u=0,m=r.callbacks.length;m>u;u++)r.callbacks[u](i);r.widget&&(i[r.className]=h);var E=document.createEvent("Events");E.initEvent("mdl-componentupgraded",!0,!0),i.dispatchEvent(E)}}function a(e){Array.isArray(e)||(e="function"==typeof e.item?Array.prototype.slice.call(e):[e]);for(var s,t=0,i=e.length;i>t;t++)s=e[t],s instanceof HTMLElement&&(s.children.length>0&&a(s.children),n(s))}function l(s){var t={classConstructor:s.constructor,className:s.classAsString,cssClass:s.cssClass,widget:void 0===s.widget?!0:s.widget,callbacks:[]};if(c.forEach(function(e){if(e.cssClass===t.cssClass)throw new Error("The provided cssClass has already been registered.");if(e.className===t.className)throw new Error("The provided className has already been registered")}),s.constructor.prototype.hasOwnProperty(C))throw new Error("MDL component classes must not have "+C+" defined as a property.");var i=e(s.classAsString,t);i||c.push(t)}function o(s,t){var i=e(s);i&&i.callbacks.push(t)}function r(){for(var e=0;e0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)&&(e.keyCode===this.Keycodes_.UP_ARROW?(e.preventDefault(),s[s.length-1].focus()):e.keyCode===this.Keycodes_.DOWN_ARROW&&(e.preventDefault(),s[0].focus()))}},_.prototype.handleItemKeyboardEvent_=function(e){if(this.element_&&this.container_){var s=this.element_.querySelectorAll("."+this.CssClasses_.ITEM+":not([disabled])");if(s&&s.length>0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)){var t=Array.prototype.slice.call(s).indexOf(e.target);if(e.keyCode===this.Keycodes_.UP_ARROW)e.preventDefault(),t>0?s[t-1].focus():s[s.length-1].focus();else if(e.keyCode===this.Keycodes_.DOWN_ARROW)e.preventDefault(),s.length>t+1?s[t+1].focus():s[0].focus();else if(e.keyCode===this.Keycodes_.SPACE||e.keyCode===this.Keycodes_.ENTER){e.preventDefault();var i=new MouseEvent("mousedown");e.target.dispatchEvent(i),i=new MouseEvent("mouseup"),e.target.dispatchEvent(i),e.target.click()}else e.keyCode===this.Keycodes_.ESCAPE&&(e.preventDefault(),this.hide())}}},_.prototype.handleItemClick_=function(e){null!==e.target.getAttribute("disabled")?e.stopPropagation():(this.closing_=!0,window.setTimeout(function(e){this.hide(),this.closing_=!1}.bind(this),this.Constant_.CLOSE_TIMEOUT))},_.prototype.applyClip_=function(e,s){this.element_.style.clip=this.element_.classList.contains(this.CssClasses_.UNALIGNED)?null:this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)?"rect(0 "+s+"px 0 "+s+"px)":this.element_.classList.contains(this.CssClasses_.TOP_LEFT)?"rect("+e+"px 0 "+e+"px 0)":this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)?"rect("+e+"px "+s+"px "+e+"px "+s+"px)":null},_.prototype.addAnimationEndListener_=function(){var e=function(){this.element_.removeEventListener("transitionend",e),this.element_.removeEventListener("webkitTransitionEnd",e),this.element_.classList.remove(this.CssClasses_.IS_ANIMATING)}.bind(this);this.element_.addEventListener("transitionend",e),this.element_.addEventListener("webkitTransitionEnd",e)},_.prototype.show=function(e){if(this.element_&&this.container_&&this.outline_){var s=this.element_.getBoundingClientRect().height,t=this.element_.getBoundingClientRect().width;this.container_.style.width=t+"px",this.container_.style.height=s+"px",this.outline_.style.width=t+"px",this.outline_.style.height=s+"px";for(var i=this.Constant_.TRANSITION_DURATION_SECONDS*this.Constant_.TRANSITION_DURATION_FRACTION,n=this.element_.querySelectorAll("."+this.CssClasses_.ITEM),a=0;a=this.maxRows&&e.preventDefault()},m.prototype.onFocus_=function(e){this.element_.classList.add(this.CssClasses_.IS_FOCUSED)},m.prototype.onBlur_=function(e){this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},m.prototype.updateClasses_=function(){this.checkDisabled(),this.checkValidity(),this.checkDirty()},m.prototype.checkDisabled=function(){this.input_.disabled?this.element_.classList.add(this.CssClasses_.IS_DISABLED):this.element_.classList.remove(this.CssClasses_.IS_DISABLED)},m.prototype.checkValidity=function(){this.input_.validity.valid?this.element_.classList.remove(this.CssClasses_.IS_INVALID):this.element_.classList.add(this.CssClasses_.IS_INVALID)},m.prototype.checkDirty=function(){this.input_.value&&this.input_.value.length>0?this.element_.classList.add(this.CssClasses_.IS_DIRTY):this.element_.classList.remove(this.CssClasses_.IS_DIRTY)},m.prototype.disable=function(){this.input_.disabled=!0,this.updateClasses_()},m.prototype.enable=function(){this.input_.disabled=!1,this.updateClasses_()},m.prototype.change=function(e){e&&(this.input_.value=e),this.updateClasses_()},m.prototype.init=function(){this.element_&&(this.label_=this.element_.querySelector("."+this.CssClasses_.LABEL),this.input_=this.element_.querySelector("."+this.CssClasses_.INPUT),this.input_&&(this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)&&(this.maxRows=parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE),10),isNaN(this.maxRows)&&(this.maxRows=this.Constant_.NO_MAX_ROWS)),this.boundUpdateClassesHandler=this.updateClasses_.bind(this),this.boundFocusHandler=this.onFocus_.bind(this),this.boundBlurHandler=this.onBlur_.bind(this),this.input_.addEventListener("input",this.boundUpdateClassesHandler),this.input_.addEventListener("focus",this.boundFocusHandler),this.input_.addEventListener("blur",this.boundBlurHandler),this.maxRows!==this.Constant_.NO_MAX_ROWS&&(this.boundKeyDownHandler=this.onKeyDown_.bind(this),this.input_.addEventListener("keydown",this.boundKeyDownHandler)),this.updateClasses_(),this.element_.classList.add(this.CssClasses_.IS_UPGRADED)))},m.prototype.mdlDowngrade_=function(){this.input_.removeEventListener("input",this.boundUpdateClassesHandler),this.input_.removeEventListener("focus",this.boundFocusHandler),this.input_.removeEventListener("blur",this.boundBlurHandler),this.boundKeyDownHandler&&this.input_.removeEventListener("keydown",this.boundKeyDownHandler)},componentHandler.register({constructor:m,classAsString:"MaterialTextfield",cssClass:"mdl-js-textfield",widget:!0});var E=function(e){this.element_=e,this.init()};window.MaterialTooltip=E,E.prototype.Constant_={},E.prototype.CssClasses_={IS_ACTIVE:"is-active"},E.prototype.handleMouseEnter_=function(e){e.stopPropagation();var s=e.target.getBoundingClientRect(),t=s.left+s.width/2,i=-1*(this.element_.offsetWidth/2);0>t+i?(this.element_.style.left=0,this.element_.style.marginLeft=0):(this.element_.style.left=t+"px",this.element_.style.marginLeft=i+"px"),this.element_.style.top=s.top+s.height+10+"px",this.element_.classList.add(this.CssClasses_.IS_ACTIVE),window.addEventListener("scroll",this.boundMouseLeaveHandler,!1),window.addEventListener("touchmove",this.boundMouseLeaveHandler,!1)},E.prototype.handleMouseLeave_=function(e){e.stopPropagation(),this.element_.classList.remove(this.CssClasses_.IS_ACTIVE),window.removeEventListener("scroll",this.boundMouseLeaveHandler),window.removeEventListener("touchmove",this.boundMouseLeaveHandler,!1)},E.prototype.init=function(){if(this.element_){var e=this.element_.getAttribute("for");e&&(this.forElement_=document.getElementById(e)),this.forElement_&&(this.forElement_.getAttribute("tabindex")||this.forElement_.setAttribute("tabindex","0"),this.boundMouseEnterHandler=this.handleMouseEnter_.bind(this),this.boundMouseLeaveHandler=this.handleMouseLeave_.bind(this),this.forElement_.addEventListener("mouseenter",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("click",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("blur",this.boundMouseLeaveHandler),this.forElement_.addEventListener("touchstart",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("mouseleave",this.boundMouseLeaveHandler))}},E.prototype.mdlDowngrade_=function(){this.forElement_&&(this.forElement_.removeEventListener("mouseenter",this.boundMouseEnterHandler,!1),this.forElement_.removeEventListener("click",this.boundMouseEnterHandler,!1),this.forElement_.removeEventListener("touchstart",this.boundMouseEnterHandler,!1),this.forElement_.removeEventListener("mouseleave",this.boundMouseLeaveHandler))},componentHandler.register({constructor:E,classAsString:"MaterialTooltip",cssClass:"mdl-tooltip"});var L=function(e){this.element_=e,this.init()};window.MaterialLayout=L,L.prototype.Constant_={MAX_WIDTH:"(max-width: 1024px)",TAB_SCROLL_PIXELS:100,MENU_ICON:"menu",CHEVRON_LEFT:"chevron_left",CHEVRON_RIGHT:"chevron_right"},L.prototype.Mode_={STANDARD:0,SEAMED:1,WATERFALL:2,SCROLL:3},L.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",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"},L.prototype.contentScrollHandler_=function(){this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)||(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),this.header_.classList.add(this.CssClasses_.IS_ANIMATING)):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),this.header_.classList.add(this.CssClasses_.IS_ANIMATING)))},L.prototype.screenSizeHandler_=function(){this.screenSizeMediaQuery_.matches?this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN):(this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN),this.drawer_&&this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN))},L.prototype.drawerToggleHandler_=function(){this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN)},L.prototype.headerTransitionEndHandler_=function(){this.header_.classList.remove(this.CssClasses_.IS_ANIMATING)},L.prototype.headerClickHandler_=function(){this.header_.classList.contains(this.CssClasses_.IS_COMPACT)&&(this.header_.classList.remove(this.CssClasses_.IS_COMPACT),this.header_.classList.add(this.CssClasses_.IS_ANIMATING))},L.prototype.resetTabState_=function(e){for(var s=0;s0?h.classList.add(this.CssClasses_.IS_ACTIVE):h.classList.remove(this.CssClasses_.IS_ACTIVE),this.tabBar_.scrollLeft0)return;this.setFrameCount(1);var i,n,a=e.currentTarget.getBoundingClientRect();if(0===e.clientX&&0===e.clientY)i=Math.round(a.width/2),n=Math.round(a.height/2);else{var l=e.clientX?e.clientX:e.touches[0].clientX,o=e.clientY?e.clientY:e.touches[0].clientY;i=Math.round(l-a.left),n=Math.round(o-a.top)}this.setRippleXY(i,n),this.setRippleStyles(!0),window.requestAnimationFrame(this.animFrameHandler.bind(this))}},f.prototype.upHandler_=function(e){e&&2!==e.detail&&this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE),window.setTimeout(function(){this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE)}.bind(this),0)},f.prototype.init=function(){if(this.element_){var e=this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);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,this.ignoringMouseDown_=!1,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),this.getFrameCount=function(){return this.frameCount_},this.setFrameCount=function(e){this.frameCount_=e},this.getRippleElement=function(){return this.rippleElement_},this.setRippleXY=function(e,s){this.x_=e,this.y_=s},this.setRippleStyles=function(s){if(null!==this.rippleElement_){var t,i,n,a="translate("+this.x_+"px, "+this.y_+"px)";s?(i=this.Constant_.INITIAL_SCALE,n=this.Constant_.INITIAL_SIZE):(i=this.Constant_.FINAL_SCALE,n=this.rippleSize_+"px",e&&(a="translate("+this.boundWidth/2+"px, "+this.boundHeight/2+"px)")),t="translate(-50%, -50%) "+a+i,this.rippleElement_.style.webkitTransform=t,this.rippleElement_.style.msTransform=t,this.rippleElement_.style.transform=t,s?this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING):this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING)}},this.animFrameHandler=function(){this.frameCount_-->0?window.requestAnimationFrame(this.animFrameHandler.bind(this)):this.setRippleStyles(!1)})}},f.prototype.mdlDowngrade_=function(){this.element_.removeEventListener("mousedown",this.boundDownHandler),this.element_.removeEventListener("touchstart",this.boundDownHandler),this.element_.removeEventListener("mouseup",this.boundUpHandler),this.element_.removeEventListener("mouseleave",this.boundUpHandler),this.element_.removeEventListener("touchend",this.boundUpHandler),this.element_.removeEventListener("blur",this.boundUpHandler)},componentHandler.register({constructor:f,classAsString:"MaterialRipple",cssClass:"mdl-js-ripple-effect",widget:!1})}(); +//# sourceMappingURL=material.min.js.map \ No newline at end of file diff --git a/material.min.js.map b/material.min.js.map new file mode 100644 index 000000000..adba41fd2 --- /dev/null +++ b/material.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["mdlComponentHandler.js","tabs.js","layout.js","rAF.js","button.js","checkbox.js","icon-toggle.js","menu.js","progress.js","radio.js","slider.js","spinner.js","switch.js","textfield.js","tooltip.js","data-table.js","ripple.js","material.js"],"names":["MaterialTab","tab","ctx","element_","classList","contains","CssClasses_","MDL_JS_RIPPLE_EFFECT","rippleContainer","document","createElement","add","MDL_RIPPLE_CONTAINER","ripple","MDL_RIPPLE","appendChild","addEventListener","e","preventDefault","href","split","panel","querySelector","resetTabState_","resetPanelState_","ACTIVE_CLASS","MaterialLayoutTab","tabs","panels","layout","tabBar_","JS_RIPPLE_EFFECT","RIPPLE_CONTAINER","RIPPLE","content_","IS_ACTIVE","window","componentHandler","findRegisteredClass_","name","optReplace","i","registeredComponents_","length","className","undefined","getUpgradedListOfElement_","element","dataUpgraded","getAttribute","isElementUpgraded_","jsClass","upgradedList","indexOf","upgradeDomInternal","optJsClass","optCssClass","cssClass","registeredClass","elements","querySelectorAll","n","upgradeElementInternal","Element","Error","classesToUpgrade","push","forEach","component","setAttribute","join","instance","classConstructor","componentConfigProperty_","createdComponents_","j","m","callbacks","widget","ev","createEvent","initEvent","dispatchEvent","upgradeElementsInternal","Array","isArray","item","prototype","slice","call","HTMLElement","children","registerInternal","config","newConfig","constructor","classAsString","hasOwnProperty","found","registerUpgradedCallbackInternal","callback","regClass","upgradeAllRegisteredInternal","findCreatedComponentByNodeInternal","node","deconstructComponentInternal","downgradeMethod_","componentIndex","splice","upgrades","componentPlace","downgradeNodesInternal","nodes","downgradeNode","NodeList","Node","upgradeDom","upgradeElement","upgradeElements","upgradeAllRegistered","registerUpgradedCallback","register","downgradeElements","documentElement","ComponentConfig","Component","Date","now","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","test","navigator","userAgent","lastTime","nextTime","Math","max","setTimeout","clearTimeout","MaterialButton","this","init","Constant_","RIPPLE_EFFECT","blurHandler_","event","blur","disable","disabled","enable","rippleElement_","boundRippleBlurHandler","bind","boundButtonBlurHandler","mdlDowngrade_","removeEventListener","MaterialCheckbox","TINY_TIMEOUT","INPUT","BOX_OUTLINE","FOCUS_HELPER","TICK_OUTLINE","RIPPLE_IGNORE_EVENTS","RIPPLE_CENTER","IS_FOCUSED","IS_DISABLED","IS_CHECKED","IS_UPGRADED","onChange_","updateClasses_","onFocus_","onBlur_","remove","onMouseUp_","blur_","checkDisabled","checkToggleState","inputElement_","checked","check","uncheck","boxOutline","tickContainer","tickOutline","rippleContainerElement_","boundRippleMouseUp","boundInputOnChange","boundInputOnFocus","boundInputOnBlur","boundElementMouseUp","MaterialIconToggle","boundElementOnMouseUp","MaterialMenu","TRANSITION_DURATION_SECONDS","TRANSITION_DURATION_FRACTION","CLOSE_TIMEOUT","Keycodes_","ENTER","ESCAPE","SPACE","UP_ARROW","DOWN_ARROW","CONTAINER","OUTLINE","ITEM","ITEM_RIPPLE_CONTAINER","IS_VISIBLE","IS_ANIMATING","BOTTOM_LEFT","BOTTOM_RIGHT","TOP_LEFT","TOP_RIGHT","UNALIGNED","container","parentElement","insertBefore","removeChild","container_","outline","outline_","forElId","forEl","getElementById","forElement_","handleForClick_","handleForKeyboardEvent_","items","boundItemKeydown","handleItemKeyboardEvent_","boundItemClick","handleItemClick_","tabIndex","evt","rect","getBoundingClientRect","forRect","style","right","top","offsetTop","offsetHeight","left","offsetLeft","bottom","toggle","keyCode","focus","currentIndex","target","MouseEvent","click","hide","stopPropagation","closing_","applyClip_","height","width","clip","addAnimationEndListener_","cleanup","show","transitionDuration","itemDelay","transitionDelay","MaterialProgress","INDETERMINATE_CLASS","setProgress","p","progressbar_","setBuffer","bufferbar_","auxbar_","el","firstChild","MaterialRadio","JS_RADIO","RADIO_BTN","RADIO_OUTER_CIRCLE","RADIO_INNER_CIRCLE","radios","getElementsByClassName","button","btnElement_","onMouseup_","outerCircle","innerCircle","MaterialSlider","isIE_","msPointerEnabled","IE_CONTAINER","SLIDER_CONTAINER","BACKGROUND_FLEX","BACKGROUND_LOWER","BACKGROUND_UPPER","IS_LOWEST_VALUE","onInput_","updateValueStyles_","onContainerMouseDown_","newEvent","buttons","clientX","clientY","y","fraction","value","min","backgroundLower_","flex","webkitFlex","backgroundUpper_","change","containerIE","backgroundFlex","boundInputHandler","boundChangeHandler","boundMouseUpHandler","boundContainerMouseDownHandler","MaterialSpinner","MDL_SPINNER_LAYER_COUNT","MDL_SPINNER_LAYER","MDL_SPINNER_CIRCLE_CLIPPER","MDL_SPINNER_CIRCLE","MDL_SPINNER_GAP_PATCH","MDL_SPINNER_LEFT","MDL_SPINNER_RIGHT","createLayer","index","layer","leftClipper","gapPatch","rightClipper","circleOwners","circle","stop","start","MaterialSwitch","TRACK","THUMB","on","off","track","thumb","focusHelper","boundFocusHandler","boundBlurHandler","MaterialTabs","TAB_CLASS","PANEL_CLASS","UPGRADED_CLASS","MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS","initTabs_","tabs_","panels_","k","MaterialTextfield","maxRows","NO_MAX_ROWS","MAX_ROWS_ATTRIBUTE","LABEL","IS_DIRTY","IS_INVALID","onKeyDown_","currentRowCount","checkValidity","checkDirty","input_","validity","valid","label_","hasAttribute","parseInt","isNaN","boundUpdateClassesHandler","boundKeyDownHandler","MaterialTooltip","handleMouseEnter_","props","marginLeft","offsetWidth","boundMouseLeaveHandler","handleMouseLeave_","boundMouseEnterHandler","MaterialLayout","MAX_WIDTH","TAB_SCROLL_PIXELS","MENU_ICON","CHEVRON_LEFT","CHEVRON_RIGHT","Mode_","STANDARD","SEAMED","WATERFALL","SCROLL","HEADER","DRAWER","CONTENT","DRAWER_BTN","ICON","HEADER_SEAMED","HEADER_WATERFALL","HEADER_SCROLL","FIXED_HEADER","OBFUSCATOR","TAB_BAR","TAB_CONTAINER","TAB","TAB_BAR_BUTTON","TAB_BAR_LEFT_BUTTON","TAB_BAR_RIGHT_BUTTON","PANEL","HAS_DRAWER","HAS_TABS","HAS_SCROLLING_HEADER","CASTING_SHADOW","IS_COMPACT","IS_SMALL_SCREEN","IS_DRAWER_OPEN","ON_LARGE_SCREEN","ON_SMALL_SCREEN","contentScrollHandler_","header_","scrollTop","screenSizeHandler_","screenSizeMediaQuery_","matches","drawer_","drawerToggleHandler_","headerTransitionEndHandler_","headerClickHandler_","tabBar","directChildren","childNodes","c","child","mode","matchMedia","addListener","eatEvent","drawerButton","drawerButtonIcon","textContent","obfuscator","tabContainer","leftButton","leftButtonIcon","scrollLeft","rightButton","rightButtonIcon","tabScrollHandler","scrollWidth","MaterialDataTable","DATA_TABLE","SELECTABLE","IS_SELECTED","selectRow_","checkbox","row","rows","createCheckbox_","label","type","firstHeader","th","headerCheckbox","firstCell","td","rowCheckbox","MaterialRipple","INITIAL_SCALE","INITIAL_SIZE","INITIAL_OPACITY","FINAL_OPACITY","FINAL_SCALE","RIPPLE_EFFECT_IGNORE_EVENTS","downHandler_","boundHeight","boundWidth","rippleSize_","sqrt","ignoringMouseDown_","frameCount","getFrameCount","setFrameCount","x","bound","currentTarget","round","touches","setRippleXY","setRippleStyles","animFrameHandler","upHandler_","detail","recentering","frameCount_","x_","y_","boundDownHandler","boundUpHandler","fC","getRippleElement","newX","newY","transformString","scale","size","offset","webkitTransform","msTransform","transform"],"mappings":"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","file":"material.min.js","sourcesContent":["/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A component handler interface using the revealing module design pattern.\n * More details on this design pattern here:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @author Jason Mayes.\n */\n/* exported componentHandler */\nwindow.componentHandler = (function() {\n 'use strict';\n\n /** @type {!Array} */\n var registeredComponents_ = [];\n\n /** @type {!Array} */\n var createdComponents_ = [];\n\n var downgradeMethod_ = 'mdlDowngrade_';\n var componentConfigProperty_ = 'mdlComponentConfigInternal_';\n\n /**\n * Searches registered components for a class we are interested in using.\n * Optionally replaces a match with passed object if specified.\n *\n * @param {String} name The name of a class we want to use.\n * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.\n * @return {!Object|Boolean}\n * @private\n */\n function findRegisteredClass_(name, optReplace) {\n for (var i = 0; i < registeredComponents_.length; i++) {\n if (registeredComponents_[i].className === name) {\n if (optReplace !== undefined) {\n registeredComponents_[i] = optReplace;\n }\n return registeredComponents_[i];\n }\n }\n return false;\n }\n\n /**\n * Returns an array of the classNames of the upgraded classes on the element.\n *\n * @param {!HTMLElement} element The element to fetch data from.\n * @return {!Array}\n * @private\n */\n function getUpgradedListOfElement_(element) {\n var dataUpgraded = element.getAttribute('data-upgraded');\n // Use `['']` as default value to conform the `,name,name...` style.\n return dataUpgraded === null ? [''] : dataUpgraded.split(',');\n }\n\n /**\n * Returns true if the given element has already been upgraded for the given\n * class.\n *\n * @param {!HTMLElement} element The element we want to check.\n * @param {String} jsClass The class to check for.\n * @returns {Boolean}\n * @private\n */\n function isElementUpgraded_(element, jsClass) {\n var upgradedList = getUpgradedListOfElement_(element);\n return upgradedList.indexOf(jsClass) !== -1;\n }\n\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {String=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {String=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n function upgradeDomInternal(optJsClass, optCssClass) {\n if (optJsClass === undefined && optCssClass === undefined) {\n for (var i = 0; i < registeredComponents_.length; i++) {\n upgradeDomInternal(registeredComponents_[i].className,\n registeredComponents_[i].cssClass);\n }\n } else {\n var jsClass = /** @type {String} */ (optJsClass);\n if (optCssClass === undefined) {\n var registeredClass = findRegisteredClass_(jsClass);\n if (registeredClass) {\n optCssClass = registeredClass.cssClass;\n }\n }\n\n var elements = document.querySelectorAll('.' + optCssClass);\n for (var n = 0; n < elements.length; n++) {\n upgradeElementInternal(elements[n], jsClass);\n }\n }\n }\n\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!HTMLElement} element The element we wish to upgrade.\n * @param {String=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n function upgradeElementInternal(element, optJsClass) {\n // Verify argument type.\n if (!(typeof element === 'object' && element instanceof Element)) {\n throw new Error('Invalid argument provided to upgrade MDL element.');\n }\n var upgradedList = getUpgradedListOfElement_(element);\n var classesToUpgrade = [];\n // If jsClass is not provided scan the registered components to find the\n // ones matching the element's CSS classList.\n if (!optJsClass) {\n var classList = element.classList;\n registeredComponents_.forEach(function(component) {\n // Match CSS & Not to be upgraded & Not upgraded.\n if (classList.contains(component.cssClass) &&\n classesToUpgrade.indexOf(component) === -1 &&\n !isElementUpgraded_(element, component.className)) {\n classesToUpgrade.push(component);\n }\n });\n } else if (!isElementUpgraded_(element, optJsClass)) {\n classesToUpgrade.push(findRegisteredClass_(optJsClass));\n }\n\n // Upgrade the element for each classes.\n for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {\n registeredClass = classesToUpgrade[i];\n if (registeredClass) {\n // Mark element as upgraded.\n upgradedList.push(registeredClass.className);\n element.setAttribute('data-upgraded', upgradedList.join(','));\n var instance = new registeredClass.classConstructor(element);\n instance[componentConfigProperty_] = registeredClass;\n createdComponents_.push(instance);\n // Call any callbacks the user has registered with this component type.\n for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {\n registeredClass.callbacks[j](element);\n }\n\n if (registeredClass.widget) {\n // Assign per element instance for control over API\n element[registeredClass.className] = instance;\n }\n } else {\n throw new Error(\n 'Unable to find a registered component for the given class.');\n }\n\n var ev = document.createEvent('Events');\n ev.initEvent('mdl-componentupgraded', true, true);\n element.dispatchEvent(ev);\n }\n }\n\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!HTMLElement|!Array|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n function upgradeElementsInternal(elements) {\n if (!Array.isArray(elements)) {\n if (typeof elements.item === 'function') {\n elements = Array.prototype.slice.call(/** @type {Array} */ (elements));\n } else {\n elements = [elements];\n }\n }\n for (var i = 0, n = elements.length, element; i < n; i++) {\n element = elements[i];\n if (element instanceof HTMLElement) {\n if (element.children.length > 0) {\n upgradeElementsInternal(element.children);\n }\n upgradeElementInternal(element);\n }\n }\n }\n\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {{constructor: !Function, classAsString: String, cssClass: String, widget: String}} config\n */\n function registerInternal(config) {\n var newConfig = /** @type {componentHandler.ComponentConfig} */ ({\n 'classConstructor': config.constructor,\n 'className': config.classAsString,\n 'cssClass': config.cssClass,\n 'widget': config.widget === undefined ? true : config.widget,\n 'callbacks': []\n });\n\n registeredComponents_.forEach(function(item) {\n if (item.cssClass === newConfig.cssClass) {\n throw new Error('The provided cssClass has already been registered.');\n }\n if (item.className === newConfig.className) {\n throw new Error('The provided className has already been registered');\n }\n });\n\n if (config.constructor.prototype\n .hasOwnProperty(componentConfigProperty_)) {\n throw new Error(\n 'MDL component classes must not have ' + componentConfigProperty_ +\n ' defined as a property.');\n }\n\n var found = findRegisteredClass_(config.classAsString, newConfig);\n\n if (!found) {\n registeredComponents_.push(newConfig);\n }\n }\n\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {String} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n function registerUpgradedCallbackInternal(jsClass, callback) {\n var regClass = findRegisteredClass_(jsClass);\n if (regClass) {\n regClass.callbacks.push(callback);\n }\n }\n\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n function upgradeAllRegisteredInternal() {\n for (var n = 0; n < registeredComponents_.length; n++) {\n upgradeDomInternal(registeredComponents_[n].className);\n }\n }\n\n /**\n * Finds a created component by a given DOM node.\n *\n * @param {!Node} node\n * @return {*}\n */\n function findCreatedComponentByNodeInternal(node) {\n for (var n = 0; n < createdComponents_.length; n++) {\n var component = createdComponents_[n];\n if (component.element_ === node) {\n return component;\n }\n }\n }\n\n /**\n * Check the component for the downgrade method.\n * Execute if found.\n * Remove component from createdComponents list.\n *\n * @param {*} component\n */\n function deconstructComponentInternal(component) {\n if (component &&\n component[componentConfigProperty_]\n .classConstructor.prototype\n .hasOwnProperty(downgradeMethod_)) {\n component[downgradeMethod_]();\n var componentIndex = createdComponents_.indexOf(component);\n createdComponents_.splice(componentIndex, 1);\n\n var upgrades = component.element_.getAttribute('data-upgraded').split(',');\n var componentPlace = upgrades.indexOf(\n component[componentConfigProperty_].classAsString);\n upgrades.splice(componentPlace, 1);\n component.element_.setAttribute('data-upgraded', upgrades.join(','));\n\n var ev = document.createEvent('Events');\n ev.initEvent('mdl-componentdowngraded', true, true);\n component.element_.dispatchEvent(ev);\n }\n }\n\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array|!NodeList} nodes\n */\n function downgradeNodesInternal(nodes) {\n var downgradeNode = function(node) {\n deconstructComponentInternal(findCreatedComponentByNodeInternal(node));\n };\n if (nodes instanceof Array || nodes instanceof NodeList) {\n for (var n = 0; n < nodes.length; n++) {\n downgradeNode(nodes[n]);\n }\n } else if (nodes instanceof Node) {\n downgradeNode(nodes);\n } else {\n throw new Error('Invalid argument provided to downgrade MDL nodes.');\n }\n }\n\n // Now return the functions that should be made public with their publicly\n // facing names...\n return {\n upgradeDom: upgradeDomInternal,\n upgradeElement: upgradeElementInternal,\n upgradeElements: upgradeElementsInternal,\n upgradeAllRegistered: upgradeAllRegisteredInternal,\n registerUpgradedCallback: registerUpgradedCallbackInternal,\n register: registerInternal,\n downgradeElements: downgradeNodesInternal\n };\n})();\n\nwindow.addEventListener('load', function() {\n 'use strict';\n\n /**\n * Performs a \"Cutting the mustard\" test. If the browser supports the features\n * tested, adds a mdl-js class to the element. It then upgrades all MDL\n * components requiring JavaScript.\n */\n if ('classList' in document.createElement('div') &&\n 'querySelector' in document &&\n 'addEventListener' in window && Array.prototype.forEach) {\n document.documentElement.classList.add('mdl-js');\n componentHandler.upgradeAllRegistered();\n } else {\n componentHandler.upgradeElement =\n componentHandler.register = function() {};\n }\n});\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: !Function,\n * className: String,\n * cssClass: String,\n * widget: String,\n * callbacks: !Array\n * }}\n */\ncomponentHandler.ComponentConfig; // jshint ignore:line\n\n/**\n * Created component (i.e., upgraded element) type as managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * element_: !HTMLElement,\n * className: String,\n * classAsString: String,\n * cssClass: String,\n * widget: String\n * }}\n */\ncomponentHandler.Component; // jshint ignore:line\n","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tabs MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTabs = function MaterialTabs(element) {\n // Stores the HTML element.\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialTabs = MaterialTabs;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String}\n * @private\n */\nMaterialTabs.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialTabs.prototype.CssClasses_ = {\n TAB_CLASS: 'mdl-tabs__tab',\n PANEL_CLASS: 'mdl-tabs__panel',\n ACTIVE_CLASS: 'is-active',\n UPGRADED_CLASS: 'is-upgraded',\n MDL_JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n MDL_RIPPLE_CONTAINER: 'mdl-tabs__ripple-container',\n MDL_RIPPLE: 'mdl-ripple',\n MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events'\n};\n/**\n * Handle clicks to a tabs component\n *\n * @private\n */\nMaterialTabs.prototype.initTabs_ = function () {\n if (this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n this.tabs_ = this.element_.querySelectorAll('.' + this.CssClasses_.TAB_CLASS);\n this.panels_ = this.element_.querySelectorAll('.' + this.CssClasses_.PANEL_CLASS);\n // Create new tabs for each tab element\n for (var i = 0; i < this.tabs_.length; i++) {\n new MaterialTab(this.tabs_[i], this);\n }\n this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetTabState_ = function () {\n for (var k = 0; k < this.tabs_.length; k++) {\n this.tabs_[k].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetPanelState_ = function () {\n for (var j = 0; j < this.panels_.length; j++) {\n this.panels_[j].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Initialize element.\n */\nMaterialTabs.prototype.init = function () {\n if (this.element_) {\n this.initTabs_();\n }\n};\nfunction MaterialTab(tab, ctx) {\n if (tab) {\n if (ctx.element_.classList.contains(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(ctx.CssClasses_.MDL_RIPPLE_CONTAINER);\n rippleContainer.classList.add(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(ctx.CssClasses_.MDL_RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n tab.addEventListener('click', function (e) {\n e.preventDefault();\n var href = tab.href.split('#')[1];\n var panel = ctx.element_.querySelector('#' + href);\n ctx.resetTabState_();\n ctx.resetPanelState_();\n tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n });\n }\n}\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTabs,\n classAsString: 'MaterialTabs',\n cssClass: 'mdl-js-tabs'\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Layout MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialLayout = function MaterialLayout(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialLayout = MaterialLayout;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialLayout.prototype.Constant_ = {\n MAX_WIDTH: '(max-width: 1024px)',\n TAB_SCROLL_PIXELS: 100,\n MENU_ICON: 'menu',\n CHEVRON_LEFT: 'chevron_left',\n CHEVRON_RIGHT: 'chevron_right'\n};\n/**\n * Modes.\n *\n * @enum {Number}\n * @private\n */\nMaterialLayout.prototype.Mode_ = {\n STANDARD: 0,\n SEAMED: 1,\n WATERFALL: 2,\n SCROLL: 3\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialLayout.prototype.CssClasses_ = {\n CONTAINER: 'mdl-layout__container',\n HEADER: 'mdl-layout__header',\n DRAWER: 'mdl-layout__drawer',\n CONTENT: 'mdl-layout__content',\n DRAWER_BTN: 'mdl-layout__drawer-button',\n ICON: 'material-icons',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-layout__tab-ripple-container',\n RIPPLE: 'mdl-ripple',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n HEADER_SEAMED: 'mdl-layout__header--seamed',\n HEADER_WATERFALL: 'mdl-layout__header--waterfall',\n HEADER_SCROLL: 'mdl-layout__header--scroll',\n FIXED_HEADER: 'mdl-layout--fixed-header',\n OBFUSCATOR: 'mdl-layout__obfuscator',\n TAB_BAR: 'mdl-layout__tab-bar',\n TAB_CONTAINER: 'mdl-layout__tab-bar-container',\n TAB: 'mdl-layout__tab',\n TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',\n TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',\n TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',\n PANEL: 'mdl-layout__tab-panel',\n HAS_DRAWER: 'has-drawer',\n HAS_TABS: 'has-tabs',\n HAS_SCROLLING_HEADER: 'has-scrolling-header',\n CASTING_SHADOW: 'is-casting-shadow',\n IS_COMPACT: 'is-compact',\n IS_SMALL_SCREEN: 'is-small-screen',\n IS_DRAWER_OPEN: 'is-visible',\n IS_ACTIVE: 'is-active',\n IS_UPGRADED: 'is-upgraded',\n IS_ANIMATING: 'is-animating',\n ON_LARGE_SCREEN: 'mdl-layout--large-screen-only',\n ON_SMALL_SCREEN: 'mdl-layout--small-screen-only'\n};\n/**\n * Handles scrolling on the content.\n *\n * @private\n */\nMaterialLayout.prototype.contentScrollHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {\n return;\n }\n if (this.content_.scrollTop > 0 && !this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.add(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n } else if (this.content_.scrollTop <= 0 && this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n};\n/**\n * Handles changes in screen size.\n *\n * @private\n */\nMaterialLayout.prototype.screenSizeHandler_ = function () {\n if (this.screenSizeMediaQuery_.matches) {\n this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);\n // Collapse drawer (if any) when moving to a large screen size.\n if (this.drawer_) {\n this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n }\n }\n};\n/**\n * Handles toggling of the drawer.\n *\n * @private\n */\nMaterialLayout.prototype.drawerToggleHandler_ = function () {\n this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n};\n/**\n * Handles (un)setting the `is-animating` class\n *\n * @private\n */\nMaterialLayout.prototype.headerTransitionEndHandler_ = function () {\n this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);\n};\n/**\n * Handles expanding the header on click\n *\n * @private\n */\nMaterialLayout.prototype.headerClickHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetTabState_ = function (tabBar) {\n for (var k = 0; k < tabBar.length; k++) {\n tabBar[k].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetPanelState_ = function (panels) {\n for (var j = 0; j < panels.length; j++) {\n panels[j].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Initialize element.\n */\nMaterialLayout.prototype.init = function () {\n if (this.element_) {\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n var directChildren = this.element_.childNodes;\n for (var c = 0; c < directChildren.length; c++) {\n var child = directChildren[c];\n if (child.classList && child.classList.contains(this.CssClasses_.HEADER)) {\n this.header_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.DRAWER)) {\n this.drawer_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.CONTENT)) {\n this.content_ = child;\n }\n }\n if (this.header_) {\n this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR);\n }\n var mode = this.Mode_.STANDARD;\n // Keep an eye on screen size, and add/remove auxiliary class for styling\n // of small screens.\n this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH);\n this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));\n this.screenSizeHandler_();\n if (this.header_) {\n if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {\n mode = this.Mode_.SEAMED;\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_WATERFALL)) {\n mode = this.Mode_.WATERFALL;\n this.header_.addEventListener('transitionend', this.headerTransitionEndHandler_.bind(this));\n this.header_.addEventListener('click', this.headerClickHandler_.bind(this));\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_SCROLL)) {\n mode = this.Mode_.SCROLL;\n container.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER);\n }\n if (mode === this.Mode_.STANDARD) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.SEAMED || mode === this.Mode_.SCROLL) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.WATERFALL) {\n // Add and remove shadows depending on scroll position.\n // Also add/remove auxiliary class for styling of the compact version of\n // the header.\n this.content_.addEventListener('scroll', this.contentScrollHandler_.bind(this));\n this.contentScrollHandler_();\n }\n }\n var eatEvent = function (ev) {\n ev.preventDefault();\n };\n // Add drawer toggling button to our layout, if we have an openable drawer.\n if (this.drawer_) {\n var drawerButton = document.createElement('div');\n drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);\n if (this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN)) {\n //If drawer has ON_LARGE_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_LARGE_SCREEN);\n } else if (this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN)) {\n //If drawer has ON_SMALL_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_SMALL_SCREEN);\n }\n var drawerButtonIcon = document.createElement('i');\n drawerButtonIcon.classList.add(this.CssClasses_.ICON);\n drawerButtonIcon.textContent = this.Constant_.MENU_ICON;\n drawerButton.appendChild(drawerButtonIcon);\n drawerButton.addEventListener('click', this.drawerToggleHandler_.bind(this));\n // Add a class if the layout has a drawer, for altering the left padding.\n // Adds the HAS_DRAWER to the elements since this.header_ may or may\n // not be present.\n this.element_.classList.add(this.CssClasses_.HAS_DRAWER);\n this.drawer_.addEventListener('mousewheel', eatEvent);\n // If we have a fixed header, add the button to the header rather than\n // the layout.\n if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {\n this.header_.insertBefore(drawerButton, this.header_.firstChild);\n } else {\n this.element_.insertBefore(drawerButton, this.content_);\n }\n var obfuscator = document.createElement('div');\n obfuscator.classList.add(this.CssClasses_.OBFUSCATOR);\n this.element_.appendChild(obfuscator);\n obfuscator.addEventListener('click', this.drawerToggleHandler_.bind(this));\n obfuscator.addEventListener('mousewheel', eatEvent);\n }\n // Initialize tabs, if any.\n if (this.header_ && this.tabBar_) {\n this.element_.classList.add(this.CssClasses_.HAS_TABS);\n var tabContainer = document.createElement('div');\n tabContainer.classList.add(this.CssClasses_.TAB_CONTAINER);\n this.header_.insertBefore(tabContainer, this.tabBar_);\n this.header_.removeChild(this.tabBar_);\n var leftButton = document.createElement('div');\n leftButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n leftButton.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);\n var leftButtonIcon = document.createElement('i');\n leftButtonIcon.classList.add(this.CssClasses_.ICON);\n leftButtonIcon.textContent = this.Constant_.CHEVRON_LEFT;\n leftButton.appendChild(leftButtonIcon);\n leftButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n var rightButton = document.createElement('div');\n rightButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n rightButton.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);\n var rightButtonIcon = document.createElement('i');\n rightButtonIcon.classList.add(this.CssClasses_.ICON);\n rightButtonIcon.textContent = this.Constant_.CHEVRON_RIGHT;\n rightButton.appendChild(rightButtonIcon);\n rightButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n tabContainer.appendChild(leftButton);\n tabContainer.appendChild(this.tabBar_);\n tabContainer.appendChild(rightButton);\n // Add and remove buttons depending on scroll position.\n var tabScrollHandler = function () {\n if (this.tabBar_.scrollLeft > 0) {\n leftButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n leftButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n if (this.tabBar_.scrollLeft < this.tabBar_.scrollWidth - this.tabBar_.offsetWidth) {\n rightButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n rightButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n }.bind(this);\n this.tabBar_.addEventListener('scroll', tabScrollHandler);\n tabScrollHandler();\n if (this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n var tabs = this.tabBar_.querySelectorAll('.' + this.CssClasses_.TAB);\n var panels = this.content_.querySelectorAll('.' + this.CssClasses_.PANEL);\n // Create new tabs for each tab element\n for (var i = 0; i < tabs.length; i++) {\n new MaterialLayoutTab(tabs[i], tabs, panels, this);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\nfunction MaterialLayoutTab(tab, tabs, panels, layout) {\n if (tab) {\n if (layout.tabBar_.classList.contains(layout.CssClasses_.JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(layout.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n tab.addEventListener('click', function (e) {\n e.preventDefault();\n var href = tab.href.split('#')[1];\n var panel = layout.content_.querySelector('#' + href);\n layout.resetTabState_(tabs);\n layout.resetPanelState_(panels);\n tab.classList.add(layout.CssClasses_.IS_ACTIVE);\n panel.classList.add(layout.CssClasses_.IS_ACTIVE);\n });\n }\n}\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialLayout,\n classAsString: 'MaterialLayout',\n cssClass: 'mdl-js-layout'\n});","// Source: https://github.com/darius/requestAnimationFrame/blob/master/requestAnimationFrame.js\n// Adapted from https://gist.github.com/paulirish/1579671 which derived from\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n// requestAnimationFrame polyfill by Erik Möller.\n// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavič, Darius Bacon\n// MIT license\nif (!Date.now) {\n Date.now = function () {\n return new Date().getTime();\n };\n}\nvar vendors = [\n 'webkit',\n 'moz'\n];\nfor (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];\n}\nif (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function (callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function () {\n callback(lastTime = nextTime);\n }, nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n}","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Button MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialButton = function MaterialButton(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialButton = MaterialButton;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialButton.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialButton.prototype.CssClasses_ = {\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-button__ripple-container',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle blur of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialButton.prototype.blurHandler_ = function (event) {\n if (event) {\n this.element_.blur();\n }\n};\n// Public methods.\n/**\n * Disable button.\n *\n * @public\n */\nMaterialButton.prototype.disable = function () {\n this.element_.disabled = true;\n};\n/**\n * Enable button.\n *\n * @public\n */\nMaterialButton.prototype.enable = function () {\n this.element_.disabled = false;\n};\n/**\n * Initialize element.\n */\nMaterialButton.prototype.init = function () {\n if (this.element_) {\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleElement_ = document.createElement('span');\n this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(this.rippleElement_);\n this.boundRippleBlurHandler = this.blurHandler_.bind(this);\n this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);\n this.element_.appendChild(rippleContainer);\n }\n this.boundButtonBlurHandler = this.blurHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);\n this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);\n }\n};\n/**\n * Downgrade the element.\n *\n * @private\n */\nMaterialButton.prototype.mdlDowngrade_ = function () {\n if (this.rippleElement_) {\n this.rippleElement_.removeEventListener('mouseup', this.boundRippleBlurHandler);\n }\n this.element_.removeEventListener('mouseup', this.boundButtonBlurHandler);\n this.element_.removeEventListener('mouseleave', this.boundButtonBlurHandler);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialButton,\n classAsString: 'MaterialButton',\n cssClass: 'mdl-js-button',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialCheckbox = function MaterialCheckbox(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialCheckbox = MaterialCheckbox;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialCheckbox.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialCheckbox.prototype.CssClasses_ = {\n INPUT: 'mdl-checkbox__input',\n BOX_OUTLINE: 'mdl-checkbox__box-outline',\n FOCUS_HELPER: 'mdl-checkbox__focus-helper',\n TICK_OUTLINE: 'mdl-checkbox__tick-outline',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-checkbox__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialCheckbox.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.blur_ = function (event) {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Disable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Check checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\n/**\n * Uncheck checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialCheckbox.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var boxOutline = document.createElement('span');\n boxOutline.classList.add(this.CssClasses_.BOX_OUTLINE);\n var tickContainer = document.createElement('span');\n tickContainer.classList.add(this.CssClasses_.FOCUS_HELPER);\n var tickOutline = document.createElement('span');\n tickOutline.classList.add(this.CssClasses_.TICK_OUTLINE);\n boxOutline.appendChild(tickOutline);\n this.element_.appendChild(tickContainer);\n this.element_.appendChild(boxOutline);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementMouseUp);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Downgrade the component.\n *\n * @private\n */\nMaterialCheckbox.prototype.mdlDowngrade_ = function () {\n if (this.rippleContainerElement_) {\n this.rippleContainerElement_.removeEventListener('mouseup', this.boundRippleMouseUp);\n }\n this.inputElement_.removeEventListener('change', this.boundInputOnChange);\n this.inputElement_.removeEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.removeEventListener('blur', this.boundInputOnBlur);\n this.element_.removeEventListener('mouseup', this.boundElementMouseUp);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialCheckbox,\n classAsString: 'MaterialCheckbox',\n cssClass: 'mdl-js-checkbox',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for icon toggle MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialIconToggle = function MaterialIconToggle(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialIconToggle = MaterialIconToggle;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialIconToggle.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialIconToggle.prototype.CssClasses_ = {\n INPUT: 'mdl-icon-toggle__input',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-icon-toggle__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialIconToggle.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.blur_ = function (event) {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Disable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Check icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\n/**\n * Uncheck icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialIconToggle.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementOnMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementOnMouseUp);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialIconToggle.prototype.mdlDowngrade_ = function () {\n if (this.rippleContainerElement_) {\n this.rippleContainerElement_.removeEventListener('mouseup', this.boundRippleMouseUp);\n }\n this.inputElement_.removeEventListener('change', this.boundInputOnChange);\n this.inputElement_.removeEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.removeEventListener('blur', this.boundInputOnBlur);\n this.element_.removeEventListener('mouseup', this.boundElementOnMouseUp);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialIconToggle,\n classAsString: 'MaterialIconToggle',\n cssClass: 'mdl-js-icon-toggle',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for dropdown MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialMenu = function MaterialMenu(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialMenu = MaterialMenu;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialMenu.prototype.Constant_ = {\n // Total duration of the menu animation.\n TRANSITION_DURATION_SECONDS: 0.3,\n // The fraction of the total duration we want to use for menu item animations.\n TRANSITION_DURATION_FRACTION: 0.8,\n // How long the menu stays open after choosing an option (so the user can see\n // the ripple).\n CLOSE_TIMEOUT: 150\n};\n/**\n * Keycodes, for code readability.\n *\n * @enum {Number}\n * @private\n */\nMaterialMenu.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialMenu.prototype.CssClasses_ = {\n CONTAINER: 'mdl-menu__container',\n OUTLINE: 'mdl-menu__outline',\n ITEM: 'mdl-menu__item',\n ITEM_RIPPLE_CONTAINER: 'mdl-menu__item-ripple-container',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n // Statuses\n IS_UPGRADED: 'is-upgraded',\n IS_VISIBLE: 'is-visible',\n IS_ANIMATING: 'is-animating',\n // Alignment options\n BOTTOM_LEFT: 'mdl-menu--bottom-left',\n // This is the default.\n BOTTOM_RIGHT: 'mdl-menu--bottom-right',\n TOP_LEFT: 'mdl-menu--top-left',\n TOP_RIGHT: 'mdl-menu--top-right',\n UNALIGNED: 'mdl-menu--unaligned'\n};\n/**\n * Initialize element.\n */\nMaterialMenu.prototype.init = function () {\n if (this.element_) {\n // Create container for the menu.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n this.container_ = container;\n // Create outline for the menu (shadow and background).\n var outline = document.createElement('div');\n outline.classList.add(this.CssClasses_.OUTLINE);\n this.outline_ = outline;\n container.insertBefore(outline, this.element_);\n // Find the \"for\" element and bind events to it.\n var forElId = this.element_.getAttribute('for');\n var forEl = null;\n if (forElId) {\n forEl = document.getElementById(forElId);\n if (forEl) {\n this.forElement_ = forEl;\n forEl.addEventListener('click', this.handleForClick_.bind(this));\n forEl.addEventListener('keydown', this.handleForKeyboardEvent_.bind(this));\n }\n }\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n this.boundItemKeydown = this.handleItemKeyboardEvent_.bind(this);\n this.boundItemClick = this.handleItemClick_.bind(this);\n for (var i = 0; i < items.length; i++) {\n // Add a listener to each menu item.\n items[i].addEventListener('click', this.boundItemClick);\n // Add a tab index to each menu item.\n items[i].tabIndex = '-1';\n // Add a keyboard listener to each menu item.\n items[i].addEventListener('keydown', this.boundItemKeydown);\n }\n // Add ripple classes to each item, if the user has enabled ripples.\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n for (i = 0; i < items.length; i++) {\n var item = items[i];\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n item.appendChild(rippleContainer);\n item.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n }\n }\n // Copy alignment classes to the container, so the outline can use them.\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n this.outline_.classList.add(this.CssClasses_.UNALIGNED);\n }\n container.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Handles a click on the \"for\" element, by positioning the menu and then\n * toggling it.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForClick_ = function (evt) {\n if (this.element_ && this.forElement_) {\n var rect = this.forElement_.getBoundingClientRect();\n var forRect = this.forElement_.parentElement.getBoundingClientRect();\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Position below the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Position above the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Position above the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else {\n // Default: position below the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n }\n }\n this.toggle(evt);\n};\n/**\n * Handles a keyboard event on the \"for\" element.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_ && this.forElement_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n items[items.length - 1].focus();\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n items[0].focus();\n }\n }\n }\n};\n/**\n * Handles a keyboard event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n var currentIndex = Array.prototype.slice.call(items).indexOf(evt.target);\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n if (currentIndex > 0) {\n items[currentIndex - 1].focus();\n } else {\n items[items.length - 1].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n if (items.length > currentIndex + 1) {\n items[currentIndex + 1].focus();\n } else {\n items[0].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n evt.preventDefault();\n // Send mousedown and mouseup to trigger ripple.\n var e = new MouseEvent('mousedown');\n evt.target.dispatchEvent(e);\n e = new MouseEvent('mouseup');\n evt.target.dispatchEvent(e);\n // Send click.\n evt.target.click();\n } else if (evt.keyCode === this.Keycodes_.ESCAPE) {\n evt.preventDefault();\n this.hide();\n }\n }\n }\n};\n/**\n * Handles a click event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemClick_ = function (evt) {\n if (evt.target.getAttribute('disabled') !== null) {\n evt.stopPropagation();\n } else {\n // Wait some time before closing menu, so the user can see the ripple.\n this.closing_ = true;\n window.setTimeout(function (evt) {\n this.hide();\n this.closing_ = false;\n }.bind(this), this.Constant_.CLOSE_TIMEOUT);\n }\n};\n/**\n * Calculates the initial clip (for opening the menu) or final clip (for closing\n * it), and applies it. This allows us to animate from or to the correct point,\n * that is, the point it's aligned to in the \"for\" element.\n *\n * @param {Number} height Height of the clip rectangle\n * @param {Number} width Width of the clip rectangle\n * @private\n */\nMaterialMenu.prototype.applyClip_ = function (height, width) {\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n // Do not clip.\n this.element_.style.clip = null;\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Clip to the top right corner of the menu.\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + '0 ' + width + 'px)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Clip to the bottom left corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px 0 ' + height + 'px 0)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Clip to the bottom right corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px ' + width + 'px ' + height + 'px ' + width + 'px)';\n } else {\n // Default: do not clip (same as clipping to the top left corner).\n this.element_.style.clip = null;\n }\n};\n/**\n * Adds an event listener to clean up after the animation ends.\n *\n * @private\n */\nMaterialMenu.prototype.addAnimationEndListener_ = function () {\n var cleanup = function () {\n this.element_.removeEventListener('transitionend', cleanup);\n this.element_.removeEventListener('webkitTransitionEnd', cleanup);\n this.element_.classList.remove(this.CssClasses_.IS_ANIMATING);\n }.bind(this);\n // Remove animation class once the transition is done.\n this.element_.addEventListener('transitionend', cleanup);\n this.element_.addEventListener('webkitTransitionEnd', cleanup);\n};\n/**\n * Displays the menu.\n *\n * @public\n */\nMaterialMenu.prototype.show = function (evt) {\n if (this.element_ && this.container_ && this.outline_) {\n // Measure the inner element.\n var height = this.element_.getBoundingClientRect().height;\n var width = this.element_.getBoundingClientRect().width;\n // Apply the inner element's size to the container and outline.\n this.container_.style.width = width + 'px';\n this.container_.style.height = height + 'px';\n this.outline_.style.width = width + 'px';\n this.outline_.style.height = height + 'px';\n var transitionDuration = this.Constant_.TRANSITION_DURATION_SECONDS * this.Constant_.TRANSITION_DURATION_FRACTION;\n // Calculate transition delays for individual menu items, so that they fade\n // in one at a time.\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n for (var i = 0; i < items.length; i++) {\n var itemDelay = null;\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT) || this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n itemDelay = (height - items[i].offsetTop - items[i].offsetHeight) / height * transitionDuration + 's';\n } else {\n itemDelay = items[i].offsetTop / height * transitionDuration + 's';\n }\n items[i].style.transitionDelay = itemDelay;\n }\n // Apply the initial clip to the text before we start animating.\n this.applyClip_(height, width);\n // Wait for the next frame, turn on animation, and apply the final clip.\n // Also make it visible. This triggers the transitions.\n window.requestAnimationFrame(function () {\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + height + 'px 0)';\n this.container_.classList.add(this.CssClasses_.IS_VISIBLE);\n }.bind(this));\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n // Add a click listener to the document, to close the menu.\n var callback = function (e) {\n // Check to see if the document is processing the same event that\n // displayed the menu in the first place. If so, do nothing.\n // Also check to see if the menu is in the process of closing itself, and\n // do nothing in that case.\n if (e !== evt && !this.closing_) {\n document.removeEventListener('click', callback);\n this.hide();\n }\n }.bind(this);\n document.addEventListener('click', callback);\n }\n};\n/**\n * Hides the menu.\n *\n * @public\n */\nMaterialMenu.prototype.hide = function () {\n if (this.element_ && this.container_ && this.outline_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n // Remove all transition delays; menu items fade out concurrently.\n for (var i = 0; i < items.length; i++) {\n items[i].style.transitionDelay = null;\n }\n // Measure the inner element.\n var height = this.element_.getBoundingClientRect().height;\n var width = this.element_.getBoundingClientRect().width;\n // Turn on animation, and apply the final clip. Also make invisible.\n // This triggers the transitions.\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.applyClip_(height, width);\n this.container_.classList.remove(this.CssClasses_.IS_VISIBLE);\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n }\n};\n/**\n * Displays or hides the menu, depending on current state.\n *\n * @public\n */\nMaterialMenu.prototype.toggle = function (evt) {\n if (this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n this.hide();\n } else {\n this.show(evt);\n }\n};\n/**\n * Downgrade the component.\n *\n * @private\n */\nMaterialMenu.prototype.mdlDowngrade_ = function () {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n for (var i = 0; i < items.length; i++) {\n items[i].removeEventListener('click', this.boundItemClick);\n items[i].removeEventListener('keydown', this.boundItemKeydown);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialMenu,\n classAsString: 'MaterialMenu',\n cssClass: 'mdl-js-menu',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Progress MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialProgress = function MaterialProgress(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialProgress = MaterialProgress;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialProgress.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialProgress.prototype.CssClasses_ = { INDETERMINATE_CLASS: 'mdl-progress__indeterminate' };\n/**\n * Set the current progress of the progressbar.\n *\n * @param {Number} p Percentage of the progress (0-100)\n * @public\n */\nMaterialProgress.prototype.setProgress = function (p) {\n if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {\n return;\n }\n this.progressbar_.style.width = p + '%';\n};\n/**\n * Set the current progress of the buffer.\n *\n * @param {Number} p Percentage of the buffer (0-100)\n * @public\n */\nMaterialProgress.prototype.setBuffer = function (p) {\n this.bufferbar_.style.width = p + '%';\n this.auxbar_.style.width = 100 - p + '%';\n};\n/**\n * Initialize element.\n */\nMaterialProgress.prototype.init = function () {\n if (this.element_) {\n var el = document.createElement('div');\n el.className = 'progressbar bar bar1';\n this.element_.appendChild(el);\n this.progressbar_ = el;\n el = document.createElement('div');\n el.className = 'bufferbar bar bar2';\n this.element_.appendChild(el);\n this.bufferbar_ = el;\n el = document.createElement('div');\n el.className = 'auxbar bar bar3';\n this.element_.appendChild(el);\n this.auxbar_ = el;\n this.progressbar_.style.width = '0%';\n this.bufferbar_.style.width = '100%';\n this.auxbar_.style.width = '0%';\n this.element_.classList.add('is-upgraded');\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialProgress.prototype.mdlDowngrade_ = function () {\n while (this.element_.firstChild) {\n this.element_.removeChild(this.element_.firstChild);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialProgress,\n classAsString: 'MaterialProgress',\n cssClass: 'mdl-js-progress',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Radio MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRadio = function MaterialRadio(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialRadio = MaterialRadio;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialRadio.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialRadio.prototype.CssClasses_ = {\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded',\n JS_RADIO: 'mdl-js-radio',\n RADIO_BTN: 'mdl-radio__button',\n RADIO_OUTER_CIRCLE: 'mdl-radio__outer-circle',\n RADIO_INNER_CIRCLE: 'mdl-radio__inner-circle',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-radio__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onChange_ = function (event) {\n // Since other radio buttons don't get change events, we need to look for\n // them to update their classes.\n var radios = document.getElementsByClassName(this.CssClasses_.JS_RADIO);\n for (var i = 0; i < radios.length; i++) {\n var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);\n // Different name == different group, so no point updating those.\n if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {\n radios[i].MaterialRadio.updateClasses_();\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onMouseup_ = function (event) {\n this.blur_();\n};\n/**\n * Update classes.\n *\n * @private\n */\nMaterialRadio.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.blur_ = function (event) {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.btnElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkDisabled = function () {\n if (this.btnElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkToggleState = function () {\n if (this.btnElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\n/**\n * Disable radio.\n *\n * @public\n */\nMaterialRadio.prototype.disable = function () {\n this.btnElement_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable radio.\n *\n * @public\n */\nMaterialRadio.prototype.enable = function () {\n this.btnElement_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Check radio.\n *\n * @public\n */\nMaterialRadio.prototype.check = function () {\n this.btnElement_.checked = true;\n this.updateClasses_();\n};\n/**\n * Uncheck radio.\n *\n * @public\n */\nMaterialRadio.prototype.uncheck = function () {\n this.btnElement_.checked = false;\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialRadio.prototype.init = function () {\n if (this.element_) {\n this.btnElement_ = this.element_.querySelector('.' + this.CssClasses_.RADIO_BTN);\n var outerCircle = document.createElement('span');\n outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);\n var innerCircle = document.createElement('span');\n innerCircle.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE);\n this.element_.appendChild(outerCircle);\n this.element_.appendChild(innerCircle);\n var rippleContainer;\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);\n rippleContainer.addEventListener('mouseup', this.onMouseup_.bind(this));\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n this.element_.appendChild(rippleContainer);\n }\n this.btnElement_.addEventListener('change', this.onChange_.bind(this));\n this.btnElement_.addEventListener('focus', this.onFocus_.bind(this));\n this.btnElement_.addEventListener('blur', this.onBlur_.bind(this));\n this.element_.addEventListener('mouseup', this.onMouseup_.bind(this));\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRadio,\n classAsString: 'MaterialRadio',\n cssClass: 'mdl-js-radio',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Slider MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSlider = function MaterialSlider(element) {\n this.element_ = element;\n // Browser feature detection.\n this.isIE_ = window.navigator.msPointerEnabled;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialSlider = MaterialSlider;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialSlider.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialSlider.prototype.CssClasses_ = {\n IE_CONTAINER: 'mdl-slider__ie-container',\n SLIDER_CONTAINER: 'mdl-slider__container',\n BACKGROUND_FLEX: 'mdl-slider__background-flex',\n BACKGROUND_LOWER: 'mdl-slider__background-lower',\n BACKGROUND_UPPER: 'mdl-slider__background-upper',\n IS_LOWEST_VALUE: 'is-lowest-value',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle input on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onInput_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle change on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onChange_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle mouseup on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onMouseUp_ = function (event) {\n event.target.blur();\n};\n/**\n * Handle mousedown on container element.\n * This handler is purpose is to not require the use to click\n * exactly on the 2px slider element, as FireFox seems to be very\n * strict about this.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onContainerMouseDown_ = function (event) {\n // If this click is not on the parent element (but rather some child)\n // ignore. It may still bubble up.\n if (event.target !== this.element_.parentElement) {\n return;\n }\n // Discard the original event and create a new event that\n // is on the slider element.\n event.preventDefault();\n var newEvent = new MouseEvent('mousedown', {\n target: event.target,\n buttons: event.buttons,\n clientX: event.clientX,\n clientY: this.element_.getBoundingClientRect().y\n });\n this.element_.dispatchEvent(newEvent);\n};\n/**\n * Handle updating of values.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.updateValueStyles_ = function (event) {\n // Calculate and apply percentages to div structure behind slider.\n var fraction = (this.element_.value - this.element_.min) / (this.element_.max - this.element_.min);\n if (fraction === 0) {\n this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE);\n }\n if (!this.isIE_) {\n this.backgroundLower_.style.flex = fraction;\n this.backgroundLower_.style.webkitFlex = fraction;\n this.backgroundUpper_.style.flex = 1 - fraction;\n this.backgroundUpper_.style.webkitFlex = 1 - fraction;\n }\n};\n// Public methods.\n/**\n * Disable slider.\n *\n * @public\n */\nMaterialSlider.prototype.disable = function () {\n this.element_.disabled = true;\n};\n/**\n * Enable slider.\n *\n * @public\n */\nMaterialSlider.prototype.enable = function () {\n this.element_.disabled = false;\n};\n/**\n * Update slider value.\n *\n * @param {Number} value The value to which to set the control (optional).\n * @public\n */\nMaterialSlider.prototype.change = function (value) {\n if (typeof value !== 'undefined') {\n this.element_.value = value;\n }\n this.updateValueStyles_();\n};\n/**\n * Initialize element.\n */\nMaterialSlider.prototype.init = function () {\n if (this.element_) {\n if (this.isIE_) {\n // Since we need to specify a very large height in IE due to\n // implementation limitations, we add a parent here that trims it down to\n // a reasonable size.\n var containerIE = document.createElement('div');\n containerIE.classList.add(this.CssClasses_.IE_CONTAINER);\n this.element_.parentElement.insertBefore(containerIE, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n containerIE.appendChild(this.element_);\n } else {\n // For non-IE browsers, we need a div structure that sits behind the\n // slider and allows us to style the left and right sides of it with\n // different colors.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.SLIDER_CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n var backgroundFlex = document.createElement('div');\n backgroundFlex.classList.add(this.CssClasses_.BACKGROUND_FLEX);\n container.appendChild(backgroundFlex);\n this.backgroundLower_ = document.createElement('div');\n this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER);\n backgroundFlex.appendChild(this.backgroundLower_);\n this.backgroundUpper_ = document.createElement('div');\n this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER);\n backgroundFlex.appendChild(this.backgroundUpper_);\n }\n this.boundInputHandler = this.onInput_.bind(this);\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this);\n this.element_.addEventListener('input', this.boundInputHandler);\n this.element_.addEventListener('change', this.boundChangeHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.element_.parentElement.addEventListener('mousedown', this.boundContainerMouseDownHandler);\n this.updateValueStyles_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialSlider.prototype.mdlDowngrade_ = function () {\n this.element_.removeEventListener('input', this.boundInputHandler);\n this.element_.removeEventListener('change', this.boundChangeHandler);\n this.element_.removeEventListener('mouseup', this.boundMouseUpHandler);\n this.element_.parentElement.removeEventListener('mousedown', this.boundContainerMouseDownHandler);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSlider,\n classAsString: 'MaterialSlider',\n cssClass: 'mdl-js-slider',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Spinner MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n * @constructor\n */\nvar MaterialSpinner = function MaterialSpinner(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialSpinner = MaterialSpinner;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialSpinner.prototype.Constant_ = { MDL_SPINNER_LAYER_COUNT: 4 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialSpinner.prototype.CssClasses_ = {\n MDL_SPINNER_LAYER: 'mdl-spinner__layer',\n MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',\n MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',\n MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',\n MDL_SPINNER_LEFT: 'mdl-spinner__left',\n MDL_SPINNER_RIGHT: 'mdl-spinner__right'\n};\n/**\n * Auxiliary method to create a spinner layer.\n *\n * @param {Number} index Index of the layer to be created.\n * @public\n */\nMaterialSpinner.prototype.createLayer = function (index) {\n var layer = document.createElement('div');\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);\n var leftClipper = document.createElement('div');\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n var gapPatch = document.createElement('div');\n gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n var rightClipper = document.createElement('div');\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n var circleOwners = [\n leftClipper,\n gapPatch,\n rightClipper\n ];\n for (var i = 0; i < circleOwners.length; i++) {\n var circle = document.createElement('div');\n circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);\n circleOwners[i].appendChild(circle);\n }\n layer.appendChild(leftClipper);\n layer.appendChild(gapPatch);\n layer.appendChild(rightClipper);\n this.element_.appendChild(layer);\n};\n/**\n * Stops the spinner animation.\n * Public method for users who need to stop the spinner for any reason.\n *\n * @public\n */\nMaterialSpinner.prototype.stop = function () {\n this.element_.classList.remove('is-active');\n};\n/**\n * Starts the spinner animation.\n * Public method for users who need to manually start the spinner for any reason\n * (instead of just adding the 'is-active' class to their markup).\n *\n * @public\n */\nMaterialSpinner.prototype.start = function () {\n this.element_.classList.add('is-active');\n};\n/**\n * Initialize element.\n */\nMaterialSpinner.prototype.init = function () {\n if (this.element_) {\n for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {\n this.createLayer(i);\n }\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSpinner,\n classAsString: 'MaterialSpinner',\n cssClass: 'mdl-js-spinner',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSwitch = function MaterialSwitch(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialSwitch = MaterialSwitch;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialSwitch.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialSwitch.prototype.CssClasses_ = {\n INPUT: 'mdl-switch__input',\n TRACK: 'mdl-switch__track',\n THUMB: 'mdl-switch__thumb',\n FOCUS_HELPER: 'mdl-switch__focus-helper',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-switch__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialSwitch.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialSwitch.prototype.blur_ = function (event) {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\n/**\n * Disable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Activate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.on = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\n/**\n * Deactivate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.off = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialSwitch.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var track = document.createElement('div');\n track.classList.add(this.CssClasses_.TRACK);\n var thumb = document.createElement('div');\n thumb.classList.add(this.CssClasses_.THUMB);\n var focusHelper = document.createElement('span');\n focusHelper.classList.add(this.CssClasses_.FOCUS_HELPER);\n thumb.appendChild(focusHelper);\n this.element_.appendChild(track);\n this.element_.appendChild(thumb);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundMouseUpHandler);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.inputElement_.addEventListener('change', this.boundChangeHandler);\n this.inputElement_.addEventListener('focus', this.boundFocusHandler);\n this.inputElement_.addEventListener('blur', this.boundBlurHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n/**\n * Downgrade the component.\n *\n * @private\n */\nMaterialSwitch.prototype.mdlDowngrade_ = function () {\n if (this.rippleContainerElement_) {\n this.rippleContainerElement_.removeEventListener('mouseup', this.boundMouseUpHandler);\n }\n this.inputElement_.removeEventListener('change', this.boundChangeHandler);\n this.inputElement_.removeEventListener('focus', this.boundFocusHandler);\n this.inputElement_.removeEventListener('blur', this.boundBlurHandler);\n this.element_.removeEventListener('mouseup', this.boundMouseUpHandler);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSwitch,\n classAsString: 'MaterialSwitch',\n cssClass: 'mdl-js-switch',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Textfield MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTextfield = function MaterialTextfield(element) {\n this.element_ = element;\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialTextfield = MaterialTextfield;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialTextfield.prototype.Constant_ = {\n NO_MAX_ROWS: -1,\n MAX_ROWS_ATTRIBUTE: 'maxrows'\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialTextfield.prototype.CssClasses_ = {\n LABEL: 'mdl-textfield__label',\n INPUT: 'mdl-textfield__input',\n IS_DIRTY: 'is-dirty',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_INVALID: 'is-invalid',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle input being entered.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onKeyDown_ = function (event) {\n var currentRowCount = event.target.value.split('\\n').length;\n if (event.keyCode === 13) {\n if (currentRowCount >= this.maxRows) {\n event.preventDefault();\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialTextfield.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkValidity();\n this.checkDirty();\n};\n// Public methods.\n/**\n * Check the disabled state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDisabled = function () {\n if (this.input_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Check the validity state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkValidity = function () {\n if (this.input_.validity.valid) {\n this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n } else {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n};\n/**\n * Check the dirty state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDirty = function () {\n if (this.input_.value && this.input_.value.length > 0) {\n this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n }\n};\n/**\n * Disable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.disable = function () {\n this.input_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.enable = function () {\n this.input_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Update text field value.\n *\n * @param {String} value The value to which to set the control (optional).\n * @public\n */\nMaterialTextfield.prototype.change = function (value) {\n if (value) {\n this.input_.value = value;\n }\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialTextfield.prototype.init = function () {\n if (this.element_) {\n this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.input_) {\n if (this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)) {\n this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10);\n if (isNaN(this.maxRows)) {\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n }\n }\n this.boundUpdateClassesHandler = this.updateClasses_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.input_.addEventListener('input', this.boundUpdateClassesHandler);\n this.input_.addEventListener('focus', this.boundFocusHandler);\n this.input_.addEventListener('blur', this.boundBlurHandler);\n if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {\n // TODO: This should handle pasting multi line text.\n // Currently doesn't.\n this.boundKeyDownHandler = this.onKeyDown_.bind(this);\n this.input_.addEventListener('keydown', this.boundKeyDownHandler);\n }\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialTextfield.prototype.mdlDowngrade_ = function () {\n this.input_.removeEventListener('input', this.boundUpdateClassesHandler);\n this.input_.removeEventListener('focus', this.boundFocusHandler);\n this.input_.removeEventListener('blur', this.boundBlurHandler);\n if (this.boundKeyDownHandler) {\n this.input_.removeEventListener('keydown', this.boundKeyDownHandler);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTextfield,\n classAsString: 'MaterialTextfield',\n cssClass: 'mdl-js-textfield',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tooltip MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTooltip = function MaterialTooltip(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialTooltip = MaterialTooltip;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialTooltip.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialTooltip.prototype.CssClasses_ = { IS_ACTIVE: 'is-active' };\n/**\n * Handle mouseenter for tooltip.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTooltip.prototype.handleMouseEnter_ = function (event) {\n event.stopPropagation();\n var props = event.target.getBoundingClientRect();\n var left = props.left + props.width / 2;\n var marginLeft = -1 * (this.element_.offsetWidth / 2);\n if (left + marginLeft < 0) {\n this.element_.style.left = 0;\n this.element_.style.marginLeft = 0;\n } else {\n this.element_.style.left = left + 'px';\n this.element_.style.marginLeft = marginLeft + 'px';\n }\n this.element_.style.top = props.top + props.height + 10 + 'px';\n this.element_.classList.add(this.CssClasses_.IS_ACTIVE);\n window.addEventListener('scroll', this.boundMouseLeaveHandler, false);\n window.addEventListener('touchmove', this.boundMouseLeaveHandler, false);\n};\n/**\n * Handle mouseleave for tooltip.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTooltip.prototype.handleMouseLeave_ = function (event) {\n event.stopPropagation();\n this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);\n window.removeEventListener('scroll', this.boundMouseLeaveHandler);\n window.removeEventListener('touchmove', this.boundMouseLeaveHandler, false);\n};\n/**\n * Initialize element.\n */\nMaterialTooltip.prototype.init = function () {\n if (this.element_) {\n var forElId = this.element_.getAttribute('for');\n if (forElId) {\n this.forElement_ = document.getElementById(forElId);\n }\n if (this.forElement_) {\n // Tabindex needs to be set for `blur` events to be emitted\n if (!this.forElement_.getAttribute('tabindex')) {\n this.forElement_.setAttribute('tabindex', '0');\n }\n this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);\n this.boundMouseLeaveHandler = this.handleMouseLeave_.bind(this);\n this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('click', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('blur', this.boundMouseLeaveHandler);\n this.forElement_.addEventListener('touchstart', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveHandler);\n }\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialTooltip.prototype.mdlDowngrade_ = function () {\n if (this.forElement_) {\n this.forElement_.removeEventListener('mouseenter', this.boundMouseEnterHandler, false);\n this.forElement_.removeEventListener('click', this.boundMouseEnterHandler, false);\n this.forElement_.removeEventListener('touchstart', this.boundMouseEnterHandler, false);\n this.forElement_.removeEventListener('mouseleave', this.boundMouseLeaveHandler);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTooltip,\n classAsString: 'MaterialTooltip',\n cssClass: 'mdl-tooltip'\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Data Table Card MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialDataTable = function MaterialDataTable(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialDataTable = MaterialDataTable;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialDataTable.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialDataTable.prototype.CssClasses_ = {\n DATA_TABLE: 'mdl-data-table',\n SELECTABLE: 'mdl-data-table--selectable',\n IS_SELECTED: 'is-selected',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Generates and returns a function that toggles the selection state of a\n * single row (or multiple rows).\n *\n * @param {HTMLElement} checkbox Checkbox that toggles the selection state.\n * @param {HTMLElement} row Row to toggle when checkbox changes.\n * @param {HTMLElement[]} rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.selectRow_ = function (checkbox, row, rows) {\n if (row) {\n return function () {\n if (checkbox.checked) {\n row.classList.add(this.CssClasses_.IS_SELECTED);\n } else {\n row.classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }.bind(this);\n }\n if (rows) {\n return function () {\n var i;\n var el;\n if (checkbox.checked) {\n for (i = 0; i < rows.length; i++) {\n el = rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el.MaterialCheckbox.check();\n rows[i].classList.add(this.CssClasses_.IS_SELECTED);\n }\n } else {\n for (i = 0; i < rows.length; i++) {\n el = rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el.MaterialCheckbox.uncheck();\n rows[i].classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }\n }.bind(this);\n }\n};\n/**\n * Creates a checkbox for a single or or multiple rows and hooks up the\n * event handling.\n *\n * @param {HTMLElement} row Row to toggle when checkbox changes.\n * @param {HTMLElement[]} rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.createCheckbox_ = function (row, rows) {\n var label = document.createElement('label');\n label.classList.add('mdl-checkbox');\n label.classList.add('mdl-js-checkbox');\n label.classList.add('mdl-js-ripple-effect');\n label.classList.add('mdl-data-table__select');\n var checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.classList.add('mdl-checkbox__input');\n if (row) {\n checkbox.addEventListener('change', this.selectRow_(checkbox, row));\n } else if (rows) {\n checkbox.addEventListener('change', this.selectRow_(checkbox, null, rows));\n }\n label.appendChild(checkbox);\n componentHandler.upgradeElement(label, 'MaterialCheckbox');\n return label;\n};\n/**\n * Initialize element.\n */\nMaterialDataTable.prototype.init = function () {\n if (this.element_) {\n var firstHeader = this.element_.querySelector('th');\n var rows = this.element_.querySelector('tbody').querySelectorAll('tr');\n if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {\n var th = document.createElement('th');\n var headerCheckbox = this.createCheckbox_(null, rows);\n th.appendChild(headerCheckbox);\n firstHeader.parentElement.insertBefore(th, firstHeader);\n for (var i = 0; i < rows.length; i++) {\n var firstCell = rows[i].querySelector('td');\n if (firstCell) {\n var td = document.createElement('td');\n var rowCheckbox = this.createCheckbox_(rows[i]);\n td.appendChild(rowCheckbox);\n rows[i].insertBefore(td, firstCell);\n }\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialDataTable,\n classAsString: 'MaterialDataTable',\n cssClass: 'mdl-js-data-table'\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Ripple MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRipple = function MaterialRipple(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialRipple = MaterialRipple;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialRipple.prototype.Constant_ = {\n INITIAL_SCALE: 'scale(0.0001, 0.0001)',\n INITIAL_SIZE: '1px',\n INITIAL_OPACITY: '0.4',\n FINAL_OPACITY: '0',\n FINAL_SCALE: ''\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialRipple.prototype.CssClasses_ = {\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n IS_ANIMATING: 'is-animating',\n IS_VISIBLE: 'is-visible'\n};\n/**\n * Handle mouse / finger down on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.downHandler_ = function (event) {\n if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {\n var rect = this.element_.getBoundingClientRect();\n this.boundHeight = rect.height;\n this.boundWidth = rect.width;\n this.rippleSize_ = Math.sqrt(rect.width * rect.width + rect.height * rect.height) * 2 + 2;\n this.rippleElement_.style.width = this.rippleSize_ + 'px';\n this.rippleElement_.style.height = this.rippleSize_ + 'px';\n }\n this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE);\n if (event.type === 'mousedown' && this.ignoringMouseDown_) {\n this.ignoringMouseDown_ = false;\n } else {\n if (event.type === 'touchstart') {\n this.ignoringMouseDown_ = true;\n }\n var frameCount = this.getFrameCount();\n if (frameCount > 0) {\n return;\n }\n this.setFrameCount(1);\n var bound = event.currentTarget.getBoundingClientRect();\n var x;\n var y;\n // Check if we are handling a keyboard click.\n if (event.clientX === 0 && event.clientY === 0) {\n x = Math.round(bound.width / 2);\n y = Math.round(bound.height / 2);\n } else {\n var clientX = event.clientX ? event.clientX : event.touches[0].clientX;\n var clientY = event.clientY ? event.clientY : event.touches[0].clientY;\n x = Math.round(clientX - bound.left);\n y = Math.round(clientY - bound.top);\n }\n this.setRippleXY(x, y);\n this.setRippleStyles(true);\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n }\n};\n/**\n * Handle mouse / finger up on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.upHandler_ = function (event) {\n // Don't fire for the artificial \"mouseup\" generated by a double-click.\n if (event && event.detail !== 2) {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n }\n // Allow a repaint to occur before removing this class, so the animation\n // shows for tap events, which seem to trigger a mouseup too soon after\n // mousedown.\n window.setTimeout(function () {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n }.bind(this), 0);\n};\n/**\n * Initialize element.\n */\nMaterialRipple.prototype.init = function () {\n if (this.element_) {\n var recentering = this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);\n if (!this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)) {\n this.rippleElement_ = this.element_.querySelector('.' + this.CssClasses_.RIPPLE);\n this.frameCount_ = 0;\n this.rippleSize_ = 0;\n this.x_ = 0;\n this.y_ = 0;\n // Touch start produces a compat mouse down event, which would cause a\n // second ripples. To avoid that, we use this property to ignore the first\n // mouse down after a touch start.\n this.ignoringMouseDown_ = false;\n this.boundDownHandler = this.downHandler_.bind(this);\n this.element_.addEventListener('mousedown', this.boundDownHandler);\n this.element_.addEventListener('touchstart', this.boundDownHandler);\n this.boundUpHandler = this.upHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundUpHandler);\n this.element_.addEventListener('mouseleave', this.boundUpHandler);\n this.element_.addEventListener('touchend', this.boundUpHandler);\n this.element_.addEventListener('blur', this.boundUpHandler);\n this.getFrameCount = function () {\n return this.frameCount_;\n };\n this.setFrameCount = function (fC) {\n this.frameCount_ = fC;\n };\n this.getRippleElement = function () {\n return this.rippleElement_;\n };\n this.setRippleXY = function (newX, newY) {\n this.x_ = newX;\n this.y_ = newY;\n };\n this.setRippleStyles = function (start) {\n if (this.rippleElement_ !== null) {\n var transformString;\n var scale;\n var size;\n var offset = 'translate(' + this.x_ + 'px, ' + this.y_ + 'px)';\n if (start) {\n scale = this.Constant_.INITIAL_SCALE;\n size = this.Constant_.INITIAL_SIZE;\n } else {\n scale = this.Constant_.FINAL_SCALE;\n size = this.rippleSize_ + 'px';\n if (recentering) {\n offset = 'translate(' + this.boundWidth / 2 + 'px, ' + this.boundHeight / 2 + 'px)';\n }\n }\n transformString = 'translate(-50%, -50%) ' + offset + scale;\n this.rippleElement_.style.webkitTransform = transformString;\n this.rippleElement_.style.msTransform = transformString;\n this.rippleElement_.style.transform = transformString;\n if (start) {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING);\n } else {\n this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n };\n this.animFrameHandler = function () {\n if (this.frameCount_-- > 0) {\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n } else {\n this.setRippleStyles(false);\n }\n };\n }\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialRipple.prototype.mdlDowngrade_ = function () {\n this.element_.removeEventListener('mousedown', this.boundDownHandler);\n this.element_.removeEventListener('touchstart', this.boundDownHandler);\n this.element_.removeEventListener('mouseup', this.boundUpHandler);\n this.element_.removeEventListener('mouseleave', this.boundUpHandler);\n this.element_.removeEventListener('touchend', this.boundUpHandler);\n this.element_.removeEventListener('blur', this.boundUpHandler);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRipple,\n classAsString: 'MaterialRipple',\n cssClass: 'mdl-js-ripple-effect',\n widget: false\n});",";(function() {\n\"use strict\";\n\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A component handler interface using the revealing module design pattern.\n * More details on this design pattern here:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @author Jason Mayes.\n */\n/* exported componentHandler */\nwindow.componentHandler = (function() {\n 'use strict';\n\n /** @type {!Array} */\n var registeredComponents_ = [];\n\n /** @type {!Array} */\n var createdComponents_ = [];\n\n var downgradeMethod_ = 'mdlDowngrade_';\n var componentConfigProperty_ = 'mdlComponentConfigInternal_';\n\n /**\n * Searches registered components for a class we are interested in using.\n * Optionally replaces a match with passed object if specified.\n *\n * @param {String} name The name of a class we want to use.\n * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.\n * @return {!Object|Boolean}\n * @private\n */\n function findRegisteredClass_(name, optReplace) {\n for (var i = 0; i < registeredComponents_.length; i++) {\n if (registeredComponents_[i].className === name) {\n if (optReplace !== undefined) {\n registeredComponents_[i] = optReplace;\n }\n return registeredComponents_[i];\n }\n }\n return false;\n }\n\n /**\n * Returns an array of the classNames of the upgraded classes on the element.\n *\n * @param {!HTMLElement} element The element to fetch data from.\n * @return {!Array}\n * @private\n */\n function getUpgradedListOfElement_(element) {\n var dataUpgraded = element.getAttribute('data-upgraded');\n // Use `['']` as default value to conform the `,name,name...` style.\n return dataUpgraded === null ? [''] : dataUpgraded.split(',');\n }\n\n /**\n * Returns true if the given element has already been upgraded for the given\n * class.\n *\n * @param {!HTMLElement} element The element we want to check.\n * @param {String} jsClass The class to check for.\n * @returns {Boolean}\n * @private\n */\n function isElementUpgraded_(element, jsClass) {\n var upgradedList = getUpgradedListOfElement_(element);\n return upgradedList.indexOf(jsClass) !== -1;\n }\n\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {String=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {String=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n function upgradeDomInternal(optJsClass, optCssClass) {\n if (optJsClass === undefined && optCssClass === undefined) {\n for (var i = 0; i < registeredComponents_.length; i++) {\n upgradeDomInternal(registeredComponents_[i].className,\n registeredComponents_[i].cssClass);\n }\n } else {\n var jsClass = /** @type {String} */ (optJsClass);\n if (optCssClass === undefined) {\n var registeredClass = findRegisteredClass_(jsClass);\n if (registeredClass) {\n optCssClass = registeredClass.cssClass;\n }\n }\n\n var elements = document.querySelectorAll('.' + optCssClass);\n for (var n = 0; n < elements.length; n++) {\n upgradeElementInternal(elements[n], jsClass);\n }\n }\n }\n\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!HTMLElement} element The element we wish to upgrade.\n * @param {String=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n function upgradeElementInternal(element, optJsClass) {\n // Verify argument type.\n if (!(typeof element === 'object' && element instanceof Element)) {\n throw new Error('Invalid argument provided to upgrade MDL element.');\n }\n var upgradedList = getUpgradedListOfElement_(element);\n var classesToUpgrade = [];\n // If jsClass is not provided scan the registered components to find the\n // ones matching the element's CSS classList.\n if (!optJsClass) {\n var classList = element.classList;\n registeredComponents_.forEach(function(component) {\n // Match CSS & Not to be upgraded & Not upgraded.\n if (classList.contains(component.cssClass) &&\n classesToUpgrade.indexOf(component) === -1 &&\n !isElementUpgraded_(element, component.className)) {\n classesToUpgrade.push(component);\n }\n });\n } else if (!isElementUpgraded_(element, optJsClass)) {\n classesToUpgrade.push(findRegisteredClass_(optJsClass));\n }\n\n // Upgrade the element for each classes.\n for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {\n registeredClass = classesToUpgrade[i];\n if (registeredClass) {\n // Mark element as upgraded.\n upgradedList.push(registeredClass.className);\n element.setAttribute('data-upgraded', upgradedList.join(','));\n var instance = new registeredClass.classConstructor(element);\n instance[componentConfigProperty_] = registeredClass;\n createdComponents_.push(instance);\n // Call any callbacks the user has registered with this component type.\n for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {\n registeredClass.callbacks[j](element);\n }\n\n if (registeredClass.widget) {\n // Assign per element instance for control over API\n element[registeredClass.className] = instance;\n }\n } else {\n throw new Error(\n 'Unable to find a registered component for the given class.');\n }\n\n var ev = document.createEvent('Events');\n ev.initEvent('mdl-componentupgraded', true, true);\n element.dispatchEvent(ev);\n }\n }\n\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!HTMLElement|!Array|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n function upgradeElementsInternal(elements) {\n if (!Array.isArray(elements)) {\n if (typeof elements.item === 'function') {\n elements = Array.prototype.slice.call(/** @type {Array} */ (elements));\n } else {\n elements = [elements];\n }\n }\n for (var i = 0, n = elements.length, element; i < n; i++) {\n element = elements[i];\n if (element instanceof HTMLElement) {\n if (element.children.length > 0) {\n upgradeElementsInternal(element.children);\n }\n upgradeElementInternal(element);\n }\n }\n }\n\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {{constructor: !Function, classAsString: String, cssClass: String, widget: String}} config\n */\n function registerInternal(config) {\n var newConfig = /** @type {componentHandler.ComponentConfig} */ ({\n 'classConstructor': config.constructor,\n 'className': config.classAsString,\n 'cssClass': config.cssClass,\n 'widget': config.widget === undefined ? true : config.widget,\n 'callbacks': []\n });\n\n registeredComponents_.forEach(function(item) {\n if (item.cssClass === newConfig.cssClass) {\n throw new Error('The provided cssClass has already been registered.');\n }\n if (item.className === newConfig.className) {\n throw new Error('The provided className has already been registered');\n }\n });\n\n if (config.constructor.prototype\n .hasOwnProperty(componentConfigProperty_)) {\n throw new Error(\n 'MDL component classes must not have ' + componentConfigProperty_ +\n ' defined as a property.');\n }\n\n var found = findRegisteredClass_(config.classAsString, newConfig);\n\n if (!found) {\n registeredComponents_.push(newConfig);\n }\n }\n\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {String} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n function registerUpgradedCallbackInternal(jsClass, callback) {\n var regClass = findRegisteredClass_(jsClass);\n if (regClass) {\n regClass.callbacks.push(callback);\n }\n }\n\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n function upgradeAllRegisteredInternal() {\n for (var n = 0; n < registeredComponents_.length; n++) {\n upgradeDomInternal(registeredComponents_[n].className);\n }\n }\n\n /**\n * Finds a created component by a given DOM node.\n *\n * @param {!Node} node\n * @return {*}\n */\n function findCreatedComponentByNodeInternal(node) {\n for (var n = 0; n < createdComponents_.length; n++) {\n var component = createdComponents_[n];\n if (component.element_ === node) {\n return component;\n }\n }\n }\n\n /**\n * Check the component for the downgrade method.\n * Execute if found.\n * Remove component from createdComponents list.\n *\n * @param {*} component\n */\n function deconstructComponentInternal(component) {\n if (component &&\n component[componentConfigProperty_]\n .classConstructor.prototype\n .hasOwnProperty(downgradeMethod_)) {\n component[downgradeMethod_]();\n var componentIndex = createdComponents_.indexOf(component);\n createdComponents_.splice(componentIndex, 1);\n\n var upgrades = component.element_.getAttribute('data-upgraded').split(',');\n var componentPlace = upgrades.indexOf(\n component[componentConfigProperty_].classAsString);\n upgrades.splice(componentPlace, 1);\n component.element_.setAttribute('data-upgraded', upgrades.join(','));\n\n var ev = document.createEvent('Events');\n ev.initEvent('mdl-componentdowngraded', true, true);\n component.element_.dispatchEvent(ev);\n }\n }\n\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array|!NodeList} nodes\n */\n function downgradeNodesInternal(nodes) {\n var downgradeNode = function(node) {\n deconstructComponentInternal(findCreatedComponentByNodeInternal(node));\n };\n if (nodes instanceof Array || nodes instanceof NodeList) {\n for (var n = 0; n < nodes.length; n++) {\n downgradeNode(nodes[n]);\n }\n } else if (nodes instanceof Node) {\n downgradeNode(nodes);\n } else {\n throw new Error('Invalid argument provided to downgrade MDL nodes.');\n }\n }\n\n // Now return the functions that should be made public with their publicly\n // facing names...\n return {\n upgradeDom: upgradeDomInternal,\n upgradeElement: upgradeElementInternal,\n upgradeElements: upgradeElementsInternal,\n upgradeAllRegistered: upgradeAllRegisteredInternal,\n registerUpgradedCallback: registerUpgradedCallbackInternal,\n register: registerInternal,\n downgradeElements: downgradeNodesInternal\n };\n})();\n\nwindow.addEventListener('load', function() {\n 'use strict';\n\n /**\n * Performs a \"Cutting the mustard\" test. If the browser supports the features\n * tested, adds a mdl-js class to the element. It then upgrades all MDL\n * components requiring JavaScript.\n */\n if ('classList' in document.createElement('div') &&\n 'querySelector' in document &&\n 'addEventListener' in window && Array.prototype.forEach) {\n document.documentElement.classList.add('mdl-js');\n componentHandler.upgradeAllRegistered();\n } else {\n componentHandler.upgradeElement =\n componentHandler.register = function() {};\n }\n});\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: !Function,\n * className: String,\n * cssClass: String,\n * widget: String,\n * callbacks: !Array\n * }}\n */\ncomponentHandler.ComponentConfig; // jshint ignore:line\n\n/**\n * Created component (i.e., upgraded element) type as managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * element_: !HTMLElement,\n * className: String,\n * classAsString: String,\n * cssClass: String,\n * widget: String\n * }}\n */\ncomponentHandler.Component; // jshint ignore:line\n\n// Source: https://github.com/darius/requestAnimationFrame/blob/master/requestAnimationFrame.js\n// Adapted from https://gist.github.com/paulirish/1579671 which derived from\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n// requestAnimationFrame polyfill by Erik Möller.\n// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavič, Darius Bacon\n// MIT license\nif (!Date.now) {\n Date.now = function () {\n return new Date().getTime();\n };\n}\nvar vendors = [\n 'webkit',\n 'moz'\n];\nfor (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];\n}\nif (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function (callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function () {\n callback(lastTime = nextTime);\n }, nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n}\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Button MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialButton = function MaterialButton(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialButton = MaterialButton;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialButton.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialButton.prototype.CssClasses_ = {\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-button__ripple-container',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle blur of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialButton.prototype.blurHandler_ = function (event) {\n if (event) {\n this.element_.blur();\n }\n};\n// Public methods.\n/**\n * Disable button.\n *\n * @public\n */\nMaterialButton.prototype.disable = function () {\n this.element_.disabled = true;\n};\n/**\n * Enable button.\n *\n * @public\n */\nMaterialButton.prototype.enable = function () {\n this.element_.disabled = false;\n};\n/**\n * Initialize element.\n */\nMaterialButton.prototype.init = function () {\n if (this.element_) {\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleElement_ = document.createElement('span');\n this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(this.rippleElement_);\n this.boundRippleBlurHandler = this.blurHandler_.bind(this);\n this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);\n this.element_.appendChild(rippleContainer);\n }\n this.boundButtonBlurHandler = this.blurHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);\n this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);\n }\n};\n/**\n * Downgrade the element.\n *\n * @private\n */\nMaterialButton.prototype.mdlDowngrade_ = function () {\n if (this.rippleElement_) {\n this.rippleElement_.removeEventListener('mouseup', this.boundRippleBlurHandler);\n }\n this.element_.removeEventListener('mouseup', this.boundButtonBlurHandler);\n this.element_.removeEventListener('mouseleave', this.boundButtonBlurHandler);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialButton,\n classAsString: 'MaterialButton',\n cssClass: 'mdl-js-button',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialCheckbox = function MaterialCheckbox(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialCheckbox = MaterialCheckbox;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialCheckbox.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialCheckbox.prototype.CssClasses_ = {\n INPUT: 'mdl-checkbox__input',\n BOX_OUTLINE: 'mdl-checkbox__box-outline',\n FOCUS_HELPER: 'mdl-checkbox__focus-helper',\n TICK_OUTLINE: 'mdl-checkbox__tick-outline',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-checkbox__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialCheckbox.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.blur_ = function (event) {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Disable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Check checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\n/**\n * Uncheck checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialCheckbox.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var boxOutline = document.createElement('span');\n boxOutline.classList.add(this.CssClasses_.BOX_OUTLINE);\n var tickContainer = document.createElement('span');\n tickContainer.classList.add(this.CssClasses_.FOCUS_HELPER);\n var tickOutline = document.createElement('span');\n tickOutline.classList.add(this.CssClasses_.TICK_OUTLINE);\n boxOutline.appendChild(tickOutline);\n this.element_.appendChild(tickContainer);\n this.element_.appendChild(boxOutline);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementMouseUp);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Downgrade the component.\n *\n * @private\n */\nMaterialCheckbox.prototype.mdlDowngrade_ = function () {\n if (this.rippleContainerElement_) {\n this.rippleContainerElement_.removeEventListener('mouseup', this.boundRippleMouseUp);\n }\n this.inputElement_.removeEventListener('change', this.boundInputOnChange);\n this.inputElement_.removeEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.removeEventListener('blur', this.boundInputOnBlur);\n this.element_.removeEventListener('mouseup', this.boundElementMouseUp);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialCheckbox,\n classAsString: 'MaterialCheckbox',\n cssClass: 'mdl-js-checkbox',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for icon toggle MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialIconToggle = function MaterialIconToggle(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialIconToggle = MaterialIconToggle;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialIconToggle.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialIconToggle.prototype.CssClasses_ = {\n INPUT: 'mdl-icon-toggle__input',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-icon-toggle__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialIconToggle.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.blur_ = function (event) {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Disable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Check icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\n/**\n * Uncheck icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialIconToggle.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementOnMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementOnMouseUp);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialIconToggle.prototype.mdlDowngrade_ = function () {\n if (this.rippleContainerElement_) {\n this.rippleContainerElement_.removeEventListener('mouseup', this.boundRippleMouseUp);\n }\n this.inputElement_.removeEventListener('change', this.boundInputOnChange);\n this.inputElement_.removeEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.removeEventListener('blur', this.boundInputOnBlur);\n this.element_.removeEventListener('mouseup', this.boundElementOnMouseUp);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialIconToggle,\n classAsString: 'MaterialIconToggle',\n cssClass: 'mdl-js-icon-toggle',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for dropdown MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialMenu = function MaterialMenu(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialMenu = MaterialMenu;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialMenu.prototype.Constant_ = {\n // Total duration of the menu animation.\n TRANSITION_DURATION_SECONDS: 0.3,\n // The fraction of the total duration we want to use for menu item animations.\n TRANSITION_DURATION_FRACTION: 0.8,\n // How long the menu stays open after choosing an option (so the user can see\n // the ripple).\n CLOSE_TIMEOUT: 150\n};\n/**\n * Keycodes, for code readability.\n *\n * @enum {Number}\n * @private\n */\nMaterialMenu.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialMenu.prototype.CssClasses_ = {\n CONTAINER: 'mdl-menu__container',\n OUTLINE: 'mdl-menu__outline',\n ITEM: 'mdl-menu__item',\n ITEM_RIPPLE_CONTAINER: 'mdl-menu__item-ripple-container',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n // Statuses\n IS_UPGRADED: 'is-upgraded',\n IS_VISIBLE: 'is-visible',\n IS_ANIMATING: 'is-animating',\n // Alignment options\n BOTTOM_LEFT: 'mdl-menu--bottom-left',\n // This is the default.\n BOTTOM_RIGHT: 'mdl-menu--bottom-right',\n TOP_LEFT: 'mdl-menu--top-left',\n TOP_RIGHT: 'mdl-menu--top-right',\n UNALIGNED: 'mdl-menu--unaligned'\n};\n/**\n * Initialize element.\n */\nMaterialMenu.prototype.init = function () {\n if (this.element_) {\n // Create container for the menu.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n this.container_ = container;\n // Create outline for the menu (shadow and background).\n var outline = document.createElement('div');\n outline.classList.add(this.CssClasses_.OUTLINE);\n this.outline_ = outline;\n container.insertBefore(outline, this.element_);\n // Find the \"for\" element and bind events to it.\n var forElId = this.element_.getAttribute('for');\n var forEl = null;\n if (forElId) {\n forEl = document.getElementById(forElId);\n if (forEl) {\n this.forElement_ = forEl;\n forEl.addEventListener('click', this.handleForClick_.bind(this));\n forEl.addEventListener('keydown', this.handleForKeyboardEvent_.bind(this));\n }\n }\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n this.boundItemKeydown = this.handleItemKeyboardEvent_.bind(this);\n this.boundItemClick = this.handleItemClick_.bind(this);\n for (var i = 0; i < items.length; i++) {\n // Add a listener to each menu item.\n items[i].addEventListener('click', this.boundItemClick);\n // Add a tab index to each menu item.\n items[i].tabIndex = '-1';\n // Add a keyboard listener to each menu item.\n items[i].addEventListener('keydown', this.boundItemKeydown);\n }\n // Add ripple classes to each item, if the user has enabled ripples.\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n for (i = 0; i < items.length; i++) {\n var item = items[i];\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n item.appendChild(rippleContainer);\n item.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n }\n }\n // Copy alignment classes to the container, so the outline can use them.\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n this.outline_.classList.add(this.CssClasses_.UNALIGNED);\n }\n container.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Handles a click on the \"for\" element, by positioning the menu and then\n * toggling it.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForClick_ = function (evt) {\n if (this.element_ && this.forElement_) {\n var rect = this.forElement_.getBoundingClientRect();\n var forRect = this.forElement_.parentElement.getBoundingClientRect();\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Position below the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Position above the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Position above the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else {\n // Default: position below the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n }\n }\n this.toggle(evt);\n};\n/**\n * Handles a keyboard event on the \"for\" element.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_ && this.forElement_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n items[items.length - 1].focus();\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n items[0].focus();\n }\n }\n }\n};\n/**\n * Handles a keyboard event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n var currentIndex = Array.prototype.slice.call(items).indexOf(evt.target);\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n if (currentIndex > 0) {\n items[currentIndex - 1].focus();\n } else {\n items[items.length - 1].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n if (items.length > currentIndex + 1) {\n items[currentIndex + 1].focus();\n } else {\n items[0].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n evt.preventDefault();\n // Send mousedown and mouseup to trigger ripple.\n var e = new MouseEvent('mousedown');\n evt.target.dispatchEvent(e);\n e = new MouseEvent('mouseup');\n evt.target.dispatchEvent(e);\n // Send click.\n evt.target.click();\n } else if (evt.keyCode === this.Keycodes_.ESCAPE) {\n evt.preventDefault();\n this.hide();\n }\n }\n }\n};\n/**\n * Handles a click event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemClick_ = function (evt) {\n if (evt.target.getAttribute('disabled') !== null) {\n evt.stopPropagation();\n } else {\n // Wait some time before closing menu, so the user can see the ripple.\n this.closing_ = true;\n window.setTimeout(function (evt) {\n this.hide();\n this.closing_ = false;\n }.bind(this), this.Constant_.CLOSE_TIMEOUT);\n }\n};\n/**\n * Calculates the initial clip (for opening the menu) or final clip (for closing\n * it), and applies it. This allows us to animate from or to the correct point,\n * that is, the point it's aligned to in the \"for\" element.\n *\n * @param {Number} height Height of the clip rectangle\n * @param {Number} width Width of the clip rectangle\n * @private\n */\nMaterialMenu.prototype.applyClip_ = function (height, width) {\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n // Do not clip.\n this.element_.style.clip = null;\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Clip to the top right corner of the menu.\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + '0 ' + width + 'px)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Clip to the bottom left corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px 0 ' + height + 'px 0)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Clip to the bottom right corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px ' + width + 'px ' + height + 'px ' + width + 'px)';\n } else {\n // Default: do not clip (same as clipping to the top left corner).\n this.element_.style.clip = null;\n }\n};\n/**\n * Adds an event listener to clean up after the animation ends.\n *\n * @private\n */\nMaterialMenu.prototype.addAnimationEndListener_ = function () {\n var cleanup = function () {\n this.element_.removeEventListener('transitionend', cleanup);\n this.element_.removeEventListener('webkitTransitionEnd', cleanup);\n this.element_.classList.remove(this.CssClasses_.IS_ANIMATING);\n }.bind(this);\n // Remove animation class once the transition is done.\n this.element_.addEventListener('transitionend', cleanup);\n this.element_.addEventListener('webkitTransitionEnd', cleanup);\n};\n/**\n * Displays the menu.\n *\n * @public\n */\nMaterialMenu.prototype.show = function (evt) {\n if (this.element_ && this.container_ && this.outline_) {\n // Measure the inner element.\n var height = this.element_.getBoundingClientRect().height;\n var width = this.element_.getBoundingClientRect().width;\n // Apply the inner element's size to the container and outline.\n this.container_.style.width = width + 'px';\n this.container_.style.height = height + 'px';\n this.outline_.style.width = width + 'px';\n this.outline_.style.height = height + 'px';\n var transitionDuration = this.Constant_.TRANSITION_DURATION_SECONDS * this.Constant_.TRANSITION_DURATION_FRACTION;\n // Calculate transition delays for individual menu items, so that they fade\n // in one at a time.\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n for (var i = 0; i < items.length; i++) {\n var itemDelay = null;\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT) || this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n itemDelay = (height - items[i].offsetTop - items[i].offsetHeight) / height * transitionDuration + 's';\n } else {\n itemDelay = items[i].offsetTop / height * transitionDuration + 's';\n }\n items[i].style.transitionDelay = itemDelay;\n }\n // Apply the initial clip to the text before we start animating.\n this.applyClip_(height, width);\n // Wait for the next frame, turn on animation, and apply the final clip.\n // Also make it visible. This triggers the transitions.\n window.requestAnimationFrame(function () {\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + height + 'px 0)';\n this.container_.classList.add(this.CssClasses_.IS_VISIBLE);\n }.bind(this));\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n // Add a click listener to the document, to close the menu.\n var callback = function (e) {\n // Check to see if the document is processing the same event that\n // displayed the menu in the first place. If so, do nothing.\n // Also check to see if the menu is in the process of closing itself, and\n // do nothing in that case.\n if (e !== evt && !this.closing_) {\n document.removeEventListener('click', callback);\n this.hide();\n }\n }.bind(this);\n document.addEventListener('click', callback);\n }\n};\n/**\n * Hides the menu.\n *\n * @public\n */\nMaterialMenu.prototype.hide = function () {\n if (this.element_ && this.container_ && this.outline_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n // Remove all transition delays; menu items fade out concurrently.\n for (var i = 0; i < items.length; i++) {\n items[i].style.transitionDelay = null;\n }\n // Measure the inner element.\n var height = this.element_.getBoundingClientRect().height;\n var width = this.element_.getBoundingClientRect().width;\n // Turn on animation, and apply the final clip. Also make invisible.\n // This triggers the transitions.\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.applyClip_(height, width);\n this.container_.classList.remove(this.CssClasses_.IS_VISIBLE);\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n }\n};\n/**\n * Displays or hides the menu, depending on current state.\n *\n * @public\n */\nMaterialMenu.prototype.toggle = function (evt) {\n if (this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n this.hide();\n } else {\n this.show(evt);\n }\n};\n/**\n * Downgrade the component.\n *\n * @private\n */\nMaterialMenu.prototype.mdlDowngrade_ = function () {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n for (var i = 0; i < items.length; i++) {\n items[i].removeEventListener('click', this.boundItemClick);\n items[i].removeEventListener('keydown', this.boundItemKeydown);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialMenu,\n classAsString: 'MaterialMenu',\n cssClass: 'mdl-js-menu',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Progress MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialProgress = function MaterialProgress(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialProgress = MaterialProgress;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialProgress.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialProgress.prototype.CssClasses_ = { INDETERMINATE_CLASS: 'mdl-progress__indeterminate' };\n/**\n * Set the current progress of the progressbar.\n *\n * @param {Number} p Percentage of the progress (0-100)\n * @public\n */\nMaterialProgress.prototype.setProgress = function (p) {\n if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {\n return;\n }\n this.progressbar_.style.width = p + '%';\n};\n/**\n * Set the current progress of the buffer.\n *\n * @param {Number} p Percentage of the buffer (0-100)\n * @public\n */\nMaterialProgress.prototype.setBuffer = function (p) {\n this.bufferbar_.style.width = p + '%';\n this.auxbar_.style.width = 100 - p + '%';\n};\n/**\n * Initialize element.\n */\nMaterialProgress.prototype.init = function () {\n if (this.element_) {\n var el = document.createElement('div');\n el.className = 'progressbar bar bar1';\n this.element_.appendChild(el);\n this.progressbar_ = el;\n el = document.createElement('div');\n el.className = 'bufferbar bar bar2';\n this.element_.appendChild(el);\n this.bufferbar_ = el;\n el = document.createElement('div');\n el.className = 'auxbar bar bar3';\n this.element_.appendChild(el);\n this.auxbar_ = el;\n this.progressbar_.style.width = '0%';\n this.bufferbar_.style.width = '100%';\n this.auxbar_.style.width = '0%';\n this.element_.classList.add('is-upgraded');\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialProgress.prototype.mdlDowngrade_ = function () {\n while (this.element_.firstChild) {\n this.element_.removeChild(this.element_.firstChild);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialProgress,\n classAsString: 'MaterialProgress',\n cssClass: 'mdl-js-progress',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Radio MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRadio = function MaterialRadio(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialRadio = MaterialRadio;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialRadio.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialRadio.prototype.CssClasses_ = {\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded',\n JS_RADIO: 'mdl-js-radio',\n RADIO_BTN: 'mdl-radio__button',\n RADIO_OUTER_CIRCLE: 'mdl-radio__outer-circle',\n RADIO_INNER_CIRCLE: 'mdl-radio__inner-circle',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-radio__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onChange_ = function (event) {\n // Since other radio buttons don't get change events, we need to look for\n // them to update their classes.\n var radios = document.getElementsByClassName(this.CssClasses_.JS_RADIO);\n for (var i = 0; i < radios.length; i++) {\n var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);\n // Different name == different group, so no point updating those.\n if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {\n radios[i].MaterialRadio.updateClasses_();\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onMouseup_ = function (event) {\n this.blur_();\n};\n/**\n * Update classes.\n *\n * @private\n */\nMaterialRadio.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.blur_ = function (event) {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.btnElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkDisabled = function () {\n if (this.btnElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkToggleState = function () {\n if (this.btnElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\n/**\n * Disable radio.\n *\n * @public\n */\nMaterialRadio.prototype.disable = function () {\n this.btnElement_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable radio.\n *\n * @public\n */\nMaterialRadio.prototype.enable = function () {\n this.btnElement_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Check radio.\n *\n * @public\n */\nMaterialRadio.prototype.check = function () {\n this.btnElement_.checked = true;\n this.updateClasses_();\n};\n/**\n * Uncheck radio.\n *\n * @public\n */\nMaterialRadio.prototype.uncheck = function () {\n this.btnElement_.checked = false;\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialRadio.prototype.init = function () {\n if (this.element_) {\n this.btnElement_ = this.element_.querySelector('.' + this.CssClasses_.RADIO_BTN);\n var outerCircle = document.createElement('span');\n outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);\n var innerCircle = document.createElement('span');\n innerCircle.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE);\n this.element_.appendChild(outerCircle);\n this.element_.appendChild(innerCircle);\n var rippleContainer;\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);\n rippleContainer.addEventListener('mouseup', this.onMouseup_.bind(this));\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n this.element_.appendChild(rippleContainer);\n }\n this.btnElement_.addEventListener('change', this.onChange_.bind(this));\n this.btnElement_.addEventListener('focus', this.onFocus_.bind(this));\n this.btnElement_.addEventListener('blur', this.onBlur_.bind(this));\n this.element_.addEventListener('mouseup', this.onMouseup_.bind(this));\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRadio,\n classAsString: 'MaterialRadio',\n cssClass: 'mdl-js-radio',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Slider MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSlider = function MaterialSlider(element) {\n this.element_ = element;\n // Browser feature detection.\n this.isIE_ = window.navigator.msPointerEnabled;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialSlider = MaterialSlider;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialSlider.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialSlider.prototype.CssClasses_ = {\n IE_CONTAINER: 'mdl-slider__ie-container',\n SLIDER_CONTAINER: 'mdl-slider__container',\n BACKGROUND_FLEX: 'mdl-slider__background-flex',\n BACKGROUND_LOWER: 'mdl-slider__background-lower',\n BACKGROUND_UPPER: 'mdl-slider__background-upper',\n IS_LOWEST_VALUE: 'is-lowest-value',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle input on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onInput_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle change on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onChange_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle mouseup on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onMouseUp_ = function (event) {\n event.target.blur();\n};\n/**\n * Handle mousedown on container element.\n * This handler is purpose is to not require the use to click\n * exactly on the 2px slider element, as FireFox seems to be very\n * strict about this.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onContainerMouseDown_ = function (event) {\n // If this click is not on the parent element (but rather some child)\n // ignore. It may still bubble up.\n if (event.target !== this.element_.parentElement) {\n return;\n }\n // Discard the original event and create a new event that\n // is on the slider element.\n event.preventDefault();\n var newEvent = new MouseEvent('mousedown', {\n target: event.target,\n buttons: event.buttons,\n clientX: event.clientX,\n clientY: this.element_.getBoundingClientRect().y\n });\n this.element_.dispatchEvent(newEvent);\n};\n/**\n * Handle updating of values.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.updateValueStyles_ = function (event) {\n // Calculate and apply percentages to div structure behind slider.\n var fraction = (this.element_.value - this.element_.min) / (this.element_.max - this.element_.min);\n if (fraction === 0) {\n this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE);\n }\n if (!this.isIE_) {\n this.backgroundLower_.style.flex = fraction;\n this.backgroundLower_.style.webkitFlex = fraction;\n this.backgroundUpper_.style.flex = 1 - fraction;\n this.backgroundUpper_.style.webkitFlex = 1 - fraction;\n }\n};\n// Public methods.\n/**\n * Disable slider.\n *\n * @public\n */\nMaterialSlider.prototype.disable = function () {\n this.element_.disabled = true;\n};\n/**\n * Enable slider.\n *\n * @public\n */\nMaterialSlider.prototype.enable = function () {\n this.element_.disabled = false;\n};\n/**\n * Update slider value.\n *\n * @param {Number} value The value to which to set the control (optional).\n * @public\n */\nMaterialSlider.prototype.change = function (value) {\n if (typeof value !== 'undefined') {\n this.element_.value = value;\n }\n this.updateValueStyles_();\n};\n/**\n * Initialize element.\n */\nMaterialSlider.prototype.init = function () {\n if (this.element_) {\n if (this.isIE_) {\n // Since we need to specify a very large height in IE due to\n // implementation limitations, we add a parent here that trims it down to\n // a reasonable size.\n var containerIE = document.createElement('div');\n containerIE.classList.add(this.CssClasses_.IE_CONTAINER);\n this.element_.parentElement.insertBefore(containerIE, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n containerIE.appendChild(this.element_);\n } else {\n // For non-IE browsers, we need a div structure that sits behind the\n // slider and allows us to style the left and right sides of it with\n // different colors.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.SLIDER_CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n var backgroundFlex = document.createElement('div');\n backgroundFlex.classList.add(this.CssClasses_.BACKGROUND_FLEX);\n container.appendChild(backgroundFlex);\n this.backgroundLower_ = document.createElement('div');\n this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER);\n backgroundFlex.appendChild(this.backgroundLower_);\n this.backgroundUpper_ = document.createElement('div');\n this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER);\n backgroundFlex.appendChild(this.backgroundUpper_);\n }\n this.boundInputHandler = this.onInput_.bind(this);\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this);\n this.element_.addEventListener('input', this.boundInputHandler);\n this.element_.addEventListener('change', this.boundChangeHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.element_.parentElement.addEventListener('mousedown', this.boundContainerMouseDownHandler);\n this.updateValueStyles_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialSlider.prototype.mdlDowngrade_ = function () {\n this.element_.removeEventListener('input', this.boundInputHandler);\n this.element_.removeEventListener('change', this.boundChangeHandler);\n this.element_.removeEventListener('mouseup', this.boundMouseUpHandler);\n this.element_.parentElement.removeEventListener('mousedown', this.boundContainerMouseDownHandler);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSlider,\n classAsString: 'MaterialSlider',\n cssClass: 'mdl-js-slider',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Spinner MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n * @constructor\n */\nvar MaterialSpinner = function MaterialSpinner(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialSpinner = MaterialSpinner;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialSpinner.prototype.Constant_ = { MDL_SPINNER_LAYER_COUNT: 4 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialSpinner.prototype.CssClasses_ = {\n MDL_SPINNER_LAYER: 'mdl-spinner__layer',\n MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',\n MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',\n MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',\n MDL_SPINNER_LEFT: 'mdl-spinner__left',\n MDL_SPINNER_RIGHT: 'mdl-spinner__right'\n};\n/**\n * Auxiliary method to create a spinner layer.\n *\n * @param {Number} index Index of the layer to be created.\n * @public\n */\nMaterialSpinner.prototype.createLayer = function (index) {\n var layer = document.createElement('div');\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);\n var leftClipper = document.createElement('div');\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n var gapPatch = document.createElement('div');\n gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n var rightClipper = document.createElement('div');\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n var circleOwners = [\n leftClipper,\n gapPatch,\n rightClipper\n ];\n for (var i = 0; i < circleOwners.length; i++) {\n var circle = document.createElement('div');\n circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);\n circleOwners[i].appendChild(circle);\n }\n layer.appendChild(leftClipper);\n layer.appendChild(gapPatch);\n layer.appendChild(rightClipper);\n this.element_.appendChild(layer);\n};\n/**\n * Stops the spinner animation.\n * Public method for users who need to stop the spinner for any reason.\n *\n * @public\n */\nMaterialSpinner.prototype.stop = function () {\n this.element_.classList.remove('is-active');\n};\n/**\n * Starts the spinner animation.\n * Public method for users who need to manually start the spinner for any reason\n * (instead of just adding the 'is-active' class to their markup).\n *\n * @public\n */\nMaterialSpinner.prototype.start = function () {\n this.element_.classList.add('is-active');\n};\n/**\n * Initialize element.\n */\nMaterialSpinner.prototype.init = function () {\n if (this.element_) {\n for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {\n this.createLayer(i);\n }\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSpinner,\n classAsString: 'MaterialSpinner',\n cssClass: 'mdl-js-spinner',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSwitch = function MaterialSwitch(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialSwitch = MaterialSwitch;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialSwitch.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialSwitch.prototype.CssClasses_ = {\n INPUT: 'mdl-switch__input',\n TRACK: 'mdl-switch__track',\n THUMB: 'mdl-switch__thumb',\n FOCUS_HELPER: 'mdl-switch__focus-helper',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-switch__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialSwitch.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialSwitch.prototype.blur_ = function (event) {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\n/**\n * Disable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Activate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.on = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\n/**\n * Deactivate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.off = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialSwitch.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var track = document.createElement('div');\n track.classList.add(this.CssClasses_.TRACK);\n var thumb = document.createElement('div');\n thumb.classList.add(this.CssClasses_.THUMB);\n var focusHelper = document.createElement('span');\n focusHelper.classList.add(this.CssClasses_.FOCUS_HELPER);\n thumb.appendChild(focusHelper);\n this.element_.appendChild(track);\n this.element_.appendChild(thumb);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundMouseUpHandler);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.inputElement_.addEventListener('change', this.boundChangeHandler);\n this.inputElement_.addEventListener('focus', this.boundFocusHandler);\n this.inputElement_.addEventListener('blur', this.boundBlurHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n/**\n * Downgrade the component.\n *\n * @private\n */\nMaterialSwitch.prototype.mdlDowngrade_ = function () {\n if (this.rippleContainerElement_) {\n this.rippleContainerElement_.removeEventListener('mouseup', this.boundMouseUpHandler);\n }\n this.inputElement_.removeEventListener('change', this.boundChangeHandler);\n this.inputElement_.removeEventListener('focus', this.boundFocusHandler);\n this.inputElement_.removeEventListener('blur', this.boundBlurHandler);\n this.element_.removeEventListener('mouseup', this.boundMouseUpHandler);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSwitch,\n classAsString: 'MaterialSwitch',\n cssClass: 'mdl-js-switch',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tabs MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTabs = function MaterialTabs(element) {\n // Stores the HTML element.\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialTabs = MaterialTabs;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String}\n * @private\n */\nMaterialTabs.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialTabs.prototype.CssClasses_ = {\n TAB_CLASS: 'mdl-tabs__tab',\n PANEL_CLASS: 'mdl-tabs__panel',\n ACTIVE_CLASS: 'is-active',\n UPGRADED_CLASS: 'is-upgraded',\n MDL_JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n MDL_RIPPLE_CONTAINER: 'mdl-tabs__ripple-container',\n MDL_RIPPLE: 'mdl-ripple',\n MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events'\n};\n/**\n * Handle clicks to a tabs component\n *\n * @private\n */\nMaterialTabs.prototype.initTabs_ = function () {\n if (this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n this.tabs_ = this.element_.querySelectorAll('.' + this.CssClasses_.TAB_CLASS);\n this.panels_ = this.element_.querySelectorAll('.' + this.CssClasses_.PANEL_CLASS);\n // Create new tabs for each tab element\n for (var i = 0; i < this.tabs_.length; i++) {\n new MaterialTab(this.tabs_[i], this);\n }\n this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetTabState_ = function () {\n for (var k = 0; k < this.tabs_.length; k++) {\n this.tabs_[k].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetPanelState_ = function () {\n for (var j = 0; j < this.panels_.length; j++) {\n this.panels_[j].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Initialize element.\n */\nMaterialTabs.prototype.init = function () {\n if (this.element_) {\n this.initTabs_();\n }\n};\nfunction MaterialTab(tab, ctx) {\n if (tab) {\n if (ctx.element_.classList.contains(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(ctx.CssClasses_.MDL_RIPPLE_CONTAINER);\n rippleContainer.classList.add(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(ctx.CssClasses_.MDL_RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n tab.addEventListener('click', function (e) {\n e.preventDefault();\n var href = tab.href.split('#')[1];\n var panel = ctx.element_.querySelector('#' + href);\n ctx.resetTabState_();\n ctx.resetPanelState_();\n tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n });\n }\n}\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTabs,\n classAsString: 'MaterialTabs',\n cssClass: 'mdl-js-tabs'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Textfield MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTextfield = function MaterialTextfield(element) {\n this.element_ = element;\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialTextfield = MaterialTextfield;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialTextfield.prototype.Constant_ = {\n NO_MAX_ROWS: -1,\n MAX_ROWS_ATTRIBUTE: 'maxrows'\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialTextfield.prototype.CssClasses_ = {\n LABEL: 'mdl-textfield__label',\n INPUT: 'mdl-textfield__input',\n IS_DIRTY: 'is-dirty',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_INVALID: 'is-invalid',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle input being entered.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onKeyDown_ = function (event) {\n var currentRowCount = event.target.value.split('\\n').length;\n if (event.keyCode === 13) {\n if (currentRowCount >= this.maxRows) {\n event.preventDefault();\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialTextfield.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkValidity();\n this.checkDirty();\n};\n// Public methods.\n/**\n * Check the disabled state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDisabled = function () {\n if (this.input_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\n/**\n * Check the validity state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkValidity = function () {\n if (this.input_.validity.valid) {\n this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n } else {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n};\n/**\n * Check the dirty state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDirty = function () {\n if (this.input_.value && this.input_.value.length > 0) {\n this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n }\n};\n/**\n * Disable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.disable = function () {\n this.input_.disabled = true;\n this.updateClasses_();\n};\n/**\n * Enable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.enable = function () {\n this.input_.disabled = false;\n this.updateClasses_();\n};\n/**\n * Update text field value.\n *\n * @param {String} value The value to which to set the control (optional).\n * @public\n */\nMaterialTextfield.prototype.change = function (value) {\n if (value) {\n this.input_.value = value;\n }\n this.updateClasses_();\n};\n/**\n * Initialize element.\n */\nMaterialTextfield.prototype.init = function () {\n if (this.element_) {\n this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.input_) {\n if (this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)) {\n this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10);\n if (isNaN(this.maxRows)) {\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n }\n }\n this.boundUpdateClassesHandler = this.updateClasses_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.input_.addEventListener('input', this.boundUpdateClassesHandler);\n this.input_.addEventListener('focus', this.boundFocusHandler);\n this.input_.addEventListener('blur', this.boundBlurHandler);\n if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {\n // TODO: This should handle pasting multi line text.\n // Currently doesn't.\n this.boundKeyDownHandler = this.onKeyDown_.bind(this);\n this.input_.addEventListener('keydown', this.boundKeyDownHandler);\n }\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialTextfield.prototype.mdlDowngrade_ = function () {\n this.input_.removeEventListener('input', this.boundUpdateClassesHandler);\n this.input_.removeEventListener('focus', this.boundFocusHandler);\n this.input_.removeEventListener('blur', this.boundBlurHandler);\n if (this.boundKeyDownHandler) {\n this.input_.removeEventListener('keydown', this.boundKeyDownHandler);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTextfield,\n classAsString: 'MaterialTextfield',\n cssClass: 'mdl-js-textfield',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tooltip MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTooltip = function MaterialTooltip(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialTooltip = MaterialTooltip;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialTooltip.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialTooltip.prototype.CssClasses_ = { IS_ACTIVE: 'is-active' };\n/**\n * Handle mouseenter for tooltip.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTooltip.prototype.handleMouseEnter_ = function (event) {\n event.stopPropagation();\n var props = event.target.getBoundingClientRect();\n var left = props.left + props.width / 2;\n var marginLeft = -1 * (this.element_.offsetWidth / 2);\n if (left + marginLeft < 0) {\n this.element_.style.left = 0;\n this.element_.style.marginLeft = 0;\n } else {\n this.element_.style.left = left + 'px';\n this.element_.style.marginLeft = marginLeft + 'px';\n }\n this.element_.style.top = props.top + props.height + 10 + 'px';\n this.element_.classList.add(this.CssClasses_.IS_ACTIVE);\n window.addEventListener('scroll', this.boundMouseLeaveHandler, false);\n window.addEventListener('touchmove', this.boundMouseLeaveHandler, false);\n};\n/**\n * Handle mouseleave for tooltip.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTooltip.prototype.handleMouseLeave_ = function (event) {\n event.stopPropagation();\n this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);\n window.removeEventListener('scroll', this.boundMouseLeaveHandler);\n window.removeEventListener('touchmove', this.boundMouseLeaveHandler, false);\n};\n/**\n * Initialize element.\n */\nMaterialTooltip.prototype.init = function () {\n if (this.element_) {\n var forElId = this.element_.getAttribute('for');\n if (forElId) {\n this.forElement_ = document.getElementById(forElId);\n }\n if (this.forElement_) {\n // Tabindex needs to be set for `blur` events to be emitted\n if (!this.forElement_.getAttribute('tabindex')) {\n this.forElement_.setAttribute('tabindex', '0');\n }\n this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);\n this.boundMouseLeaveHandler = this.handleMouseLeave_.bind(this);\n this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('click', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('blur', this.boundMouseLeaveHandler);\n this.forElement_.addEventListener('touchstart', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveHandler);\n }\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialTooltip.prototype.mdlDowngrade_ = function () {\n if (this.forElement_) {\n this.forElement_.removeEventListener('mouseenter', this.boundMouseEnterHandler, false);\n this.forElement_.removeEventListener('click', this.boundMouseEnterHandler, false);\n this.forElement_.removeEventListener('touchstart', this.boundMouseEnterHandler, false);\n this.forElement_.removeEventListener('mouseleave', this.boundMouseLeaveHandler);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTooltip,\n classAsString: 'MaterialTooltip',\n cssClass: 'mdl-tooltip'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Layout MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialLayout = function MaterialLayout(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialLayout = MaterialLayout;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialLayout.prototype.Constant_ = {\n MAX_WIDTH: '(max-width: 1024px)',\n TAB_SCROLL_PIXELS: 100,\n MENU_ICON: 'menu',\n CHEVRON_LEFT: 'chevron_left',\n CHEVRON_RIGHT: 'chevron_right'\n};\n/**\n * Modes.\n *\n * @enum {Number}\n * @private\n */\nMaterialLayout.prototype.Mode_ = {\n STANDARD: 0,\n SEAMED: 1,\n WATERFALL: 2,\n SCROLL: 3\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialLayout.prototype.CssClasses_ = {\n CONTAINER: 'mdl-layout__container',\n HEADER: 'mdl-layout__header',\n DRAWER: 'mdl-layout__drawer',\n CONTENT: 'mdl-layout__content',\n DRAWER_BTN: 'mdl-layout__drawer-button',\n ICON: 'material-icons',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-layout__tab-ripple-container',\n RIPPLE: 'mdl-ripple',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n HEADER_SEAMED: 'mdl-layout__header--seamed',\n HEADER_WATERFALL: 'mdl-layout__header--waterfall',\n HEADER_SCROLL: 'mdl-layout__header--scroll',\n FIXED_HEADER: 'mdl-layout--fixed-header',\n OBFUSCATOR: 'mdl-layout__obfuscator',\n TAB_BAR: 'mdl-layout__tab-bar',\n TAB_CONTAINER: 'mdl-layout__tab-bar-container',\n TAB: 'mdl-layout__tab',\n TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',\n TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',\n TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',\n PANEL: 'mdl-layout__tab-panel',\n HAS_DRAWER: 'has-drawer',\n HAS_TABS: 'has-tabs',\n HAS_SCROLLING_HEADER: 'has-scrolling-header',\n CASTING_SHADOW: 'is-casting-shadow',\n IS_COMPACT: 'is-compact',\n IS_SMALL_SCREEN: 'is-small-screen',\n IS_DRAWER_OPEN: 'is-visible',\n IS_ACTIVE: 'is-active',\n IS_UPGRADED: 'is-upgraded',\n IS_ANIMATING: 'is-animating',\n ON_LARGE_SCREEN: 'mdl-layout--large-screen-only',\n ON_SMALL_SCREEN: 'mdl-layout--small-screen-only'\n};\n/**\n * Handles scrolling on the content.\n *\n * @private\n */\nMaterialLayout.prototype.contentScrollHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {\n return;\n }\n if (this.content_.scrollTop > 0 && !this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.add(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n } else if (this.content_.scrollTop <= 0 && this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n};\n/**\n * Handles changes in screen size.\n *\n * @private\n */\nMaterialLayout.prototype.screenSizeHandler_ = function () {\n if (this.screenSizeMediaQuery_.matches) {\n this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);\n // Collapse drawer (if any) when moving to a large screen size.\n if (this.drawer_) {\n this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n }\n }\n};\n/**\n * Handles toggling of the drawer.\n *\n * @private\n */\nMaterialLayout.prototype.drawerToggleHandler_ = function () {\n this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n};\n/**\n * Handles (un)setting the `is-animating` class\n *\n * @private\n */\nMaterialLayout.prototype.headerTransitionEndHandler_ = function () {\n this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);\n};\n/**\n * Handles expanding the header on click\n *\n * @private\n */\nMaterialLayout.prototype.headerClickHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetTabState_ = function (tabBar) {\n for (var k = 0; k < tabBar.length; k++) {\n tabBar[k].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetPanelState_ = function (panels) {\n for (var j = 0; j < panels.length; j++) {\n panels[j].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Initialize element.\n */\nMaterialLayout.prototype.init = function () {\n if (this.element_) {\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n var directChildren = this.element_.childNodes;\n for (var c = 0; c < directChildren.length; c++) {\n var child = directChildren[c];\n if (child.classList && child.classList.contains(this.CssClasses_.HEADER)) {\n this.header_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.DRAWER)) {\n this.drawer_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.CONTENT)) {\n this.content_ = child;\n }\n }\n if (this.header_) {\n this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR);\n }\n var mode = this.Mode_.STANDARD;\n // Keep an eye on screen size, and add/remove auxiliary class for styling\n // of small screens.\n this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH);\n this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));\n this.screenSizeHandler_();\n if (this.header_) {\n if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {\n mode = this.Mode_.SEAMED;\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_WATERFALL)) {\n mode = this.Mode_.WATERFALL;\n this.header_.addEventListener('transitionend', this.headerTransitionEndHandler_.bind(this));\n this.header_.addEventListener('click', this.headerClickHandler_.bind(this));\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_SCROLL)) {\n mode = this.Mode_.SCROLL;\n container.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER);\n }\n if (mode === this.Mode_.STANDARD) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.SEAMED || mode === this.Mode_.SCROLL) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.WATERFALL) {\n // Add and remove shadows depending on scroll position.\n // Also add/remove auxiliary class for styling of the compact version of\n // the header.\n this.content_.addEventListener('scroll', this.contentScrollHandler_.bind(this));\n this.contentScrollHandler_();\n }\n }\n var eatEvent = function (ev) {\n ev.preventDefault();\n };\n // Add drawer toggling button to our layout, if we have an openable drawer.\n if (this.drawer_) {\n var drawerButton = document.createElement('div');\n drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);\n if (this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN)) {\n //If drawer has ON_LARGE_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_LARGE_SCREEN);\n } else if (this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN)) {\n //If drawer has ON_SMALL_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_SMALL_SCREEN);\n }\n var drawerButtonIcon = document.createElement('i');\n drawerButtonIcon.classList.add(this.CssClasses_.ICON);\n drawerButtonIcon.textContent = this.Constant_.MENU_ICON;\n drawerButton.appendChild(drawerButtonIcon);\n drawerButton.addEventListener('click', this.drawerToggleHandler_.bind(this));\n // Add a class if the layout has a drawer, for altering the left padding.\n // Adds the HAS_DRAWER to the elements since this.header_ may or may\n // not be present.\n this.element_.classList.add(this.CssClasses_.HAS_DRAWER);\n this.drawer_.addEventListener('mousewheel', eatEvent);\n // If we have a fixed header, add the button to the header rather than\n // the layout.\n if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {\n this.header_.insertBefore(drawerButton, this.header_.firstChild);\n } else {\n this.element_.insertBefore(drawerButton, this.content_);\n }\n var obfuscator = document.createElement('div');\n obfuscator.classList.add(this.CssClasses_.OBFUSCATOR);\n this.element_.appendChild(obfuscator);\n obfuscator.addEventListener('click', this.drawerToggleHandler_.bind(this));\n obfuscator.addEventListener('mousewheel', eatEvent);\n }\n // Initialize tabs, if any.\n if (this.header_ && this.tabBar_) {\n this.element_.classList.add(this.CssClasses_.HAS_TABS);\n var tabContainer = document.createElement('div');\n tabContainer.classList.add(this.CssClasses_.TAB_CONTAINER);\n this.header_.insertBefore(tabContainer, this.tabBar_);\n this.header_.removeChild(this.tabBar_);\n var leftButton = document.createElement('div');\n leftButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n leftButton.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);\n var leftButtonIcon = document.createElement('i');\n leftButtonIcon.classList.add(this.CssClasses_.ICON);\n leftButtonIcon.textContent = this.Constant_.CHEVRON_LEFT;\n leftButton.appendChild(leftButtonIcon);\n leftButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n var rightButton = document.createElement('div');\n rightButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n rightButton.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);\n var rightButtonIcon = document.createElement('i');\n rightButtonIcon.classList.add(this.CssClasses_.ICON);\n rightButtonIcon.textContent = this.Constant_.CHEVRON_RIGHT;\n rightButton.appendChild(rightButtonIcon);\n rightButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n tabContainer.appendChild(leftButton);\n tabContainer.appendChild(this.tabBar_);\n tabContainer.appendChild(rightButton);\n // Add and remove buttons depending on scroll position.\n var tabScrollHandler = function () {\n if (this.tabBar_.scrollLeft > 0) {\n leftButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n leftButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n if (this.tabBar_.scrollLeft < this.tabBar_.scrollWidth - this.tabBar_.offsetWidth) {\n rightButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n rightButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n }.bind(this);\n this.tabBar_.addEventListener('scroll', tabScrollHandler);\n tabScrollHandler();\n if (this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n var tabs = this.tabBar_.querySelectorAll('.' + this.CssClasses_.TAB);\n var panels = this.content_.querySelectorAll('.' + this.CssClasses_.PANEL);\n // Create new tabs for each tab element\n for (var i = 0; i < tabs.length; i++) {\n new MaterialLayoutTab(tabs[i], tabs, panels, this);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\nfunction MaterialLayoutTab(tab, tabs, panels, layout) {\n if (tab) {\n if (layout.tabBar_.classList.contains(layout.CssClasses_.JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(layout.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n tab.addEventListener('click', function (e) {\n e.preventDefault();\n var href = tab.href.split('#')[1];\n var panel = layout.content_.querySelector('#' + href);\n layout.resetTabState_(tabs);\n layout.resetPanelState_(panels);\n tab.classList.add(layout.CssClasses_.IS_ACTIVE);\n panel.classList.add(layout.CssClasses_.IS_ACTIVE);\n });\n }\n}\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialLayout,\n classAsString: 'MaterialLayout',\n cssClass: 'mdl-js-layout'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Data Table Card MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialDataTable = function MaterialDataTable(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialDataTable = MaterialDataTable;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialDataTable.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialDataTable.prototype.CssClasses_ = {\n DATA_TABLE: 'mdl-data-table',\n SELECTABLE: 'mdl-data-table--selectable',\n IS_SELECTED: 'is-selected',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Generates and returns a function that toggles the selection state of a\n * single row (or multiple rows).\n *\n * @param {HTMLElement} checkbox Checkbox that toggles the selection state.\n * @param {HTMLElement} row Row to toggle when checkbox changes.\n * @param {HTMLElement[]} rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.selectRow_ = function (checkbox, row, rows) {\n if (row) {\n return function () {\n if (checkbox.checked) {\n row.classList.add(this.CssClasses_.IS_SELECTED);\n } else {\n row.classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }.bind(this);\n }\n if (rows) {\n return function () {\n var i;\n var el;\n if (checkbox.checked) {\n for (i = 0; i < rows.length; i++) {\n el = rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el.MaterialCheckbox.check();\n rows[i].classList.add(this.CssClasses_.IS_SELECTED);\n }\n } else {\n for (i = 0; i < rows.length; i++) {\n el = rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el.MaterialCheckbox.uncheck();\n rows[i].classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }\n }.bind(this);\n }\n};\n/**\n * Creates a checkbox for a single or or multiple rows and hooks up the\n * event handling.\n *\n * @param {HTMLElement} row Row to toggle when checkbox changes.\n * @param {HTMLElement[]} rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.createCheckbox_ = function (row, rows) {\n var label = document.createElement('label');\n label.classList.add('mdl-checkbox');\n label.classList.add('mdl-js-checkbox');\n label.classList.add('mdl-js-ripple-effect');\n label.classList.add('mdl-data-table__select');\n var checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.classList.add('mdl-checkbox__input');\n if (row) {\n checkbox.addEventListener('change', this.selectRow_(checkbox, row));\n } else if (rows) {\n checkbox.addEventListener('change', this.selectRow_(checkbox, null, rows));\n }\n label.appendChild(checkbox);\n componentHandler.upgradeElement(label, 'MaterialCheckbox');\n return label;\n};\n/**\n * Initialize element.\n */\nMaterialDataTable.prototype.init = function () {\n if (this.element_) {\n var firstHeader = this.element_.querySelector('th');\n var rows = this.element_.querySelector('tbody').querySelectorAll('tr');\n if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {\n var th = document.createElement('th');\n var headerCheckbox = this.createCheckbox_(null, rows);\n th.appendChild(headerCheckbox);\n firstHeader.parentElement.insertBefore(th, firstHeader);\n for (var i = 0; i < rows.length; i++) {\n var firstCell = rows[i].querySelector('td');\n if (firstCell) {\n var td = document.createElement('td');\n var rowCheckbox = this.createCheckbox_(rows[i]);\n td.appendChild(rowCheckbox);\n rows[i].insertBefore(td, firstCell);\n }\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialDataTable,\n classAsString: 'MaterialDataTable',\n cssClass: 'mdl-js-data-table'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Ripple MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRipple = function MaterialRipple(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow.MaterialRipple = MaterialRipple;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {String | Number}\n * @private\n */\nMaterialRipple.prototype.Constant_ = {\n INITIAL_SCALE: 'scale(0.0001, 0.0001)',\n INITIAL_SIZE: '1px',\n INITIAL_OPACITY: '0.4',\n FINAL_OPACITY: '0',\n FINAL_SCALE: ''\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {String}\n * @private\n */\nMaterialRipple.prototype.CssClasses_ = {\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n IS_ANIMATING: 'is-animating',\n IS_VISIBLE: 'is-visible'\n};\n/**\n * Handle mouse / finger down on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.downHandler_ = function (event) {\n if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {\n var rect = this.element_.getBoundingClientRect();\n this.boundHeight = rect.height;\n this.boundWidth = rect.width;\n this.rippleSize_ = Math.sqrt(rect.width * rect.width + rect.height * rect.height) * 2 + 2;\n this.rippleElement_.style.width = this.rippleSize_ + 'px';\n this.rippleElement_.style.height = this.rippleSize_ + 'px';\n }\n this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE);\n if (event.type === 'mousedown' && this.ignoringMouseDown_) {\n this.ignoringMouseDown_ = false;\n } else {\n if (event.type === 'touchstart') {\n this.ignoringMouseDown_ = true;\n }\n var frameCount = this.getFrameCount();\n if (frameCount > 0) {\n return;\n }\n this.setFrameCount(1);\n var bound = event.currentTarget.getBoundingClientRect();\n var x;\n var y;\n // Check if we are handling a keyboard click.\n if (event.clientX === 0 && event.clientY === 0) {\n x = Math.round(bound.width / 2);\n y = Math.round(bound.height / 2);\n } else {\n var clientX = event.clientX ? event.clientX : event.touches[0].clientX;\n var clientY = event.clientY ? event.clientY : event.touches[0].clientY;\n x = Math.round(clientX - bound.left);\n y = Math.round(clientY - bound.top);\n }\n this.setRippleXY(x, y);\n this.setRippleStyles(true);\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n }\n};\n/**\n * Handle mouse / finger up on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.upHandler_ = function (event) {\n // Don't fire for the artificial \"mouseup\" generated by a double-click.\n if (event && event.detail !== 2) {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n }\n // Allow a repaint to occur before removing this class, so the animation\n // shows for tap events, which seem to trigger a mouseup too soon after\n // mousedown.\n window.setTimeout(function () {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n }.bind(this), 0);\n};\n/**\n * Initialize element.\n */\nMaterialRipple.prototype.init = function () {\n if (this.element_) {\n var recentering = this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);\n if (!this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)) {\n this.rippleElement_ = this.element_.querySelector('.' + this.CssClasses_.RIPPLE);\n this.frameCount_ = 0;\n this.rippleSize_ = 0;\n this.x_ = 0;\n this.y_ = 0;\n // Touch start produces a compat mouse down event, which would cause a\n // second ripples. To avoid that, we use this property to ignore the first\n // mouse down after a touch start.\n this.ignoringMouseDown_ = false;\n this.boundDownHandler = this.downHandler_.bind(this);\n this.element_.addEventListener('mousedown', this.boundDownHandler);\n this.element_.addEventListener('touchstart', this.boundDownHandler);\n this.boundUpHandler = this.upHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundUpHandler);\n this.element_.addEventListener('mouseleave', this.boundUpHandler);\n this.element_.addEventListener('touchend', this.boundUpHandler);\n this.element_.addEventListener('blur', this.boundUpHandler);\n this.getFrameCount = function () {\n return this.frameCount_;\n };\n this.setFrameCount = function (fC) {\n this.frameCount_ = fC;\n };\n this.getRippleElement = function () {\n return this.rippleElement_;\n };\n this.setRippleXY = function (newX, newY) {\n this.x_ = newX;\n this.y_ = newY;\n };\n this.setRippleStyles = function (start) {\n if (this.rippleElement_ !== null) {\n var transformString;\n var scale;\n var size;\n var offset = 'translate(' + this.x_ + 'px, ' + this.y_ + 'px)';\n if (start) {\n scale = this.Constant_.INITIAL_SCALE;\n size = this.Constant_.INITIAL_SIZE;\n } else {\n scale = this.Constant_.FINAL_SCALE;\n size = this.rippleSize_ + 'px';\n if (recentering) {\n offset = 'translate(' + this.boundWidth / 2 + 'px, ' + this.boundHeight / 2 + 'px)';\n }\n }\n transformString = 'translate(-50%, -50%) ' + offset + scale;\n this.rippleElement_.style.webkitTransform = transformString;\n this.rippleElement_.style.msTransform = transformString;\n this.rippleElement_.style.transform = transformString;\n if (start) {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING);\n } else {\n this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n };\n this.animFrameHandler = function () {\n if (this.frameCount_-- > 0) {\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n } else {\n this.setRippleStyles(false);\n }\n };\n }\n }\n};\n/**\n * Downgrade the component\n *\n * @private\n */\nMaterialRipple.prototype.mdlDowngrade_ = function () {\n this.element_.removeEventListener('mousedown', this.boundDownHandler);\n this.element_.removeEventListener('touchstart', this.boundDownHandler);\n this.element_.removeEventListener('mouseup', this.boundUpHandler);\n this.element_.removeEventListener('mouseleave', this.boundUpHandler);\n this.element_.removeEventListener('touchend', this.boundUpHandler);\n this.element_.removeEventListener('blur', this.boundUpHandler);\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRipple,\n classAsString: 'MaterialRipple',\n cssClass: 'mdl-js-ripple-effect',\n widget: false\n});\n}());\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 000000000..71ea8c771 --- /dev/null +++ b/package.json @@ -0,0 +1,75 @@ +{ + "name": "material-design-lite", + "version": "1.0.4", + "description": "Material Design Components in CSS, JS and HTML", + "private": true, + "license": "Apache-2.0", + "author": "Google", + "repository": "google/material-design-lite", + "devDependencies": { + "acorn": "^2.2.0", + "apache-server-configs": "^2.7.1", + "browser-sync": "^2.2.3", + "chai": "^2.0.0", + "chai-jquery": "^2.0.0", + "del": "^1.1.1", + "drool": "^0.2.1", + "escodegen": "^1.6.1", + "gulp": "^3.8.11", + "gulp-autoprefixer": "^2.0.0", + "gulp-cache": "^0.2.6", + "gulp-changed": "^1.0.0", + "gulp-concat": "^2.4.1", + "gulp-connect": "^2.2.0", + "gulp-css-inline-images": "^0.1.1", + "gulp-csso": "^1.0.0", + "gulp-file": "^0.2.0", + "gulp-filter": "^2.0.2", + "gulp-flatten": "0.0.4", + "gulp-front-matter": "^1.2.2", + "gulp-gh-pages": "^0.5.0", + "gulp-header": "^1.2.2", + "gulp-if": "^1.2.1", + "gulp-iife": "0.0.7", + "gulp-imagemin": "^2.2.1", + "gulp-jscs": "^1.6.0", + "gulp-jshint": "^1.6.3", + "gulp-load-plugins": "^0.10.0", + "gulp-markdown": "^1.0.0", + "gulp-marked": "^1.0.0", + "gulp-minify-html": "^1.0.0", + "gulp-mocha-phantomjs": "^0.6.1", + "gulp-open": "^0.3.2", + "gulp-rename": "^1.2.0", + "gulp-replace": "^0.5.3", + "gulp-sass": "2.0.*", + "gulp-shell": "^0.4.2", + "gulp-size": "^1.0.0", + "gulp-sourcemaps": "^1.3.0", + "gulp-subtree": "^0.1.0", + "gulp-tap": "^0.1.3", + "gulp-uglify": "^1.0.1", + "gulp-useref": "^1.0.1", + "gulp-util": "^3.0.4", + "gulp-zip": "^3.0.2", + "humanize": "0.0.9", + "jquery": "^2.1.3", + "jshint-stylish": "^1.0.0", + "merge-stream": "^0.1.7", + "mocha": "^2.1.0", + "opn": "^1.0.0", + "phantomjs": "^1.9.17", + "prismjs": "0.0.1", + "require-dir": "^0.3.0", + "run-sequence": "^1.0.2", + "swig": "^1.4.2", + "through2": "^2.0.0", + "vinyl-paths": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "gulp && git status | grep 'working directory clean' >/dev/null || (echo 'Please commit all changes generated by building'; exit 1)" + } +} diff --git a/src/INTRODUCTION.md b/src/INTRODUCTION.md new file mode 100755 index 000000000..236fc2806 --- /dev/null +++ b/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 — most importantly — 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 + + + +``` + +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 ` +``` + 2. Add one or more MDL classes, separated by spaces, to the button using the `class` attribute. +```html + +``` + +The button component is ready for use. + +####Examples +A button with the "raised" effect. +```html + +``` + +A button with the "fab" effect. +```html + +``` + +A button with the "icon" and "colored" effects. +```html + +``` + + +##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 | 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`. ``. Alternatively, the `mdl-button--disabled` class can be used to achieve the same result. +>This attribute may be added or removed programmatically via scripting. diff --git a/src/button/_button.scss b/src/button/_button.scss new file mode 100644 index 000000000..3ec89442c --- /dev/null +++ b/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; + min-width: $button-min-width; + padding: 0 $button-padding; + display: inline-block; + @include typo-button(); + overflow: hidden; + will-change: box-shadow, transform; + 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: auto; + 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; + @include shadow-2dp(); + } + } + + &--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; + @include shadow-2dp(); + } + } + &--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/src/button/button.js b/src/button/button.js new file mode 100644 index 000000000..0e8fd9aad --- /dev/null +++ b/src/button/button.js @@ -0,0 +1,134 @@ +/** + * @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; + }; + + /** + * Enable button. + * + * @public + */ + MaterialButton.prototype.enable = function() { + this.element_.disabled = false; + }; + + /** + * 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); + } + }; + + /** + * Downgrade the element. + * + * @private + */ + MaterialButton.prototype.mdlDowngrade_ = function() { + if (this.rippleElement_) { + this.rippleElement_.removeEventListener('mouseup', this.boundRippleBlurHandler); + } + this.element_.removeEventListener('mouseup', this.boundButtonBlurHandler); + this.element_.removeEventListener('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/src/button/snippets/fab-colored-ripple.html b/src/button/snippets/fab-colored-ripple.html new file mode 100644 index 000000000..df2d39a41 --- /dev/null +++ b/src/button/snippets/fab-colored-ripple.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/fab-colored.html b/src/button/snippets/fab-colored.html new file mode 100644 index 000000000..b25e8da0a --- /dev/null +++ b/src/button/snippets/fab-colored.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/fab-disabled.html b/src/button/snippets/fab-disabled.html new file mode 100644 index 000000000..3dc9cb46b --- /dev/null +++ b/src/button/snippets/fab-disabled.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/fab-mini-colored.html b/src/button/snippets/fab-mini-colored.html new file mode 100644 index 000000000..3e35a1599 --- /dev/null +++ b/src/button/snippets/fab-mini-colored.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/fab-mini.html b/src/button/snippets/fab-mini.html new file mode 100644 index 000000000..8b5c5ca30 --- /dev/null +++ b/src/button/snippets/fab-mini.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/fab-ripple.html b/src/button/snippets/fab-ripple.html new file mode 100644 index 000000000..02c42f9ec --- /dev/null +++ b/src/button/snippets/fab-ripple.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/fab.html b/src/button/snippets/fab.html new file mode 100644 index 000000000..0874925bd --- /dev/null +++ b/src/button/snippets/fab.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/flat-accent.html b/src/button/snippets/flat-accent.html new file mode 100644 index 000000000..b650bc2f4 --- /dev/null +++ b/src/button/snippets/flat-accent.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/flat-disabled.html b/src/button/snippets/flat-disabled.html new file mode 100644 index 000000000..9139038d3 --- /dev/null +++ b/src/button/snippets/flat-disabled.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/flat-primary.html b/src/button/snippets/flat-primary.html new file mode 100644 index 000000000..780ce4893 --- /dev/null +++ b/src/button/snippets/flat-primary.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/flat-ripple.html b/src/button/snippets/flat-ripple.html new file mode 100644 index 000000000..c8c37a8a4 --- /dev/null +++ b/src/button/snippets/flat-ripple.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/flat.html b/src/button/snippets/flat.html new file mode 100644 index 000000000..19da6130f --- /dev/null +++ b/src/button/snippets/flat.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/icon-colored.html b/src/button/snippets/icon-colored.html new file mode 100644 index 000000000..cabcb5af6 --- /dev/null +++ b/src/button/snippets/icon-colored.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/icon.html b/src/button/snippets/icon.html new file mode 100644 index 000000000..122023a52 --- /dev/null +++ b/src/button/snippets/icon.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/raised-accent.html b/src/button/snippets/raised-accent.html new file mode 100644 index 000000000..cb547f194 --- /dev/null +++ b/src/button/snippets/raised-accent.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/raised-colored.html b/src/button/snippets/raised-colored.html new file mode 100644 index 000000000..713c2f582 --- /dev/null +++ b/src/button/snippets/raised-colored.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/raised-disabled.html b/src/button/snippets/raised-disabled.html new file mode 100644 index 000000000..02f747428 --- /dev/null +++ b/src/button/snippets/raised-disabled.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/raised-ripple-accent.html b/src/button/snippets/raised-ripple-accent.html new file mode 100644 index 000000000..9d33d8be0 --- /dev/null +++ b/src/button/snippets/raised-ripple-accent.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/raised-ripple.html b/src/button/snippets/raised-ripple.html new file mode 100644 index 000000000..6b38c0bf2 --- /dev/null +++ b/src/button/snippets/raised-ripple.html @@ -0,0 +1,4 @@ + + diff --git a/src/button/snippets/raised.html b/src/button/snippets/raised.html new file mode 100644 index 000000000..a9397331c --- /dev/null +++ b/src/button/snippets/raised.html @@ -0,0 +1,4 @@ + + diff --git a/src/card/README.md b/src/card/README.md new file mode 100755 index 000000000..7fa69ea38 --- /dev/null +++ b/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 — such as a photo, some text, and a link — 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. + +##Basic use +To use any MDL component, you must include the minified CSS and JavaScript files using standard relative-path references in the `` section of the page, as described in the MDL Introduction. + +###To include an MDL **card** component: + + 1. Code a `
` element; this is the "outer" container, intended to hold all of the card's content. +```html +
+
+``` + 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 +
+
+ ... +
+
+ ... +
+
+ ... +
+
+ ... +
+
+``` + 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 +
+
+ ... +
+
+ ... +
+
+ ... +
+
+ ... +
+
+``` + 4. Add content to each "inner" div, again depending on its intended use, using standard HTML elements and, optionally, additional MDL classes. +```html +
+
+

title Text Goes Here

+
+
+ +
+
+ This text might describe the photo and provide further information, such as where and + when it was taken. +
+ +
+``` + +The card component is ready for use. + +####Examples + +A card (no shadow) with a title, image, text, and action. + +```html +
+
+

Auckland Sky Tower
Auckland, New Zealand

+
+
+ +
+
+ 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. +
+ +
+``` + +Card (level-3 shadow) with an image, caption, and text: + +```html +
+
+
+
+ Auckland Sky Tower, taken March 24th, 2014 +
+
+ 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. +
+
+``` + +##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 | diff --git a/src/card/_card.scss b/src/card/_card.scss new file mode 100644 index 000000000..1986fbdf1 --- /dev/null +++ b/src/card/_card.scss @@ -0,0 +1,111 @@ +/** + * 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: grey; + 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__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/src/card/snippets/event.html b/src/card/snippets/event.html new file mode 100644 index 000000000..d64bef977 --- /dev/null +++ b/src/card/snippets/event.html @@ -0,0 +1,44 @@ + + + +
+
+

+ Featured event:
+ May 24, 2016
+ 7-11pm +

+
+
+ + Add to Calendar + +
+ event +
+
diff --git a/src/card/snippets/image.html b/src/card/snippets/image.html new file mode 100644 index 000000000..f9cb6454b --- /dev/null +++ b/src/card/snippets/image.html @@ -0,0 +1,25 @@ + + + +
+
+
+ Image.jpg +
+
diff --git a/src/card/snippets/square.html b/src/card/snippets/square.html new file mode 100644 index 000000000..93d13f503 --- /dev/null +++ b/src/card/snippets/square.html @@ -0,0 +1,27 @@ + + + +
+
+

Update

+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Aenan convallis. +
+ +
diff --git a/src/card/snippets/wide.html b/src/card/snippets/wide.html new file mode 100644 index 000000000..0ee92408a --- /dev/null +++ b/src/card/snippets/wide.html @@ -0,0 +1,34 @@ + + + +
+
+

Welcome

+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Mauris sagittis pellentesque lacus eleifend lacinia... +
+ +
+ +
+
diff --git a/src/checkbox/README.md b/src/checkbox/README.md new file mode 100755 index 000000000..9fc4fdedf --- /dev/null +++ b/src/checkbox/README.md @@ -0,0 +1,65 @@ +##Introduction +The Material Design Lite (MDL) **checkbox** component is an enhanced version of the standard HTML `` 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*. + +##Basic use +To use any MDL component, you must include the minified CSS and JavaScript files using standard relative-path references in the `` section of the page, as described in the MDL Introduction. + +###To include an MDL **checkbox** component: + + 1. Code a `