diff --git a/Gruntfile.js b/Gruntfile.js index 696ecac644..825e852192 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -165,11 +165,11 @@ module.exports = function(grunt) { // Clean - clean: { - build: { - src: [ 'dist/' ] - }, - }, +// clean: { +// build: { +// src: [ 'dist/' ] +// }, +// }, // Jade @@ -340,7 +340,7 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-compress'); - grunt.loadNpmTasks('grunt-contrib-clean'); +// grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-jade'); grunt.loadNpmTasks('grunt-concurrent'); grunt.loadNpmTasks('grunt-notify'); @@ -348,10 +348,10 @@ module.exports = function(grunt) { // define the tasks - grunt.registerTask('default', ['copy', 'sass:expanded', 'sass:min', 'concat', 'uglify:dist', 'compress:main', 'compress:src', 'clean']); + grunt.registerTask('default', ['copy', 'sass:expanded', 'sass:min', 'concat', 'uglify:dist', 'compress:main', 'compress:src']); grunt.registerTask('jade_compile', ['jade', 'notify:jade_compile']); - grunt.registerTask('js_compile', ['concat:dist', 'uglify:bin', 'notify:js_compile', 'clean']); + grunt.registerTask('js_compile', ['concat:dist', 'uglify:bin', 'notify:js_compile']); grunt.registerTask('sass_compile', ['sass:gh', 'sass:bin', 'notify:sass_compile']); grunt.registerTask('start_server', ['connect:server', 'notify:server']); diff --git a/README.md b/README.md index 82af6a3888..eab4d33d00 100755 --- a/README.md +++ b/README.md @@ -1,3 +1,28 @@ ![alt tag](https://raw.github.com/dogfalo/materialize/master/images/materialize.gif) =========== Materialize, a CSS Framework based on material design + +### Current Version : v0.92.0 + +##Changelog + +- v0.92.0 + - Clicking icon in dropdown in navbar no longer closes dropdown immediately + - Multiple select inputs now work properly + - Mobile navbar no longer extends past screen width + - Parallax improved + - Modal restructured / can be opened programmatically + - Callbacks added to modals + - Added dist folder to repo + + +- v0.91 + - bug fixes to forms + - added waves color classes + - toast thickened to look better on mobile + - many other bug fixes + + +- v0.9 + - Touch interactions added + - tons more... diff --git a/bin/materialize-src-v0.91.zip b/bin/materialize-src-v0.92.0.zip similarity index 88% rename from bin/materialize-src-v0.91.zip rename to bin/materialize-src-v0.92.0.zip index 16e29ef301..44c845d8be 100644 Binary files a/bin/materialize-src-v0.91.zip and b/bin/materialize-src-v0.92.0.zip differ diff --git a/bin/materialize-v0.91.zip b/bin/materialize-v0.92.0.zip similarity index 83% rename from bin/materialize-v0.91.zip rename to bin/materialize-v0.92.0.zip index d6de02f43f..6b21e61a47 100644 Binary files a/bin/materialize-v0.91.zip and b/bin/materialize-v0.92.0.zip differ diff --git a/bower.json b/bower.json index 1504cf217b..f8cfa05736 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "Materialize", - "version": "0.91", + "version": "0.92", "description": "A modern responsive front-end framework based on Material Design", "keywords": [ "css", diff --git a/changelog.txt b/changelog.txt index d81c9de694..61d194eda1 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,10 +1,22 @@ Changelog + +v0.92.0 +- Clicking icon in dropdown in navbar no longer closes dropdown immediately +- Multiple select inputs now work properly +- Mobile navbar no longer extends past screen width +- Parallax improved +- Modal restructured / can be opened programmatically +- Callbacks added to modals +- Added dist folder to repo + + v0.91 - bug fixes to forms - added waves color classes - toast thickened to look better on mobile - many other bug fixes + v0.9 - Touch interactions added - tons more... \ No newline at end of file diff --git a/dist/css/materialize.css b/dist/css/materialize.css new file mode 100644 index 0000000000..cc728bffda --- /dev/null +++ b/dist/css/materialize.css @@ -0,0 +1,8939 @@ +/*! normalize.css v3.0.1 | MIT License | git.io/normalize */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + +/** + * Remove default margin. + */ +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} + +.materialize-red.lighten-5 { + background-color: #fdeaeb !important; +} + +.materialize-red-text.lighten-5 { + color: #fdeaeb !important; +} + +.materialize-red.lighten-4 { + background-color: #f8c1c3 !important; +} + +.materialize-red-text.lighten-4 { + color: #f8c1c3 !important; +} + +.materialize-red.lighten-3 { + background-color: #f3989b !important; +} + +.materialize-red-text.lighten-3 { + color: #f3989b !important; +} + +.materialize-red.lighten-2 { + background-color: #ee6e73 !important; +} + +.materialize-red-text.lighten-2 { + color: #ee6e73 !important; +} + +.materialize-red.lighten-1 { + background-color: #ea454b !important; +} + +.materialize-red-text.lighten-1 { + color: #ea454b !important; +} + +.materialize-red { + background-color: #e51c23 !important; +} + +.materialize-red-text { + color: #e51c23 !important; +} + +.materialize-red.darken-1 { + background-color: #d0181e !important; +} + +.materialize-red-text.darken-1 { + color: #d0181e !important; +} + +.materialize-red.darken-2 { + background-color: #b9151b !important; +} + +.materialize-red-text.darken-2 { + color: #b9151b !important; +} + +.materialize-red.darken-3 { + background-color: #a21318 !important; +} + +.materialize-red-text.darken-3 { + color: #a21318 !important; +} + +.materialize-red.darken-4 { + background-color: #8b1014 !important; +} + +.materialize-red-text.darken-4 { + color: #8b1014 !important; +} + +.red.lighten-5 { + background-color: #FFEBEE !important; +} + +.red-text.lighten-5 { + color: #FFEBEE !important; +} + +.red.lighten-4 { + background-color: #FFCDD2 !important; +} + +.red-text.lighten-4 { + color: #FFCDD2 !important; +} + +.red.lighten-3 { + background-color: #EF9A9A !important; +} + +.red-text.lighten-3 { + color: #EF9A9A !important; +} + +.red.lighten-2 { + background-color: #E57373 !important; +} + +.red-text.lighten-2 { + color: #E57373 !important; +} + +.red.lighten-1 { + background-color: #EF5350 !important; +} + +.red-text.lighten-1 { + color: #EF5350 !important; +} + +.red { + background-color: #F44336 !important; +} + +.red-text { + color: #F44336 !important; +} + +.red.darken-1 { + background-color: #E53935 !important; +} + +.red-text.darken-1 { + color: #E53935 !important; +} + +.red.darken-2 { + background-color: #D32F2F !important; +} + +.red-text.darken-2 { + color: #D32F2F !important; +} + +.red.darken-3 { + background-color: #C62828 !important; +} + +.red-text.darken-3 { + color: #C62828 !important; +} + +.red.darken-4 { + background-color: #B71C1C !important; +} + +.red-text.darken-4 { + color: #B71C1C !important; +} + +.red.accent-1 { + background-color: #FF8A80 !important; +} + +.red-text.accent-1 { + color: #FF8A80 !important; +} + +.red.accent-2 { + background-color: #FF5252 !important; +} + +.red-text.accent-2 { + color: #FF5252 !important; +} + +.red.accent-3 { + background-color: #FF1744 !important; +} + +.red-text.accent-3 { + color: #FF1744 !important; +} + +.red.accent-4 { + background-color: #D50000 !important; +} + +.red-text.accent-4 { + color: #D50000 !important; +} + +.pink.lighten-5 { + background-color: #fce4ec !important; +} + +.pink-text.lighten-5 { + color: #fce4ec !important; +} + +.pink.lighten-4 { + background-color: #f8bbd0 !important; +} + +.pink-text.lighten-4 { + color: #f8bbd0 !important; +} + +.pink.lighten-3 { + background-color: #f48fb1 !important; +} + +.pink-text.lighten-3 { + color: #f48fb1 !important; +} + +.pink.lighten-2 { + background-color: #f06292 !important; +} + +.pink-text.lighten-2 { + color: #f06292 !important; +} + +.pink.lighten-1 { + background-color: #ec407a !important; +} + +.pink-text.lighten-1 { + color: #ec407a !important; +} + +.pink { + background-color: #e91e63 !important; +} + +.pink-text { + color: #e91e63 !important; +} + +.pink.darken-1 { + background-color: #d81b60 !important; +} + +.pink-text.darken-1 { + color: #d81b60 !important; +} + +.pink.darken-2 { + background-color: #c2185b !important; +} + +.pink-text.darken-2 { + color: #c2185b !important; +} + +.pink.darken-3 { + background-color: #ad1457 !important; +} + +.pink-text.darken-3 { + color: #ad1457 !important; +} + +.pink.darken-4 { + background-color: #880e4f !important; +} + +.pink-text.darken-4 { + color: #880e4f !important; +} + +.pink.accent-1 { + background-color: #ff80ab !important; +} + +.pink-text.accent-1 { + color: #ff80ab !important; +} + +.pink.accent-2 { + background-color: #ff4081 !important; +} + +.pink-text.accent-2 { + color: #ff4081 !important; +} + +.pink.accent-3 { + background-color: #f50057 !important; +} + +.pink-text.accent-3 { + color: #f50057 !important; +} + +.pink.accent-4 { + background-color: #c51162 !important; +} + +.pink-text.accent-4 { + color: #c51162 !important; +} + +.purple.lighten-5 { + background-color: #f3e5f5 !important; +} + +.purple-text.lighten-5 { + color: #f3e5f5 !important; +} + +.purple.lighten-4 { + background-color: #e1bee7 !important; +} + +.purple-text.lighten-4 { + color: #e1bee7 !important; +} + +.purple.lighten-3 { + background-color: #ce93d8 !important; +} + +.purple-text.lighten-3 { + color: #ce93d8 !important; +} + +.purple.lighten-2 { + background-color: #ba68c8 !important; +} + +.purple-text.lighten-2 { + color: #ba68c8 !important; +} + +.purple.lighten-1 { + background-color: #ab47bc !important; +} + +.purple-text.lighten-1 { + color: #ab47bc !important; +} + +.purple { + background-color: #9c27b0 !important; +} + +.purple-text { + color: #9c27b0 !important; +} + +.purple.darken-1 { + background-color: #8e24aa !important; +} + +.purple-text.darken-1 { + color: #8e24aa !important; +} + +.purple.darken-2 { + background-color: #7b1fa2 !important; +} + +.purple-text.darken-2 { + color: #7b1fa2 !important; +} + +.purple.darken-3 { + background-color: #6a1b9a !important; +} + +.purple-text.darken-3 { + color: #6a1b9a !important; +} + +.purple.darken-4 { + background-color: #4a148c !important; +} + +.purple-text.darken-4 { + color: #4a148c !important; +} + +.purple.accent-1 { + background-color: #ea80fc !important; +} + +.purple-text.accent-1 { + color: #ea80fc !important; +} + +.purple.accent-2 { + background-color: #e040fb !important; +} + +.purple-text.accent-2 { + color: #e040fb !important; +} + +.purple.accent-3 { + background-color: #d500f9 !important; +} + +.purple-text.accent-3 { + color: #d500f9 !important; +} + +.purple.accent-4 { + background-color: #aa00ff !important; +} + +.purple-text.accent-4 { + color: #aa00ff !important; +} + +.deep-purple.lighten-5 { + background-color: #ede7f6 !important; +} + +.deep-purple-text.lighten-5 { + color: #ede7f6 !important; +} + +.deep-purple.lighten-4 { + background-color: #d1c4e9 !important; +} + +.deep-purple-text.lighten-4 { + color: #d1c4e9 !important; +} + +.deep-purple.lighten-3 { + background-color: #b39ddb !important; +} + +.deep-purple-text.lighten-3 { + color: #b39ddb !important; +} + +.deep-purple.lighten-2 { + background-color: #9575cd !important; +} + +.deep-purple-text.lighten-2 { + color: #9575cd !important; +} + +.deep-purple.lighten-1 { + background-color: #7e57c2 !important; +} + +.deep-purple-text.lighten-1 { + color: #7e57c2 !important; +} + +.deep-purple { + background-color: #673ab7 !important; +} + +.deep-purple-text { + color: #673ab7 !important; +} + +.deep-purple.darken-1 { + background-color: #5e35b1 !important; +} + +.deep-purple-text.darken-1 { + color: #5e35b1 !important; +} + +.deep-purple.darken-2 { + background-color: #512da8 !important; +} + +.deep-purple-text.darken-2 { + color: #512da8 !important; +} + +.deep-purple.darken-3 { + background-color: #4527a0 !important; +} + +.deep-purple-text.darken-3 { + color: #4527a0 !important; +} + +.deep-purple.darken-4 { + background-color: #311b92 !important; +} + +.deep-purple-text.darken-4 { + color: #311b92 !important; +} + +.deep-purple.accent-1 { + background-color: #b388ff !important; +} + +.deep-purple-text.accent-1 { + color: #b388ff !important; +} + +.deep-purple.accent-2 { + background-color: #7c4dff !important; +} + +.deep-purple-text.accent-2 { + color: #7c4dff !important; +} + +.deep-purple.accent-3 { + background-color: #651fff !important; +} + +.deep-purple-text.accent-3 { + color: #651fff !important; +} + +.deep-purple.accent-4 { + background-color: #6200ea !important; +} + +.deep-purple-text.accent-4 { + color: #6200ea !important; +} + +.indigo.lighten-5 { + background-color: #e8eaf6 !important; +} + +.indigo-text.lighten-5 { + color: #e8eaf6 !important; +} + +.indigo.lighten-4 { + background-color: #c5cae9 !important; +} + +.indigo-text.lighten-4 { + color: #c5cae9 !important; +} + +.indigo.lighten-3 { + background-color: #9fa8da !important; +} + +.indigo-text.lighten-3 { + color: #9fa8da !important; +} + +.indigo.lighten-2 { + background-color: #7986cb !important; +} + +.indigo-text.lighten-2 { + color: #7986cb !important; +} + +.indigo.lighten-1 { + background-color: #5c6bc0 !important; +} + +.indigo-text.lighten-1 { + color: #5c6bc0 !important; +} + +.indigo { + background-color: #3f51b5 !important; +} + +.indigo-text { + color: #3f51b5 !important; +} + +.indigo.darken-1 { + background-color: #3949ab !important; +} + +.indigo-text.darken-1 { + color: #3949ab !important; +} + +.indigo.darken-2 { + background-color: #303f9f !important; +} + +.indigo-text.darken-2 { + color: #303f9f !important; +} + +.indigo.darken-3 { + background-color: #283593 !important; +} + +.indigo-text.darken-3 { + color: #283593 !important; +} + +.indigo.darken-4 { + background-color: #1a237e !important; +} + +.indigo-text.darken-4 { + color: #1a237e !important; +} + +.indigo.accent-1 { + background-color: #8c9eff !important; +} + +.indigo-text.accent-1 { + color: #8c9eff !important; +} + +.indigo.accent-2 { + background-color: #536dfe !important; +} + +.indigo-text.accent-2 { + color: #536dfe !important; +} + +.indigo.accent-3 { + background-color: #3d5afe !important; +} + +.indigo-text.accent-3 { + color: #3d5afe !important; +} + +.indigo.accent-4 { + background-color: #304ffe !important; +} + +.indigo-text.accent-4 { + color: #304ffe !important; +} + +.blue.lighten-5 { + background-color: #E3F2FD !important; +} + +.blue-text.lighten-5 { + color: #E3F2FD !important; +} + +.blue.lighten-4 { + background-color: #BBDEFB !important; +} + +.blue-text.lighten-4, .collection .active { + color: #BBDEFB !important; +} + +.blue.lighten-3 { + background-color: #90CAF9 !important; +} + +.blue-text.lighten-3 { + color: #90CAF9 !important; +} + +.blue.lighten-2 { + background-color: #64B5F6 !important; +} + +.blue-text.lighten-2 { + color: #64B5F6 !important; +} + +.blue.lighten-1, .collection .active { + background-color: #42A5F5 !important; +} + +.blue-text.lighten-1 { + color: #42A5F5 !important; +} + +.blue { + background-color: #2196F3 !important; +} + +.blue-text { + color: #2196F3 !important; +} + +.blue.darken-1 { + background-color: #1E88E5 !important; +} + +.blue-text.darken-1 { + color: #1E88E5 !important; +} + +.blue.darken-2 { + background-color: #1976D2 !important; +} + +.blue-text.darken-2 { + color: #1976D2 !important; +} + +.blue.darken-3 { + background-color: #1565C0 !important; +} + +.blue-text.darken-3 { + color: #1565C0 !important; +} + +.blue.darken-4 { + background-color: #0D47A1 !important; +} + +.blue-text.darken-4 { + color: #0D47A1 !important; +} + +.blue.accent-1 { + background-color: #82B1FF !important; +} + +.blue-text.accent-1 { + color: #82B1FF !important; +} + +.blue.accent-2 { + background-color: #448AFF !important; +} + +.blue-text.accent-2 { + color: #448AFF !important; +} + +.blue.accent-3 { + background-color: #2979FF !important; +} + +.blue-text.accent-3 { + color: #2979FF !important; +} + +.blue.accent-4 { + background-color: #2962FF !important; +} + +.blue-text.accent-4 { + color: #2962FF !important; +} + +.light-blue.lighten-5 { + background-color: #e1f5fe !important; +} + +.light-blue-text.lighten-5 { + color: #e1f5fe !important; +} + +.light-blue.lighten-4 { + background-color: #b3e5fc !important; +} + +.light-blue-text.lighten-4 { + color: #b3e5fc !important; +} + +.light-blue.lighten-3 { + background-color: #81d4fa !important; +} + +.light-blue-text.lighten-3 { + color: #81d4fa !important; +} + +.light-blue.lighten-2 { + background-color: #4fc3f7 !important; +} + +.light-blue-text.lighten-2 { + color: #4fc3f7 !important; +} + +.light-blue.lighten-1 { + background-color: #29b6f6 !important; +} + +.light-blue-text.lighten-1 { + color: #29b6f6 !important; +} + +.light-blue { + background-color: #03a9f4 !important; +} + +.light-blue-text { + color: #03a9f4 !important; +} + +.light-blue.darken-1 { + background-color: #039be5 !important; +} + +.light-blue-text.darken-1 { + color: #039be5 !important; +} + +.light-blue.darken-2 { + background-color: #0288d1 !important; +} + +.light-blue-text.darken-2 { + color: #0288d1 !important; +} + +.light-blue.darken-3 { + background-color: #0277bd !important; +} + +.light-blue-text.darken-3 { + color: #0277bd !important; +} + +.light-blue.darken-4 { + background-color: #01579b !important; +} + +.light-blue-text.darken-4 { + color: #01579b !important; +} + +.light-blue.accent-1 { + background-color: #80d8ff !important; +} + +.light-blue-text.accent-1 { + color: #80d8ff !important; +} + +.light-blue.accent-2 { + background-color: #40c4ff !important; +} + +.light-blue-text.accent-2 { + color: #40c4ff !important; +} + +.light-blue.accent-3 { + background-color: #00b0ff !important; +} + +.light-blue-text.accent-3 { + color: #00b0ff !important; +} + +.light-blue.accent-4 { + background-color: #0091ea !important; +} + +.light-blue-text.accent-4 { + color: #0091ea !important; +} + +.cyan.lighten-5 { + background-color: #e0f7fa !important; +} + +.cyan-text.lighten-5 { + color: #e0f7fa !important; +} + +.cyan.lighten-4 { + background-color: #b2ebf2 !important; +} + +.cyan-text.lighten-4 { + color: #b2ebf2 !important; +} + +.cyan.lighten-3 { + background-color: #80deea !important; +} + +.cyan-text.lighten-3 { + color: #80deea !important; +} + +.cyan.lighten-2 { + background-color: #4dd0e1 !important; +} + +.cyan-text.lighten-2 { + color: #4dd0e1 !important; +} + +.cyan.lighten-1 { + background-color: #26c6da !important; +} + +.cyan-text.lighten-1 { + color: #26c6da !important; +} + +.cyan { + background-color: #00bcd4 !important; +} + +.cyan-text { + color: #00bcd4 !important; +} + +.cyan.darken-1 { + background-color: #00acc1 !important; +} + +.cyan-text.darken-1 { + color: #00acc1 !important; +} + +.cyan.darken-2 { + background-color: #0097a7 !important; +} + +.cyan-text.darken-2 { + color: #0097a7 !important; +} + +.cyan.darken-3 { + background-color: #00838f !important; +} + +.cyan-text.darken-3 { + color: #00838f !important; +} + +.cyan.darken-4 { + background-color: #006064 !important; +} + +.cyan-text.darken-4 { + color: #006064 !important; +} + +.cyan.accent-1 { + background-color: #84ffff !important; +} + +.cyan-text.accent-1 { + color: #84ffff !important; +} + +.cyan.accent-2 { + background-color: #18ffff !important; +} + +.cyan-text.accent-2 { + color: #18ffff !important; +} + +.cyan.accent-3 { + background-color: #00e5ff !important; +} + +.cyan-text.accent-3 { + color: #00e5ff !important; +} + +.cyan.accent-4 { + background-color: #00b8d4 !important; +} + +.cyan-text.accent-4 { + color: #00b8d4 !important; +} + +.teal.lighten-5 { + background-color: #e0f2f1 !important; +} + +.teal-text.lighten-5 { + color: #e0f2f1 !important; +} + +.teal.lighten-4 { + background-color: #b2dfdb !important; +} + +.teal-text.lighten-4 { + color: #b2dfdb !important; +} + +.teal.lighten-3 { + background-color: #80cbc4 !important; +} + +.teal-text.lighten-3 { + color: #80cbc4 !important; +} + +.teal.lighten-2 { + background-color: #4db6ac !important; +} + +.teal-text.lighten-2 { + color: #4db6ac !important; +} + +.teal.lighten-1 { + background-color: #26a69a !important; +} + +.teal-text.lighten-1 { + color: #26a69a !important; +} + +.teal { + background-color: #009688 !important; +} + +.teal-text { + color: #009688 !important; +} + +.teal.darken-1 { + background-color: #00897b !important; +} + +.teal-text.darken-1 { + color: #00897b !important; +} + +.teal.darken-2 { + background-color: #00796b !important; +} + +.teal-text.darken-2 { + color: #00796b !important; +} + +.teal.darken-3 { + background-color: #00695c !important; +} + +.teal-text.darken-3 { + color: #00695c !important; +} + +.teal.darken-4 { + background-color: #004d40 !important; +} + +.teal-text.darken-4 { + color: #004d40 !important; +} + +.teal.accent-1 { + background-color: #a7ffeb !important; +} + +.teal-text.accent-1 { + color: #a7ffeb !important; +} + +.teal.accent-2 { + background-color: #64ffda !important; +} + +.teal-text.accent-2 { + color: #64ffda !important; +} + +.teal.accent-3 { + background-color: #1de9b6 !important; +} + +.teal-text.accent-3 { + color: #1de9b6 !important; +} + +.teal.accent-4 { + background-color: #00bfa5 !important; +} + +.teal-text.accent-4 { + color: #00bfa5 !important; +} + +.green.lighten-5 { + background-color: #E8F5E9 !important; +} + +.green-text.lighten-5 { + color: #E8F5E9 !important; +} + +.green.lighten-4 { + background-color: #C8E6C9 !important; +} + +.green-text.lighten-4 { + color: #C8E6C9 !important; +} + +.green.lighten-3 { + background-color: #A5D6A7 !important; +} + +.green-text.lighten-3 { + color: #A5D6A7 !important; +} + +.green.lighten-2 { + background-color: #81C784 !important; +} + +.green-text.lighten-2 { + color: #81C784 !important; +} + +.green.lighten-1 { + background-color: #66BB6A !important; +} + +.green-text.lighten-1 { + color: #66BB6A !important; +} + +.green { + background-color: #4CAF50 !important; +} + +.green-text { + color: #4CAF50 !important; +} + +.green.darken-1 { + background-color: #43A047 !important; +} + +.green-text.darken-1 { + color: #43A047 !important; +} + +.green.darken-2 { + background-color: #388E3C !important; +} + +.green-text.darken-2 { + color: #388E3C !important; +} + +.green.darken-3 { + background-color: #2E7D32 !important; +} + +.green-text.darken-3 { + color: #2E7D32 !important; +} + +.green.darken-4 { + background-color: #1B5E20 !important; +} + +.green-text.darken-4 { + color: #1B5E20 !important; +} + +.green.accent-1 { + background-color: #B9F6CA !important; +} + +.green-text.accent-1 { + color: #B9F6CA !important; +} + +.green.accent-2 { + background-color: #69F0AE !important; +} + +.green-text.accent-2 { + color: #69F0AE !important; +} + +.green.accent-3 { + background-color: #00E676 !important; +} + +.green-text.accent-3 { + color: #00E676 !important; +} + +.green.accent-4 { + background-color: #00C853 !important; +} + +.green-text.accent-4 { + color: #00C853 !important; +} + +.light-green.lighten-5 { + background-color: #f1f8e9 !important; +} + +.light-green-text.lighten-5 { + color: #f1f8e9 !important; +} + +.light-green.lighten-4 { + background-color: #dcedc8 !important; +} + +.light-green-text.lighten-4 { + color: #dcedc8 !important; +} + +.light-green.lighten-3 { + background-color: #c5e1a5 !important; +} + +.light-green-text.lighten-3 { + color: #c5e1a5 !important; +} + +.light-green.lighten-2 { + background-color: #aed581 !important; +} + +.light-green-text.lighten-2 { + color: #aed581 !important; +} + +.light-green.lighten-1 { + background-color: #9ccc65 !important; +} + +.light-green-text.lighten-1 { + color: #9ccc65 !important; +} + +.light-green { + background-color: #8bc34a !important; +} + +.light-green-text { + color: #8bc34a !important; +} + +.light-green.darken-1 { + background-color: #7cb342 !important; +} + +.light-green-text.darken-1 { + color: #7cb342 !important; +} + +.light-green.darken-2 { + background-color: #689f38 !important; +} + +.light-green-text.darken-2 { + color: #689f38 !important; +} + +.light-green.darken-3 { + background-color: #558b2f !important; +} + +.light-green-text.darken-3 { + color: #558b2f !important; +} + +.light-green.darken-4 { + background-color: #33691e !important; +} + +.light-green-text.darken-4 { + color: #33691e !important; +} + +.light-green.accent-1 { + background-color: #ccff90 !important; +} + +.light-green-text.accent-1 { + color: #ccff90 !important; +} + +.light-green.accent-2 { + background-color: #b2ff59 !important; +} + +.light-green-text.accent-2 { + color: #b2ff59 !important; +} + +.light-green.accent-3 { + background-color: #76ff03 !important; +} + +.light-green-text.accent-3 { + color: #76ff03 !important; +} + +.light-green.accent-4 { + background-color: #64dd17 !important; +} + +.light-green-text.accent-4 { + color: #64dd17 !important; +} + +.lime.lighten-5 { + background-color: #f9fbe7 !important; +} + +.lime-text.lighten-5 { + color: #f9fbe7 !important; +} + +.lime.lighten-4 { + background-color: #f0f4c3 !important; +} + +.lime-text.lighten-4 { + color: #f0f4c3 !important; +} + +.lime.lighten-3 { + background-color: #e6ee9c !important; +} + +.lime-text.lighten-3 { + color: #e6ee9c !important; +} + +.lime.lighten-2 { + background-color: #dce775 !important; +} + +.lime-text.lighten-2 { + color: #dce775 !important; +} + +.lime.lighten-1 { + background-color: #d4e157 !important; +} + +.lime-text.lighten-1 { + color: #d4e157 !important; +} + +.lime { + background-color: #cddc39 !important; +} + +.lime-text { + color: #cddc39 !important; +} + +.lime.darken-1 { + background-color: #c0ca33 !important; +} + +.lime-text.darken-1 { + color: #c0ca33 !important; +} + +.lime.darken-2 { + background-color: #afb42b !important; +} + +.lime-text.darken-2 { + color: #afb42b !important; +} + +.lime.darken-3 { + background-color: #9e9d24 !important; +} + +.lime-text.darken-3 { + color: #9e9d24 !important; +} + +.lime.darken-4 { + background-color: #827717 !important; +} + +.lime-text.darken-4 { + color: #827717 !important; +} + +.lime.accent-1 { + background-color: #f4ff81 !important; +} + +.lime-text.accent-1 { + color: #f4ff81 !important; +} + +.lime.accent-2 { + background-color: #eeff41 !important; +} + +.lime-text.accent-2 { + color: #eeff41 !important; +} + +.lime.accent-3 { + background-color: #c6ff00 !important; +} + +.lime-text.accent-3 { + color: #c6ff00 !important; +} + +.lime.accent-4 { + background-color: #aeea00 !important; +} + +.lime-text.accent-4 { + color: #aeea00 !important; +} + +.yellow.lighten-5 { + background-color: #fffde7 !important; +} + +.yellow-text.lighten-5 { + color: #fffde7 !important; +} + +.yellow.lighten-4 { + background-color: #fff9c4 !important; +} + +.yellow-text.lighten-4 { + color: #fff9c4 !important; +} + +.yellow.lighten-3 { + background-color: #fff59d !important; +} + +.yellow-text.lighten-3 { + color: #fff59d !important; +} + +.yellow.lighten-2 { + background-color: #fff176 !important; +} + +.yellow-text.lighten-2 { + color: #fff176 !important; +} + +.yellow.lighten-1 { + background-color: #ffee58 !important; +} + +.yellow-text.lighten-1 { + color: #ffee58 !important; +} + +.yellow { + background-color: #ffeb3b !important; +} + +.yellow-text { + color: #ffeb3b !important; +} + +.yellow.darken-1 { + background-color: #fdd835 !important; +} + +.yellow-text.darken-1 { + color: #fdd835 !important; +} + +.yellow.darken-2 { + background-color: #fbc02d !important; +} + +.yellow-text.darken-2 { + color: #fbc02d !important; +} + +.yellow.darken-3 { + background-color: #f9a825 !important; +} + +.yellow-text.darken-3 { + color: #f9a825 !important; +} + +.yellow.darken-4 { + background-color: #f57f17 !important; +} + +.yellow-text.darken-4 { + color: #f57f17 !important; +} + +.yellow.accent-1 { + background-color: #ffff8d !important; +} + +.yellow-text.accent-1 { + color: #ffff8d !important; +} + +.yellow.accent-2 { + background-color: #ffff00 !important; +} + +.yellow-text.accent-2 { + color: #ffff00 !important; +} + +.yellow.accent-3 { + background-color: #ffea00 !important; +} + +.yellow-text.accent-3 { + color: #ffea00 !important; +} + +.yellow.accent-4 { + background-color: #ffd600 !important; +} + +.yellow-text.accent-4 { + color: #ffd600 !important; +} + +.amber.lighten-5 { + background-color: #fff8e1 !important; +} + +.amber-text.lighten-5 { + color: #fff8e1 !important; +} + +.amber.lighten-4 { + background-color: #ffecb3 !important; +} + +.amber-text.lighten-4 { + color: #ffecb3 !important; +} + +.amber.lighten-3 { + background-color: #ffe082 !important; +} + +.amber-text.lighten-3 { + color: #ffe082 !important; +} + +.amber.lighten-2 { + background-color: #ffd54f !important; +} + +.amber-text.lighten-2 { + color: #ffd54f !important; +} + +.amber.lighten-1 { + background-color: #ffca28 !important; +} + +.amber-text.lighten-1 { + color: #ffca28 !important; +} + +.amber { + background-color: #ffc107 !important; +} + +.amber-text { + color: #ffc107 !important; +} + +.amber.darken-1 { + background-color: #ffb300 !important; +} + +.amber-text.darken-1 { + color: #ffb300 !important; +} + +.amber.darken-2 { + background-color: #ffa000 !important; +} + +.amber-text.darken-2 { + color: #ffa000 !important; +} + +.amber.darken-3 { + background-color: #ff8f00 !important; +} + +.amber-text.darken-3 { + color: #ff8f00 !important; +} + +.amber.darken-4 { + background-color: #ff6f00 !important; +} + +.amber-text.darken-4 { + color: #ff6f00 !important; +} + +.amber.accent-1 { + background-color: #ffe57f !important; +} + +.amber-text.accent-1 { + color: #ffe57f !important; +} + +.amber.accent-2 { + background-color: #ffd740 !important; +} + +.amber-text.accent-2 { + color: #ffd740 !important; +} + +.amber.accent-3 { + background-color: #ffc400 !important; +} + +.amber-text.accent-3 { + color: #ffc400 !important; +} + +.amber.accent-4 { + background-color: #ffab00 !important; +} + +.amber-text.accent-4 { + color: #ffab00 !important; +} + +.orange.lighten-5 { + background-color: #fff3e0 !important; +} + +.orange-text.lighten-5 { + color: #fff3e0 !important; +} + +.orange.lighten-4 { + background-color: #ffe0b2 !important; +} + +.orange-text.lighten-4 { + color: #ffe0b2 !important; +} + +.orange.lighten-3 { + background-color: #ffcc80 !important; +} + +.orange-text.lighten-3 { + color: #ffcc80 !important; +} + +.orange.lighten-2 { + background-color: #ffb74d !important; +} + +.orange-text.lighten-2 { + color: #ffb74d !important; +} + +.orange.lighten-1 { + background-color: #ffa726 !important; +} + +.orange-text.lighten-1 { + color: #ffa726 !important; +} + +.orange { + background-color: #ff9800 !important; +} + +.orange-text { + color: #ff9800 !important; +} + +.orange.darken-1 { + background-color: #fb8c00 !important; +} + +.orange-text.darken-1 { + color: #fb8c00 !important; +} + +.orange.darken-2 { + background-color: #f57c00 !important; +} + +.orange-text.darken-2 { + color: #f57c00 !important; +} + +.orange.darken-3 { + background-color: #ef6c00 !important; +} + +.orange-text.darken-3 { + color: #ef6c00 !important; +} + +.orange.darken-4 { + background-color: #e65100 !important; +} + +.orange-text.darken-4 { + color: #e65100 !important; +} + +.orange.accent-1 { + background-color: #ffd180 !important; +} + +.orange-text.accent-1 { + color: #ffd180 !important; +} + +.orange.accent-2 { + background-color: #ffab40 !important; +} + +.orange-text.accent-2 { + color: #ffab40 !important; +} + +.orange.accent-3 { + background-color: #ff9100 !important; +} + +.orange-text.accent-3 { + color: #ff9100 !important; +} + +.orange.accent-4 { + background-color: #ff6d00 !important; +} + +.orange-text.accent-4 { + color: #ff6d00 !important; +} + +.deep-orange.lighten-5 { + background-color: #fbe9e7 !important; +} + +.deep-orange-text.lighten-5 { + color: #fbe9e7 !important; +} + +.deep-orange.lighten-4 { + background-color: #ffccbc !important; +} + +.deep-orange-text.lighten-4 { + color: #ffccbc !important; +} + +.deep-orange.lighten-3 { + background-color: #ffab91 !important; +} + +.deep-orange-text.lighten-3 { + color: #ffab91 !important; +} + +.deep-orange.lighten-2 { + background-color: #ff8a65 !important; +} + +.deep-orange-text.lighten-2 { + color: #ff8a65 !important; +} + +.deep-orange.lighten-1 { + background-color: #ff7043 !important; +} + +.deep-orange-text.lighten-1 { + color: #ff7043 !important; +} + +.deep-orange { + background-color: #ff5722 !important; +} + +.deep-orange-text { + color: #ff5722 !important; +} + +.deep-orange.darken-1 { + background-color: #f4511e !important; +} + +.deep-orange-text.darken-1 { + color: #f4511e !important; +} + +.deep-orange.darken-2 { + background-color: #e64a19 !important; +} + +.deep-orange-text.darken-2 { + color: #e64a19 !important; +} + +.deep-orange.darken-3 { + background-color: #d84315 !important; +} + +.deep-orange-text.darken-3 { + color: #d84315 !important; +} + +.deep-orange.darken-4 { + background-color: #bf360c !important; +} + +.deep-orange-text.darken-4 { + color: #bf360c !important; +} + +.deep-orange.accent-1 { + background-color: #ff9e80 !important; +} + +.deep-orange-text.accent-1 { + color: #ff9e80 !important; +} + +.deep-orange.accent-2 { + background-color: #ff6e40 !important; +} + +.deep-orange-text.accent-2 { + color: #ff6e40 !important; +} + +.deep-orange.accent-3 { + background-color: #ff3d00 !important; +} + +.deep-orange-text.accent-3 { + color: #ff3d00 !important; +} + +.deep-orange.accent-4 { + background-color: #dd2c00 !important; +} + +.deep-orange-text.accent-4 { + color: #dd2c00 !important; +} + +.brown.lighten-5 { + background-color: #efebe9 !important; +} + +.brown-text.lighten-5 { + color: #efebe9 !important; +} + +.brown.lighten-4 { + background-color: #d7ccc8 !important; +} + +.brown-text.lighten-4 { + color: #d7ccc8 !important; +} + +.brown.lighten-3 { + background-color: #bcaaa4 !important; +} + +.brown-text.lighten-3 { + color: #bcaaa4 !important; +} + +.brown.lighten-2 { + background-color: #a1887f !important; +} + +.brown-text.lighten-2 { + color: #a1887f !important; +} + +.brown.lighten-1 { + background-color: #8d6e63 !important; +} + +.brown-text.lighten-1 { + color: #8d6e63 !important; +} + +.brown { + background-color: #795548 !important; +} + +.brown-text { + color: #795548 !important; +} + +.brown.darken-1 { + background-color: #6d4c41 !important; +} + +.brown-text.darken-1 { + color: #6d4c41 !important; +} + +.brown.darken-2 { + background-color: #5d4037 !important; +} + +.brown-text.darken-2 { + color: #5d4037 !important; +} + +.brown.darken-3 { + background-color: #4e342e !important; +} + +.brown-text.darken-3 { + color: #4e342e !important; +} + +.brown.darken-4 { + background-color: #3e2723 !important; +} + +.brown-text.darken-4 { + color: #3e2723 !important; +} + +.blue-grey.lighten-5 { + background-color: #eceff1 !important; +} + +.blue-grey-text.lighten-5 { + color: #eceff1 !important; +} + +.blue-grey.lighten-4 { + background-color: #cfd8dc !important; +} + +.blue-grey-text.lighten-4 { + color: #cfd8dc !important; +} + +.blue-grey.lighten-3 { + background-color: #b0bec5 !important; +} + +.blue-grey-text.lighten-3 { + color: #b0bec5 !important; +} + +.blue-grey.lighten-2 { + background-color: #90a4ae !important; +} + +.blue-grey-text.lighten-2 { + color: #90a4ae !important; +} + +.blue-grey.lighten-1 { + background-color: #78909c !important; +} + +.blue-grey-text.lighten-1 { + color: #78909c !important; +} + +.blue-grey { + background-color: #607d8b !important; +} + +.blue-grey-text { + color: #607d8b !important; +} + +.blue-grey.darken-1 { + background-color: #546e7a !important; +} + +.blue-grey-text.darken-1 { + color: #546e7a !important; +} + +.blue-grey.darken-2 { + background-color: #455a64 !important; +} + +.blue-grey-text.darken-2 { + color: #455a64 !important; +} + +.blue-grey.darken-3 { + background-color: #37474f !important; +} + +.blue-grey-text.darken-3 { + color: #37474f !important; +} + +.blue-grey.darken-4 { + background-color: #263238 !important; +} + +.blue-grey-text.darken-4 { + color: #263238 !important; +} + +.grey.lighten-5 { + background-color: #fafafa !important; +} + +.grey-text.lighten-5 { + color: #fafafa !important; +} + +.grey.lighten-4 { + background-color: #f5f5f5 !important; +} + +.grey-text.lighten-4 { + color: #f5f5f5 !important; +} + +.grey.lighten-3 { + background-color: #eeeeee !important; +} + +.grey-text.lighten-3 { + color: #eeeeee !important; +} + +.grey.lighten-2 { + background-color: #e0e0e0 !important; +} + +.grey-text.lighten-2 { + color: #e0e0e0 !important; +} + +.grey.lighten-1 { + background-color: #bdbdbd !important; +} + +.grey-text.lighten-1 { + color: #bdbdbd !important; +} + +.grey { + background-color: #9e9e9e !important; +} + +.grey-text { + color: #9e9e9e !important; +} + +.grey.darken-1 { + background-color: #757575 !important; +} + +.grey-text.darken-1 { + color: #757575 !important; +} + +.grey.darken-2 { + background-color: #616161 !important; +} + +.grey-text.darken-2 { + color: #616161 !important; +} + +.grey.darken-3 { + background-color: #424242 !important; +} + +.grey-text.darken-3 { + color: #424242 !important; +} + +.grey.darken-4 { + background-color: #212121 !important; +} + +.grey-text.darken-4 { + color: #212121 !important; +} + +.shades.black { + background-color: #000000 !important; +} + +.shades-text.black { + color: #000000 !important; +} + +.shades.white { + background-color: #FFFFFF !important; +} + +.shades-text.white { + color: #FFFFFF !important; +} + +.black { + background-color: #000000 !important; +} + +.black-text { + color: #000000 !important; +} + +.white { + background-color: #FFFFFF !important; +} + +.white-text { + color: #FFFFFF !important; +} + +ul { + list-style-type: none; +} + +a { + color: #1E88E5; + text-decoration: none; +} + +p { + color: #555; +} + +.no-select, input[type=range], input[type=range] + .thumb { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.left-align { + text-align: left; +} + +.right-align { + text-align: right; +} + +.center { + text-align: center; +} + +.left { + float: left; +} + +.right { + float: right; +} + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +ul { + padding: 0; +} + +li { + list-style-type: none; +} + +.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, ul.collapsible { + -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + -moz-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); +} + +.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover, .modal { + -webkit-box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); +} + +.z-depth-2 { + -webkit-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + -moz-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +.z-depth-3 { + -webkit-box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); + -moz-box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); + box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); +} + +.z-depth-4 { + -webkit-box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); + -moz-box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); + box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); +} + +.z-depth-5 { + -webkit-box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); + -moz-box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); +} + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid #EF9A9A; +} + +i { + line-height: inherit; +} +i.left { + float: left; + margin-right: 15px; +} +i.right { + float: right; + margin-left: 15px; +} + +.parallax-container { + position: relative; + overflow: hidden; + height: 500px; +} + +.parallax { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; +} +.parallax img { + display: none; + position: absolute; + bottom: 0; + width: 100%; +} + +@media only screen and (max-width: 992px) { + .parallax-container { + height: auto; + } + + .parallax { + position: relative; + width: 100%; + } + .parallax img { + position: relative; + } +} +@media only screen and (max-width: 600px) { + .hide-on-small-only, .hide-on-small-and-down { + display: none !important; + } +} + +@media only screen and (max-width: 992px) { + .hide-on-med-and-down { + display: none !important; + } +} + +@media only screen and (min-width: 600px) { + .hide-on-med-and-up { + display: none !important; + } +} + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .hide-on-med-only { + display: none !important; + } +} + +@media only screen and (min-width: 992px) { + .hide-on-large-only, nav a.button-collapse { + display: none !important; + } +} + +@media only screen and (max-width: 600px) { + .center-on-small-only { + text-align: center; + } +} + +#footer { + text-align: center; +} +#footer a { + vertical-align: top; + line-height: 30px; +} + +table, th, td { + border: none; +} + +table { + width: 100%; + display: table; +} +@media only screen and (max-width: 600px) { + table thead tr th, table tbody tr td { + text-align: center; + } +} +table.bordered tr { + border-bottom: 1px solid #e0e0e0; +} +table.striped tbody tr:nth-child(odd) { + background-color: #f2f2f2; +} +table.hoverable tbody tr { + -webkit-transition: background-color 0.25s ease; + -moz-transition: background-color 0.25s ease; + -o-transition: background-color 0.25s ease; + -ms-transition: background-color 0.25s ease; + transition: background-color 0.25s ease; +} +table.hoverable tbody tr:hover { + background-color: #f2f2f2; +} +table.centered thead tr th, table.centered tbody tr td { + text-align: center; +} + +thead { + border-bottom: 1px solid #878787; +} + +td, th { + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; +} + +.collection { + background-color: #FFF; + margin: 0 0 1rem 0; + border: 1px solid #e0e0e0; + border-radius: 2px; +} +.collection .collection-item { + padding: 10px 20px; + margin: 0px; + border-bottom: 1px solid #e0e0e0; +} +.collection .collection-item:last-child { + border-bottom: none; +} +.collection a.collection-item { + display: block; + -webkit-transition: 0.25s; + -moz-transition: 0.25s; + -o-transition: 0.25s; + -ms-transition: 0.25s; + transition: 0.25s; +} +.collection a.collection-item:not(.active):hover { + background-color: #f2f2f2; +} +.collection.with-header .collection-header { + border-bottom: 1px solid #e0e0e0; + padding: 10px 20px; +} +.collection.with-header .collection-item { + padding-left: 30px; +} +.collection .secondary-content { + float: right; +} +.collection.pagination { + display: inline-block; +} +.collection.pagination ul { + background-color: transparent; + font-size: 0; + display: inline-block; +} +.collection.pagination li { + display: inline; + font-weight: 500; + margin: 0px; + padding: 0px; + font-size: 1rem; +} +.collection.pagination li a { + padding: 0px 5px; +} +.collection.pagination li.active { + background-color: #03a9f4; + color: #FFF; +} +.collection.pagination li:hover { + background-color: #e1f5fe; +} + +@font-face { + font-family: "Material-Design-Icons"; + src: url("../font/material-design-icons/Material-Design-Icons.eot?-g7cqhn"); + src: url("../font/material-design-icons/Material-Design-Icons.eot?#iefix-g7cqhn") format("embedded-opentype"), url("../font/material-design-icons/Material-Design-Icons.woff?-g7cqhn") format("woff"), url("../font/material-design-icons/Material-Design-Icons.ttf?-g7cqhn") format("truetype"), url("../font/material-design-icons/Material-Design-Icons.svg?-g7cqhn#Material-Design-Icons") format("svg"); + font-weight: normal; + font-style: normal; +} +[class^="mdi-"], .select-wrapper span.select-dropdown:after, [class*=" mdi-"] { + font-family: "Material-Design-Icons"; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.mdi-action-3d-rotation:before { + content: "\e600"; +} + +.mdi-action-accessibility:before { + content: "\e601"; +} + +.mdi-action-account-balance:before { + content: "\e602"; +} + +.mdi-action-account-balance-wallet:before { + content: "\e603"; +} + +.mdi-action-account-box:before { + content: "\e604"; +} + +.mdi-action-account-child:before { + content: "\e605"; +} + +.mdi-action-account-circle:before { + content: "\e606"; +} + +.mdi-action-add-shopping-cart:before { + content: "\e607"; +} + +.mdi-action-alarm:before { + content: "\e608"; +} + +.mdi-action-alarm-add:before { + content: "\e609"; +} + +.mdi-action-alarm-off:before { + content: "\e60a"; +} + +.mdi-action-alarm-on:before { + content: "\e60b"; +} + +.mdi-action-android:before { + content: "\e60c"; +} + +.mdi-action-announcement:before { + content: "\e60d"; +} + +.mdi-action-aspect-ratio:before { + content: "\e60e"; +} + +.mdi-action-assessment:before { + content: "\e60f"; +} + +.mdi-action-assignment:before { + content: "\e610"; +} + +.mdi-action-assignment-ind:before { + content: "\e611"; +} + +.mdi-action-assignment-late:before { + content: "\e612"; +} + +.mdi-action-assignment-return:before { + content: "\e613"; +} + +.mdi-action-assignment-returned:before { + content: "\e614"; +} + +.mdi-action-assignment-turned-in:before { + content: "\e615"; +} + +.mdi-action-autorenew:before { + content: "\e616"; +} + +.mdi-action-backup:before { + content: "\e617"; +} + +.mdi-action-book:before { + content: "\e618"; +} + +.mdi-action-bookmark:before { + content: "\e619"; +} + +.mdi-action-bookmark-outline:before { + content: "\e61a"; +} + +.mdi-action-bug-report:before { + content: "\e61b"; +} + +.mdi-action-cached:before { + content: "\e61c"; +} + +.mdi-action-class:before { + content: "\e61d"; +} + +.mdi-action-credit-card:before { + content: "\e61e"; +} + +.mdi-action-dashboard:before { + content: "\e61f"; +} + +.mdi-action-delete:before { + content: "\e620"; +} + +.mdi-action-description:before { + content: "\e621"; +} + +.mdi-action-dns:before { + content: "\e622"; +} + +.mdi-action-done:before { + content: "\e623"; +} + +.mdi-action-done-all:before { + content: "\e624"; +} + +.mdi-action-event:before { + content: "\e625"; +} + +.mdi-action-exit-to-app:before { + content: "\e626"; +} + +.mdi-action-explore:before { + content: "\e627"; +} + +.mdi-action-extension:before { + content: "\e628"; +} + +.mdi-action-face-unlock:before { + content: "\e629"; +} + +.mdi-action-favorite:before { + content: "\e62a"; +} + +.mdi-action-favorite-outline:before { + content: "\e62b"; +} + +.mdi-action-find-in-page:before { + content: "\e62c"; +} + +.mdi-action-find-replace:before { + content: "\e62d"; +} + +.mdi-action-flip-to-back:before { + content: "\e62e"; +} + +.mdi-action-flip-to-front:before { + content: "\e62f"; +} + +.mdi-action-get-app:before { + content: "\e630"; +} + +.mdi-action-grade:before { + content: "\e631"; +} + +.mdi-action-group-work:before { + content: "\e632"; +} + +.mdi-action-help:before { + content: "\e633"; +} + +.mdi-action-highlight-remove:before { + content: "\e634"; +} + +.mdi-action-history:before { + content: "\e635"; +} + +.mdi-action-home:before { + content: "\e636"; +} + +.mdi-action-https:before { + content: "\e637"; +} + +.mdi-action-info:before { + content: "\e638"; +} + +.mdi-action-info-outline:before { + content: "\e639"; +} + +.mdi-action-input:before { + content: "\e63a"; +} + +.mdi-action-invert-colors:before { + content: "\e63b"; +} + +.mdi-action-label:before { + content: "\e63c"; +} + +.mdi-action-label-outline:before { + content: "\e63d"; +} + +.mdi-action-language:before { + content: "\e63e"; +} + +.mdi-action-launch:before { + content: "\e63f"; +} + +.mdi-action-list:before { + content: "\e640"; +} + +.mdi-action-lock:before { + content: "\e641"; +} + +.mdi-action-lock-open:before { + content: "\e642"; +} + +.mdi-action-lock-outline:before { + content: "\e643"; +} + +.mdi-action-loyalty:before { + content: "\e644"; +} + +.mdi-action-markunread-mailbox:before { + content: "\e645"; +} + +.mdi-action-note-add:before { + content: "\e646"; +} + +.mdi-action-open-in-browser:before { + content: "\e647"; +} + +.mdi-action-open-in-new:before { + content: "\e648"; +} + +.mdi-action-open-with:before { + content: "\e649"; +} + +.mdi-action-pageview:before { + content: "\e64a"; +} + +.mdi-action-payment:before { + content: "\e64b"; +} + +.mdi-action-perm-camera-mic:before { + content: "\e64c"; +} + +.mdi-action-perm-contact-cal:before { + content: "\e64d"; +} + +.mdi-action-perm-data-setting:before { + content: "\e64e"; +} + +.mdi-action-perm-device-info:before { + content: "\e64f"; +} + +.mdi-action-perm-identity:before { + content: "\e650"; +} + +.mdi-action-perm-media:before { + content: "\e651"; +} + +.mdi-action-perm-phone-msg:before { + content: "\e652"; +} + +.mdi-action-perm-scan-wifi:before { + content: "\e653"; +} + +.mdi-action-picture-in-picture:before { + content: "\e654"; +} + +.mdi-action-polymer:before { + content: "\e655"; +} + +.mdi-action-print:before { + content: "\e656"; +} + +.mdi-action-query-builder:before { + content: "\e657"; +} + +.mdi-action-question-answer:before { + content: "\e658"; +} + +.mdi-action-receipt:before { + content: "\e659"; +} + +.mdi-action-redeem:before { + content: "\e65a"; +} + +.mdi-action-report-problem:before { + content: "\e65b"; +} + +.mdi-action-restore:before { + content: "\e65c"; +} + +.mdi-action-room:before { + content: "\e65d"; +} + +.mdi-action-schedule:before { + content: "\e65e"; +} + +.mdi-action-search:before { + content: "\e65f"; +} + +.mdi-action-settings:before { + content: "\e660"; +} + +.mdi-action-settings-applications:before { + content: "\e661"; +} + +.mdi-action-settings-backup-restore:before { + content: "\e662"; +} + +.mdi-action-settings-bluetooth:before { + content: "\e663"; +} + +.mdi-action-settings-cell:before { + content: "\e664"; +} + +.mdi-action-settings-display:before { + content: "\e665"; +} + +.mdi-action-settings-ethernet:before { + content: "\e666"; +} + +.mdi-action-settings-input-antenna:before { + content: "\e667"; +} + +.mdi-action-settings-input-component:before { + content: "\e668"; +} + +.mdi-action-settings-input-composite:before { + content: "\e669"; +} + +.mdi-action-settings-input-hdmi:before { + content: "\e66a"; +} + +.mdi-action-settings-input-svideo:before { + content: "\e66b"; +} + +.mdi-action-settings-overscan:before { + content: "\e66c"; +} + +.mdi-action-settings-phone:before { + content: "\e66d"; +} + +.mdi-action-settings-power:before { + content: "\e66e"; +} + +.mdi-action-settings-remote:before { + content: "\e66f"; +} + +.mdi-action-settings-voice:before { + content: "\e670"; +} + +.mdi-action-shop:before { + content: "\e671"; +} + +.mdi-action-shopping-basket:before { + content: "\e672"; +} + +.mdi-action-shopping-cart:before { + content: "\e673"; +} + +.mdi-action-shop-two:before { + content: "\e674"; +} + +.mdi-action-speaker-notes:before { + content: "\e675"; +} + +.mdi-action-spellcheck:before { + content: "\e676"; +} + +.mdi-action-star-rate:before { + content: "\e677"; +} + +.mdi-action-stars:before { + content: "\e678"; +} + +.mdi-action-store:before { + content: "\e679"; +} + +.mdi-action-subject:before { + content: "\e67a"; +} + +.mdi-action-swap-horiz:before { + content: "\e67b"; +} + +.mdi-action-swap-vert:before { + content: "\e67c"; +} + +.mdi-action-swap-vert-circle:before { + content: "\e67d"; +} + +.mdi-action-system-update-tv:before { + content: "\e67e"; +} + +.mdi-action-tab:before { + content: "\e67f"; +} + +.mdi-action-tab-unselected:before { + content: "\e680"; +} + +.mdi-action-theaters:before { + content: "\e681"; +} + +.mdi-action-thumb-down:before { + content: "\e682"; +} + +.mdi-action-thumbs-up-down:before { + content: "\e683"; +} + +.mdi-action-thumb-up:before { + content: "\e684"; +} + +.mdi-action-toc:before { + content: "\e685"; +} + +.mdi-action-today:before { + content: "\e686"; +} + +.mdi-action-track-changes:before { + content: "\e687"; +} + +.mdi-action-translate:before { + content: "\e688"; +} + +.mdi-action-trending-down:before { + content: "\e689"; +} + +.mdi-action-trending-neutral:before { + content: "\e68a"; +} + +.mdi-action-trending-up:before { + content: "\e68b"; +} + +.mdi-action-turned-in:before { + content: "\e68c"; +} + +.mdi-action-turned-in-not:before { + content: "\e68d"; +} + +.mdi-action-verified-user:before { + content: "\e68e"; +} + +.mdi-action-view-agenda:before { + content: "\e68f"; +} + +.mdi-action-view-array:before { + content: "\e690"; +} + +.mdi-action-view-carousel:before { + content: "\e691"; +} + +.mdi-action-view-column:before { + content: "\e692"; +} + +.mdi-action-view-day:before { + content: "\e693"; +} + +.mdi-action-view-headline:before { + content: "\e694"; +} + +.mdi-action-view-list:before { + content: "\e695"; +} + +.mdi-action-view-module:before { + content: "\e696"; +} + +.mdi-action-view-quilt:before { + content: "\e697"; +} + +.mdi-action-view-stream:before { + content: "\e698"; +} + +.mdi-action-view-week:before { + content: "\e699"; +} + +.mdi-action-visibility:before { + content: "\e69a"; +} + +.mdi-action-visibility-off:before { + content: "\e69b"; +} + +.mdi-action-wallet-giftcard:before { + content: "\e69c"; +} + +.mdi-action-wallet-membership:before { + content: "\e69d"; +} + +.mdi-action-wallet-travel:before { + content: "\e69e"; +} + +.mdi-action-work:before { + content: "\e69f"; +} + +.mdi-alert-error:before { + content: "\e6a0"; +} + +.mdi-alert-warning:before { + content: "\e6a1"; +} + +.mdi-av-album:before { + content: "\e6a2"; +} + +.mdi-av-timer:before { + content: "\e6a3"; +} + +.mdi-av-closed-caption:before { + content: "\e6a4"; +} + +.mdi-av-equalizer:before { + content: "\e6a5"; +} + +.mdi-av-explicit:before { + content: "\e6a6"; +} + +.mdi-av-fast-forward:before { + content: "\e6a7"; +} + +.mdi-av-fast-rewind:before { + content: "\e6a8"; +} + +.mdi-av-games:before { + content: "\e6a9"; +} + +.mdi-av-hearing:before { + content: "\e6aa"; +} + +.mdi-av-high-quality:before { + content: "\e6ab"; +} + +.mdi-av-loop:before { + content: "\e6ac"; +} + +.mdi-av-mic:before { + content: "\e6ad"; +} + +.mdi-av-mic-none:before { + content: "\e6ae"; +} + +.mdi-av-mic-off:before { + content: "\e6af"; +} + +.mdi-av-movie:before { + content: "\e6b0"; +} + +.mdi-av-my-library-add:before { + content: "\e6b1"; +} + +.mdi-av-my-library-books:before { + content: "\e6b2"; +} + +.mdi-av-my-library-music:before { + content: "\e6b3"; +} + +.mdi-av-new-releases:before { + content: "\e6b4"; +} + +.mdi-av-not-interested:before { + content: "\e6b5"; +} + +.mdi-av-pause:before { + content: "\e6b6"; +} + +.mdi-av-pause-circle-fill:before { + content: "\e6b7"; +} + +.mdi-av-pause-circle-outline:before { + content: "\e6b8"; +} + +.mdi-av-play-arrow:before { + content: "\e6b9"; +} + +.mdi-av-play-circle-fill:before { + content: "\e6ba"; +} + +.mdi-av-play-circle-outline:before { + content: "\e6bb"; +} + +.mdi-av-playlist-add:before { + content: "\e6bc"; +} + +.mdi-av-play-shopping-bag:before { + content: "\e6bd"; +} + +.mdi-av-queue:before { + content: "\e6be"; +} + +.mdi-av-queue-music:before { + content: "\e6bf"; +} + +.mdi-av-radio:before { + content: "\e6c0"; +} + +.mdi-av-recent-actors:before { + content: "\e6c1"; +} + +.mdi-av-repeat:before { + content: "\e6c2"; +} + +.mdi-av-repeat-one:before { + content: "\e6c3"; +} + +.mdi-av-replay:before { + content: "\e6c4"; +} + +.mdi-av-shuffle:before { + content: "\e6c5"; +} + +.mdi-av-skip-next:before { + content: "\e6c6"; +} + +.mdi-av-skip-previous:before { + content: "\e6c7"; +} + +.mdi-av-snooze:before { + content: "\e6c8"; +} + +.mdi-av-stop:before { + content: "\e6c9"; +} + +.mdi-av-subtitles:before { + content: "\e6ca"; +} + +.mdi-av-surround-sound:before { + content: "\e6cb"; +} + +.mdi-av-videocam:before { + content: "\e6cc"; +} + +.mdi-av-videocam-off:before { + content: "\e6cd"; +} + +.mdi-av-video-collection:before { + content: "\e6ce"; +} + +.mdi-av-volume-down:before { + content: "\e6cf"; +} + +.mdi-av-volume-mute:before { + content: "\e6d0"; +} + +.mdi-av-volume-off:before { + content: "\e6d1"; +} + +.mdi-av-volume-up:before { + content: "\e6d2"; +} + +.mdi-av-web:before { + content: "\e6d3"; +} + +.mdi-communication-business:before { + content: "\e6d4"; +} + +.mdi-communication-call:before { + content: "\e6d5"; +} + +.mdi-communication-call-end:before { + content: "\e6d6"; +} + +.mdi-communication-call-made:before { + content: "\e6d7"; +} + +.mdi-communication-call-merge:before { + content: "\e6d8"; +} + +.mdi-communication-call-missed:before { + content: "\e6d9"; +} + +.mdi-communication-call-received:before { + content: "\e6da"; +} + +.mdi-communication-call-split:before { + content: "\e6db"; +} + +.mdi-communication-chat:before { + content: "\e6dc"; +} + +.mdi-communication-clear-all:before { + content: "\e6dd"; +} + +.mdi-communication-comment:before { + content: "\e6de"; +} + +.mdi-communication-contacts:before { + content: "\e6df"; +} + +.mdi-communication-dialer-sip:before { + content: "\e6e0"; +} + +.mdi-communication-dialpad:before { + content: "\e6e1"; +} + +.mdi-communication-dnd-on:before { + content: "\e6e2"; +} + +.mdi-communication-email:before { + content: "\e6e3"; +} + +.mdi-communication-forum:before { + content: "\e6e4"; +} + +.mdi-communication-import-export:before { + content: "\e6e5"; +} + +.mdi-communication-invert-colors-off:before { + content: "\e6e6"; +} + +.mdi-communication-invert-colors-on:before { + content: "\e6e7"; +} + +.mdi-communication-live-help:before { + content: "\e6e8"; +} + +.mdi-communication-location-off:before { + content: "\e6e9"; +} + +.mdi-communication-location-on:before { + content: "\e6ea"; +} + +.mdi-communication-message:before { + content: "\e6eb"; +} + +.mdi-communication-messenger:before { + content: "\e6ec"; +} + +.mdi-communication-no-sim:before { + content: "\e6ed"; +} + +.mdi-communication-phone:before { + content: "\e6ee"; +} + +.mdi-communication-portable-wifi-off:before { + content: "\e6ef"; +} + +.mdi-communication-quick-contacts-dialer:before { + content: "\e6f0"; +} + +.mdi-communication-quick-contacts-mail:before { + content: "\e6f1"; +} + +.mdi-communication-ring-volume:before { + content: "\e6f2"; +} + +.mdi-communication-stay-current-landscape:before { + content: "\e6f3"; +} + +.mdi-communication-stay-current-portrait:before { + content: "\e6f4"; +} + +.mdi-communication-stay-primary-landscape:before { + content: "\e6f5"; +} + +.mdi-communication-stay-primary-portrait:before { + content: "\e6f6"; +} + +.mdi-communication-swap-calls:before { + content: "\e6f7"; +} + +.mdi-communication-textsms:before { + content: "\e6f8"; +} + +.mdi-communication-voicemail:before { + content: "\e6f9"; +} + +.mdi-communication-vpn-key:before { + content: "\e6fa"; +} + +.mdi-content-add:before { + content: "\e6fb"; +} + +.mdi-content-add-box:before { + content: "\e6fc"; +} + +.mdi-content-add-circle:before { + content: "\e6fd"; +} + +.mdi-content-add-circle-outline:before { + content: "\e6fe"; +} + +.mdi-content-archive:before { + content: "\e6ff"; +} + +.mdi-content-backspace:before { + content: "\e700"; +} + +.mdi-content-block:before { + content: "\e701"; +} + +.mdi-content-clear:before { + content: "\e702"; +} + +.mdi-content-content-copy:before { + content: "\e703"; +} + +.mdi-content-content-cut:before { + content: "\e704"; +} + +.mdi-content-content-paste:before { + content: "\e705"; +} + +.mdi-content-create:before { + content: "\e706"; +} + +.mdi-content-drafts:before { + content: "\e707"; +} + +.mdi-content-filter-list:before { + content: "\e708"; +} + +.mdi-content-flag:before { + content: "\e709"; +} + +.mdi-content-forward:before { + content: "\e70a"; +} + +.mdi-content-gesture:before { + content: "\e70b"; +} + +.mdi-content-inbox:before { + content: "\e70c"; +} + +.mdi-content-link:before { + content: "\e70d"; +} + +.mdi-content-mail:before { + content: "\e70e"; +} + +.mdi-content-markunread:before { + content: "\e70f"; +} + +.mdi-content-redo:before { + content: "\e710"; +} + +.mdi-content-remove:before { + content: "\e711"; +} + +.mdi-content-remove-circle:before { + content: "\e712"; +} + +.mdi-content-remove-circle-outline:before { + content: "\e713"; +} + +.mdi-content-reply:before { + content: "\e714"; +} + +.mdi-content-reply-all:before { + content: "\e715"; +} + +.mdi-content-report:before { + content: "\e716"; +} + +.mdi-content-save:before { + content: "\e717"; +} + +.mdi-content-select-all:before { + content: "\e718"; +} + +.mdi-content-send:before { + content: "\e719"; +} + +.mdi-content-sort:before { + content: "\e71a"; +} + +.mdi-content-text-format:before { + content: "\e71b"; +} + +.mdi-content-undo:before { + content: "\e71c"; +} + +.mdi-device-access-alarm:before { + content: "\e71d"; +} + +.mdi-device-access-alarms:before { + content: "\e71e"; +} + +.mdi-device-access-time:before { + content: "\e71f"; +} + +.mdi-device-add-alarm:before { + content: "\e720"; +} + +.mdi-device-airplanemode-off:before { + content: "\e721"; +} + +.mdi-device-airplanemode-on:before { + content: "\e722"; +} + +.mdi-device-battery-20:before { + content: "\e723"; +} + +.mdi-device-battery-30:before { + content: "\e724"; +} + +.mdi-device-battery-50:before { + content: "\e725"; +} + +.mdi-device-battery-60:before { + content: "\e726"; +} + +.mdi-device-battery-80:before { + content: "\e727"; +} + +.mdi-device-battery-90:before { + content: "\e728"; +} + +.mdi-device-battery-alert:before { + content: "\e729"; +} + +.mdi-device-battery-charging-20:before { + content: "\e72a"; +} + +.mdi-device-battery-charging-30:before { + content: "\e72b"; +} + +.mdi-device-battery-charging-50:before { + content: "\e72c"; +} + +.mdi-device-battery-charging-60:before { + content: "\e72d"; +} + +.mdi-device-battery-charging-80:before { + content: "\e72e"; +} + +.mdi-device-battery-charging-90:before { + content: "\e72f"; +} + +.mdi-device-battery-charging-full:before { + content: "\e730"; +} + +.mdi-device-battery-full:before { + content: "\e731"; +} + +.mdi-device-battery-std:before { + content: "\e732"; +} + +.mdi-device-battery-unknown:before { + content: "\e733"; +} + +.mdi-device-bluetooth:before { + content: "\e734"; +} + +.mdi-device-bluetooth-connected:before { + content: "\e735"; +} + +.mdi-device-bluetooth-disabled:before { + content: "\e736"; +} + +.mdi-device-bluetooth-searching:before { + content: "\e737"; +} + +.mdi-device-brightness-auto:before { + content: "\e738"; +} + +.mdi-device-brightness-high:before { + content: "\e739"; +} + +.mdi-device-brightness-low:before { + content: "\e73a"; +} + +.mdi-device-brightness-medium:before { + content: "\e73b"; +} + +.mdi-device-data-usage:before { + content: "\e73c"; +} + +.mdi-device-developer-mode:before { + content: "\e73d"; +} + +.mdi-device-devices:before { + content: "\e73e"; +} + +.mdi-device-dvr:before { + content: "\e73f"; +} + +.mdi-device-gps-fixed:before { + content: "\e740"; +} + +.mdi-device-gps-not-fixed:before { + content: "\e741"; +} + +.mdi-device-gps-off:before { + content: "\e742"; +} + +.mdi-device-location-disabled:before { + content: "\e743"; +} + +.mdi-device-location-searching:before { + content: "\e744"; +} + +.mdi-device-multitrack-audio:before { + content: "\e745"; +} + +.mdi-device-network-cell:before { + content: "\e746"; +} + +.mdi-device-network-wifi:before { + content: "\e747"; +} + +.mdi-device-nfc:before { + content: "\e748"; +} + +.mdi-device-now-wallpaper:before { + content: "\e749"; +} + +.mdi-device-now-widgets:before { + content: "\e74a"; +} + +.mdi-device-screen-lock-landscape:before { + content: "\e74b"; +} + +.mdi-device-screen-lock-portrait:before { + content: "\e74c"; +} + +.mdi-device-screen-lock-rotation:before { + content: "\e74d"; +} + +.mdi-device-screen-rotation:before { + content: "\e74e"; +} + +.mdi-device-sd-storage:before { + content: "\e74f"; +} + +.mdi-device-settings-system-daydream:before { + content: "\e750"; +} + +.mdi-device-signal-cellular-0-bar:before { + content: "\e751"; +} + +.mdi-device-signal-cellular-1-bar:before { + content: "\e752"; +} + +.mdi-device-signal-cellular-2-bar:before { + content: "\e753"; +} + +.mdi-device-signal-cellular-3-bar:before { + content: "\e754"; +} + +.mdi-device-signal-cellular-4-bar:before { + content: "\e755"; +} + +.mdi-device-signal-cellular-connected-no-internet-0-bar:before { + content: "\e756"; +} + +.mdi-device-signal-cellular-connected-no-internet-1-bar:before { + content: "\e757"; +} + +.mdi-device-signal-cellular-connected-no-internet-2-bar:before { + content: "\e758"; +} + +.mdi-device-signal-cellular-connected-no-internet-3-bar:before { + content: "\e759"; +} + +.mdi-device-signal-cellular-connected-no-internet-4-bar:before { + content: "\e75a"; +} + +.mdi-device-signal-cellular-no-sim:before { + content: "\e75b"; +} + +.mdi-device-signal-cellular-null:before { + content: "\e75c"; +} + +.mdi-device-signal-cellular-off:before { + content: "\e75d"; +} + +.mdi-device-signal-wifi-0-bar:before { + content: "\e75e"; +} + +.mdi-device-signal-wifi-1-bar:before { + content: "\e75f"; +} + +.mdi-device-signal-wifi-2-bar:before { + content: "\e760"; +} + +.mdi-device-signal-wifi-3-bar:before { + content: "\e761"; +} + +.mdi-device-signal-wifi-4-bar:before { + content: "\e762"; +} + +.mdi-device-signal-wifi-off:before { + content: "\e763"; +} + +.mdi-device-storage:before { + content: "\e764"; +} + +.mdi-device-usb:before { + content: "\e765"; +} + +.mdi-device-wifi-lock:before { + content: "\e766"; +} + +.mdi-device-wifi-tethering:before { + content: "\e767"; +} + +.mdi-editor-attach-file:before { + content: "\e768"; +} + +.mdi-editor-attach-money:before { + content: "\e769"; +} + +.mdi-editor-border-all:before { + content: "\e76a"; +} + +.mdi-editor-border-bottom:before { + content: "\e76b"; +} + +.mdi-editor-border-clear:before { + content: "\e76c"; +} + +.mdi-editor-border-color:before { + content: "\e76d"; +} + +.mdi-editor-border-horizontal:before { + content: "\e76e"; +} + +.mdi-editor-border-inner:before { + content: "\e76f"; +} + +.mdi-editor-border-left:before { + content: "\e770"; +} + +.mdi-editor-border-outer:before { + content: "\e771"; +} + +.mdi-editor-border-right:before { + content: "\e772"; +} + +.mdi-editor-border-style:before { + content: "\e773"; +} + +.mdi-editor-border-top:before { + content: "\e774"; +} + +.mdi-editor-border-vertical:before { + content: "\e775"; +} + +.mdi-editor-format-align-center:before { + content: "\e776"; +} + +.mdi-editor-format-align-justify:before { + content: "\e777"; +} + +.mdi-editor-format-align-left:before { + content: "\e778"; +} + +.mdi-editor-format-align-right:before { + content: "\e779"; +} + +.mdi-editor-format-bold:before { + content: "\e77a"; +} + +.mdi-editor-format-clear:before { + content: "\e77b"; +} + +.mdi-editor-format-color-fill:before { + content: "\e77c"; +} + +.mdi-editor-format-color-reset:before { + content: "\e77d"; +} + +.mdi-editor-format-color-text:before { + content: "\e77e"; +} + +.mdi-editor-format-indent-decrease:before { + content: "\e77f"; +} + +.mdi-editor-format-indent-increase:before { + content: "\e780"; +} + +.mdi-editor-format-italic:before { + content: "\e781"; +} + +.mdi-editor-format-line-spacing:before { + content: "\e782"; +} + +.mdi-editor-format-list-bulleted:before { + content: "\e783"; +} + +.mdi-editor-format-list-numbered:before { + content: "\e784"; +} + +.mdi-editor-format-paint:before { + content: "\e785"; +} + +.mdi-editor-format-quote:before { + content: "\e786"; +} + +.mdi-editor-format-size:before { + content: "\e787"; +} + +.mdi-editor-format-strikethrough:before { + content: "\e788"; +} + +.mdi-editor-format-textdirection-l-to-r:before { + content: "\e789"; +} + +.mdi-editor-format-textdirection-r-to-l:before { + content: "\e78a"; +} + +.mdi-editor-format-underline:before { + content: "\e78b"; +} + +.mdi-editor-functions:before { + content: "\e78c"; +} + +.mdi-editor-insert-chart:before { + content: "\e78d"; +} + +.mdi-editor-insert-comment:before { + content: "\e78e"; +} + +.mdi-editor-insert-drive-file:before { + content: "\e78f"; +} + +.mdi-editor-insert-emoticon:before { + content: "\e790"; +} + +.mdi-editor-insert-invitation:before { + content: "\e791"; +} + +.mdi-editor-insert-link:before { + content: "\e792"; +} + +.mdi-editor-insert-photo:before { + content: "\e793"; +} + +.mdi-editor-merge-type:before { + content: "\e794"; +} + +.mdi-editor-mode-comment:before { + content: "\e795"; +} + +.mdi-editor-mode-edit:before { + content: "\e796"; +} + +.mdi-editor-publish:before { + content: "\e797"; +} + +.mdi-editor-vertical-align-bottom:before { + content: "\e798"; +} + +.mdi-editor-vertical-align-center:before { + content: "\e799"; +} + +.mdi-editor-vertical-align-top:before { + content: "\e79a"; +} + +.mdi-editor-wrap-text:before { + content: "\e79b"; +} + +.mdi-file-attachment:before { + content: "\e79c"; +} + +.mdi-file-cloud:before { + content: "\e79d"; +} + +.mdi-file-cloud-circle:before { + content: "\e79e"; +} + +.mdi-file-cloud-done:before { + content: "\e79f"; +} + +.mdi-file-cloud-download:before { + content: "\e7a0"; +} + +.mdi-file-cloud-off:before { + content: "\e7a1"; +} + +.mdi-file-cloud-queue:before { + content: "\e7a2"; +} + +.mdi-file-cloud-upload:before { + content: "\e7a3"; +} + +.mdi-file-file-download:before { + content: "\e7a4"; +} + +.mdi-file-file-upload:before { + content: "\e7a5"; +} + +.mdi-file-folder:before { + content: "\e7a6"; +} + +.mdi-file-folder-open:before { + content: "\e7a7"; +} + +.mdi-file-folder-shared:before { + content: "\e7a8"; +} + +.mdi-hardware-cast:before { + content: "\e7a9"; +} + +.mdi-hardware-cast-connected:before { + content: "\e7aa"; +} + +.mdi-hardware-computer:before { + content: "\e7ab"; +} + +.mdi-hardware-desktop-mac:before { + content: "\e7ac"; +} + +.mdi-hardware-desktop-windows:before { + content: "\e7ad"; +} + +.mdi-hardware-dock:before { + content: "\e7ae"; +} + +.mdi-hardware-gamepad:before { + content: "\e7af"; +} + +.mdi-hardware-headset:before { + content: "\e7b0"; +} + +.mdi-hardware-headset-mic:before { + content: "\e7b1"; +} + +.mdi-hardware-keyboard:before { + content: "\e7b2"; +} + +.mdi-hardware-keyboard-alt:before { + content: "\e7b3"; +} + +.mdi-hardware-keyboard-arrow-down:before { + content: "\e7b4"; +} + +.mdi-hardware-keyboard-arrow-left:before { + content: "\e7b5"; +} + +.mdi-hardware-keyboard-arrow-right:before { + content: "\e7b6"; +} + +.mdi-hardware-keyboard-arrow-up:before { + content: "\e7b7"; +} + +.mdi-hardware-keyboard-backspace:before { + content: "\e7b8"; +} + +.mdi-hardware-keyboard-capslock:before { + content: "\e7b9"; +} + +.mdi-hardware-keyboard-control:before { + content: "\e7ba"; +} + +.mdi-hardware-keyboard-hide:before { + content: "\e7bb"; +} + +.mdi-hardware-keyboard-return:before { + content: "\e7bc"; +} + +.mdi-hardware-keyboard-tab:before { + content: "\e7bd"; +} + +.mdi-hardware-keyboard-voice:before { + content: "\e7be"; +} + +.mdi-hardware-laptop:before { + content: "\e7bf"; +} + +.mdi-hardware-laptop-chromebook:before { + content: "\e7c0"; +} + +.mdi-hardware-laptop-mac:before { + content: "\e7c1"; +} + +.mdi-hardware-laptop-windows:before { + content: "\e7c2"; +} + +.mdi-hardware-memory:before { + content: "\e7c3"; +} + +.mdi-hardware-mouse:before { + content: "\e7c4"; +} + +.mdi-hardware-phone-android:before { + content: "\e7c5"; +} + +.mdi-hardware-phone-iphone:before { + content: "\e7c6"; +} + +.mdi-hardware-phonelink:before { + content: "\e7c7"; +} + +.mdi-hardware-phonelink-off:before { + content: "\e7c8"; +} + +.mdi-hardware-security:before { + content: "\e7c9"; +} + +.mdi-hardware-sim-card:before { + content: "\e7ca"; +} + +.mdi-hardware-smartphone:before { + content: "\e7cb"; +} + +.mdi-hardware-speaker:before { + content: "\e7cc"; +} + +.mdi-hardware-tablet:before { + content: "\e7cd"; +} + +.mdi-hardware-tablet-android:before { + content: "\e7ce"; +} + +.mdi-hardware-tablet-mac:before { + content: "\e7cf"; +} + +.mdi-hardware-tv:before { + content: "\e7d0"; +} + +.mdi-hardware-watch:before { + content: "\e7d1"; +} + +.mdi-image-add-to-photos:before { + content: "\e7d2"; +} + +.mdi-image-adjust:before { + content: "\e7d3"; +} + +.mdi-image-assistant-photo:before { + content: "\e7d4"; +} + +.mdi-image-audiotrack:before { + content: "\e7d5"; +} + +.mdi-image-blur-circular:before { + content: "\e7d6"; +} + +.mdi-image-blur-linear:before { + content: "\e7d7"; +} + +.mdi-image-blur-off:before { + content: "\e7d8"; +} + +.mdi-image-blur-on:before { + content: "\e7d9"; +} + +.mdi-image-brightness-1:before { + content: "\e7da"; +} + +.mdi-image-brightness-2:before { + content: "\e7db"; +} + +.mdi-image-brightness-3:before { + content: "\e7dc"; +} + +.mdi-image-brightness-4:before { + content: "\e7dd"; +} + +.mdi-image-brightness-5:before { + content: "\e7de"; +} + +.mdi-image-brightness-6:before { + content: "\e7df"; +} + +.mdi-image-brightness-7:before { + content: "\e7e0"; +} + +.mdi-image-brush:before { + content: "\e7e1"; +} + +.mdi-image-camera:before { + content: "\e7e2"; +} + +.mdi-image-camera-alt:before { + content: "\e7e3"; +} + +.mdi-image-camera-front:before { + content: "\e7e4"; +} + +.mdi-image-camera-rear:before { + content: "\e7e5"; +} + +.mdi-image-camera-roll:before { + content: "\e7e6"; +} + +.mdi-image-center-focus-strong:before { + content: "\e7e7"; +} + +.mdi-image-center-focus-weak:before { + content: "\e7e8"; +} + +.mdi-image-collections:before { + content: "\e7e9"; +} + +.mdi-image-colorize:before { + content: "\e7ea"; +} + +.mdi-image-color-lens:before { + content: "\e7eb"; +} + +.mdi-image-compare:before { + content: "\e7ec"; +} + +.mdi-image-control-point:before { + content: "\e7ed"; +} + +.mdi-image-control-point-duplicate:before { + content: "\e7ee"; +} + +.mdi-image-crop:before { + content: "\e7ef"; +} + +.mdi-image-crop-3-2:before { + content: "\e7f0"; +} + +.mdi-image-crop-5-4:before { + content: "\e7f1"; +} + +.mdi-image-crop-7-5:before { + content: "\e7f2"; +} + +.mdi-image-crop-16-9:before { + content: "\e7f3"; +} + +.mdi-image-crop-din:before { + content: "\e7f4"; +} + +.mdi-image-crop-free:before { + content: "\e7f5"; +} + +.mdi-image-crop-landscape:before { + content: "\e7f6"; +} + +.mdi-image-crop-original:before { + content: "\e7f7"; +} + +.mdi-image-crop-portrait:before { + content: "\e7f8"; +} + +.mdi-image-crop-square:before { + content: "\e7f9"; +} + +.mdi-image-dehaze:before { + content: "\e7fa"; +} + +.mdi-image-details:before { + content: "\e7fb"; +} + +.mdi-image-edit:before { + content: "\e7fc"; +} + +.mdi-image-exposure:before { + content: "\e7fd"; +} + +.mdi-image-exposure-minus-1:before { + content: "\e7fe"; +} + +.mdi-image-exposure-minus-2:before { + content: "\e7ff"; +} + +.mdi-image-exposure-plus-1:before { + content: "\e800"; +} + +.mdi-image-exposure-plus-2:before { + content: "\e801"; +} + +.mdi-image-exposure-zero:before { + content: "\e802"; +} + +.mdi-image-filter:before { + content: "\e803"; +} + +.mdi-image-filter-1:before { + content: "\e804"; +} + +.mdi-image-filter-2:before { + content: "\e805"; +} + +.mdi-image-filter-3:before { + content: "\e806"; +} + +.mdi-image-filter-4:before { + content: "\e807"; +} + +.mdi-image-filter-5:before { + content: "\e808"; +} + +.mdi-image-filter-6:before { + content: "\e809"; +} + +.mdi-image-filter-7:before { + content: "\e80a"; +} + +.mdi-image-filter-8:before { + content: "\e80b"; +} + +.mdi-image-filter-9:before { + content: "\e80c"; +} + +.mdi-image-filter-9-plus:before { + content: "\e80d"; +} + +.mdi-image-filter-b-and-w:before { + content: "\e80e"; +} + +.mdi-image-filter-center-focus:before { + content: "\e80f"; +} + +.mdi-image-filter-drama:before { + content: "\e810"; +} + +.mdi-image-filter-frames:before { + content: "\e811"; +} + +.mdi-image-filter-hdr:before { + content: "\e812"; +} + +.mdi-image-filter-none:before { + content: "\e813"; +} + +.mdi-image-filter-tilt-shift:before { + content: "\e814"; +} + +.mdi-image-filter-vintage:before { + content: "\e815"; +} + +.mdi-image-flare:before { + content: "\e816"; +} + +.mdi-image-flash-auto:before { + content: "\e817"; +} + +.mdi-image-flash-off:before { + content: "\e818"; +} + +.mdi-image-flash-on:before { + content: "\e819"; +} + +.mdi-image-flip:before { + content: "\e81a"; +} + +.mdi-image-gradient:before { + content: "\e81b"; +} + +.mdi-image-grain:before { + content: "\e81c"; +} + +.mdi-image-grid-off:before { + content: "\e81d"; +} + +.mdi-image-grid-on:before { + content: "\e81e"; +} + +.mdi-image-hdr-off:before { + content: "\e81f"; +} + +.mdi-image-hdr-on:before { + content: "\e820"; +} + +.mdi-image-hdr-strong:before { + content: "\e821"; +} + +.mdi-image-hdr-weak:before { + content: "\e822"; +} + +.mdi-image-healing:before { + content: "\e823"; +} + +.mdi-image-image:before { + content: "\e824"; +} + +.mdi-image-image-aspect-ratio:before { + content: "\e825"; +} + +.mdi-image-iso:before { + content: "\e826"; +} + +.mdi-image-landscape:before { + content: "\e827"; +} + +.mdi-image-leak-add:before { + content: "\e828"; +} + +.mdi-image-leak-remove:before { + content: "\e829"; +} + +.mdi-image-lens:before { + content: "\e82a"; +} + +.mdi-image-looks:before { + content: "\e82b"; +} + +.mdi-image-looks-3:before { + content: "\e82c"; +} + +.mdi-image-looks-4:before { + content: "\e82d"; +} + +.mdi-image-looks-5:before { + content: "\e82e"; +} + +.mdi-image-looks-6:before { + content: "\e82f"; +} + +.mdi-image-looks-one:before { + content: "\e830"; +} + +.mdi-image-looks-two:before { + content: "\e831"; +} + +.mdi-image-loupe:before { + content: "\e832"; +} + +.mdi-image-movie-creation:before { + content: "\e833"; +} + +.mdi-image-nature:before { + content: "\e834"; +} + +.mdi-image-nature-people:before { + content: "\e835"; +} + +.mdi-image-navigate-before:before { + content: "\e836"; +} + +.mdi-image-navigate-next:before { + content: "\e837"; +} + +.mdi-image-palette:before { + content: "\e838"; +} + +.mdi-image-panorama:before { + content: "\e839"; +} + +.mdi-image-panorama-fisheye:before { + content: "\e83a"; +} + +.mdi-image-panorama-horizontal:before { + content: "\e83b"; +} + +.mdi-image-panorama-vertical:before { + content: "\e83c"; +} + +.mdi-image-panorama-wide-angle:before { + content: "\e83d"; +} + +.mdi-image-photo:before { + content: "\e83e"; +} + +.mdi-image-photo-album:before { + content: "\e83f"; +} + +.mdi-image-photo-camera:before { + content: "\e840"; +} + +.mdi-image-photo-library:before { + content: "\e841"; +} + +.mdi-image-portrait:before { + content: "\e842"; +} + +.mdi-image-remove-red-eye:before { + content: "\e843"; +} + +.mdi-image-rotate-left:before { + content: "\e844"; +} + +.mdi-image-rotate-right:before { + content: "\e845"; +} + +.mdi-image-slideshow:before { + content: "\e846"; +} + +.mdi-image-straighten:before { + content: "\e847"; +} + +.mdi-image-style:before { + content: "\e848"; +} + +.mdi-image-switch-camera:before { + content: "\e849"; +} + +.mdi-image-switch-video:before { + content: "\e84a"; +} + +.mdi-image-tag-faces:before { + content: "\e84b"; +} + +.mdi-image-texture:before { + content: "\e84c"; +} + +.mdi-image-timelapse:before { + content: "\e84d"; +} + +.mdi-image-timer:before { + content: "\e84e"; +} + +.mdi-image-timer-3:before { + content: "\e84f"; +} + +.mdi-image-timer-10:before { + content: "\e850"; +} + +.mdi-image-timer-auto:before { + content: "\e851"; +} + +.mdi-image-timer-off:before { + content: "\e852"; +} + +.mdi-image-tonality:before { + content: "\e853"; +} + +.mdi-image-transform:before { + content: "\e854"; +} + +.mdi-image-tune:before { + content: "\e855"; +} + +.mdi-image-wb-auto:before { + content: "\e856"; +} + +.mdi-image-wb-cloudy:before { + content: "\e857"; +} + +.mdi-image-wb-incandescent:before { + content: "\e858"; +} + +.mdi-image-wb-irradescent:before { + content: "\e859"; +} + +.mdi-image-wb-sunny:before { + content: "\e85a"; +} + +.mdi-maps-beenhere:before { + content: "\e85b"; +} + +.mdi-maps-directions:before { + content: "\e85c"; +} + +.mdi-maps-directions-bike:before { + content: "\e85d"; +} + +.mdi-maps-directions-bus:before { + content: "\e85e"; +} + +.mdi-maps-directions-car:before { + content: "\e85f"; +} + +.mdi-maps-directions-ferry:before { + content: "\e860"; +} + +.mdi-maps-directions-subway:before { + content: "\e861"; +} + +.mdi-maps-directions-train:before { + content: "\e862"; +} + +.mdi-maps-directions-transit:before { + content: "\e863"; +} + +.mdi-maps-directions-walk:before { + content: "\e864"; +} + +.mdi-maps-flight:before { + content: "\e865"; +} + +.mdi-maps-hotel:before { + content: "\e866"; +} + +.mdi-maps-layers:before { + content: "\e867"; +} + +.mdi-maps-layers-clear:before { + content: "\e868"; +} + +.mdi-maps-local-airport:before { + content: "\e869"; +} + +.mdi-maps-local-atm:before { + content: "\e86a"; +} + +.mdi-maps-local-attraction:before { + content: "\e86b"; +} + +.mdi-maps-local-bar:before { + content: "\e86c"; +} + +.mdi-maps-local-cafe:before { + content: "\e86d"; +} + +.mdi-maps-local-car-wash:before { + content: "\e86e"; +} + +.mdi-maps-local-convenience-store:before { + content: "\e86f"; +} + +.mdi-maps-local-drink:before { + content: "\e870"; +} + +.mdi-maps-local-florist:before { + content: "\e871"; +} + +.mdi-maps-local-gas-station:before { + content: "\e872"; +} + +.mdi-maps-local-grocery-store:before { + content: "\e873"; +} + +.mdi-maps-local-hospital:before { + content: "\e874"; +} + +.mdi-maps-local-hotel:before { + content: "\e875"; +} + +.mdi-maps-local-laundry-service:before { + content: "\e876"; +} + +.mdi-maps-local-library:before { + content: "\e877"; +} + +.mdi-maps-local-mall:before { + content: "\e878"; +} + +.mdi-maps-local-movies:before { + content: "\e879"; +} + +.mdi-maps-local-offer:before { + content: "\e87a"; +} + +.mdi-maps-local-parking:before { + content: "\e87b"; +} + +.mdi-maps-local-pharmacy:before { + content: "\e87c"; +} + +.mdi-maps-local-phone:before { + content: "\e87d"; +} + +.mdi-maps-local-pizza:before { + content: "\e87e"; +} + +.mdi-maps-local-play:before { + content: "\e87f"; +} + +.mdi-maps-local-post-office:before { + content: "\e880"; +} + +.mdi-maps-local-print-shop:before { + content: "\e881"; +} + +.mdi-maps-local-restaurant:before { + content: "\e882"; +} + +.mdi-maps-local-see:before { + content: "\e883"; +} + +.mdi-maps-local-shipping:before { + content: "\e884"; +} + +.mdi-maps-local-taxi:before { + content: "\e885"; +} + +.mdi-maps-location-history:before { + content: "\e886"; +} + +.mdi-maps-map:before { + content: "\e887"; +} + +.mdi-maps-my-location:before { + content: "\e888"; +} + +.mdi-maps-navigation:before { + content: "\e889"; +} + +.mdi-maps-pin-drop:before { + content: "\e88a"; +} + +.mdi-maps-place:before { + content: "\e88b"; +} + +.mdi-maps-rate-review:before { + content: "\e88c"; +} + +.mdi-maps-restaurant-menu:before { + content: "\e88d"; +} + +.mdi-maps-satellite:before { + content: "\e88e"; +} + +.mdi-maps-store-mall-directory:before { + content: "\e88f"; +} + +.mdi-maps-terrain:before { + content: "\e890"; +} + +.mdi-maps-traffic:before { + content: "\e891"; +} + +.mdi-navigation-apps:before { + content: "\e892"; +} + +.mdi-navigation-arrow-back:before { + content: "\e893"; +} + +.mdi-navigation-arrow-drop-down:before, .select-wrapper span.select-dropdown:after { + content: "\e894"; +} + +.mdi-navigation-arrow-drop-down-circle:before { + content: "\e895"; +} + +.mdi-navigation-arrow-drop-up:before { + content: "\e896"; +} + +.mdi-navigation-arrow-forward:before { + content: "\e897"; +} + +.mdi-navigation-cancel:before { + content: "\e898"; +} + +.mdi-navigation-check:before { + content: "\e899"; +} + +.mdi-navigation-chevron-left:before { + content: "\e89a"; +} + +.mdi-navigation-chevron-right:before { + content: "\e89b"; +} + +.mdi-navigation-close:before { + content: "\e89c"; +} + +.mdi-navigation-expand-less:before { + content: "\e89d"; +} + +.mdi-navigation-expand-more:before { + content: "\e89e"; +} + +.mdi-navigation-fullscreen:before { + content: "\e89f"; +} + +.mdi-navigation-fullscreen-exit:before { + content: "\e8a0"; +} + +.mdi-navigation-menu:before { + content: "\e8a1"; +} + +.mdi-navigation-more-horiz:before { + content: "\e8a2"; +} + +.mdi-navigation-more-vert:before { + content: "\e8a3"; +} + +.mdi-navigation-refresh:before { + content: "\e8a4"; +} + +.mdi-navigation-unfold-less:before { + content: "\e8a5"; +} + +.mdi-navigation-unfold-more:before { + content: "\e8a6"; +} + +.mdi-notification-adb:before { + content: "\e8a7"; +} + +.mdi-notification-bluetooth-audio:before { + content: "\e8a8"; +} + +.mdi-notification-disc-full:before { + content: "\e8a9"; +} + +.mdi-notification-dnd-forwardslash:before { + content: "\e8aa"; +} + +.mdi-notification-do-not-disturb:before { + content: "\e8ab"; +} + +.mdi-notification-drive-eta:before { + content: "\e8ac"; +} + +.mdi-notification-event-available:before { + content: "\e8ad"; +} + +.mdi-notification-event-busy:before { + content: "\e8ae"; +} + +.mdi-notification-event-note:before { + content: "\e8af"; +} + +.mdi-notification-folder-special:before { + content: "\e8b0"; +} + +.mdi-notification-mms:before { + content: "\e8b1"; +} + +.mdi-notification-more:before { + content: "\e8b2"; +} + +.mdi-notification-network-locked:before { + content: "\e8b3"; +} + +.mdi-notification-phone-bluetooth-speaker:before { + content: "\e8b4"; +} + +.mdi-notification-phone-forwarded:before { + content: "\e8b5"; +} + +.mdi-notification-phone-in-talk:before { + content: "\e8b6"; +} + +.mdi-notification-phone-locked:before { + content: "\e8b7"; +} + +.mdi-notification-phone-missed:before { + content: "\e8b8"; +} + +.mdi-notification-phone-paused:before { + content: "\e8b9"; +} + +.mdi-notification-play-download:before { + content: "\e8ba"; +} + +.mdi-notification-play-install:before { + content: "\e8bb"; +} + +.mdi-notification-sd-card:before { + content: "\e8bc"; +} + +.mdi-notification-sim-card-alert:before { + content: "\e8bd"; +} + +.mdi-notification-sms:before { + content: "\e8be"; +} + +.mdi-notification-sms-failed:before { + content: "\e8bf"; +} + +.mdi-notification-sync:before { + content: "\e8c0"; +} + +.mdi-notification-sync-disabled:before { + content: "\e8c1"; +} + +.mdi-notification-sync-problem:before { + content: "\e8c2"; +} + +.mdi-notification-system-update:before { + content: "\e8c3"; +} + +.mdi-notification-tap-and-play:before { + content: "\e8c4"; +} + +.mdi-notification-time-to-leave:before { + content: "\e8c5"; +} + +.mdi-notification-vibration:before { + content: "\e8c6"; +} + +.mdi-notification-voice-chat:before { + content: "\e8c7"; +} + +.mdi-notification-vpn-lock:before { + content: "\e8c8"; +} + +.mdi-social-cake:before { + content: "\e8c9"; +} + +.mdi-social-domain:before { + content: "\e8ca"; +} + +.mdi-social-group:before { + content: "\e8cb"; +} + +.mdi-social-group-add:before { + content: "\e8cc"; +} + +.mdi-social-location-city:before { + content: "\e8cd"; +} + +.mdi-social-mood:before { + content: "\e8ce"; +} + +.mdi-social-notifications:before { + content: "\e8cf"; +} + +.mdi-social-notifications-none:before { + content: "\e8d0"; +} + +.mdi-social-notifications-off:before { + content: "\e8d1"; +} + +.mdi-social-notifications-on:before { + content: "\e8d2"; +} + +.mdi-social-notifications-paused:before { + content: "\e8d3"; +} + +.mdi-social-pages:before { + content: "\e8d4"; +} + +.mdi-social-party-mode:before { + content: "\e8d5"; +} + +.mdi-social-people:before { + content: "\e8d6"; +} + +.mdi-social-people-outline:before { + content: "\e8d7"; +} + +.mdi-social-person:before { + content: "\e8d8"; +} + +.mdi-social-person-add:before { + content: "\e8d9"; +} + +.mdi-social-person-outline:before { + content: "\e8da"; +} + +.mdi-social-plus-one:before { + content: "\e8db"; +} + +.mdi-social-poll:before { + content: "\e8dc"; +} + +.mdi-social-public:before { + content: "\e8dd"; +} + +.mdi-social-school:before { + content: "\e8de"; +} + +.mdi-social-share:before { + content: "\e8df"; +} + +.mdi-social-whatshot:before { + content: "\e8e0"; +} + +.mdi-toggle-check-box:before { + content: "\e8e1"; +} + +.mdi-toggle-check-box-outline-blank:before { + content: "\e8e2"; +} + +.mdi-toggle-radio-button-off:before { + content: "\e8e3"; +} + +.mdi-toggle-radio-button-on:before { + content: "\e8e4"; +} + +.container { + padding: 0 1rem; + margin: 0 auto; + max-width: 1280px; + width: 90%; +} + +@media only screen and (min-width: 600px) { + .container { + width: 85%; + } +} +@media only screen and (min-width: 992px) { + .container { + width: 70%; + } +} +.container .row { + margin-left: -0.5rem; + margin-right: -0.5rem; +} + +.section { + padding-top: 1rem; + padding-bottom: 1rem; +} +.section.no-pad { + padding: 0; +} +.section.no-pad-bot { + padding-bottom: 0; +} +.section.no-pad-top { + padding-top: 0; +} + +.row { + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; +} +.row:after { + content: ""; + display: table; + clear: both; +} +.row .col { + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + -o-transition: all 0.3s; + -ms-transition: all 0.3s; + transition: all 0.3s; + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 0.5rem; +} +.row .col.s1 { + width: 8.33333%; + margin-left: 0; +} +.row .col.s2 { + width: 16.66667%; + margin-left: 0; +} +.row .col.s3 { + width: 25%; + margin-left: 0; +} +.row .col.s4 { + width: 33.33333%; + margin-left: 0; +} +.row .col.s5 { + width: 41.66667%; + margin-left: 0; +} +.row .col.s6 { + width: 50%; + margin-left: 0; +} +.row .col.s7 { + width: 58.33333%; + margin-left: 0; +} +.row .col.s8 { + width: 66.66667%; + margin-left: 0; +} +.row .col.s9 { + width: 75%; + margin-left: 0; +} +.row .col.s10 { + width: 83.33333%; + margin-left: 0; +} +.row .col.s11 { + width: 91.66667%; + margin-left: 0; +} +.row .col.s12 { + width: 100%; + margin-left: 0; +} +.row .col.offset-s1 { + margin-left: 8.33333%; +} +.row .col.offset-s2 { + margin-left: 16.66667%; +} +.row .col.offset-s3 { + margin-left: 25%; +} +.row .col.offset-s4 { + margin-left: 33.33333%; +} +.row .col.offset-s5 { + margin-left: 41.66667%; +} +.row .col.offset-s6 { + margin-left: 50%; +} +.row .col.offset-s7 { + margin-left: 58.33333%; +} +.row .col.offset-s8 { + margin-left: 66.66667%; +} +.row .col.offset-s9 { + margin-left: 75%; +} +.row .col.offset-s10 { + margin-left: 83.33333%; +} +.row .col.offset-s11 { + margin-left: 91.66667%; +} +.row .col.offset-s12 { + margin-left: 100%; +} +@media only screen and (min-width: 600px) { + .row .col.m1 { + width: 8.33333%; + margin-left: 0; + } + .row .col.m2 { + width: 16.66667%; + margin-left: 0; + } + .row .col.m3 { + width: 25%; + margin-left: 0; + } + .row .col.m4 { + width: 33.33333%; + margin-left: 0; + } + .row .col.m5 { + width: 41.66667%; + margin-left: 0; + } + .row .col.m6 { + width: 50%; + margin-left: 0; + } + .row .col.m7 { + width: 58.33333%; + margin-left: 0; + } + .row .col.m8 { + width: 66.66667%; + margin-left: 0; + } + .row .col.m9 { + width: 75%; + margin-left: 0; + } + .row .col.m10 { + width: 83.33333%; + margin-left: 0; + } + .row .col.m11 { + width: 91.66667%; + margin-left: 0; + } + .row .col.m12 { + width: 100%; + margin-left: 0; + } + .row .col.offset-m1 { + margin-left: 8.33333%; + } + .row .col.offset-m2 { + margin-left: 16.66667%; + } + .row .col.offset-m3 { + margin-left: 25%; + } + .row .col.offset-m4 { + margin-left: 33.33333%; + } + .row .col.offset-m5 { + margin-left: 41.66667%; + } + .row .col.offset-m6 { + margin-left: 50%; + } + .row .col.offset-m7 { + margin-left: 58.33333%; + } + .row .col.offset-m8 { + margin-left: 66.66667%; + } + .row .col.offset-m9 { + margin-left: 75%; + } + .row .col.offset-m10 { + margin-left: 83.33333%; + } + .row .col.offset-m11 { + margin-left: 91.66667%; + } + .row .col.offset-m12 { + margin-left: 100%; + } +} +@media only screen and (min-width: 992px) { + .row .col.l1 { + width: 8.33333%; + margin-left: 0; + } + .row .col.l2 { + width: 16.66667%; + margin-left: 0; + } + .row .col.l3 { + width: 25%; + margin-left: 0; + } + .row .col.l4 { + width: 33.33333%; + margin-left: 0; + } + .row .col.l5 { + width: 41.66667%; + margin-left: 0; + } + .row .col.l6 { + width: 50%; + margin-left: 0; + } + .row .col.l7 { + width: 58.33333%; + margin-left: 0; + } + .row .col.l8 { + width: 66.66667%; + margin-left: 0; + } + .row .col.l9 { + width: 75%; + margin-left: 0; + } + .row .col.l10 { + width: 83.33333%; + margin-left: 0; + } + .row .col.l11 { + width: 91.66667%; + margin-left: 0; + } + .row .col.l12 { + width: 100%; + margin-left: 0; + } + .row .col.offset-l1 { + margin-left: 8.33333%; + } + .row .col.offset-l2 { + margin-left: 16.66667%; + } + .row .col.offset-l3 { + margin-left: 25%; + } + .row .col.offset-l4 { + margin-left: 33.33333%; + } + .row .col.offset-l5 { + margin-left: 41.66667%; + } + .row .col.offset-l6 { + margin-left: 50%; + } + .row .col.offset-l7 { + margin-left: 58.33333%; + } + .row .col.offset-l8 { + margin-left: 66.66667%; + } + .row .col.offset-l9 { + margin-left: 75%; + } + .row .col.offset-l10 { + margin-left: 83.33333%; + } + .row .col.offset-l11 { + margin-left: 91.66667%; + } + .row .col.offset-l12 { + margin-left: 100%; + } +} + +nav { + color: #fff; + background-color: #ee6e73; + width: 100%; + height: 56px; + line-height: 56px; +} +nav .nav-wrapper { + position: relative; + height: 100%; +} +nav a { + color: #fff; +} +nav a.button-collapse { + float: left; + position: relative; + z-index: 1; +} +nav a.button-collapse i { + font-size: 2.7rem; + height: 56px; + line-height: 56px; +} +nav .brand-logo { + position: absolute; + color: #fff; + display: inline-block; + font-size: 2.1rem; + padding: 0; +} +@media only screen and (max-width: 992px) { + nav .brand-logo { + left: 0; + width: 100%; + text-align: center; + z-index: 0; + } +} +nav .brand-logo.right { + right: 0.5rem; + padding: 0; +} +nav ul { + margin: 0; + float: right; +} +nav ul li { + float: left; + padding: 0px; + -webkit-transition: background-color 0.3s; + -moz-transition: background-color 0.3s; + -o-transition: background-color 0.3s; + -ms-transition: background-color 0.3s; + transition: background-color 0.3s; +} +nav ul li:hover, nav ul li.active { + background-color: rgba(0, 0, 0, 0.1); +} +nav ul a { + font-size: 1rem; + color: #fff; + display: block; + padding: 0px 15px; +} +nav ul.left { + float: left; +} + +@media only screen and (min-width: 600px) { + nav, nav .nav-wrapper i, nav a.button-collapse i { + height: 64px; + line-height: 64px; + } + + nav .nav-wrapper i { + font-size: 2rem; + } +} +@font-face { + font-family: "Roboto"; + src: url(../font/roboto/Roboto-Thin.ttf); + font-weight: 200; +} +@font-face { + font-family: "Roboto"; + src: url(../font/roboto/Roboto-Light.ttf); + font-weight: 300; +} +@font-face { + font-family: "Roboto"; + src: url(../font/roboto/Roboto-Regular.ttf); + font-weight: 400; +} +@font-face { + font-family: "Roboto"; + src: url(../font/roboto/Roboto-Medium.ttf); + font-weight: 500; +} +@font-face { + font-family: "Roboto"; + src: url(../font/roboto/Roboto-Bold.ttf); + font-weight: 700; +} +a { + text-decoration: none; +} + +html { + line-height: 1.5; + font-family: "Roboto", sans-serif; + font-weight: normal; + color: #212121; +} +@media only screen and (min-width: 0) { + html { + font-size: 14px; + } +} +@media only screen and (min-width: 992px) { + html { + font-size: 14.5px; + } +} +@media only screen and (min-width: 1200px) { + html { + font-size: 15px; + } +} + +h1, h2, h3, h4, h5, h6 { + font-weight: 400; +} + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + font-weight: inherit; +} + +h1 { + font-size: 4.2rem; + line-height: 4.62rem; + margin: 2.1rem 0 1.68rem 0; +} + +h2 { + font-size: 3.56rem; + line-height: 3.916rem; + margin: 1.78rem 0 1.424rem 0; +} + +h3 { + font-size: 2.92rem; + line-height: 3.212rem; + margin: 1.46rem 0 1.168rem 0; +} + +h4 { + font-size: 2.28rem; + line-height: 2.508rem; + margin: 1.14rem 0 0.912rem 0; +} + +h5 { + font-size: 1.64rem; + line-height: 1.804rem; + margin: 0.82rem 0 0.656rem 0; +} + +h6 { + font-size: 1rem; + line-height: 1.1rem; + margin: 0.5rem 0 0.4rem 0; +} + +em { + font-style: italic; +} + +strong { + font-weight: 500; +} + +small { + font-size: 75%; +} + +.light { + font-weight: 300; +} + +.flow-text { + font-weight: 300; +} +@media only screen and (min-width: 360px) { + .flow-text { + font-size: 1.2rem; + } +} +@media only screen and (min-width: 0px) { + .flow-text { + line-height: 0.8rem; + } +} +@media only screen and (min-width: 390px) { + .flow-text { + font-size: 1.224rem; + } +} +@media only screen and (min-width: 30px) { + .flow-text { + line-height: 0.904rem; + } +} +@media only screen and (min-width: 420px) { + .flow-text { + font-size: 1.248rem; + } +} +@media only screen and (min-width: 60px) { + .flow-text { + line-height: 1.008rem; + } +} +@media only screen and (min-width: 450px) { + .flow-text { + font-size: 1.272rem; + } +} +@media only screen and (min-width: 90px) { + .flow-text { + line-height: 1.112rem; + } +} +@media only screen and (min-width: 480px) { + .flow-text { + font-size: 1.296rem; + } +} +@media only screen and (min-width: 120px) { + .flow-text { + line-height: 1.216rem; + } +} +@media only screen and (min-width: 510px) { + .flow-text { + font-size: 1.32rem; + } +} +@media only screen and (min-width: 150px) { + .flow-text { + line-height: 1.32rem; + } +} +@media only screen and (min-width: 540px) { + .flow-text { + font-size: 1.344rem; + } +} +@media only screen and (min-width: 180px) { + .flow-text { + line-height: 1.424rem; + } +} +@media only screen and (min-width: 570px) { + .flow-text { + font-size: 1.368rem; + } +} +@media only screen and (min-width: 210px) { + .flow-text { + line-height: 1.528rem; + } +} +@media only screen and (min-width: 600px) { + .flow-text { + font-size: 1.392rem; + } +} +@media only screen and (min-width: 240px) { + .flow-text { + line-height: 1.632rem; + } +} +@media only screen and (min-width: 630px) { + .flow-text { + font-size: 1.416rem; + } +} +@media only screen and (min-width: 270px) { + .flow-text { + line-height: 1.736rem; + } +} +@media only screen and (min-width: 660px) { + .flow-text { + font-size: 1.44rem; + } +} +@media only screen and (min-width: 300px) { + .flow-text { + line-height: 1.84rem; + } +} +@media only screen and (min-width: 690px) { + .flow-text { + font-size: 1.464rem; + } +} +@media only screen and (min-width: 330px) { + .flow-text { + line-height: 1.944rem; + } +} +@media only screen and (min-width: 720px) { + .flow-text { + font-size: 1.488rem; + } +} +@media only screen and (min-width: 360px) { + .flow-text { + line-height: 2.048rem; + } +} +@media only screen and (min-width: 750px) { + .flow-text { + font-size: 1.512rem; + } +} +@media only screen and (min-width: 390px) { + .flow-text { + line-height: 2.152rem; + } +} +@media only screen and (min-width: 780px) { + .flow-text { + font-size: 1.536rem; + } +} +@media only screen and (min-width: 420px) { + .flow-text { + line-height: 2.256rem; + } +} +@media only screen and (min-width: 810px) { + .flow-text { + font-size: 1.56rem; + } +} +@media only screen and (min-width: 450px) { + .flow-text { + line-height: 2.36rem; + } +} +@media only screen and (min-width: 840px) { + .flow-text { + font-size: 1.584rem; + } +} +@media only screen and (min-width: 480px) { + .flow-text { + line-height: 2.464rem; + } +} +@media only screen and (min-width: 870px) { + .flow-text { + font-size: 1.608rem; + } +} +@media only screen and (min-width: 510px) { + .flow-text { + line-height: 2.568rem; + } +} +@media only screen and (min-width: 900px) { + .flow-text { + font-size: 1.632rem; + } +} +@media only screen and (min-width: 540px) { + .flow-text { + line-height: 2.672rem; + } +} +@media only screen and (min-width: 930px) { + .flow-text { + font-size: 1.656rem; + } +} +@media only screen and (min-width: 570px) { + .flow-text { + line-height: 2.776rem; + } +} +@media only screen and (min-width: 960px) { + .flow-text { + font-size: 1.68rem; + } +} +@media only screen and (min-width: 600px) { + .flow-text { + line-height: 2.88rem; + } +} + +.card-panel { + padding: 1rem; + margin: 8px 0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + background-clip: padding-box; +} + +.card { + margin-top: 10px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + background-clip: padding-box; +} +.card span.card-title { + color: #fff; + font-size: 24px; + font-weight: 300; +} +.card.small { + height: 300px; + position: relative; +} +.card.small .card-image { + overflow: hidden; + height: 150px; +} +.card.small .card-content { + overflow: hidden; + height: 150px; +} +.card.small .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; +} +.card .card-image { + position: relative; + overflow: hidden; +} +.card .card-image img { + -webkit-border-radius: 2px 2px 0 0; + -moz-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; + background-clip: padding-box; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; + z-index: -1; +} +.card .card-image span.card-title { + position: absolute; + bottom: 0; + left: 0; + padding: 16px; +} +.card .card-content { + padding: 16px; + -webkit-border-radius: 0 0 2px 2px; + -moz-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; + background-clip: padding-box; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.card .card-content p { + margin: 0; + color: inherit; +} +.card .card-content span.card-title { + line-height: 48px; +} +.card .card-action { + border-top: 1px solid rgba(160, 160, 160, 0.2); + padding: 16px; +} +.card .card-action a { + color: #ffab40; + margin-right: 16px; + -webkit-transition: color 0.3s ease; + -moz-transition: color 0.3s ease; + -o-transition: color 0.3s ease; + -ms-transition: color 0.3s ease; + transition: color 0.3s ease; + text-transform: uppercase; +} +.card .card-action a:hover { + color: #ffd8a6; +} + +#toast-container { + display: block; + position: fixed; +} +@media only screen and (max-width: 600px) { + #toast-container { + min-width: 100%; + bottom: 0%; + } +} +@media only screen and (min-width: 600px) and (max-width: 992px) { + #toast-container { + min-width: 30%; + left: 5%; + bottom: 7%; + } +} +@media only screen and (min-width: 992px) { + #toast-container { + min-width: 8%; + top: 10%; + right: 7%; + } +} + +.toast { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + background-clip: padding-box; + top: 0px; + width: auto; + clear: both; + margin-top: 10px; + position: relative; + max-width: 100%; + height: 48px; + line-height: 48px; + background-color: #323232; + padding: 0px 24px; + display: block; +} +.toast.rounded { + border-radius: 24px; +} +@media only screen and (max-width: 600px) { + .toast { + width: 100%; + } +} +@media only screen and (min-width: 600px) and (max-width: 992px) { + .toast { + float: left; + } +} +@media only screen and (min-width: 992px) { + .toast { + float: right; + } +} +.toast span { + padding: 0px; + font-size: 1.1rem; + font-weight: 300; + color: #FFF; + text-align: center; +} + +ul.tabs { + position: relative; + height: 48px; + background-color: #FFF; + margin: 0 auto; + width: 100%; + white-space: nowrap; +} +ul.tabs li.tab { + display: block; + float: left; + text-align: center; + background-color: #fff; + line-height: 48px; + height: 48px; + padding: 0 20px; + margin: 0; + text-transform: uppercase; + letter-spacing: .8px; + width: 15%; +} +@media only screen and (min-width: 992px) { + ul.tabs li.tab { + max-width: 25%; + } +} +ul.tabs li.tab a { + color: #ee6e73; + display: block; + width: 100%; + height: 100%; + -webkit-transition: color 0.28s ease; + -moz-transition: color 0.28s ease; + -o-transition: color 0.28s ease; + -ms-transition: color 0.28s ease; + transition: color 0.28s ease; +} +ul.tabs li.tab a:hover { + color: #f8c1c3; +} +ul.tabs .indicator { + position: absolute; + bottom: 0; + height: 2px; + background-color: #ee6e73; +} + +ul.tabs li.tab { + padding: 0; +} + +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 1000; + background-color: transparent; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + background-clip: padding-box; + color: #fff; + height: 1rem; + line-height: 1rem; + max-width: 200px; + opacity: 0; + display: none; + position: absolute; + text-align: center; + overflow: hidden; + left: 0; + top: 0; +} + +.backdrop { + position: absolute; + opacity: 0; + display: none; + height: 7px; + width: 14px; + -webkit-border-radius: 0 0 14px 14px; + -moz-border-radius: 0 0 14px 14px; + border-radius: 0 0 14px 14px; + background-clip: padding-box; + background-color: #323232; + z-index: -1; + -webkit-transform-origin: 50% 10%; + -moz-transform-origin: 50% 10%; + -ms-transform-origin: 50% 10%; + -o-transform-origin: 50% 10%; + transform-origin: 50% 10%; +} + +.btn, .btn-large, .btn-flat { + display: inline-block; + height: 36px; + margin-bottom: 15px; + padding: 0 2rem; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + background-clip: padding-box; + line-height: 36px; + text-transform: uppercase; + border: none; +} + +.btn.disabled, .disabled.btn-large, .btn-floating.disabled, .btn-large.disabled, .btn:disabled, .btn-large:disabled, .btn-large:disabled, .btn-floating:disabled { + background-color: #DFDFDF; + box-shadow: none; + color: #9F9F9F; +} +.btn.disabled:hover, .disabled.btn-large:hover, .btn-floating.disabled:hover, .btn-large.disabled:hover, .btn:disabled:hover, .btn-large:disabled:hover, .btn-large:disabled:hover, .btn-floating:disabled:hover { + background-color: #DFDFDF; + color: #9F9F9F; +} + +.btn i, .btn-large i, .btn-floating i, .btn-large i, .btn-flat i { + font-size: 1.3rem; + line-height: inherit; +} + +.btn, .btn-large { + text-decoration: none; + color: #FFFFFF; + background-color: #2196F3; + text-align: center; + letter-spacing: .8px; + -webkit-transition: 0.2s ease-out; + -moz-transition: 0.2s ease-out; + -o-transition: 0.2s ease-out; + -ms-transition: 0.2s ease-out; + transition: 0.2s ease-out; + cursor: pointer; +} +.btn:hover, .btn-large:hover { + background-color: #39a1f4; +} + +.btn-floating { + display: inline-block; + position: relative; + z-index: 1; + width: 40px; + height: 40px; + line-height: 40px; + padding: 0; + background-color: #2196F3; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + border-radius: 50%; + background-clip: padding-box; + -webkit-transition: 0.3s; + -moz-transition: 0.3s; + -o-transition: 0.3s; + -ms-transition: 0.3s; + transition: 0.3s; + cursor: pointer; +} +.btn-floating i { + width: inherit; + display: inline-block; + text-align: center; + color: #fff; + font-size: 1.6rem; + line-height: 40px; +} + +.btn-flat { + box-shadow: none; + background-color: transparent; + color: #343434; + cursor: pointer; +} +.btn-flat.disabled { + color: #b3b3b3; +} + +.btn-large { + height: 54px; + line-height: 56px; +} +.btn-large i { + font-size: 1.6rem; +} + +.dropdown-content { + display: none; + position: absolute; + background-color: #FFFFFF; + margin: 0px; + min-width: 100px; + z-index: 1000; +} +.dropdown-content li { + cursor: pointer; + font-size: 1.2rem; + color: #212121; + padding: 1rem 1rem; +} +@media only screen and (min-width: 1200px) { + .dropdown-content li:hover { + background-color: rgba(0, 0, 0, 0.07); + } +} + +/*! + * Waves v0.5.3 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + vertical-align: bottom; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; +} +.waves-effect .waves-ripple { + position: absolute; + pointer-events: none; + border-radius: 50%; + width: 20px; + height: 20px; + opacity: 0; + background-color: rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); + -moz-transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); + -o-transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); + -ms-transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); + transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); +} +.waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.35); +} +.waves-effect.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, 0.65); +} +.waves-effect.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, 0.65); +} +.waves-effect.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, 0.65); +} +.waves-effect.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.65); +} +.waves-effect.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.65); +} +.waves-effect.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.65); +} + +.waves-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + transition: none !important; +} + +.waves-button, +.waves-icon { + -webkit-transform: translateZ(0); + -webkit-image-mask: -webkit-radial-gradient(circle, transparent, transparent); +} + +.waves-button, +.waves-button:hover, +.waves-button:visited, +.waves-button:link, +.waves-button-input { + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: none; + font-size: 14px; + text-align: center; + text-decoration: none; + z-index: 1; +} + +.waves-button-input { + margin: 0; + padding: 10px 15px; +} + +.waves-input-wrapper { + border-radius: 2px; + vertical-align: bottom; +} +.waves-input-wrapper.waves-button { + padding: 0; +} +.waves-input-wrapper .waves-button-input { + position: absolute; + top: 0; + left: 0; + z-index: 1; +} + +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; +} + +.waves-float { + -webkit-mask-image: none; + -webkit-box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); + -moz-box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); + box-shadow: 0px 1px 1.5px 1px rgba(0, 0, 0, 0.12); +} +.waves-float:active { + -webkit-box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); + box-shadow: 0px 8px 20px 1px rgba(0, 0, 0, 0.3); +} + +.waves-block { + display: block; +} + +.modal { + display: none; + position: fixed; + background-color: #eee; + padding: 24px; + max-height: 70%; + max-width: 55%; + left: 0; + right: 0; + margin: auto; + overflow-y: auto; + z-index: 1000; + -webkit-border-radius: "2px"; + -moz-border-radius: "2px"; + border-radius: "2px"; + background-clip: padding-box; + -webkit-transform: translate(0); + -moz-transform: translate(0); + -ms-transform: translate(0); + -o-transform: translate(0); + transform: translate(0); + will-change: top, opacity; +} +@media only screen and (max-width: 992px) { + .modal { + max-width: 80%; + } +} +.modal h1, .modal h2, .modal h3, .modal h4 { + margin-top: 0; +} + +#lean-overlay { + position: fixed; + z-index: 999; + top: 0; + left: 0; + bottom: 0; + right: 0; + height: 115%; + width: 100%; + background: #000; + display: none; + will-change: opacity; +} + +.modal-action { + margin-top: 10px; + margin-bottom: 0px; +} + +ul.collapsible { + border-top: 1px solid #eee; +} + +.collapsible-header { + display: block; + cursor: pointer; + height: 3rem; + line-height: 3rem; + padding: 0 1rem; + background-color: #fff; + border-bottom: 1px solid #ddd; +} +.collapsible-header i { + width: 2rem; + font-size: 1.6rem; + line-height: 3rem; + display: block; + float: left; + text-align: center; + margin-right: 15px; +} + +.collapsible-body { + overflow: hidden; + display: none; + border-bottom: 1px solid #ddd; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.collapsible-body p { + margin: 0; + padding: 2rem; +} + +.materialboxed { + cursor: zoom-in; + position: relative; +} +.materialboxed:hover { + will-change: left, top; +} + +.materialboxed.active { + cursor: zoom-out; +} + +#materialbox-overlay { + position: fixed; + top: 0px; + left: 0px; + background-color: #292929; + z-index: 999; +} + +label { + font-size: 0.8rem; + color: #bdbdbd; +} + +/*************************** + Text Inputs + Textarea +****************************/ +.input-field { + position: relative; +} +.input-field label { + color: #bdbdbd; + position: absolute; + top: .8rem; + left: .5rem; + font-size: 1rem; + -webkit-transition: 0.2s ease-out; + -moz-transition: 0.2s ease-out; + -o-transition: 0.2s ease-out; + -ms-transition: 0.2s ease-out; + transition: 0.2s ease-out; +} +.input-field label.active { + font-size: 0.8rem; + -webkit-transform: translateY(-130%); + -moz-transform: translateY(-130%); + -ms-transform: translateY(-130%); + -o-transform: translateY(-130%); + transform: translateY(-130%); +} +.input-field input[type=text]:focus + label, +.input-field input[type=password]:focus + label, +.input-field input[type=email]:focus + label, +.input-field input[type=date]:focus + label, +.input-field textarea:focus + label { + color: #03a9f4; +} +.input-field input[type=text]:valid, +.input-field input[type=password]:valid, +.input-field input[type=email]:valid, +.input-field input[type=date]:valid, +.input-field textarea:valid { + border-bottom: 1px solid #4CAF50; + -webkit-box-shadow: 0 1px 0 0 #4CAF50; + -moz-box-shadow: 0 1px 0 0 #4CAF50; + box-shadow: 0 1px 0 0 #4CAF50; +} + +input[type=text], +input[type=password], +input[type=email], +input[type=date], +textarea { + background-color: transparent; + border: none; + border-bottom: 1px solid #bdbdbd; + outline: none; + height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-transition: 0.3s; + -moz-transition: 0.3s; + -o-transition: 0.3s; + -ms-transition: 0.3s; + transition: 0.3s; +} + +input[type=text]:focus, +input[type=password]:focus, +input[type=email]:focus, +input[type=date]:focus, +textarea:focus { + border-bottom: 1px solid #03a9f4; + -webkit-box-shadow: 0 1px 0 0 #03a9f4; + -moz-box-shadow: 0 1px 0 0 #03a9f4; + box-shadow: 0 1px 0 0 #03a9f4; +} + +textarea { + overflow-y: hidden; + /* prevents scroll bar flash */ + padding: 1.6rem 0; + /* prevents text jump on Enter keypress */ + resize: none; +} + +.hiddendiv { + display: none; + white-space: pre-wrap; + word-wrap: break-word; + overflow-wrap: break-word; + /* future version of deprecated 'word-wrap' */ + padding-top: 1.2rem; + /* prevents text jump on Enter keypress */ +} + +/*************** + Radio Buttons +***************/ +/* Remove default checkbox */ +[type="radio"]:not(:checked), +[type="radio"]:checked { + position: absolute; + left: -9999px; +} + +[type="radio"]:not(:checked) + label, +[type="radio"]:checked + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -khtml-user-select: none; + /* webkit (konqueror) browsers */ + -ms-user-select: none; + /* IE10+ */ +} + +[type="radio"] + label:before, +[type="radio"] + label:after { + content: ''; + position: absolute; + left: 0px; + top: 0px; + margin: 4px; + width: 12px; + height: 12px; + z-index: 0; + -webkit-transition: 0.28s ease; + -moz-transition: 0.28s ease; + -o-transition: 0.28s ease; + -ms-transition: 0.28s ease; + transition: 0.28s ease; +} + +/* Unchecked styles */ +[type="radio"]:not(:checked) + label:before { + border-radius: 50%; + border: 2px solid #5a5a5a; +} + +[type="radio"]:not(:checked) + label:after { + border-radius: 50%; + border: 2px solid #5a5a5a; + z-index: -1; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); +} + +/* Checked styles */ +[type="radio"]:checked + label:before { + border-radius: 50%; + border: 2px solid transparent; +} + +[type="radio"]:checked + label:after { + border-radius: 50%; + border: 2px solid #0f9d58; + background-color: #0f9d58; + z-index: 0; + -webkit-transform: scale(1.02); + -moz-transform: scale(1.02); + -ms-transform: scale(1.02); + -o-transform: scale(1.02); + transform: scale(1.02); +} + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + label:before, +[type="radio"]:disabled:checked + label:before { + background-color: #7c7c7c; + border-color: #7c7c7c; +} + +[type="radio"]:disabled + label { + color: #7c7c7c; +} + +[type="radio"]:disabled:not(:checked) + label:hover:before { + border-color: #7c7c7c; +} + +/*************** + Checkboxes +***************/ +/* CUSTOM CSS CHECKBOXES */ +form p { + margin-bottom: 10px; + text-align: left; +} + +form p:last-child { + margin-bottom: 0px; +} + +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), +[type="checkbox"]:checked { + position: absolute; + left: -9999px; +} + +[type="checkbox"]:not(:checked) + label, +[type="checkbox"]:checked + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -khtml-user-select: none; + /* webkit (konqueror) browsers */ + -ms-user-select: none; + /* IE10+ */ +} + +/* checkbox aspect */ +[type="checkbox"] + label:before { + content: ''; + position: absolute; + margin-top: 2px; + left: 0; + z-index: 0; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + background-clip: padding-box; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + -ms-transition: 0.2s; + transition: 0.2s; +} + +/* Unchecked styles */ +[type="checkbox"]:not(:checked) + label:before { + top: 0px; + width: 14px; + height: 14px; + border: 2px solid #5a5a5a; +} + +/* Checked styles */ +[type="checkbox"]:checked + label:before { + left: -3px; + top: -4px; + width: 8px; + height: 18px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #0f9d58; + border-bottom: 2px solid #0f9d58; + -webkit-transform: rotateZ(40deg); + -moz-transform: rotateZ(40deg); + -ms-transform: rotateZ(40deg); + -o-transform: rotateZ(40deg); + transform: rotateZ(40deg); + -webkit-backface-visibility: hidden; + -webkit-transform-origin: 20% 40%; + transform-origin: 100% 100%; +} + +/* disabled checkbox */ +[type="checkbox"]:disabled:not(:checked) + label:before, +[type="checkbox"]:disabled:checked + label:before { + top: 0; + left: 0; + box-shadow: none; + background-color: #7c7c7c; + width: 14px; + height: 14px; + border: 2px solid #7c7c7c; + -webkit-transform: rotateZ(0deg); + -moz-transform: rotateZ(0deg); + -ms-transform: rotateZ(0deg); + -o-transform: rotateZ(0deg); + transform: rotateZ(0deg); +} + +[type="checkbox"]:disabled + label { + color: #7c7c7c; +} + +[type="checkbox"]:disabled:not(:checked) + label:hover:before { + border-color: #7c7c7c; +} + +/*************** + Select Field +***************/ +.select-wrapper span.select-dropdown { + position: relative; + cursor: pointer; + color: #444; + background-color: transparent; + border: none; + border-bottom: 1px solid #bdbdbd; + outline: none; + height: 3rem; + line-height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + display: block; + position: relative; +} +.select-wrapper span.select-dropdown:after { + position: absolute; + right: 0; + font-size: 23px; +} + +select { + display: none; +} + +select.disabled { + display: block; +} + +/*************** + Range +***************/ +.range-field { + position: relative; +} + +input[type=range], input[type=range] + .thumb { + cursor: pointer; +} + +input[type=range] { + position: relative; + background-color: transparent; + border: none; + outline: none; + width: 100%; + margin: 15px 0px; + padding: 0; +} + +input[type=range] + .thumb { + position: absolute; + border: none; + height: 0; + width: 0; + border-radius: 50%; + background-color: #0f9d58; + top: 10px; + margin-left: -6px; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +input[type=range] + .thumb .value { + display: block; + width: 30px; + text-align: center; + color: #0f9d58; + font-size: 0px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +input[type=range] + .thumb.active { + border-radius: 50% 50% 50% 0; +} +input[type=range] + .thumb.active .value { + color: #fff; + margin-left: -1px; + margin-top: 8px; + font-size: 10px; +} + +input[type=range]:focus { + outline: none; +} + +input[type=range] { + -webkit-appearance: none; +} + +input[type=range]::-webkit-slider-runnable-track { + height: 3px; + background: #c2c0c2; + border: none; +} + +input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background-color: #0f9d58; + transform-origin: 50% 50%; + margin: -5px 0 0 0; + -webkit-transition: 0.3s; + -moz-transition: 0.3s; + -o-transition: 0.3s; + -ms-transition: 0.3s; + transition: 0.3s; +} + +.range-field.active input[type=range]::-webkit-slider-thumb { + height: 0; + width: 0; +} + +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ccc; +} + +input[type=range] { + /* fix for FF unable to apply focus style bug */ + border: 1px solid white; + /*required for proper track sizing in FF*/ +} + +input[type=range]::-moz-range-track { + height: 3px; + background: #ddd; + border: none; +} + +input[type=range]::-moz-range-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #0f9d58; + margin-top: -5px; +} + +/*hide the outline behind the border*/ +input[type=range]:-moz-focusring { + outline: 1px solid white; + outline-offset: -1px; +} + +input[type=range]:focus::-moz-range-track { + background: #ccc; +} + +input[type=range]::-ms-track { + height: 3px; + /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */ + background: transparent; + /*leave room for the larger thumb to overflow with a transparent border */ + border-color: transparent; + border-width: 6px 0; + /*remove default tick marks*/ + color: transparent; +} + +input[type=range]::-ms-fill-lower { + background: #777; +} + +input[type=range]::-ms-fill-upper { + background: #ddd; +} + +input[type=range]::-ms-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #0f9d58; +} + +input[type=range]:focus::-ms-fill-lower { + background: #888; +} + +input[type=range]:focus::-ms-fill-upper { + background: #ccc; +} + +/*************************** + Text Inputs + Textarea +****************************/ +select { + background-color: #fffafa; + width: 100%; + padding: 5px; + border: 1px solid #f2f2f2; + border-radius: 2px; + height: 3rem; +} + +/*************** + Nav List +***************/ +ul.table-of-contents.fixed { + position: fixed; +} +ul.table-of-contents li { + padding: 2px 0; +} +ul.table-of-contents a { + display: inline-block; + font-weight: 300; + color: #757575; + padding-left: 20px; + height: 1.5rem; + line-height: 1.5rem; + letter-spacing: .4; + display: inline-block; +} +ul.table-of-contents a:hover { + color: #a8a8a8; + padding-left: 19px; + border-left: 1px solid #ea4a4f; +} +ul.table-of-contents a.active { + font-weight: 500; + padding-left: 18px; + border-left: 2px solid #ea4a4f; +} + +@media only screen and (max-width: 992px) { + ul.side-nav { + position: fixed; + width: 240px; + left: -240px; + top: 0; + height: 120%; + background-color: #FFF; + z-index: 1000; + -webkit-box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + will-change: left; + } + ul.side-nav li { + float: none; + padding: 0 15px; + } + ul.side-nav li:hover, ul.side-nav li.active { + background-color: #ddd; + } + ul.side-nav a { + color: #444; + } + + #front-page-nav ul.side-nav li { + float: none; + padding: 0 15px; + } + #front-page-nav ul.side-nav li:hover { + background-color: #ddd; + } + #front-page-nav ul.side-nav li .active { + background-color: transparent; + } + #front-page-nav ul.side-nav a { + color: #444; + } +} +#sidenav-overlay { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + background-color: rgba(0, 0, 0, 0.5); + z-index: 999; + will-change: opacity; +} + +/* + @license + Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + Code distributed by Google as part of the polymer project is also + subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ +/**************************/ +/* STYLES FOR THE SPINNER */ +/**************************/ +/* + * Constants: + * STROKEWIDTH = 3px + * ARCSIZE = 270 degrees (amount of circle the arc takes up) + * ARCTIME = 1333ms (time it takes to expand and contract arc) + * ARCSTARTROT = 216 degrees (how much the start location of the arc + * should rotate each time, 216 gives us a + * 5 pointed star shape (it's 360/5 * 3). + * For a 7 pointed star, we might do + * 360/7 * 3 = 154.286) + * CONTAINERWIDTH = 28px + * SHRINK_TIME = 400ms + */ +.preloader-wrapper { + display: inline-block; + position: relative; + width: 48px; + height: 48px; +} +.preloader-wrapper.small { + width: 36px; + height: 36px; +} +.preloader-wrapper.big { + width: 64px; + height: 64px; +} +.preloader-wrapper.active { + /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ + -webkit-animation: container-rotate 1568ms linear infinite; + animation: container-rotate 1568ms linear infinite; +} + +@-webkit-keyframes container-rotate { + to { + -webkit-transform: rotate(360deg); + } +} +@keyframes container-rotate { + to { + transform: rotate(360deg); + } +} +.spinner-layer { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; +} + +.spinner-blue { + border-color: #4285f4; +} + +.spinner-red { + border-color: #db4437; +} + +.spinner-yellow { + border-color: #f4b400; +} + +.spinner-green { + border-color: #0f9d58; +} + +/** + * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): + * + * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't + * guarantee that the animation will start _exactly_ after that value. So we avoid using + * animation-delay and instead set custom keyframes for each color (as redundant as it + * seems). + * + * We write out each animation in full (instead of separating animation-name, + * animation-duration, etc.) because under the polyfill, Safari does not recognize those + * specific properties properly, treats them as -webkit-animation, and overrides the + * other animation rules. See https://github.com/Polymer/platform/issues/53. + */ +.active .spinner-layer.spinner-blue { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-red { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-yellow { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-green { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +@-webkit-keyframes fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); + } + /* 0.5 * ARCSIZE */ + 25% { + -webkit-transform: rotate(270deg); + } + /* 1 * ARCSIZE */ + 37.5% { + -webkit-transform: rotate(405deg); + } + /* 1.5 * ARCSIZE */ + 50% { + -webkit-transform: rotate(540deg); + } + /* 2 * ARCSIZE */ + 62.5% { + -webkit-transform: rotate(675deg); + } + /* 2.5 * ARCSIZE */ + 75% { + -webkit-transform: rotate(810deg); + } + /* 3 * ARCSIZE */ + 87.5% { + -webkit-transform: rotate(945deg); + } + /* 3.5 * ARCSIZE */ + to { + -webkit-transform: rotate(1080deg); + } + /* 4 * ARCSIZE */ +} +@keyframes fill-unfill-rotate { + 12.5% { + transform: rotate(135deg); + } + /* 0.5 * ARCSIZE */ + 25% { + transform: rotate(270deg); + } + /* 1 * ARCSIZE */ + 37.5% { + transform: rotate(405deg); + } + /* 1.5 * ARCSIZE */ + 50% { + transform: rotate(540deg); + } + /* 2 * ARCSIZE */ + 62.5% { + transform: rotate(675deg); + } + /* 2.5 * ARCSIZE */ + 75% { + transform: rotate(810deg); + } + /* 3 * ARCSIZE */ + 87.5% { + transform: rotate(945deg); + } + /* 3.5 * ARCSIZE */ + to { + transform: rotate(1080deg); + } + /* 4 * ARCSIZE */ +} +@-webkit-keyframes blue-fade-in-out { + from { + opacity: 1; + } + 25% { + opacity: 1; + } + 26% { + opacity: 0; + } + 89% { + opacity: 0; + } + 90% { + opacity: 1; + } + 100% { + opacity: 1; + } +} +@keyframes blue-fade-in-out { + from { + opacity: 1; + } + 25% { + opacity: 1; + } + 26% { + opacity: 0; + } + 89% { + opacity: 0; + } + 90% { + opacity: 1; + } + 100% { + opacity: 1; + } +} +@-webkit-keyframes red-fade-in-out { + from { + opacity: 0; + } + 15% { + opacity: 0; + } + 25% { + opacity: 1; + } + 50% { + opacity: 1; + } + 51% { + opacity: 0; + } +} +@keyframes red-fade-in-out { + from { + opacity: 0; + } + 15% { + opacity: 0; + } + 25% { + opacity: 1; + } + 50% { + opacity: 1; + } + 51% { + opacity: 0; + } +} +@-webkit-keyframes yellow-fade-in-out { + from { + opacity: 0; + } + 40% { + opacity: 0; + } + 50% { + opacity: 1; + } + 75% { + opacity: 1; + } + 76% { + opacity: 0; + } +} +@keyframes yellow-fade-in-out { + from { + opacity: 0; + } + 40% { + opacity: 0; + } + 50% { + opacity: 1; + } + 75% { + opacity: 1; + } + 76% { + opacity: 0; + } +} +@-webkit-keyframes green-fade-in-out { + from { + opacity: 0; + } + 65% { + opacity: 0; + } + 75% { + opacity: 1; + } + 90% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@keyframes green-fade-in-out { + from { + opacity: 0; + } + 65% { + opacity: 0; + } + 75% { + opacity: 1; + } + 90% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +/** + * Patch the gap that appear between the two adjacent div.circle-clipper while the + * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). + */ +.gap-patch { + position: absolute; + box-sizing: border-box; + top: 0; + left: 45%; + width: 10%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +.gap-patch .circle { + width: 1000%; + left: -450%; +} + +.circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; +} +.circle-clipper .circle { + width: 200%; + box-sizing: border-box; + height: 100%; + border-width: 3px; + /* STROKEWIDTH */ + 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; +} +.circle-clipper.left .circle { + left: 0; + border-right-color: transparent !important; + -webkit-transform: rotate(129deg); + transform: rotate(129deg); +} +.circle-clipper.right .circle { + left: -100%; + border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); + transform: rotate(-129deg); +} + +.active .circle-clipper.left .circle { + /* duration: ARCTIME */ + -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +.active .circle-clipper.right .circle { + /* duration: ARCTIME */ + -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; +} + +@-webkit-keyframes left-spin { + from { + -webkit-transform: rotate(130deg); + } + 50% { + -webkit-transform: rotate(-5deg); + } + to { + -webkit-transform: rotate(130deg); + } +} +@keyframes left-spin { + from { + transform: rotate(130deg); + } + 50% { + transform: rotate(-5deg); + } + to { + transform: rotate(130deg); + } +} +@-webkit-keyframes right-spin { + from { + -webkit-transform: rotate(-130deg); + } + 50% { + -webkit-transform: rotate(5deg); + } + to { + -webkit-transform: rotate(-130deg); + } +} +@keyframes right-spin { + from { + transform: rotate(-130deg); + } + 50% { + transform: rotate(5deg); + } + to { + transform: rotate(-130deg); + } +} +#spinnerContainer.cooldown { + /* duration: SHRINK_TIME */ + -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); + animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); +} + +@-webkit-keyframes fade-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +@keyframes fade-out { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +/* ========================================================================== + $BASE-PICKER + ========================================================================== */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +.picker { + font-size: 16px; + text-align: left; + line-height: 1.2; + color: #000000; + position: absolute; + z-index: 10000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/** + * The picker input element. + */ +.picker__input { + cursor: default; +} + +/** + * When the picker is opened, the input element is "activated". + */ +.picker__input.picker__input--active { + border-color: #0089ec; +} + +/** + * The holder is the only "scrollable" top-level container element. + */ +.picker__holder { + width: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +/** + * Make the holder and frame fullscreen. + */ +.picker__holder, +.picker__frame { + bottom: 0; + left: 0; + right: 0; + top: 100%; +} + +/** + * The holder should overlay the entire screen. + */ +.picker__holder { + position: fixed; + -webkit-transition: background 0.15s ease-out, top 0s 0.15s; + -moz-transition: background 0.15s ease-out, top 0s 0.15s; + transition: background 0.15s ease-out, top 0s 0.15s; + -webkit-backface-visibility: hidden; +} + +/** + * The frame that bounds the box contents of the picker. + */ +.picker__frame { + position: absolute; + margin: 0 auto; + min-width: 256px; + max-width: 300px; + max-height: 350px; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + -webkit-transition: all 0.15s ease-out; + -moz-transition: all 0.15s ease-out; + transition: all 0.15s ease-out; +} + +@media (min-height: 28.875em) { + .picker__frame { + overflow: visible; + top: auto; + bottom: -100%; + max-height: 80%; + } +} +@media (min-height: 40.125em) { + .picker__frame { + margin-bottom: 7.5%; + } +} +/** + * The wrapper sets the stage to vertically align the box contents. + */ +.picker__wrap { + display: table; + width: 100%; + height: 100%; +} + +@media (min-height: 28.875em) { + .picker__wrap { + display: block; + } +} +/** + * The box contains all the picker contents. + */ +.picker__box { + background: #ffffff; + display: table-cell; + vertical-align: middle; +} + +@media (min-height: 28.875em) { + .picker__box { + display: block; + border: 1px solid #777777; + border-top-color: #898989; + border-bottom-width: 0; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; + -webkit-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + -moz-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + } +} +/** + * When the picker opens... + */ +.picker--opened .picker__holder { + top: 0; + background: transparent; + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; + zoom: 1; + background: rgba(0, 0, 0, 0.32); + -webkit-transition: background 0.15s ease-out; + -moz-transition: background 0.15s ease-out; + transition: background 0.15s ease-out; +} + +.picker--opened .picker__frame { + top: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; +} + +@media (min-height: 35.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: 20% auto; + } +} +/** + * For `large` screens, transform into an inline picker. + */ +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__input.picker__input--active { + border-color: #E3F2FD; +} + +.picker__frame { + margin: 0 auto; + max-width: 325px; +} + +@media (min-height: 38.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: auto; + } +} +/* ========================================================================== + $BASE-DATE-PICKER + ========================================================================== */ +/** + * The picker box. + */ +.picker__box { + padding: 0 1em; +} + +/** + * The header containing the month and year stuff. + */ +.picker__header { + text-align: center; + position: relative; + margin-top: .75em; +} + +/** + * The month and year labels. + */ +.picker__month, +.picker__year { + display: inline-block; + margin-left: .25em; + margin-right: .25em; +} + +/** + * The month and year selectors. + */ +.picker__select--month, +.picker__select--year { + height: 2em; + padding: .5em; + margin-left: .25em; + margin-right: .25em; +} + +@media (min-width: 24.5em) { + .picker__select--month, + .picker__select--year { + margin-top: -0.5em; + } +} +.picker__select--month { + width: 35%; +} + +.picker__select--year { + width: 22.5%; +} + +.picker__select--month:focus, +.picker__select--year:focus { + border-color: #0089ec; +} + +/** + * The month navigation buttons. + */ +.picker__nav--prev, +.picker__nav--next { + position: absolute; + padding: .5em 1.25em; + width: 1em; + height: 1em; + box-sizing: content-box; + top: -0.25em; +} + +.picker__nav--prev { + left: -1em; + padding-right: 1.25em; +} + +.picker__nav--next { + right: -1em; + padding-left: 1.25em; +} + +.picker__nav--prev:hover, +.picker__nav--next:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; +} + +.picker__nav--disabled, +.picker__nav--disabled:hover, +.picker__nav--disabled:before, +.picker__nav--disabled:before:hover { + cursor: default; + background: none; + border-right-color: #f5f5f5; + border-left-color: #f5f5f5; +} + +/** + * The calendar table of dates + */ +.picker__table { + text-align: center; + border-collapse: collapse; + border-spacing: 0; + table-layout: fixed; + font-size: 1rem; + width: 100%; + margin-top: .75em; + margin-bottom: .5em; +} + +.picker__table th, .picker__table td { + text-align: center; +} + +.picker__table td { + margin: 0; + padding: 0; +} + +/** + * The weekday labels + */ +.picker__weekday { + width: 14.285714286%; + font-size: .75em; + padding-bottom: .25em; + color: #999999; + font-weight: 500; + /* Increase the spacing a tad */ +} + +@media (min-height: 33.875em) { + .picker__weekday { + padding-bottom: .5em; + } +} +/** + * The days on the calendar + */ +.picker__day--today { + position: relative; + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; +} + +.picker__day--disabled:before { + border-top-color: #aaaaaa; +} + +.picker__day--infocus:hover { + cursor: pointer; + color: #000; + font-weight: 500; +} + +.picker__day--outfocus { + color: #fff; +} + +.picker__day--outfocus:hover { + cursor: pointer; + color: #dddddd; + font-weight: 500; +} + +.picker__day--highlighted:hover, +.picker--focused .picker__day--highlighted { + cursor: pointer; + color: #000000; +} + +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(0.75); + -moz-transform: scale(0.75); + -ms-transform: scale(0.75); + -o-transform: scale(0.75); + transform: scale(0.75); + background: #0089ec; + color: #ffffff; +} + +.picker__day--disabled, +.picker__day--disabled:hover, +.picker--focused .picker__day--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; +} + +.picker__day--highlighted.picker__day--disabled, +.picker__day--highlighted.picker__day--disabled:hover { + background: #bbbbbb; +} + +/** + * The footer containing the "today", "clear", and "close" buttons. + */ +.picker__footer { + text-align: center; +} + +.picker__button--today, +.picker__button--clear, +.picker__button--close { + border: 1px solid #ffffff; + background: #ffffff; + font-size: .8em; + padding: .66em 0; + font-weight: bold; + width: 33%; + display: inline-block; + vertical-align: bottom; +} + +.picker__button--today:hover, +.picker__button--clear:hover, +.picker__button--close:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-bottom-color: #b1dcfb; +} + +.picker__button--today:focus, +.picker__button--clear:focus, +.picker__button--close:focus { + background: #b1dcfb; + border-color: #0089ec; + outline: none; +} + +.picker__button--today:before, +.picker__button--clear:before, +.picker__button--close:before { + position: relative; + display: inline-block; + height: 0; +} + +.picker__button--today:before, +.picker__button--clear:before { + content: " "; + margin-right: .45em; +} + +.picker__button--today:before { + top: -0.05em; + width: 0; + border-top: 0.66em solid #0059bc; + border-left: .66em solid transparent; +} + +.picker__button--clear:before { + top: -0.25em; + width: .66em; + border-top: 3px solid #ee2200; +} + +.picker__button--close:before { + content: "\D7"; + top: -0.1em; + vertical-align: top; + font-size: 1.1em; + margin-right: .35em; + color: #777777; +} + +.picker__button--today[disabled], +.picker__button--today[disabled]:hover { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; +} + +.picker__button--today[disabled]:before { + border-top-color: #aaaaaa; +} + +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__box { + border-radius: 2px; + overflow: hidden; +} + +.picker__date-display { + text-align: center; + background-color: #26a69a; + color: #fff; + padding-bottom: 15px; + font-weight: 300; +} + +.picker__weekday-display { + background-color: #00897b; + padding: 10px; + font-weight: 200; + letter-spacing: .5; + font-size: 1rem; + margin-bottom: 15px; +} + +.picker__month-display { + text-transform: uppercase; + font-size: 2rem; +} + +.picker__day-display { + font-size: 4.5rem; + font-weight: 400; +} + +.picker__year-display { + font-size: 1.8rem; + color: #80cbc4; +} + +.picker__box { + padding: 0; +} + +.picker__calendar-container { + padding: 0 1rem; +} +.picker__calendar-container thead { + border: none; +} + +.picker__table { + margin-top: 0; + margin-bottom: .5em; +} + +.picker__day--infocus { + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; +} + +.picker--focused .picker__day--highlighted { + color: #26a69a; +} + +.picker__weekday { + font-size: .9rem; +} + +.picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(0.9); + -moz-transform: scale(0.9); + -ms-transform: scale(0.9); + -o-transform: scale(0.9); + transform: scale(0.9); + background-color: #009688; + color: #ffffff; +} + +.picker__footer { + text-align: right; + padding: 5px 10px; +} + +.picker__close, .picker__today { + font-size: 1.1rem; + color: #26a69a; +} + +.picker__nav--prev:before, +.picker__nav--next:before { + content: " "; + border-top: .5em solid transparent; + border-bottom: .5em solid transparent; + border-right: 0.75em solid #676767; + width: 0; + height: 0; + display: block; + margin: 0 auto; +} + +.picker__nav--next:before { + border-right: 0; + border-left: 0.75em solid #676767; +} + +/* ========================================================================== + $BASE-TIME-PICKER + ========================================================================== */ +/** + * The list of times. + */ +.picker__list { + list-style: none; + padding: 0.75em 0 4.2em; + margin: 0; +} + +/** + * The times on the clock. + */ +.picker__list-item { + border-bottom: 1px solid #dddddd; + border-top: 1px solid #dddddd; + margin-bottom: -1px; + position: relative; + background: #ffffff; + padding: .75em 1.25em; +} + +@media (min-height: 46.75em) { + .picker__list-item { + padding: .5em 1em; + } +} +/* Hovered time */ +.picker__list-item:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-color: #0089ec; + z-index: 10; +} + +/* Highlighted and hovered/focused time */ +.picker__list-item--highlighted { + border-color: #0089ec; + z-index: 10; +} + +.picker__list-item--highlighted:hover, +.picker--focused .picker__list-item--highlighted { + cursor: pointer; + color: #000000; + background: #b1dcfb; +} + +/* Selected and hovered/focused time */ +.picker__list-item--selected, +.picker__list-item--selected:hover, +.picker--focused .picker__list-item--selected { + background: #0089ec; + color: #ffffff; + z-index: 10; +} + +/* Disabled time */ +.picker__list-item--disabled, +.picker__list-item--disabled:hover, +.picker--focused .picker__list-item--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; + border-color: #dddddd; + z-index: auto; +} + +/** + * The clear button + */ +.picker--time .picker__button--clear { + display: block; + width: 80%; + margin: 1em auto 0; + padding: 1em 1.25em; + background: none; + border: 0; + font-weight: 500; + font-size: .67em; + text-align: center; + text-transform: uppercase; + color: #666; +} + +.picker--time .picker__button--clear:hover, +.picker--time .picker__button--clear:focus { + color: #000000; + background: #b1dcfb; + background: #ee2200; + border-color: #ee2200; + cursor: pointer; + color: #ffffff; + outline: none; +} + +.picker--time .picker__button--clear:before { + top: -0.25em; + color: #666; + font-size: 1.25em; + font-weight: bold; +} + +.picker--time .picker__button--clear:hover:before, +.picker--time .picker__button--clear:focus:before { + color: #ffffff; +} + +/* ========================================================================== + $DEFAULT-TIME-PICKER + ========================================================================== */ +/** + * The frame the bounds the time picker. + */ +.picker--time .picker__frame { + min-width: 256px; + max-width: 320px; +} + +/** + * The picker box. + */ +.picker--time .picker__box { + font-size: 1em; + background: #f2f2f2; + padding: 0; +} + +@media (min-height: 40.125em) { + .picker--time .picker__box { + margin-bottom: 5em; + } +} diff --git a/dist/css/materialize.min.css b/dist/css/materialize.min.css new file mode 100644 index 0000000000..0184713697 --- /dev/null +++ b/dist/css/materialize.min.css @@ -0,0 +1,11 @@ +/*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.lighten-1{color:#ea454b !important}.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.darken-4{color:#8b1014 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.lighten-1{color:#EF5350 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.darken-1{background-color:#E53935 !important}.red-text.darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.accent-4{color:#D50000 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.lighten-1{color:#ec407a !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.accent-4{color:#c51162 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.lighten-1{color:#ab47bc !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#a0f !important}.purple-text.accent-4{color:#a0f !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.lighten-1{color:#7e57c2 !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.accent-4{color:#6200ea !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.lighten-1{color:#5c6bc0 !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.accent-4{color:#304ffe !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.lighten-4,.collection .active{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.lighten-2{color:#64B5F6 !important}.blue.lighten-1,.collection .active{background-color:#42A5F5 !important}.blue-text.lighten-1{color:#42A5F5 !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.accent-4{color:#2962FF !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.lighten-1{color:#29b6f6 !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.accent-4{color:#0091ea !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.lighten-1{color:#26c6da !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.accent-4{color:#00b8d4 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.lighten-1{color:#26a69a !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.darken-1{background-color:#00897b !important}.teal-text.darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.accent-4{color:#00bfa5 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.lighten-1{color:#66BB6A !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.darken-1{background-color:#43A047 !important}.green-text.darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.accent-4{color:#00C853 !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.lighten-1{color:#9ccc65 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.accent-4{color:#64dd17 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.lighten-1{color:#d4e157 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.accent-4{color:#aeea00 !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.lighten-1{color:#ffee58 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ff0 !important}.yellow-text.accent-2{color:#ff0 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.accent-4{color:#ffd600 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.lighten-1{color:#ffca28 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.accent-4{color:#ffab00 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.lighten-1{color:#ffa726 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.accent-4{color:#ff6d00 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.lighten-1{color:#ff7043 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.accent-4{color:#dd2c00 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.lighten-1{color:#8d6e63 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.darken-4{color:#3e2723 !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.lighten-1{color:#78909c !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.darken-4{color:#263238 !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eee !important}.grey-text.lighten-3{color:#eee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.lighten-1{color:#bdbdbd !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.darken-1{background-color:#757575 !important}.grey-text.darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.darken-4{color:#212121 !important}.shades.black{background-color:#000 !important}.shades-text.black{color:#000 !important}.shades.white{background-color:#fff !important}.shades-text.white{color:#fff !important}.black{background-color:#000 !important}.black-text{color:#000 !important}.white{background-color:#fff !important}.white-text{color:#fff !important}ul{list-style-type:none}a{color:#1E88E5;text-decoration:none}p{color:#555}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.left-align{text-align:left}.right-align{text-align:right}.center{text-align:center}.left{float:left}.right{float:right}.center-block{display:block;margin-left:auto;margin-right:auto}ul{padding:0}li{list-style-type:none}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,ul.collapsible{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover,.modal{-webkit-box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);-moz-box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15)}.z-depth-2{-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);-moz-box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.z-depth-3{-webkit-box-shadow:0 12px 15px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);-moz-box-shadow:0 12px 15px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);box-shadow:0 12px 15px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19)}.z-depth-4{-webkit-box-shadow:0 16px 28px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21);-moz-box-shadow:0 16px 28px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21);box-shadow:0 16px 28px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21)}.z-depth-5{-webkit-box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22);-moz-box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22);box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22)}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #EF9A9A}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax img{display:none;position:absolute;bottom:0;width:100%}@media only screen and (max-width: 992px){.parallax-container{height:auto}.parallax{position:relative;width:100%}.parallax img{position:relative}}@media only screen and (max-width: 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important}}@media only screen and (max-width: 992px){.hide-on-med-and-down{display:none !important}}@media only screen and (min-width: 600px){.hide-on-med-and-up{display:none !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important}}@media only screen and (min-width: 992px){.hide-on-large-only,nav a.button-collapse{display:none !important}}@media only screen and (max-width: 600px){.center-on-small-only{text-align:center}}#footer{text-align:center}#footer a{vertical-align:top;line-height:30px}table,th,td{border:none}table{width:100%;display:table}@media only screen and (max-width: 600px){table thead tr th,table tbody tr td{text-align:center}}table.bordered tr{border-bottom:1px solid #e0e0e0}table.striped tbody tr:nth-child(odd){background-color:#f2f2f2}table.hoverable tbody tr{-webkit-transition:background-color 0.25s ease;-moz-transition:background-color 0.25s ease;-o-transition:background-color 0.25s ease;-ms-transition:background-color 0.25s ease;transition:background-color 0.25s ease}table.hoverable tbody tr:hover{background-color:#f2f2f2}table.centered thead tr th,table.centered tbody tr td{text-align:center}thead{border-bottom:1px solid #878787}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}.collection{background-color:#FFF;margin:0 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px}.collection .collection-item{padding:10px 20px;margin:0px;border-bottom:1px solid #e0e0e0}.collection .collection-item:last-child{border-bottom:none}.collection a.collection-item{display:block;-webkit-transition:0.25s;-moz-transition:0.25s;-o-transition:0.25s;-ms-transition:0.25s;transition:0.25s}.collection a.collection-item:not(.active):hover{background-color:#f2f2f2}.collection.with-header .collection-header{border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection .secondary-content{float:right}.collection.pagination{display:inline-block}.collection.pagination ul{background-color:transparent;font-size:0;display:inline-block}.collection.pagination li{display:inline;font-weight:500;margin:0px;padding:0px;font-size:1rem}.collection.pagination li a{padding:0px 5px}.collection.pagination li.active{background-color:#03a9f4;color:#FFF}.collection.pagination li:hover{background-color:#e1f5fe}@font-face{font-family:"Material-Design-Icons";src:url("../font/material-design-icons/Material-Design-Icons.eot?-g7cqhn");src:url("../font/material-design-icons/Material-Design-Icons.eot?#iefix-g7cqhn") format("embedded-opentype"),url("../font/material-design-icons/Material-Design-Icons.woff?-g7cqhn") format("woff"),url("../font/material-design-icons/Material-Design-Icons.ttf?-g7cqhn") format("truetype"),url("../font/material-design-icons/Material-Design-Icons.svg?-g7cqhn#Material-Design-Icons") format("svg");font-weight:normal;font-style:normal}[class^="mdi-"],.select-wrapper span.select-dropdown:after,[class*=" mdi-"]{font-family:"Material-Design-Icons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mdi-action-3d-rotation:before{content:"\e600"}.mdi-action-accessibility:before{content:"\e601"}.mdi-action-account-balance:before{content:"\e602"}.mdi-action-account-balance-wallet:before{content:"\e603"}.mdi-action-account-box:before{content:"\e604"}.mdi-action-account-child:before{content:"\e605"}.mdi-action-account-circle:before{content:"\e606"}.mdi-action-add-shopping-cart:before{content:"\e607"}.mdi-action-alarm:before{content:"\e608"}.mdi-action-alarm-add:before{content:"\e609"}.mdi-action-alarm-off:before{content:"\e60a"}.mdi-action-alarm-on:before{content:"\e60b"}.mdi-action-android:before{content:"\e60c"}.mdi-action-announcement:before{content:"\e60d"}.mdi-action-aspect-ratio:before{content:"\e60e"}.mdi-action-assessment:before{content:"\e60f"}.mdi-action-assignment:before{content:"\e610"}.mdi-action-assignment-ind:before{content:"\e611"}.mdi-action-assignment-late:before{content:"\e612"}.mdi-action-assignment-return:before{content:"\e613"}.mdi-action-assignment-returned:before{content:"\e614"}.mdi-action-assignment-turned-in:before{content:"\e615"}.mdi-action-autorenew:before{content:"\e616"}.mdi-action-backup:before{content:"\e617"}.mdi-action-book:before{content:"\e618"}.mdi-action-bookmark:before{content:"\e619"}.mdi-action-bookmark-outline:before{content:"\e61a"}.mdi-action-bug-report:before{content:"\e61b"}.mdi-action-cached:before{content:"\e61c"}.mdi-action-class:before{content:"\e61d"}.mdi-action-credit-card:before{content:"\e61e"}.mdi-action-dashboard:before{content:"\e61f"}.mdi-action-delete:before{content:"\e620"}.mdi-action-description:before{content:"\e621"}.mdi-action-dns:before{content:"\e622"}.mdi-action-done:before{content:"\e623"}.mdi-action-done-all:before{content:"\e624"}.mdi-action-event:before{content:"\e625"}.mdi-action-exit-to-app:before{content:"\e626"}.mdi-action-explore:before{content:"\e627"}.mdi-action-extension:before{content:"\e628"}.mdi-action-face-unlock:before{content:"\e629"}.mdi-action-favorite:before{content:"\e62a"}.mdi-action-favorite-outline:before{content:"\e62b"}.mdi-action-find-in-page:before{content:"\e62c"}.mdi-action-find-replace:before{content:"\e62d"}.mdi-action-flip-to-back:before{content:"\e62e"}.mdi-action-flip-to-front:before{content:"\e62f"}.mdi-action-get-app:before{content:"\e630"}.mdi-action-grade:before{content:"\e631"}.mdi-action-group-work:before{content:"\e632"}.mdi-action-help:before{content:"\e633"}.mdi-action-highlight-remove:before{content:"\e634"}.mdi-action-history:before{content:"\e635"}.mdi-action-home:before{content:"\e636"}.mdi-action-https:before{content:"\e637"}.mdi-action-info:before{content:"\e638"}.mdi-action-info-outline:before{content:"\e639"}.mdi-action-input:before{content:"\e63a"}.mdi-action-invert-colors:before{content:"\e63b"}.mdi-action-label:before{content:"\e63c"}.mdi-action-label-outline:before{content:"\e63d"}.mdi-action-language:before{content:"\e63e"}.mdi-action-launch:before{content:"\e63f"}.mdi-action-list:before{content:"\e640"}.mdi-action-lock:before{content:"\e641"}.mdi-action-lock-open:before{content:"\e642"}.mdi-action-lock-outline:before{content:"\e643"}.mdi-action-loyalty:before{content:"\e644"}.mdi-action-markunread-mailbox:before{content:"\e645"}.mdi-action-note-add:before{content:"\e646"}.mdi-action-open-in-browser:before{content:"\e647"}.mdi-action-open-in-new:before{content:"\e648"}.mdi-action-open-with:before{content:"\e649"}.mdi-action-pageview:before{content:"\e64a"}.mdi-action-payment:before{content:"\e64b"}.mdi-action-perm-camera-mic:before{content:"\e64c"}.mdi-action-perm-contact-cal:before{content:"\e64d"}.mdi-action-perm-data-setting:before{content:"\e64e"}.mdi-action-perm-device-info:before{content:"\e64f"}.mdi-action-perm-identity:before{content:"\e650"}.mdi-action-perm-media:before{content:"\e651"}.mdi-action-perm-phone-msg:before{content:"\e652"}.mdi-action-perm-scan-wifi:before{content:"\e653"}.mdi-action-picture-in-picture:before{content:"\e654"}.mdi-action-polymer:before{content:"\e655"}.mdi-action-print:before{content:"\e656"}.mdi-action-query-builder:before{content:"\e657"}.mdi-action-question-answer:before{content:"\e658"}.mdi-action-receipt:before{content:"\e659"}.mdi-action-redeem:before{content:"\e65a"}.mdi-action-report-problem:before{content:"\e65b"}.mdi-action-restore:before{content:"\e65c"}.mdi-action-room:before{content:"\e65d"}.mdi-action-schedule:before{content:"\e65e"}.mdi-action-search:before{content:"\e65f"}.mdi-action-settings:before{content:"\e660"}.mdi-action-settings-applications:before{content:"\e661"}.mdi-action-settings-backup-restore:before{content:"\e662"}.mdi-action-settings-bluetooth:before{content:"\e663"}.mdi-action-settings-cell:before{content:"\e664"}.mdi-action-settings-display:before{content:"\e665"}.mdi-action-settings-ethernet:before{content:"\e666"}.mdi-action-settings-input-antenna:before{content:"\e667"}.mdi-action-settings-input-component:before{content:"\e668"}.mdi-action-settings-input-composite:before{content:"\e669"}.mdi-action-settings-input-hdmi:before{content:"\e66a"}.mdi-action-settings-input-svideo:before{content:"\e66b"}.mdi-action-settings-overscan:before{content:"\e66c"}.mdi-action-settings-phone:before{content:"\e66d"}.mdi-action-settings-power:before{content:"\e66e"}.mdi-action-settings-remote:before{content:"\e66f"}.mdi-action-settings-voice:before{content:"\e670"}.mdi-action-shop:before{content:"\e671"}.mdi-action-shopping-basket:before{content:"\e672"}.mdi-action-shopping-cart:before{content:"\e673"}.mdi-action-shop-two:before{content:"\e674"}.mdi-action-speaker-notes:before{content:"\e675"}.mdi-action-spellcheck:before{content:"\e676"}.mdi-action-star-rate:before{content:"\e677"}.mdi-action-stars:before{content:"\e678"}.mdi-action-store:before{content:"\e679"}.mdi-action-subject:before{content:"\e67a"}.mdi-action-swap-horiz:before{content:"\e67b"}.mdi-action-swap-vert:before{content:"\e67c"}.mdi-action-swap-vert-circle:before{content:"\e67d"}.mdi-action-system-update-tv:before{content:"\e67e"}.mdi-action-tab:before{content:"\e67f"}.mdi-action-tab-unselected:before{content:"\e680"}.mdi-action-theaters:before{content:"\e681"}.mdi-action-thumb-down:before{content:"\e682"}.mdi-action-thumbs-up-down:before{content:"\e683"}.mdi-action-thumb-up:before{content:"\e684"}.mdi-action-toc:before{content:"\e685"}.mdi-action-today:before{content:"\e686"}.mdi-action-track-changes:before{content:"\e687"}.mdi-action-translate:before{content:"\e688"}.mdi-action-trending-down:before{content:"\e689"}.mdi-action-trending-neutral:before{content:"\e68a"}.mdi-action-trending-up:before{content:"\e68b"}.mdi-action-turned-in:before{content:"\e68c"}.mdi-action-turned-in-not:before{content:"\e68d"}.mdi-action-verified-user:before{content:"\e68e"}.mdi-action-view-agenda:before{content:"\e68f"}.mdi-action-view-array:before{content:"\e690"}.mdi-action-view-carousel:before{content:"\e691"}.mdi-action-view-column:before{content:"\e692"}.mdi-action-view-day:before{content:"\e693"}.mdi-action-view-headline:before{content:"\e694"}.mdi-action-view-list:before{content:"\e695"}.mdi-action-view-module:before{content:"\e696"}.mdi-action-view-quilt:before{content:"\e697"}.mdi-action-view-stream:before{content:"\e698"}.mdi-action-view-week:before{content:"\e699"}.mdi-action-visibility:before{content:"\e69a"}.mdi-action-visibility-off:before{content:"\e69b"}.mdi-action-wallet-giftcard:before{content:"\e69c"}.mdi-action-wallet-membership:before{content:"\e69d"}.mdi-action-wallet-travel:before{content:"\e69e"}.mdi-action-work:before{content:"\e69f"}.mdi-alert-error:before{content:"\e6a0"}.mdi-alert-warning:before{content:"\e6a1"}.mdi-av-album:before{content:"\e6a2"}.mdi-av-timer:before{content:"\e6a3"}.mdi-av-closed-caption:before{content:"\e6a4"}.mdi-av-equalizer:before{content:"\e6a5"}.mdi-av-explicit:before{content:"\e6a6"}.mdi-av-fast-forward:before{content:"\e6a7"}.mdi-av-fast-rewind:before{content:"\e6a8"}.mdi-av-games:before{content:"\e6a9"}.mdi-av-hearing:before{content:"\e6aa"}.mdi-av-high-quality:before{content:"\e6ab"}.mdi-av-loop:before{content:"\e6ac"}.mdi-av-mic:before{content:"\e6ad"}.mdi-av-mic-none:before{content:"\e6ae"}.mdi-av-mic-off:before{content:"\e6af"}.mdi-av-movie:before{content:"\e6b0"}.mdi-av-my-library-add:before{content:"\e6b1"}.mdi-av-my-library-books:before{content:"\e6b2"}.mdi-av-my-library-music:before{content:"\e6b3"}.mdi-av-new-releases:before{content:"\e6b4"}.mdi-av-not-interested:before{content:"\e6b5"}.mdi-av-pause:before{content:"\e6b6"}.mdi-av-pause-circle-fill:before{content:"\e6b7"}.mdi-av-pause-circle-outline:before{content:"\e6b8"}.mdi-av-play-arrow:before{content:"\e6b9"}.mdi-av-play-circle-fill:before{content:"\e6ba"}.mdi-av-play-circle-outline:before{content:"\e6bb"}.mdi-av-playlist-add:before{content:"\e6bc"}.mdi-av-play-shopping-bag:before{content:"\e6bd"}.mdi-av-queue:before{content:"\e6be"}.mdi-av-queue-music:before{content:"\e6bf"}.mdi-av-radio:before{content:"\e6c0"}.mdi-av-recent-actors:before{content:"\e6c1"}.mdi-av-repeat:before{content:"\e6c2"}.mdi-av-repeat-one:before{content:"\e6c3"}.mdi-av-replay:before{content:"\e6c4"}.mdi-av-shuffle:before{content:"\e6c5"}.mdi-av-skip-next:before{content:"\e6c6"}.mdi-av-skip-previous:before{content:"\e6c7"}.mdi-av-snooze:before{content:"\e6c8"}.mdi-av-stop:before{content:"\e6c9"}.mdi-av-subtitles:before{content:"\e6ca"}.mdi-av-surround-sound:before{content:"\e6cb"}.mdi-av-videocam:before{content:"\e6cc"}.mdi-av-videocam-off:before{content:"\e6cd"}.mdi-av-video-collection:before{content:"\e6ce"}.mdi-av-volume-down:before{content:"\e6cf"}.mdi-av-volume-mute:before{content:"\e6d0"}.mdi-av-volume-off:before{content:"\e6d1"}.mdi-av-volume-up:before{content:"\e6d2"}.mdi-av-web:before{content:"\e6d3"}.mdi-communication-business:before{content:"\e6d4"}.mdi-communication-call:before{content:"\e6d5"}.mdi-communication-call-end:before{content:"\e6d6"}.mdi-communication-call-made:before{content:"\e6d7"}.mdi-communication-call-merge:before{content:"\e6d8"}.mdi-communication-call-missed:before{content:"\e6d9"}.mdi-communication-call-received:before{content:"\e6da"}.mdi-communication-call-split:before{content:"\e6db"}.mdi-communication-chat:before{content:"\e6dc"}.mdi-communication-clear-all:before{content:"\e6dd"}.mdi-communication-comment:before{content:"\e6de"}.mdi-communication-contacts:before{content:"\e6df"}.mdi-communication-dialer-sip:before{content:"\e6e0"}.mdi-communication-dialpad:before{content:"\e6e1"}.mdi-communication-dnd-on:before{content:"\e6e2"}.mdi-communication-email:before{content:"\e6e3"}.mdi-communication-forum:before{content:"\e6e4"}.mdi-communication-import-export:before{content:"\e6e5"}.mdi-communication-invert-colors-off:before{content:"\e6e6"}.mdi-communication-invert-colors-on:before{content:"\e6e7"}.mdi-communication-live-help:before{content:"\e6e8"}.mdi-communication-location-off:before{content:"\e6e9"}.mdi-communication-location-on:before{content:"\e6ea"}.mdi-communication-message:before{content:"\e6eb"}.mdi-communication-messenger:before{content:"\e6ec"}.mdi-communication-no-sim:before{content:"\e6ed"}.mdi-communication-phone:before{content:"\e6ee"}.mdi-communication-portable-wifi-off:before{content:"\e6ef"}.mdi-communication-quick-contacts-dialer:before{content:"\e6f0"}.mdi-communication-quick-contacts-mail:before{content:"\e6f1"}.mdi-communication-ring-volume:before{content:"\e6f2"}.mdi-communication-stay-current-landscape:before{content:"\e6f3"}.mdi-communication-stay-current-portrait:before{content:"\e6f4"}.mdi-communication-stay-primary-landscape:before{content:"\e6f5"}.mdi-communication-stay-primary-portrait:before{content:"\e6f6"}.mdi-communication-swap-calls:before{content:"\e6f7"}.mdi-communication-textsms:before{content:"\e6f8"}.mdi-communication-voicemail:before{content:"\e6f9"}.mdi-communication-vpn-key:before{content:"\e6fa"}.mdi-content-add:before{content:"\e6fb"}.mdi-content-add-box:before{content:"\e6fc"}.mdi-content-add-circle:before{content:"\e6fd"}.mdi-content-add-circle-outline:before{content:"\e6fe"}.mdi-content-archive:before{content:"\e6ff"}.mdi-content-backspace:before{content:"\e700"}.mdi-content-block:before{content:"\e701"}.mdi-content-clear:before{content:"\e702"}.mdi-content-content-copy:before{content:"\e703"}.mdi-content-content-cut:before{content:"\e704"}.mdi-content-content-paste:before{content:"\e705"}.mdi-content-create:before{content:"\e706"}.mdi-content-drafts:before{content:"\e707"}.mdi-content-filter-list:before{content:"\e708"}.mdi-content-flag:before{content:"\e709"}.mdi-content-forward:before{content:"\e70a"}.mdi-content-gesture:before{content:"\e70b"}.mdi-content-inbox:before{content:"\e70c"}.mdi-content-link:before{content:"\e70d"}.mdi-content-mail:before{content:"\e70e"}.mdi-content-markunread:before{content:"\e70f"}.mdi-content-redo:before{content:"\e710"}.mdi-content-remove:before{content:"\e711"}.mdi-content-remove-circle:before{content:"\e712"}.mdi-content-remove-circle-outline:before{content:"\e713"}.mdi-content-reply:before{content:"\e714"}.mdi-content-reply-all:before{content:"\e715"}.mdi-content-report:before{content:"\e716"}.mdi-content-save:before{content:"\e717"}.mdi-content-select-all:before{content:"\e718"}.mdi-content-send:before{content:"\e719"}.mdi-content-sort:before{content:"\e71a"}.mdi-content-text-format:before{content:"\e71b"}.mdi-content-undo:before{content:"\e71c"}.mdi-device-access-alarm:before{content:"\e71d"}.mdi-device-access-alarms:before{content:"\e71e"}.mdi-device-access-time:before{content:"\e71f"}.mdi-device-add-alarm:before{content:"\e720"}.mdi-device-airplanemode-off:before{content:"\e721"}.mdi-device-airplanemode-on:before{content:"\e722"}.mdi-device-battery-20:before{content:"\e723"}.mdi-device-battery-30:before{content:"\e724"}.mdi-device-battery-50:before{content:"\e725"}.mdi-device-battery-60:before{content:"\e726"}.mdi-device-battery-80:before{content:"\e727"}.mdi-device-battery-90:before{content:"\e728"}.mdi-device-battery-alert:before{content:"\e729"}.mdi-device-battery-charging-20:before{content:"\e72a"}.mdi-device-battery-charging-30:before{content:"\e72b"}.mdi-device-battery-charging-50:before{content:"\e72c"}.mdi-device-battery-charging-60:before{content:"\e72d"}.mdi-device-battery-charging-80:before{content:"\e72e"}.mdi-device-battery-charging-90:before{content:"\e72f"}.mdi-device-battery-charging-full:before{content:"\e730"}.mdi-device-battery-full:before{content:"\e731"}.mdi-device-battery-std:before{content:"\e732"}.mdi-device-battery-unknown:before{content:"\e733"}.mdi-device-bluetooth:before{content:"\e734"}.mdi-device-bluetooth-connected:before{content:"\e735"}.mdi-device-bluetooth-disabled:before{content:"\e736"}.mdi-device-bluetooth-searching:before{content:"\e737"}.mdi-device-brightness-auto:before{content:"\e738"}.mdi-device-brightness-high:before{content:"\e739"}.mdi-device-brightness-low:before{content:"\e73a"}.mdi-device-brightness-medium:before{content:"\e73b"}.mdi-device-data-usage:before{content:"\e73c"}.mdi-device-developer-mode:before{content:"\e73d"}.mdi-device-devices:before{content:"\e73e"}.mdi-device-dvr:before{content:"\e73f"}.mdi-device-gps-fixed:before{content:"\e740"}.mdi-device-gps-not-fixed:before{content:"\e741"}.mdi-device-gps-off:before{content:"\e742"}.mdi-device-location-disabled:before{content:"\e743"}.mdi-device-location-searching:before{content:"\e744"}.mdi-device-multitrack-audio:before{content:"\e745"}.mdi-device-network-cell:before{content:"\e746"}.mdi-device-network-wifi:before{content:"\e747"}.mdi-device-nfc:before{content:"\e748"}.mdi-device-now-wallpaper:before{content:"\e749"}.mdi-device-now-widgets:before{content:"\e74a"}.mdi-device-screen-lock-landscape:before{content:"\e74b"}.mdi-device-screen-lock-portrait:before{content:"\e74c"}.mdi-device-screen-lock-rotation:before{content:"\e74d"}.mdi-device-screen-rotation:before{content:"\e74e"}.mdi-device-sd-storage:before{content:"\e74f"}.mdi-device-settings-system-daydream:before{content:"\e750"}.mdi-device-signal-cellular-0-bar:before{content:"\e751"}.mdi-device-signal-cellular-1-bar:before{content:"\e752"}.mdi-device-signal-cellular-2-bar:before{content:"\e753"}.mdi-device-signal-cellular-3-bar:before{content:"\e754"}.mdi-device-signal-cellular-4-bar:before{content:"\e755"}.mdi-device-signal-cellular-connected-no-internet-0-bar:before{content:"\e756"}.mdi-device-signal-cellular-connected-no-internet-1-bar:before{content:"\e757"}.mdi-device-signal-cellular-connected-no-internet-2-bar:before{content:"\e758"}.mdi-device-signal-cellular-connected-no-internet-3-bar:before{content:"\e759"}.mdi-device-signal-cellular-connected-no-internet-4-bar:before{content:"\e75a"}.mdi-device-signal-cellular-no-sim:before{content:"\e75b"}.mdi-device-signal-cellular-null:before{content:"\e75c"}.mdi-device-signal-cellular-off:before{content:"\e75d"}.mdi-device-signal-wifi-0-bar:before{content:"\e75e"}.mdi-device-signal-wifi-1-bar:before{content:"\e75f"}.mdi-device-signal-wifi-2-bar:before{content:"\e760"}.mdi-device-signal-wifi-3-bar:before{content:"\e761"}.mdi-device-signal-wifi-4-bar:before{content:"\e762"}.mdi-device-signal-wifi-off:before{content:"\e763"}.mdi-device-storage:before{content:"\e764"}.mdi-device-usb:before{content:"\e765"}.mdi-device-wifi-lock:before{content:"\e766"}.mdi-device-wifi-tethering:before{content:"\e767"}.mdi-editor-attach-file:before{content:"\e768"}.mdi-editor-attach-money:before{content:"\e769"}.mdi-editor-border-all:before{content:"\e76a"}.mdi-editor-border-bottom:before{content:"\e76b"}.mdi-editor-border-clear:before{content:"\e76c"}.mdi-editor-border-color:before{content:"\e76d"}.mdi-editor-border-horizontal:before{content:"\e76e"}.mdi-editor-border-inner:before{content:"\e76f"}.mdi-editor-border-left:before{content:"\e770"}.mdi-editor-border-outer:before{content:"\e771"}.mdi-editor-border-right:before{content:"\e772"}.mdi-editor-border-style:before{content:"\e773"}.mdi-editor-border-top:before{content:"\e774"}.mdi-editor-border-vertical:before{content:"\e775"}.mdi-editor-format-align-center:before{content:"\e776"}.mdi-editor-format-align-justify:before{content:"\e777"}.mdi-editor-format-align-left:before{content:"\e778"}.mdi-editor-format-align-right:before{content:"\e779"}.mdi-editor-format-bold:before{content:"\e77a"}.mdi-editor-format-clear:before{content:"\e77b"}.mdi-editor-format-color-fill:before{content:"\e77c"}.mdi-editor-format-color-reset:before{content:"\e77d"}.mdi-editor-format-color-text:before{content:"\e77e"}.mdi-editor-format-indent-decrease:before{content:"\e77f"}.mdi-editor-format-indent-increase:before{content:"\e780"}.mdi-editor-format-italic:before{content:"\e781"}.mdi-editor-format-line-spacing:before{content:"\e782"}.mdi-editor-format-list-bulleted:before{content:"\e783"}.mdi-editor-format-list-numbered:before{content:"\e784"}.mdi-editor-format-paint:before{content:"\e785"}.mdi-editor-format-quote:before{content:"\e786"}.mdi-editor-format-size:before{content:"\e787"}.mdi-editor-format-strikethrough:before{content:"\e788"}.mdi-editor-format-textdirection-l-to-r:before{content:"\e789"}.mdi-editor-format-textdirection-r-to-l:before{content:"\e78a"}.mdi-editor-format-underline:before{content:"\e78b"}.mdi-editor-functions:before{content:"\e78c"}.mdi-editor-insert-chart:before{content:"\e78d"}.mdi-editor-insert-comment:before{content:"\e78e"}.mdi-editor-insert-drive-file:before{content:"\e78f"}.mdi-editor-insert-emoticon:before{content:"\e790"}.mdi-editor-insert-invitation:before{content:"\e791"}.mdi-editor-insert-link:before{content:"\e792"}.mdi-editor-insert-photo:before{content:"\e793"}.mdi-editor-merge-type:before{content:"\e794"}.mdi-editor-mode-comment:before{content:"\e795"}.mdi-editor-mode-edit:before{content:"\e796"}.mdi-editor-publish:before{content:"\e797"}.mdi-editor-vertical-align-bottom:before{content:"\e798"}.mdi-editor-vertical-align-center:before{content:"\e799"}.mdi-editor-vertical-align-top:before{content:"\e79a"}.mdi-editor-wrap-text:before{content:"\e79b"}.mdi-file-attachment:before{content:"\e79c"}.mdi-file-cloud:before{content:"\e79d"}.mdi-file-cloud-circle:before{content:"\e79e"}.mdi-file-cloud-done:before{content:"\e79f"}.mdi-file-cloud-download:before{content:"\e7a0"}.mdi-file-cloud-off:before{content:"\e7a1"}.mdi-file-cloud-queue:before{content:"\e7a2"}.mdi-file-cloud-upload:before{content:"\e7a3"}.mdi-file-file-download:before{content:"\e7a4"}.mdi-file-file-upload:before{content:"\e7a5"}.mdi-file-folder:before{content:"\e7a6"}.mdi-file-folder-open:before{content:"\e7a7"}.mdi-file-folder-shared:before{content:"\e7a8"}.mdi-hardware-cast:before{content:"\e7a9"}.mdi-hardware-cast-connected:before{content:"\e7aa"}.mdi-hardware-computer:before{content:"\e7ab"}.mdi-hardware-desktop-mac:before{content:"\e7ac"}.mdi-hardware-desktop-windows:before{content:"\e7ad"}.mdi-hardware-dock:before{content:"\e7ae"}.mdi-hardware-gamepad:before{content:"\e7af"}.mdi-hardware-headset:before{content:"\e7b0"}.mdi-hardware-headset-mic:before{content:"\e7b1"}.mdi-hardware-keyboard:before{content:"\e7b2"}.mdi-hardware-keyboard-alt:before{content:"\e7b3"}.mdi-hardware-keyboard-arrow-down:before{content:"\e7b4"}.mdi-hardware-keyboard-arrow-left:before{content:"\e7b5"}.mdi-hardware-keyboard-arrow-right:before{content:"\e7b6"}.mdi-hardware-keyboard-arrow-up:before{content:"\e7b7"}.mdi-hardware-keyboard-backspace:before{content:"\e7b8"}.mdi-hardware-keyboard-capslock:before{content:"\e7b9"}.mdi-hardware-keyboard-control:before{content:"\e7ba"}.mdi-hardware-keyboard-hide:before{content:"\e7bb"}.mdi-hardware-keyboard-return:before{content:"\e7bc"}.mdi-hardware-keyboard-tab:before{content:"\e7bd"}.mdi-hardware-keyboard-voice:before{content:"\e7be"}.mdi-hardware-laptop:before{content:"\e7bf"}.mdi-hardware-laptop-chromebook:before{content:"\e7c0"}.mdi-hardware-laptop-mac:before{content:"\e7c1"}.mdi-hardware-laptop-windows:before{content:"\e7c2"}.mdi-hardware-memory:before{content:"\e7c3"}.mdi-hardware-mouse:before{content:"\e7c4"}.mdi-hardware-phone-android:before{content:"\e7c5"}.mdi-hardware-phone-iphone:before{content:"\e7c6"}.mdi-hardware-phonelink:before{content:"\e7c7"}.mdi-hardware-phonelink-off:before{content:"\e7c8"}.mdi-hardware-security:before{content:"\e7c9"}.mdi-hardware-sim-card:before{content:"\e7ca"}.mdi-hardware-smartphone:before{content:"\e7cb"}.mdi-hardware-speaker:before{content:"\e7cc"}.mdi-hardware-tablet:before{content:"\e7cd"}.mdi-hardware-tablet-android:before{content:"\e7ce"}.mdi-hardware-tablet-mac:before{content:"\e7cf"}.mdi-hardware-tv:before{content:"\e7d0"}.mdi-hardware-watch:before{content:"\e7d1"}.mdi-image-add-to-photos:before{content:"\e7d2"}.mdi-image-adjust:before{content:"\e7d3"}.mdi-image-assistant-photo:before{content:"\e7d4"}.mdi-image-audiotrack:before{content:"\e7d5"}.mdi-image-blur-circular:before{content:"\e7d6"}.mdi-image-blur-linear:before{content:"\e7d7"}.mdi-image-blur-off:before{content:"\e7d8"}.mdi-image-blur-on:before{content:"\e7d9"}.mdi-image-brightness-1:before{content:"\e7da"}.mdi-image-brightness-2:before{content:"\e7db"}.mdi-image-brightness-3:before{content:"\e7dc"}.mdi-image-brightness-4:before{content:"\e7dd"}.mdi-image-brightness-5:before{content:"\e7de"}.mdi-image-brightness-6:before{content:"\e7df"}.mdi-image-brightness-7:before{content:"\e7e0"}.mdi-image-brush:before{content:"\e7e1"}.mdi-image-camera:before{content:"\e7e2"}.mdi-image-camera-alt:before{content:"\e7e3"}.mdi-image-camera-front:before{content:"\e7e4"}.mdi-image-camera-rear:before{content:"\e7e5"}.mdi-image-camera-roll:before{content:"\e7e6"}.mdi-image-center-focus-strong:before{content:"\e7e7"}.mdi-image-center-focus-weak:before{content:"\e7e8"}.mdi-image-collections:before{content:"\e7e9"}.mdi-image-colorize:before{content:"\e7ea"}.mdi-image-color-lens:before{content:"\e7eb"}.mdi-image-compare:before{content:"\e7ec"}.mdi-image-control-point:before{content:"\e7ed"}.mdi-image-control-point-duplicate:before{content:"\e7ee"}.mdi-image-crop:before{content:"\e7ef"}.mdi-image-crop-3-2:before{content:"\e7f0"}.mdi-image-crop-5-4:before{content:"\e7f1"}.mdi-image-crop-7-5:before{content:"\e7f2"}.mdi-image-crop-16-9:before{content:"\e7f3"}.mdi-image-crop-din:before{content:"\e7f4"}.mdi-image-crop-free:before{content:"\e7f5"}.mdi-image-crop-landscape:before{content:"\e7f6"}.mdi-image-crop-original:before{content:"\e7f7"}.mdi-image-crop-portrait:before{content:"\e7f8"}.mdi-image-crop-square:before{content:"\e7f9"}.mdi-image-dehaze:before{content:"\e7fa"}.mdi-image-details:before{content:"\e7fb"}.mdi-image-edit:before{content:"\e7fc"}.mdi-image-exposure:before{content:"\e7fd"}.mdi-image-exposure-minus-1:before{content:"\e7fe"}.mdi-image-exposure-minus-2:before{content:"\e7ff"}.mdi-image-exposure-plus-1:before{content:"\e800"}.mdi-image-exposure-plus-2:before{content:"\e801"}.mdi-image-exposure-zero:before{content:"\e802"}.mdi-image-filter:before{content:"\e803"}.mdi-image-filter-1:before{content:"\e804"}.mdi-image-filter-2:before{content:"\e805"}.mdi-image-filter-3:before{content:"\e806"}.mdi-image-filter-4:before{content:"\e807"}.mdi-image-filter-5:before{content:"\e808"}.mdi-image-filter-6:before{content:"\e809"}.mdi-image-filter-7:before{content:"\e80a"}.mdi-image-filter-8:before{content:"\e80b"}.mdi-image-filter-9:before{content:"\e80c"}.mdi-image-filter-9-plus:before{content:"\e80d"}.mdi-image-filter-b-and-w:before{content:"\e80e"}.mdi-image-filter-center-focus:before{content:"\e80f"}.mdi-image-filter-drama:before{content:"\e810"}.mdi-image-filter-frames:before{content:"\e811"}.mdi-image-filter-hdr:before{content:"\e812"}.mdi-image-filter-none:before{content:"\e813"}.mdi-image-filter-tilt-shift:before{content:"\e814"}.mdi-image-filter-vintage:before{content:"\e815"}.mdi-image-flare:before{content:"\e816"}.mdi-image-flash-auto:before{content:"\e817"}.mdi-image-flash-off:before{content:"\e818"}.mdi-image-flash-on:before{content:"\e819"}.mdi-image-flip:before{content:"\e81a"}.mdi-image-gradient:before{content:"\e81b"}.mdi-image-grain:before{content:"\e81c"}.mdi-image-grid-off:before{content:"\e81d"}.mdi-image-grid-on:before{content:"\e81e"}.mdi-image-hdr-off:before{content:"\e81f"}.mdi-image-hdr-on:before{content:"\e820"}.mdi-image-hdr-strong:before{content:"\e821"}.mdi-image-hdr-weak:before{content:"\e822"}.mdi-image-healing:before{content:"\e823"}.mdi-image-image:before{content:"\e824"}.mdi-image-image-aspect-ratio:before{content:"\e825"}.mdi-image-iso:before{content:"\e826"}.mdi-image-landscape:before{content:"\e827"}.mdi-image-leak-add:before{content:"\e828"}.mdi-image-leak-remove:before{content:"\e829"}.mdi-image-lens:before{content:"\e82a"}.mdi-image-looks:before{content:"\e82b"}.mdi-image-looks-3:before{content:"\e82c"}.mdi-image-looks-4:before{content:"\e82d"}.mdi-image-looks-5:before{content:"\e82e"}.mdi-image-looks-6:before{content:"\e82f"}.mdi-image-looks-one:before{content:"\e830"}.mdi-image-looks-two:before{content:"\e831"}.mdi-image-loupe:before{content:"\e832"}.mdi-image-movie-creation:before{content:"\e833"}.mdi-image-nature:before{content:"\e834"}.mdi-image-nature-people:before{content:"\e835"}.mdi-image-navigate-before:before{content:"\e836"}.mdi-image-navigate-next:before{content:"\e837"}.mdi-image-palette:before{content:"\e838"}.mdi-image-panorama:before{content:"\e839"}.mdi-image-panorama-fisheye:before{content:"\e83a"}.mdi-image-panorama-horizontal:before{content:"\e83b"}.mdi-image-panorama-vertical:before{content:"\e83c"}.mdi-image-panorama-wide-angle:before{content:"\e83d"}.mdi-image-photo:before{content:"\e83e"}.mdi-image-photo-album:before{content:"\e83f"}.mdi-image-photo-camera:before{content:"\e840"}.mdi-image-photo-library:before{content:"\e841"}.mdi-image-portrait:before{content:"\e842"}.mdi-image-remove-red-eye:before{content:"\e843"}.mdi-image-rotate-left:before{content:"\e844"}.mdi-image-rotate-right:before{content:"\e845"}.mdi-image-slideshow:before{content:"\e846"}.mdi-image-straighten:before{content:"\e847"}.mdi-image-style:before{content:"\e848"}.mdi-image-switch-camera:before{content:"\e849"}.mdi-image-switch-video:before{content:"\e84a"}.mdi-image-tag-faces:before{content:"\e84b"}.mdi-image-texture:before{content:"\e84c"}.mdi-image-timelapse:before{content:"\e84d"}.mdi-image-timer:before{content:"\e84e"}.mdi-image-timer-3:before{content:"\e84f"}.mdi-image-timer-10:before{content:"\e850"}.mdi-image-timer-auto:before{content:"\e851"}.mdi-image-timer-off:before{content:"\e852"}.mdi-image-tonality:before{content:"\e853"}.mdi-image-transform:before{content:"\e854"}.mdi-image-tune:before{content:"\e855"}.mdi-image-wb-auto:before{content:"\e856"}.mdi-image-wb-cloudy:before{content:"\e857"}.mdi-image-wb-incandescent:before{content:"\e858"}.mdi-image-wb-irradescent:before{content:"\e859"}.mdi-image-wb-sunny:before{content:"\e85a"}.mdi-maps-beenhere:before{content:"\e85b"}.mdi-maps-directions:before{content:"\e85c"}.mdi-maps-directions-bike:before{content:"\e85d"}.mdi-maps-directions-bus:before{content:"\e85e"}.mdi-maps-directions-car:before{content:"\e85f"}.mdi-maps-directions-ferry:before{content:"\e860"}.mdi-maps-directions-subway:before{content:"\e861"}.mdi-maps-directions-train:before{content:"\e862"}.mdi-maps-directions-transit:before{content:"\e863"}.mdi-maps-directions-walk:before{content:"\e864"}.mdi-maps-flight:before{content:"\e865"}.mdi-maps-hotel:before{content:"\e866"}.mdi-maps-layers:before{content:"\e867"}.mdi-maps-layers-clear:before{content:"\e868"}.mdi-maps-local-airport:before{content:"\e869"}.mdi-maps-local-atm:before{content:"\e86a"}.mdi-maps-local-attraction:before{content:"\e86b"}.mdi-maps-local-bar:before{content:"\e86c"}.mdi-maps-local-cafe:before{content:"\e86d"}.mdi-maps-local-car-wash:before{content:"\e86e"}.mdi-maps-local-convenience-store:before{content:"\e86f"}.mdi-maps-local-drink:before{content:"\e870"}.mdi-maps-local-florist:before{content:"\e871"}.mdi-maps-local-gas-station:before{content:"\e872"}.mdi-maps-local-grocery-store:before{content:"\e873"}.mdi-maps-local-hospital:before{content:"\e874"}.mdi-maps-local-hotel:before{content:"\e875"}.mdi-maps-local-laundry-service:before{content:"\e876"}.mdi-maps-local-library:before{content:"\e877"}.mdi-maps-local-mall:before{content:"\e878"}.mdi-maps-local-movies:before{content:"\e879"}.mdi-maps-local-offer:before{content:"\e87a"}.mdi-maps-local-parking:before{content:"\e87b"}.mdi-maps-local-pharmacy:before{content:"\e87c"}.mdi-maps-local-phone:before{content:"\e87d"}.mdi-maps-local-pizza:before{content:"\e87e"}.mdi-maps-local-play:before{content:"\e87f"}.mdi-maps-local-post-office:before{content:"\e880"}.mdi-maps-local-print-shop:before{content:"\e881"}.mdi-maps-local-restaurant:before{content:"\e882"}.mdi-maps-local-see:before{content:"\e883"}.mdi-maps-local-shipping:before{content:"\e884"}.mdi-maps-local-taxi:before{content:"\e885"}.mdi-maps-location-history:before{content:"\e886"}.mdi-maps-map:before{content:"\e887"}.mdi-maps-my-location:before{content:"\e888"}.mdi-maps-navigation:before{content:"\e889"}.mdi-maps-pin-drop:before{content:"\e88a"}.mdi-maps-place:before{content:"\e88b"}.mdi-maps-rate-review:before{content:"\e88c"}.mdi-maps-restaurant-menu:before{content:"\e88d"}.mdi-maps-satellite:before{content:"\e88e"}.mdi-maps-store-mall-directory:before{content:"\e88f"}.mdi-maps-terrain:before{content:"\e890"}.mdi-maps-traffic:before{content:"\e891"}.mdi-navigation-apps:before{content:"\e892"}.mdi-navigation-arrow-back:before{content:"\e893"}.mdi-navigation-arrow-drop-down:before,.select-wrapper span.select-dropdown:after{content:"\e894"}.mdi-navigation-arrow-drop-down-circle:before{content:"\e895"}.mdi-navigation-arrow-drop-up:before{content:"\e896"}.mdi-navigation-arrow-forward:before{content:"\e897"}.mdi-navigation-cancel:before{content:"\e898"}.mdi-navigation-check:before{content:"\e899"}.mdi-navigation-chevron-left:before{content:"\e89a"}.mdi-navigation-chevron-right:before{content:"\e89b"}.mdi-navigation-close:before{content:"\e89c"}.mdi-navigation-expand-less:before{content:"\e89d"}.mdi-navigation-expand-more:before{content:"\e89e"}.mdi-navigation-fullscreen:before{content:"\e89f"}.mdi-navigation-fullscreen-exit:before{content:"\e8a0"}.mdi-navigation-menu:before{content:"\e8a1"}.mdi-navigation-more-horiz:before{content:"\e8a2"}.mdi-navigation-more-vert:before{content:"\e8a3"}.mdi-navigation-refresh:before{content:"\e8a4"}.mdi-navigation-unfold-less:before{content:"\e8a5"}.mdi-navigation-unfold-more:before{content:"\e8a6"}.mdi-notification-adb:before{content:"\e8a7"}.mdi-notification-bluetooth-audio:before{content:"\e8a8"}.mdi-notification-disc-full:before{content:"\e8a9"}.mdi-notification-dnd-forwardslash:before{content:"\e8aa"}.mdi-notification-do-not-disturb:before{content:"\e8ab"}.mdi-notification-drive-eta:before{content:"\e8ac"}.mdi-notification-event-available:before{content:"\e8ad"}.mdi-notification-event-busy:before{content:"\e8ae"}.mdi-notification-event-note:before{content:"\e8af"}.mdi-notification-folder-special:before{content:"\e8b0"}.mdi-notification-mms:before{content:"\e8b1"}.mdi-notification-more:before{content:"\e8b2"}.mdi-notification-network-locked:before{content:"\e8b3"}.mdi-notification-phone-bluetooth-speaker:before{content:"\e8b4"}.mdi-notification-phone-forwarded:before{content:"\e8b5"}.mdi-notification-phone-in-talk:before{content:"\e8b6"}.mdi-notification-phone-locked:before{content:"\e8b7"}.mdi-notification-phone-missed:before{content:"\e8b8"}.mdi-notification-phone-paused:before{content:"\e8b9"}.mdi-notification-play-download:before{content:"\e8ba"}.mdi-notification-play-install:before{content:"\e8bb"}.mdi-notification-sd-card:before{content:"\e8bc"}.mdi-notification-sim-card-alert:before{content:"\e8bd"}.mdi-notification-sms:before{content:"\e8be"}.mdi-notification-sms-failed:before{content:"\e8bf"}.mdi-notification-sync:before{content:"\e8c0"}.mdi-notification-sync-disabled:before{content:"\e8c1"}.mdi-notification-sync-problem:before{content:"\e8c2"}.mdi-notification-system-update:before{content:"\e8c3"}.mdi-notification-tap-and-play:before{content:"\e8c4"}.mdi-notification-time-to-leave:before{content:"\e8c5"}.mdi-notification-vibration:before{content:"\e8c6"}.mdi-notification-voice-chat:before{content:"\e8c7"}.mdi-notification-vpn-lock:before{content:"\e8c8"}.mdi-social-cake:before{content:"\e8c9"}.mdi-social-domain:before{content:"\e8ca"}.mdi-social-group:before{content:"\e8cb"}.mdi-social-group-add:before{content:"\e8cc"}.mdi-social-location-city:before{content:"\e8cd"}.mdi-social-mood:before{content:"\e8ce"}.mdi-social-notifications:before{content:"\e8cf"}.mdi-social-notifications-none:before{content:"\e8d0"}.mdi-social-notifications-off:before{content:"\e8d1"}.mdi-social-notifications-on:before{content:"\e8d2"}.mdi-social-notifications-paused:before{content:"\e8d3"}.mdi-social-pages:before{content:"\e8d4"}.mdi-social-party-mode:before{content:"\e8d5"}.mdi-social-people:before{content:"\e8d6"}.mdi-social-people-outline:before{content:"\e8d7"}.mdi-social-person:before{content:"\e8d8"}.mdi-social-person-add:before{content:"\e8d9"}.mdi-social-person-outline:before{content:"\e8da"}.mdi-social-plus-one:before{content:"\e8db"}.mdi-social-poll:before{content:"\e8dc"}.mdi-social-public:before{content:"\e8dd"}.mdi-social-school:before{content:"\e8de"}.mdi-social-share:before{content:"\e8df"}.mdi-social-whatshot:before{content:"\e8e0"}.mdi-toggle-check-box:before{content:"\e8e1"}.mdi-toggle-check-box-outline-blank:before{content:"\e8e2"}.mdi-toggle-radio-button-off:before{content:"\e8e3"}.mdi-toggle-radio-button-on:before{content:"\e8e4"}.container{padding:0 1rem;margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width: 600px){.container{width:85%}}@media only screen and (min-width: 992px){.container{width:70%}}.container .row{margin-left:-0.5rem;margin-right:-0.5rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{-webkit-transition:all 0.3s;-moz-transition:all 0.3s;-o-transition:all 0.3s;-ms-transition:all 0.3s;transition:all 0.3s;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0.5rem}.row .col.s1{width:8.33333%;margin-left:0}.row .col.s2{width:16.66667%;margin-left:0}.row .col.s3{width:25%;margin-left:0}.row .col.s4{width:33.33333%;margin-left:0}.row .col.s5{width:41.66667%;margin-left:0}.row .col.s6{width:50%;margin-left:0}.row .col.s7{width:58.33333%;margin-left:0}.row .col.s8{width:66.66667%;margin-left:0}.row .col.s9{width:75%;margin-left:0}.row .col.s10{width:83.33333%;margin-left:0}.row .col.s11{width:91.66667%;margin-left:0}.row .col.s12{width:100%;margin-left:0}.row .col.offset-s1{margin-left:8.33333%}.row .col.offset-s2{margin-left:16.66667%}.row .col.offset-s3{margin-left:25%}.row .col.offset-s4{margin-left:33.33333%}.row .col.offset-s5{margin-left:41.66667%}.row .col.offset-s6{margin-left:50%}.row .col.offset-s7{margin-left:58.33333%}.row .col.offset-s8{margin-left:66.66667%}.row .col.offset-s9{margin-left:75%}.row .col.offset-s10{margin-left:83.33333%}.row .col.offset-s11{margin-left:91.66667%}.row .col.offset-s12{margin-left:100%}@media only screen and (min-width: 600px){.row .col.m1{width:8.33333%;margin-left:0}.row .col.m2{width:16.66667%;margin-left:0}.row .col.m3{width:25%;margin-left:0}.row .col.m4{width:33.33333%;margin-left:0}.row .col.m5{width:41.66667%;margin-left:0}.row .col.m6{width:50%;margin-left:0}.row .col.m7{width:58.33333%;margin-left:0}.row .col.m8{width:66.66667%;margin-left:0}.row .col.m9{width:75%;margin-left:0}.row .col.m10{width:83.33333%;margin-left:0}.row .col.m11{width:91.66667%;margin-left:0}.row .col.m12{width:100%;margin-left:0}.row .col.offset-m1{margin-left:8.33333%}.row .col.offset-m2{margin-left:16.66667%}.row .col.offset-m3{margin-left:25%}.row .col.offset-m4{margin-left:33.33333%}.row .col.offset-m5{margin-left:41.66667%}.row .col.offset-m6{margin-left:50%}.row .col.offset-m7{margin-left:58.33333%}.row .col.offset-m8{margin-left:66.66667%}.row .col.offset-m9{margin-left:75%}.row .col.offset-m10{margin-left:83.33333%}.row .col.offset-m11{margin-left:91.66667%}.row .col.offset-m12{margin-left:100%}}@media only screen and (min-width: 992px){.row .col.l1{width:8.33333%;margin-left:0}.row .col.l2{width:16.66667%;margin-left:0}.row .col.l3{width:25%;margin-left:0}.row .col.l4{width:33.33333%;margin-left:0}.row .col.l5{width:41.66667%;margin-left:0}.row .col.l6{width:50%;margin-left:0}.row .col.l7{width:58.33333%;margin-left:0}.row .col.l8{width:66.66667%;margin-left:0}.row .col.l9{width:75%;margin-left:0}.row .col.l10{width:83.33333%;margin-left:0}.row .col.l11{width:91.66667%;margin-left:0}.row .col.l12{width:100%;margin-left:0}.row .col.offset-l1{margin-left:8.33333%}.row .col.offset-l2{margin-left:16.66667%}.row .col.offset-l3{margin-left:25%}.row .col.offset-l4{margin-left:33.33333%}.row .col.offset-l5{margin-left:41.66667%}.row .col.offset-l6{margin-left:50%}.row .col.offset-l7{margin-left:58.33333%}.row .col.offset-l8{margin-left:66.66667%}.row .col.offset-l9{margin-left:75%}.row .col.offset-l10{margin-left:83.33333%}.row .col.offset-l11{margin-left:91.66667%}.row .col.offset-l12{margin-left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}nav a{color:#fff}nav a.button-collapse{float:left;position:relative;z-index:1}nav a.button-collapse i{font-size:2.7rem;height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0}@media only screen and (max-width: 992px){nav .brand-logo{left:0;width:100%;text-align:center;z-index:0}}nav .brand-logo.right{right:0.5rem;padding:0}nav ul{margin:0;float:right}nav ul li{float:left;padding:0px;-webkit-transition:background-color 0.3s;-moz-transition:background-color 0.3s;-o-transition:background-color 0.3s;-ms-transition:background-color 0.3s;transition:background-color 0.3s}nav ul li:hover,nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{font-size:1rem;color:#fff;display:block;padding:0px 15px}nav ul.left{float:left}@media only screen and (min-width: 600px){nav,nav .nav-wrapper i,nav a.button-collapse i{height:64px;line-height:64px}nav .nav-wrapper i{font-size:2rem}}@font-face{font-family:"Roboto";src:url(../font/roboto/Roboto-Thin.ttf);font-weight:200}@font-face{font-family:"Roboto";src:url(../font/roboto/Roboto-Light.ttf);font-weight:300}@font-face{font-family:"Roboto";src:url(../font/roboto/Roboto-Regular.ttf);font-weight:400}@font-face{font-family:"Roboto";src:url(../font/roboto/Roboto-Medium.ttf);font-weight:500}@font-face{font-family:"Roboto";src:url(../font/roboto/Roboto-Bold.ttf);font-weight:700}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:#212121}@media only screen and (min-width: 0){html{font-size:14px}}@media only screen and (min-width: 992px){html{font-size:14.5px}}@media only screen and (min-width: 1200px){html{font-size:15px}}h1,h2,h3,h4,h5,h6{font-weight:400}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:4.62rem;margin:2.1rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:3.916rem;margin:1.78rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:3.212rem;margin:1.46rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:2.508rem;margin:1.14rem 0 0.912rem 0}h5{font-size:1.64rem;line-height:1.804rem;margin:0.82rem 0 0.656rem 0}h6{font-size:1rem;line-height:1.1rem;margin:0.5rem 0 0.4rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light{font-weight:300}.flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width: 0px){.flow-text{line-height:0.8rem}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width: 30px){.flow-text{line-height:0.904rem}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width: 60px){.flow-text{line-height:1.008rem}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width: 90px){.flow-text{line-height:1.112rem}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width: 120px){.flow-text{line-height:1.216rem}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width: 150px){.flow-text{line-height:1.32rem}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width: 180px){.flow-text{line-height:1.424rem}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width: 210px){.flow-text{line-height:1.528rem}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width: 240px){.flow-text{line-height:1.632rem}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width: 270px){.flow-text{line-height:1.736rem}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width: 300px){.flow-text{line-height:1.84rem}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width: 330px){.flow-text{line-height:1.944rem}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width: 360px){.flow-text{line-height:2.048rem}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width: 390px){.flow-text{line-height:2.152rem}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width: 420px){.flow-text{line-height:2.256rem}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width: 450px){.flow-text{line-height:2.36rem}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width: 480px){.flow-text{line-height:2.464rem}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width: 510px){.flow-text{line-height:2.568rem}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width: 540px){.flow-text{line-height:2.672rem}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width: 570px){.flow-text{line-height:2.776rem}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem}}@media only screen and (min-width: 600px){.flow-text{line-height:2.88rem}}.card-panel{padding:1rem;margin:8px 0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background-clip:padding-box}.card{margin-top:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background-clip:padding-box}.card span.card-title{color:#fff;font-size:24px;font-weight:300}.card.small{height:300px;position:relative}.card.small .card-image{overflow:hidden;height:150px}.card.small .card-content{overflow:hidden;height:150px}.card.small .card-action{position:absolute;bottom:0;left:0;right:0}.card .card-image{position:relative;overflow:hidden}.card .card-image img{-webkit-border-radius:2px 2px 0 0;-moz-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;background-clip:padding-box;position:relative;left:0;right:0;top:0;bottom:0;width:100%;z-index:-1}.card .card-image span.card-title{position:absolute;bottom:0;left:0;padding:16px}.card .card-content{padding:16px;-webkit-border-radius:0 0 2px 2px;-moz-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background-clip:padding-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.card .card-content p{margin:0;color:inherit}.card .card-content span.card-title{line-height:48px}.card .card-action{border-top:1px solid rgba(160,160,160,0.2);padding:16px}.card .card-action a{color:#ffab40;margin-right:16px;-webkit-transition:color 0.3s ease;-moz-transition:color 0.3s ease;-o-transition:color 0.3s ease;-ms-transition:color 0.3s ease;transition:color 0.3s ease;text-transform:uppercase}.card .card-action a:hover{color:#ffd8a6}#toast-container{display:block;position:fixed}@media only screen and (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media only screen and (min-width: 600px) and (max-width: 992px){#toast-container{min-width:30%;left:5%;bottom:7%}}@media only screen and (min-width: 992px){#toast-container{min-width:8%;top:10%;right:7%}}.toast{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background-clip:padding-box;top:0px;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:48px;line-height:48px;background-color:#323232;padding:0px 24px;display:block}.toast.rounded{border-radius:24px}@media only screen and (max-width: 600px){.toast{width:100%}}@media only screen and (min-width: 600px) and (max-width: 992px){.toast{float:left}}@media only screen and (min-width: 992px){.toast{float:right}}.toast span{padding:0px;font-size:1.1rem;font-weight:300;color:#FFF;text-align:center}ul.tabs{position:relative;height:48px;background-color:#FFF;margin:0 auto;width:100%;white-space:nowrap}ul.tabs li.tab{display:block;float:left;text-align:center;background-color:#fff;line-height:48px;height:48px;padding:0 20px;margin:0;text-transform:uppercase;letter-spacing:.8px;width:15%}@media only screen and (min-width: 992px){ul.tabs li.tab{max-width:25%}}ul.tabs li.tab a{color:#ee6e73;display:block;width:100%;height:100%;-webkit-transition:color 0.28s ease;-moz-transition:color 0.28s ease;-o-transition:color 0.28s ease;-ms-transition:color 0.28s ease;transition:color 0.28s ease}ul.tabs li.tab a:hover{color:#f8c1c3}ul.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#ee6e73}ul.tabs li.tab{padding:0}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:1000;background-color:transparent;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#fff;height:1rem;line-height:1rem;max-width:200px;opacity:0;display:none;position:absolute;text-align:center;overflow:hidden;left:0;top:0}.backdrop{position:absolute;opacity:0;display:none;height:7px;width:14px;-webkit-border-radius:0 0 14px 14px;-moz-border-radius:0 0 14px 14px;border-radius:0 0 14px 14px;background-clip:padding-box;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 10%;-moz-transform-origin:50% 10%;-ms-transform-origin:50% 10%;-o-transform-origin:50% 10%;transform-origin:50% 10%}.btn,.btn-large,.btn-flat{display:inline-block;height:36px;margin-bottom:15px;padding:0 2rem;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background-clip:padding-box;line-height:36px;text-transform:uppercase;border:none}.btn.disabled,.disabled.btn-large,.btn-floating.disabled,.btn-large.disabled,.btn:disabled,.btn-large:disabled,.btn-large:disabled,.btn-floating:disabled{background-color:#DFDFDF;box-shadow:none;color:#9F9F9F}.btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover{background-color:#DFDFDF;color:#9F9F9F}.btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn,.btn-large{text-decoration:none;color:#FFFFFF;background-color:#2196F3;text-align:center;letter-spacing:.8px;-webkit-transition:0.2s ease-out;-moz-transition:0.2s ease-out;-o-transition:0.2s ease-out;-ms-transition:0.2s ease-out;transition:0.2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover{background-color:#39a1f4}.btn-floating{display:inline-block;position:relative;z-index:1;width:40px;height:40px;line-height:40px;padding:0;background-color:#2196F3;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background-clip:padding-box;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;-ms-transition:0.3s;transition:0.3s;cursor:pointer}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px}.btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.btn-flat.disabled{color:#b3b3b3}.btn-large{height:54px;line-height:56px}.btn-large i{font-size:1.6rem}.dropdown-content{display:none;position:absolute;background-color:#FFFFFF;margin:0px;min-width:100px;z-index:1000}.dropdown-content li{cursor:pointer;font-size:1.2rem;color:#212121;padding:1rem 1rem}@media only screen and (min-width: 1200px){.dropdown-content li:hover{background-color:rgba(0,0,0,0.07)}}/*! + * Waves v0.5.3 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.waves-effect .waves-ripple{position:absolute;pointer-events:none;border-radius:50%;width:20px;height:20px;opacity:0;background-color:rgba(0,0,0,0.2);-webkit-transition:all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);-moz-transition:all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);-o-transition:all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);-ms-transition:all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);transition:all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.35)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.65)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.65)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.65)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.65)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.65)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.65)}.waves-notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.waves-button,.waves-icon{-webkit-transform:translateZ(0);-webkit-image-mask:-webkit-radial-gradient(circle, transparent, transparent)}.waves-button,.waves-button:hover,.waves-button:visited,.waves-button:link,.waves-button-input{white-space:nowrap;vertical-align:middle;cursor:pointer;border:none;font-size:14px;text-align:center;text-decoration:none;z-index:1}.waves-button-input{margin:0;padding:10px 15px}.waves-input-wrapper{border-radius:2px;vertical-align:bottom}.waves-input-wrapper.waves-button{padding:0}.waves-input-wrapper .waves-button-input{position:absolute;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%}.waves-float{-webkit-mask-image:none;-webkit-box-shadow:0px 1px 1.5px 1px rgba(0,0,0,0.12);-moz-box-shadow:0px 1px 1.5px 1px rgba(0,0,0,0.12);box-shadow:0px 1px 1.5px 1px rgba(0,0,0,0.12)}.waves-float:active{-webkit-box-shadow:0px 8px 20px 1px rgba(0,0,0,0.3);-moz-box-shadow:0px 8px 20px 1px rgba(0,0,0,0.3);box-shadow:0px 8px 20px 1px rgba(0,0,0,0.3)}.waves-block{display:block}.modal{display:none;position:fixed;background-color:#eee;padding:24px;max-height:70%;max-width:55%;left:0;right:0;margin:auto;overflow-y:auto;z-index:1000;-webkit-border-radius:"2px";-moz-border-radius:"2px";border-radius:"2px";background-clip:padding-box;-webkit-transform:translate(0);-moz-transform:translate(0);-ms-transform:translate(0);-o-transform:translate(0);transform:translate(0);will-change:top, opacity}@media only screen and (max-width: 992px){.modal{max-width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}#lean-overlay{position:fixed;z-index:999;top:0;left:0;bottom:0;right:0;height:115%;width:100%;background:#000;display:none;will-change:opacity}.modal-action{margin-top:10px;margin-bottom:0px}ul.collapsible{border-top:1px solid #eee}.collapsible-header{display:block;cursor:pointer;height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:15px}.collapsible-body{overflow:hidden;display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.collapsible-body p{margin:0;padding:2rem}.materialboxed{cursor:zoom-in;position:relative}.materialboxed:hover{will-change:left, top}.materialboxed.active{cursor:zoom-out}#materialbox-overlay{position:fixed;top:0px;left:0px;background-color:#292929;z-index:999}label{font-size:0.8rem;color:#bdbdbd}.input-field{position:relative}.input-field label{color:#bdbdbd;position:absolute;top:.8rem;left:.5rem;font-size:1rem;-webkit-transition:0.2s ease-out;-moz-transition:0.2s ease-out;-o-transition:0.2s ease-out;-ms-transition:0.2s ease-out;transition:0.2s ease-out}.input-field label.active{font-size:0.8rem;-webkit-transform:translateY(-130%);-moz-transform:translateY(-130%);-ms-transform:translateY(-130%);-o-transform:translateY(-130%);transform:translateY(-130%)}.input-field input[type=text]:focus+label,.input-field input[type=password]:focus+label,.input-field input[type=email]:focus+label,.input-field input[type=date]:focus+label,.input-field textarea:focus+label{color:#03a9f4}.input-field input[type=text]:valid,.input-field input[type=password]:valid,.input-field input[type=email]:valid,.input-field input[type=date]:valid,.input-field textarea:valid{border-bottom:1px solid #4CAF50;-webkit-box-shadow:0 1px 0 0 #4CAF50;-moz-box-shadow:0 1px 0 0 #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input[type=text],input[type=password],input[type=email],input[type=date],textarea{background-color:transparent;border:none;border-bottom:1px solid #bdbdbd;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;-ms-transition:0.3s;transition:0.3s}input[type=text]:focus,input[type=password]:focus,input[type=email]:focus,input[type=date]:focus,textarea:focus{border-bottom:1px solid #03a9f4;-webkit-box-shadow:0 1px 0 0 #03a9f4;-moz-box-shadow:0 1px 0 0 #03a9f4;box-shadow:0 1px 0 0 #03a9f4}textarea{overflow-y:hidden;padding:1.6rem 0;resize:none}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;left:-9999px}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="radio"]+label:before,[type="radio"]+label:after{content:'';position:absolute;left:0px;top:0px;margin:4px;width:12px;height:12px;z-index:0;-webkit-transition:0.28s ease;-moz-transition:0.28s ease;-o-transition:0.28s ease;-ms-transition:0.28s ease;transition:0.28s ease}[type="radio"]:not(:checked)+label:before{border-radius:50%;border:2px solid #5a5a5a}[type="radio"]:not(:checked)+label:after{border-radius:50%;border:2px solid #5a5a5a;z-index:-1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}[type="radio"]:checked+label:before{border-radius:50%;border:2px solid transparent}[type="radio"]:checked+label:after{border-radius:50%;border:2px solid #0f9d58;background-color:#0f9d58;z-index:0;-webkit-transform:scale(1.02);-moz-transform:scale(1.02);-ms-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:#7c7c7c;border-color:#7c7c7c}[type="radio"]:disabled+label{color:#7c7c7c}[type="radio"]:disabled:not(:checked)+label:hover:before{border-color:#7c7c7c}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0px}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;left:-9999px}[type="checkbox"]:not(:checked)+label,[type="checkbox"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="checkbox"]+label:before{content:'';position:absolute;margin-top:2px;left:0;z-index:0;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;background-clip:padding-box;-webkit-transition:0.2s;-moz-transition:0.2s;-o-transition:0.2s;-ms-transition:0.2s;transition:0.2s}[type="checkbox"]:not(:checked)+label:before{top:0px;width:14px;height:14px;border:2px solid #5a5a5a}[type="checkbox"]:checked+label:before{left:-3px;top:-4px;width:8px;height:18px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #0f9d58;border-bottom:2px solid #0f9d58;-webkit-transform:rotateZ(40deg);-moz-transform:rotateZ(40deg);-ms-transform:rotateZ(40deg);-o-transform:rotateZ(40deg);transform:rotateZ(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type="checkbox"]:disabled:not(:checked)+label:before,[type="checkbox"]:disabled:checked+label:before{top:0;left:0;box-shadow:none;background-color:#7c7c7c;width:14px;height:14px;border:2px solid #7c7c7c;-webkit-transform:rotateZ(0deg);-moz-transform:rotateZ(0deg);-ms-transform:rotateZ(0deg);-o-transform:rotateZ(0deg);transform:rotateZ(0deg)}[type="checkbox"]:disabled+label{color:#7c7c7c}[type="checkbox"]:disabled:not(:checked)+label:hover:before{border-color:#7c7c7c}.select-wrapper span.select-dropdown{position:relative;cursor:pointer;color:#444;background-color:transparent;border:none;border-bottom:1px solid #bdbdbd;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;display:block;position:relative}.select-wrapper span.select-dropdown:after{position:absolute;right:0;font-size:23px}select{display:none}select.disabled{display:block}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0px;padding:0}input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#0f9d58;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#0f9d58;font-size:0px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]:focus{outline:none}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#0f9d58;transform-origin:50% 50%;margin:-5px 0 0 0;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;-ms-transition:0.3s;transition:0.3s}.range-field.active input[type=range]::-webkit-slider-thumb{height:0;width:0}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#0f9d58;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid white;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#0f9d58}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}select{background-color:#fffafa;width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}ul.table-of-contents.fixed{position:fixed}ul.table-of-contents li{padding:2px 0}ul.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}ul.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ea4a4f}ul.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ea4a4f}@media only screen and (max-width: 992px){ul.side-nav{position:fixed;width:240px;left:-240px;top:0;height:120%;background-color:#FFF;z-index:1000;-webkit-box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);-moz-box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);will-change:left}ul.side-nav li{float:none;padding:0 15px}ul.side-nav li:hover,ul.side-nav li.active{background-color:#ddd}ul.side-nav a{color:#444}#front-page-nav ul.side-nav li{float:none;padding:0 15px}#front-page-nav ul.side-nav li:hover{background-color:#ddd}#front-page-nav ul.side-nav li .active{background-color:transparent}#front-page-nav ul.side-nav a{color:#444}}#sidenav-overlay{position:absolute;top:0px;left:0px;right:0px;bottom:0px;background-color:rgba(0,0,0,0.5);z-index:999;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0}.spinner-blue{border-color:#4285f4}.spinner-red{border-color:#db4437}.spinner-yellow{border-color:#f4b400}.spinner-green{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;box-sizing:border-box;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;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}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;-webkit-transition:background 0.15s ease-out, top 0s 0.15s;-moz-transition:background 0.15s ease-out, top 0s 0.15s;transition:background 0.15s ease-out, top 0s 0.15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;max-width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-webkit-transition:all 0.15s ease-out;-moz-transition:all 0.15s ease-out;transition:all 0.15s ease-out}@media (min-height: 28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height: 40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height: 28.875em){.picker__wrap{display:block}}.picker__box{background:#ffffff;display:table-cell;vertical-align:middle}@media (min-height: 28.875em){.picker__box{display:block;border:1px solid #777777;border-top-color:#898989;border-bottom-width:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;-webkit-box-shadow:0 12px 36px 16px rgba(0,0,0,0.24);-moz-box-shadow:0 12px 36px 16px rgba(0,0,0,0.24);box-shadow:0 12px 36px 16px rgba(0,0,0,0.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,0.32);-webkit-transition:background 0.15s ease-out;-moz-transition:background 0.15s ease-out;transition:background 0.15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height: 35.875em){.picker--opened .picker__frame{top:10%;bottom:20% auto}}.picker__input.picker__input--active{border-color:#E3F2FD}.picker__frame{margin:0 auto;max-width:325px}@media (min-height: 38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:.5em;margin-left:.25em;margin-right:.25em}@media (min-width: 24.5em){.picker__select--month,.picker__select--year{margin-top:-0.5em}}.picker__select--month{width:35%}.picker__select--year{width:22.5%}.picker__select--month:focus,.picker__select--year:focus{border-color:#0089ec}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-0.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#b1dcfb}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em;margin-bottom:.5em}.picker__table th,.picker__table td{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999999;font-weight:500}@media (min-height: 33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaaaaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer;color:#000000}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.75);-moz-transform:scale(0.75);-ms-transform:scale(0.75);-o-transform:scale(0.75);transform:scale(0.75);background:#0089ec;color:#ffffff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbbbbb}.picker__footer{text-align:center}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #ffffff;background:#ffffff;font-size:.8em;padding:.66em 0;font-weight:bold;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus,.picker__button--close:focus{background:#b1dcfb;border-color:#0089ec;outline:none}.picker__button--today:before,.picker__button--clear:before,.picker__button--close:before{position:relative;display:inline-block;height:0}.picker__button--today:before,.picker__button--clear:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-0.05em;width:0;border-top:0.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-0.25em;width:.66em;border-top:3px solid #ee2200}.picker__button--close:before{content:"\D7";top:-0.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaaaaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#26a69a;color:#fff;padding-bottom:15px;font-weight:300}.picker__weekday-display{background-color:#00897b;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:#80cbc4}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker--focused .picker__day--highlighted{color:#26a69a}.picker__weekday{font-size:.9rem}.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.9);-moz-transform:scale(0.9);-ms-transform:scale(0.9);-o-transform:scale(0.9);transform:scale(0.9);background-color:#009688;color:#ffffff}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;color:#26a69a}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:0.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:0.75em solid #676767}.picker__list{list-style:none;padding:0.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;margin-bottom:-1px;position:relative;background:#ffffff;padding:.75em 1.25em}@media (min-height: 46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--highlighted{border-color:#0089ec;z-index:10}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{cursor:pointer;color:#000000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#ffffff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default;border-color:#dddddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000000;background:#b1dcfb;background:#ee2200;border-color:#ee2200;cursor:pointer;color:#ffffff;outline:none}.picker--time .picker__button--clear:before{top:-0.25em;color:#666;font-size:1.25em;font-weight:bold}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#ffffff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height: 40.125em){.picker--time .picker__box{margin-bottom:5em}} diff --git a/dist/font/material-design-icons/LICENSE.txt b/dist/font/material-design-icons/LICENSE.txt new file mode 100644 index 0000000000..542f6537df --- /dev/null +++ b/dist/font/material-design-icons/LICENSE.txt @@ -0,0 +1,428 @@ +https://github.com/google/material-design-icons/blob/master/LICENSE +https://github.com/FezVrasta/bootstrap-material-design/blob/master/fonts/LICENSE.txt + +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public licenses. +Notwithstanding, Creative Commons may elect to apply one of its public +licenses to material it publishes and in those instances will be +considered the "Licensor." Except for the limited purpose of indicating +that material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the public +licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/dist/font/material-design-icons/Material-Design-Icons.eot b/dist/font/material-design-icons/Material-Design-Icons.eot new file mode 100644 index 0000000000..a097ba68da Binary files /dev/null and b/dist/font/material-design-icons/Material-Design-Icons.eot differ diff --git a/dist/font/material-design-icons/Material-Design-Icons.svg b/dist/font/material-design-icons/Material-Design-Icons.svg new file mode 100644 index 0000000000..0b2c2c2403 --- /dev/null +++ b/dist/font/material-design-icons/Material-Design-Icons.svg @@ -0,0 +1,751 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/font/material-design-icons/Material-Design-Icons.ttf b/dist/font/material-design-icons/Material-Design-Icons.ttf new file mode 100644 index 0000000000..f0c07f7a91 Binary files /dev/null and b/dist/font/material-design-icons/Material-Design-Icons.ttf differ diff --git a/dist/font/material-design-icons/Material-Design-Icons.woff b/dist/font/material-design-icons/Material-Design-Icons.woff new file mode 100644 index 0000000000..e06f547cd6 Binary files /dev/null and b/dist/font/material-design-icons/Material-Design-Icons.woff differ diff --git a/dist/font/roboto/Roboto-Bold.ttf b/dist/font/roboto/Roboto-Bold.ttf new file mode 100644 index 0000000000..68822caf24 Binary files /dev/null and b/dist/font/roboto/Roboto-Bold.ttf differ diff --git a/dist/font/roboto/Roboto-Light.ttf b/dist/font/roboto/Roboto-Light.ttf new file mode 100644 index 0000000000..aa45340757 Binary files /dev/null and b/dist/font/roboto/Roboto-Light.ttf differ diff --git a/dist/font/roboto/Roboto-Medium.ttf b/dist/font/roboto/Roboto-Medium.ttf new file mode 100644 index 0000000000..a3c1a1f170 Binary files /dev/null and b/dist/font/roboto/Roboto-Medium.ttf differ diff --git a/dist/font/roboto/Roboto-Regular.ttf b/dist/font/roboto/Roboto-Regular.ttf new file mode 100644 index 0000000000..0e58508a64 Binary files /dev/null and b/dist/font/roboto/Roboto-Regular.ttf differ diff --git a/dist/font/roboto/Roboto-Thin.ttf b/dist/font/roboto/Roboto-Thin.ttf new file mode 100644 index 0000000000..8779333b1a Binary files /dev/null and b/dist/font/roboto/Roboto-Thin.ttf differ diff --git a/dist/js/materialize.js b/dist/js/materialize.js new file mode 100644 index 0000000000..d6048d7c5f --- /dev/null +++ b/dist/js/materialize.js @@ -0,0 +1,6781 @@ +/* + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Uses the built in easing capabilities added In jQuery 1.1 + * to offer multiple easing options + * + * TERMS OF USE - jQuery Easing + * + * Open source under the BSD License. + * + * Copyright © 2008 George McGinley Smith + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +// t: current time, b: begInnIng value, c: change In value, d: duration +jQuery.easing['jswing'] = jQuery.easing['swing']; + +jQuery.extend( jQuery.easing, +{ + def: 'easeOutQuad', + swing: function (x, t, b, c, d) { + //alert(jQuery.easing.default); + return jQuery.easing[jQuery.easing.def](x, t, b, c, d); + }, + easeInQuad: function (x, t, b, c, d) { + return c*(t/=d)*t + b; + }, + easeOutQuad: function (x, t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + }, + easeInOutQuad: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return -c/2 * ((--t)*(t-2) - 1) + b; + }, + easeInCubic: function (x, t, b, c, d) { + return c*(t/=d)*t*t + b; + }, + easeOutCubic: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t + 1) + b; + }, + easeInOutCubic: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t + b; + return c/2*((t-=2)*t*t + 2) + b; + }, + easeInQuart: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t + b; + }, + easeOutQuart: function (x, t, b, c, d) { + return -c * ((t=t/d-1)*t*t*t - 1) + b; + }, + easeInOutQuart: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t + b; + return -c/2 * ((t-=2)*t*t*t - 2) + b; + }, + easeInQuint: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t*t + b; + }, + easeOutQuint: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t*t*t + 1) + b; + }, + easeInOutQuint: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; + return c/2*((t-=2)*t*t*t*t + 2) + b; + }, + easeInSine: function (x, t, b, c, d) { + return -c * Math.cos(t/d * (Math.PI/2)) + c + b; + }, + easeOutSine: function (x, t, b, c, d) { + return c * Math.sin(t/d * (Math.PI/2)) + b; + }, + easeInOutSine: function (x, t, b, c, d) { + return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; + }, + easeInExpo: function (x, t, b, c, d) { + return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; + }, + easeOutExpo: function (x, t, b, c, d) { + return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; + }, + easeInOutExpo: function (x, t, b, c, d) { + if (t==0) return b; + if (t==d) return b+c; + if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; + return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; + }, + easeInCirc: function (x, t, b, c, d) { + return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; + }, + easeOutCirc: function (x, t, b, c, d) { + return c * Math.sqrt(1 - (t=t/d-1)*t) + b; + }, + easeInOutCirc: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; + return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; + }, + easeInElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + }, + easeOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; + }, + easeInOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; + }, + easeInBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*(t/=d)*t*((s+1)*t - s) + b; + }, + easeOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; + }, + easeInOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; + return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; + }, + easeInBounce: function (x, t, b, c, d) { + return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; + }, + easeOutBounce: function (x, t, b, c, d) { + if ((t/=d) < (1/2.75)) { + return c*(7.5625*t*t) + b; + } else if (t < (2/2.75)) { + return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; + } else if (t < (2.5/2.75)) { + return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; + } else { + return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; + } + }, + easeInOutBounce: function (x, t, b, c, d) { + if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; + return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; + } +}); + +/* + * + * TERMS OF USE - EASING EQUATIONS + * + * Open source under the BSD License. + * + * Copyright © 2001 Robert Penner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */;/*! VelocityJS.org (1.1.0). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ +/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ +!function(e){function t(e){var t=e.length,r=$.type(e);return"function"===r||$.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===r||0===t||"number"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var $=function(e,t){return new $.fn.init(e,t)};$.isWindow=function(e){return null!=e&&e==e.window},$.type=function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?a[o.call(e)]||"object":typeof e},$.isArray=Array.isArray||function(e){return"array"===$.type(e)},$.isPlainObject=function(e){var t;if(!e||"object"!==$.type(e)||e.nodeType||$.isWindow(e))return!1;try{if(e.constructor&&!n.call(e,"constructor")&&!n.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}for(t in e);return void 0===t||n.call(e,t)},$.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},$.data=function(e,t,a){if(void 0===a){var n=e[$.expando],o=n&&r[n];if(void 0===t)return o;if(o&&t in o)return o[t]}else if(void 0!==t){var n=e[$.expando]||(e[$.expando]=++$.uuid);return r[n]=r[n]||{},r[n][t]=a,a}},$.removeData=function(e,t){var a=e[$.expando],n=a&&r[a];n&&$.each(t,function(e,t){delete n[t]})},$.extend=function(){var e,t,r,a,n,o,i=arguments[0]||{},s=1,l=arguments.length,u=!1;for("boolean"==typeof i&&(u=i,i=arguments[s]||{},s++),"object"!=typeof i&&"function"!==$.type(i)&&(i={}),s===l&&(i=this,s--);l>s;s++)if(null!=(n=arguments[s]))for(a in n)e=i[a],r=n[a],i!==r&&(u&&r&&($.isPlainObject(r)||(t=$.isArray(r)))?(t?(t=!1,o=e&&$.isArray(e)?e:[]):o=e&&$.isPlainObject(e)?e:{},i[a]=$.extend(u,o,r)):void 0!==r&&(i[a]=r));return i},$.queue=function(e,r,a){function n(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,"string"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){r=(r||"fx")+"queue";var o=$.data(e,r);return a?(!o||$.isArray(a)?o=$.data(e,r,n(a)):o.push(a),o):o||[]}},$.dequeue=function(e,t){$.each(e.nodeType?[e]:e,function(e,r){t=t||"fx";var a=$.queue(r,t),n=a.shift();"inprogress"===n&&(n=a.shift()),n&&("fx"===t&&a.unshift("inprogress"),n.call(r,function(){$.dequeue(r,t)}))})},$.fn=$.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error("Not a DOM node.")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeType.toLowerCase&&"static"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),r=this.offset(),a=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:$(e).offset();return r.top-=parseFloat(t.style.marginTop)||0,r.left-=parseFloat(t.style.marginLeft)||0,e.style&&(a.top+=parseFloat(e.style.borderTopWidth)||0,a.left+=parseFloat(e.style.borderLeftWidth)||0),{top:r.top-a.top,left:r.left-a.left}}};var r={};$.expando="velocity"+(new Date).getTime(),$.uuid=0;for(var a={},n=a.hasOwnProperty,o=a.toString,i="Boolean Number String Function Array Date RegExp Object Error".split(" "),s=0;sn;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S="Float32Array"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if("number"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T="generateBezier("+[e,r,a,n]+")";return C.toString=function(){return T},C}function u(e,t){var r=e;return g.isString(e)?v.Easings[e]||(r=!1):r=g.isArray(e)&&1===e.length?s.apply(null,e):g.isArray(e)&&2===e.length?b.apply(null,e.concat([t])):g.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=v.Easings[v.defaults.easing]?v.defaults.easing:h),r}function c(e){if(e)for(var t=(new Date).getTime(),r=0,n=v.State.calls.length;n>r;r++)if(v.State.calls[r]){var o=v.State.calls[r],s=o[0],l=o[2],u=o[3],f=!!u;u||(u=v.State.calls[r][3]=t-16);for(var d=Math.min((t-u)/l.duration,1),m=0,y=s.length;y>m;m++){var h=s[m],b=h.element;if(i(b)){var S=!1;if(l.display!==a&&null!==l.display&&"none"!==l.display){if("flex"===l.display){var w=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];$.each(w,function(e,t){x.setPropertyValue(b,"display",t)})}x.setPropertyValue(b,"display",l.display)}l.visibility!==a&&"hidden"!==l.visibility&&x.setPropertyValue(b,"visibility",l.visibility);for(var V in h)if("element"!==V){var C=h[V],T,k=g.isString(C.easing)?v.Easings[C.easing]:C.easing;if(1===d)T=C.endValue;else if(T=C.startValue+(C.endValue-C.startValue)*k(d),!f&&T===C.currentValue)continue;if(C.currentValue=T,x.Hooks.registered[V]){var A=x.Hooks.getRoot(V),F=i(b).rootPropertyValueCache[A];F&&(C.rootPropertyValue=F)}var E=x.setPropertyValue(b,V,C.currentValue+(0===parseFloat(T)?"":C.unitType),C.rootPropertyValue,C.scrollData);x.Hooks.registered[V]&&(i(b).rootPropertyValueCache[A]=x.Normalizations.registered[A]?x.Normalizations.registered[A]("extract",null,E[1]):E[1]),"transform"===E[0]&&(S=!0)}l.mobileHA&&i(b).transformCache.translate3d===a&&(i(b).transformCache.translate3d="(0px, 0px, 0px)",S=!0),S&&x.flushTransformCache(b)}}l.display!==a&&"none"!==l.display&&(v.State.calls[r][2].display=!1),l.visibility!==a&&"hidden"!==l.visibility&&(v.State.calls[r][2].visibility=!1),l.progress&&l.progress.call(o[1],o[1],d,Math.max(0,u+l.duration-t),u),1===d&&p(r)}v.State.isTicking&&P(c)}function p(e,t){if(!v.State.calls[e])return!1;for(var r=v.State.calls[e][0],n=v.State.calls[e][1],o=v.State.calls[e][2],s=v.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||("none"===o.display&&x.setPropertyValue(p,"display",o.display),"hidden"===o.visibility&&x.setPropertyValue(p,"visibility",o.visibility)),o.loop!==!0&&($.queue(p)[1]===a||!/\.velocityQueueEntryFlag/i.test($.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var f=!1;$.each(x.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp("^\\("+r+"[^.]").test(n)&&(f=!0,delete i(p).transformCache[t])}),o.mobileHA&&(f=!0,delete i(p).transformCache.translate3d),f&&x.flushTransformCache(p),x.Values.removeClass(p,"velocity-animating")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(d){setTimeout(function(){throw d},1)}s&&o.loop!==!0&&s(n),o.loop!==!0||t||($.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360)}),v(p,"reverse",{loop:!0,delay:o.delay})),o.queue!==!1&&$.dequeue(p,o.queue)}v.State.calls[e]=!1;for(var g=0,m=v.State.calls.length;m>g;g++)if(v.State.calls[g]!==!1){l=!0;break}l===!1&&(v.State.isTicking=!1,delete v.State.calls,v.State.calls=[])}var f=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement("div");if(t.innerHTML="",t.getElementsByTagName("span").length)return t=null,e}return a}(),d=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r=(new Date).getTime(),a;return a=Math.max(0,16-(r-e)),e=r+a,setTimeout(function(){t(r+a)},a)}}(),g={isString:function(e){return"string"==typeof e},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return"object"==typeof e&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||"object"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},$,m=!1;if(e.fn&&e.fn.jquery?($=e,m=!0):$=t.Velocity.Utilities,8>=f&&!m)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=f)return void(jQuery.fn.velocity=jQuery.fn.animate);var y=400,h="swing",v={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:$,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:y,easing:h,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){$.data(e,"velocity",{isSVG:g.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:1,patch:0},debug:!1};t.pageYOffset!==a?(v.State.scrollAnchor=t,v.State.scrollPropertyLeft="pageXOffset",v.State.scrollPropertyTop="pageYOffset"):(v.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,v.State.scrollPropertyLeft="scrollLeft",v.State.scrollPropertyTop="scrollTop");var b=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o={x:-1,v:0,tension:null,friction:null},i=[0],s=0,l=1e-4,u=.016,c,p,f;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,o.tension=e,o.friction=t,c=null!==n,c?(s=a(e,t),p=s/n*u):p=u;;)if(f=r(f||o,p),i.push(1+f.x),s+=16,!(Math.abs(f.x)>l&&Math.abs(f.v)>l))break;return c?function(e){return i[e*(i.length-1)|0]}:s}}();v.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},$.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,t){v.Easings[t[0]]=l.apply(null,t[1])});var x=v.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e=f)switch(e){case"name":return"filter";case"extract":var a=r.toString().match(/alpha\(opacity=(.*)\)/i);return r=a?a[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(r)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(r),10)+")"}else switch(e){case"name":return"opacity";case"extract":return r;case"inject":return r}}},register:function(){9>=f||v.State.isGingerbread||(x.Lists.transformsBase=x.Lists.transformsBase.concat(x.Lists.transforms3D));for(var e=0;en&&(n=1),o=!/(\d)$/i.test(n);break;case"skew":o=!/(deg|\d)$/i.test(n);break;case"rotate":o=!/(deg|\d)$/i.test(n)}return o||(i(r).transformCache[t]="("+n+")"),i(r).transformCache[t]}}}();for(var e=0;e=f||3!==o.split(" ").length||(o+=" 1"),o;case"inject":return 8>=f?4===n.split(" ").length&&(n=n.split(/\s+/).slice(0,3).join(" ")):3===n.split(" ").length&&(n+=" 1"),(8>=f?"rgb":"rgba")+"("+n.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(f||v.State.isAndroid&&!v.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(e)},prefixCheck:function(e){if(v.State.prefixMatches[e])return[v.State.prefixMatches[e],!0];for(var t=["","Webkit","Moz","ms","O"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\w/,function(e){return e.toUpperCase()}),g.isString(v.State.prefixElement.style[n]))return v.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,a;return e=e.replace(t,function(e,t,r,a){return t+t+r+r+a+a}),a=r.exec(e),a?[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?"":"px"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":"block"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?" ":"")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&x.setPropertyValue(e,"display","none")}var l=0;if(8>=f)l=$.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===x.getPropertyValue(e,"display")&&(u=!0,x.setPropertyValue(e,"display",x.Values.getDisplayType(e))),!o){if("height"===r&&"border-box"!==x.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(x.getPropertyValue(e,"borderTopWidth"))||0)-(parseFloat(x.getPropertyValue(e,"borderBottomWidth"))||0)-(parseFloat(x.getPropertyValue(e,"paddingTop"))||0)-(parseFloat(x.getPropertyValue(e,"paddingBottom"))||0);return n(),c}if("width"===r&&"border-box"!==x.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(x.getPropertyValue(e,"borderLeftWidth"))||0)-(parseFloat(x.getPropertyValue(e,"borderRightWidth"))||0)-(parseFloat(x.getPropertyValue(e,"paddingLeft"))||0)-(parseFloat(x.getPropertyValue(e,"paddingRight"))||0);return n(),p}}var d;d=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),(f||v.State.isFirefox)&&"borderColor"===r&&(r="borderTopColor"),l=9===f&&"filter"===r?d.getPropertyValue(r):d[r],(""===l||null===l)&&(l=e.style[r]),n()}if("auto"===l&&/^(top|right|bottom|left)$/i.test(r)){var g=s(e,"position");("fixed"===g||"absolute"===g&&/top|left/i.test(r))&&(l=$(e).position()[r]+"px")}return l}var l;if(x.Hooks.registered[r]){var u=r,c=x.Hooks.getRoot(u);n===a&&(n=x.getPropertyValue(e,x.Names.prefixCheck(c)[0])),x.Normalizations.registered[c]&&(n=x.Normalizations.registered[c]("extract",e,n)),l=x.Hooks.extractValue(u,n)}else if(x.Normalizations.registered[r]){var p,d;p=x.Normalizations.registered[r]("name",e),"transform"!==p&&(d=s(e,x.Names.prefixCheck(p)[0]),x.Values.isCSSNullValue(d)&&x.Hooks.templates[r]&&(d=x.Hooks.templates[r][1])),l=x.Normalizations.registered[r]("extract",e,d)}return/^[\d-]/.test(l)||(l=i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r)?/^(height|width)$/i.test(r)?e.getBBox()[r]:e.getAttribute(r):s(e,x.Names.prefixCheck(r)[0])),x.Values.isCSSNullValue(l)&&(l=0),v.debug>=2&&console.log("Get "+r+": "+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if("scroll"===r)o.container?o.container["scroll"+o.direction]=a:"Left"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(x.Normalizations.registered[r]&&"transform"===x.Normalizations.registered[r]("name",e))x.Normalizations.registered[r]("inject",e,a),s="transform",a=i(e).transformCache[r];else{if(x.Hooks.registered[r]){var l=r,u=x.Hooks.getRoot(r);n=n||x.getPropertyValue(e,u),a=x.Hooks.injectValue(l,a,n),r=u}if(x.Normalizations.registered[r]&&(a=x.Normalizations.registered[r]("inject",e,a),r=x.Normalizations.registered[r]("name",e)),s=x.Names.prefixCheck(r)[0],8>=f)try{e.style[s]=a}catch(c){v.debug&&console.log("Browser does not support ["+a+"] for ["+s+"]")}else i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;v.debug>=2&&console.log("Set "+r+" ("+s+"): "+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(x.getPropertyValue(e,t))}var r="";if((f||v.State.isAndroid&&!v.State.isChrome)&&i(e).isSVG){var a={translate:[t("translateX"),t("translateY")],skewX:[t("skewX")],skewY:[t("skewY")],scale:1!==t("scale")?[t("scale"),t("scale")]:[t("scaleX"),t("scaleY")],rotate:[t("rotateZ"),0,0]};$.each(i(e).transformCache,function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),a[e]&&(r+=e+"("+a[e].join(" ")+") ",delete a[e])})}else{var n,o;$.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],"transformPerspective"===t?(o=n,!0):(9===f&&"rotateZ"===t&&(t="rotate"),void(r+=t+n+" "))}),o&&(r="perspective"+o+" "+r)}x.setPropertyValue(e,"transform",r)}};x.Hooks.register(),x.Normalizations.register(),v.hook=function(e,t,r){var n=a;return e=o(e),$.each(e,function(e,o){if(i(o)===a&&v.init(o),r===a)n===a&&(n=v.CSS.getPropertyValue(o,t));else{var s=v.CSS.setPropertyValue(o,t,r);"transform"===s[0]&&v.CSS.flushTransformCache(o),n=s}}),n};var S=function(){function e(){return f?k.promise||null:d}function s(){function e(e){function f(e,t){var r=a,n=a,i=a;return g.isArray(e)?(r=e[0],!g.isArray(e[1])&&/^[\d-]/.test(e[1])||g.isFunction(e[1])||x.RegEx.isHex.test(e[1])?i=e[1]:(g.isString(e[1])&&!x.RegEx.isHex.test(e[1])||g.isArray(e[1]))&&(n=t?e[1]:u(e[1],s.duration),e[2]!==a&&(i=e[2]))):r=e,t||(n=n||s.easing),g.isFunction(r)&&(r=r.call(o,V,w)),g.isFunction(i)&&(i=i.call(o,V,w)),[r||0,n,i]}function d(e,t){var r,a;return a=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,""}),r||(r=x.Values.getUnitType(e)),[a,r]}function m(){var e={myParent:o.parentNode||r.body,position:x.getPropertyValue(o,"position"),fontSize:x.getPropertyValue(o,"fontSize")},a=e.position===L.lastPosition&&e.myParent===L.lastParent,n=e.fontSize===L.lastFontSize;L.lastParent=e.myParent,L.lastPosition=e.position,L.lastFontSize=e.fontSize;var s=100,l={};if(n&&a)l.emToPx=L.lastEmToPx,l.percentToPxWidth=L.lastPercentToPxWidth,l.percentToPxHeight=L.lastPercentToPxHeight;else{var u=i(o).isSVG?r.createElementNS("http://www.w3.org/2000/svg","rect"):r.createElement("div");v.init(u),e.myParent.appendChild(u),$.each(["overflow","overflowX","overflowY"],function(e,t){v.CSS.setPropertyValue(u,t,"hidden")}),v.CSS.setPropertyValue(u,"position",e.position),v.CSS.setPropertyValue(u,"fontSize",e.fontSize),v.CSS.setPropertyValue(u,"boxSizing","content-box"),$.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(e,t){v.CSS.setPropertyValue(u,t,s+"%")}),v.CSS.setPropertyValue(u,"paddingLeft",s+"em"),l.percentToPxWidth=L.lastPercentToPxWidth=(parseFloat(x.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=L.lastPercentToPxHeight=(parseFloat(x.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=L.lastEmToPx=(parseFloat(x.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===L.remToPx&&(L.remToPx=parseFloat(x.getPropertyValue(r.body,"fontSize"))||16),null===L.vwToPx&&(L.vwToPx=parseFloat(t.innerWidth)/100,L.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=L.remToPx,l.vwToPx=L.vwToPx,l.vhToPx=L.vhToPx,v.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),o),l}if(s.begin&&0===V)try{s.begin.call(h,h)}catch(y){setTimeout(function(){throw y},1)}if("scroll"===A){var S=/^x$/i.test(s.axis)?"Left":"Top",C=parseFloat(s.offset)||0,T,F,E;s.container?g.isWrapped(s.container)||g.isNode(s.container)?(s.container=s.container[0]||s.container,T=s.container["scroll"+S],E=T+$(o).position()[S.toLowerCase()]+C):s.container=null:(T=v.State.scrollAnchor[v.State["scrollProperty"+S]],F=v.State.scrollAnchor[v.State["scrollProperty"+("Left"===S?"Top":"Left")]],E=$(o).offset()[S.toLowerCase()]+C),l={scroll:{rootPropertyValue:!1,startValue:T,currentValue:T,endValue:E,unitType:"",easing:s.easing,scrollData:{container:s.container,direction:S,alternateValue:F}},element:o},v.debug&&console.log("tweensContainer (scroll): ",l.scroll,o)}else if("reverse"===A){if(!i(o).tweensContainer)return void $.dequeue(o,s.queue);"none"===i(o).opts.display&&(i(o).opts.display="auto"),"hidden"===i(o).opts.visibility&&(i(o).opts.visibility="visible"),i(o).opts.loop=!1,i(o).opts.begin=null,i(o).opts.complete=null,P.easing||delete s.easing,P.duration||delete s.duration,s=$.extend({},i(o).opts,s);var j=$.extend(!0,{},i(o).tweensContainer);for(var H in j)if("element"!==H){var N=j[H].startValue;j[H].startValue=j[H].currentValue=j[H].endValue,j[H].endValue=N,g.isEmptyObject(P)||(j[H].easing=s.easing),v.debug&&console.log("reverse tweensContainer ("+H+"): "+JSON.stringify(j[H]),o)}l=j}else if("start"===A){var j;i(o).tweensContainer&&i(o).isAnimating===!0&&(j=i(o).tweensContainer),$.each(b,function(e,t){if(RegExp("^"+x.Lists.colors.join("$|^")+"$").test(e)){var r=f(t,!0),n=r[0],o=r[1],i=r[2];if(x.RegEx.isHex.test(n)){for(var s=["Red","Green","Blue"],l=x.Values.hexToRgb(n),u=i?x.Values.hexToRgb(i):a,c=0;c1e4&&(v.State.calls=n(v.State.calls)),v.State.calls.push([R,h,s,null,k.resolver]),v.State.isTicking===!1&&(v.State.isTicking=!0,c())):V++)}var o=this,s=$.extend({},v.defaults,P),l={},p;switch(i(o)===a&&v.init(o),parseFloat(s.delay)&&s.queue!==!1&&$.queue(o,s.queue,function(e){v.velocityQueueEntryFlag=!0,i(o).delayTimer={setTimeout:setTimeout(e,parseFloat(s.delay)),next:e}}),s.duration.toString().toLowerCase()){case"fast":s.duration=200;break;case"normal":s.duration=y;break;case"slow":s.duration=600;break;default:s.duration=parseFloat(s.duration)||1}v.mock!==!1&&(v.mock===!0?s.duration=s.delay=1:(s.duration*=parseFloat(v.mock)||1,s.delay*=parseFloat(v.mock)||1)),s.easing=u(s.easing,s.duration),s.begin&&!g.isFunction(s.begin)&&(s.begin=null),s.progress&&!g.isFunction(s.progress)&&(s.progress=null),s.complete&&!g.isFunction(s.complete)&&(s.complete=null),s.display!==a&&null!==s.display&&(s.display=s.display.toString().toLowerCase(),"auto"===s.display&&(s.display=v.CSS.Values.getDisplayType(o))),s.visibility!==a&&null!==s.visibility&&(s.visibility=s.visibility.toString().toLowerCase()),s.mobileHA=s.mobileHA&&v.State.isMobile&&!v.State.isGingerbread,s.queue===!1?s.delay?setTimeout(e,s.delay):e():$.queue(o,s.queue,function(t,r){return r===!0?(k.promise&&k.resolver(h),!0):(v.velocityQueueEntryFlag=!0,void e(t))}),""!==s.queue&&"fx"!==s.queue||"inprogress"===$.queue(o)[0]||$.dequeue(o)}var l=arguments[0]&&($.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||g.isString(arguments[0].properties)),f,d,m,h,b,P;if(g.isWrapped(this)?(f=!1,m=0,h=this,d=this):(f=!0,m=1,h=l?arguments[0].elements:arguments[0]),h=o(h)){l?(b=arguments[0].properties,P=arguments[0].options):(b=arguments[m],P=arguments[m+1]);var w=h.length,V=0;if("stop"!==b&&!$.isPlainObject(P)){var C=m+1;P={};for(var T=C;Tz;z++){var q={delay:E.delay,progress:E.progress};z===O-1&&(q.display=E.display,q.visibility=E.visibility,q.complete=E.complete),S(h,"reverse",q)}return e()}};v=$.extend(S,v),v.animate=S;var P=t.requestAnimationFrame||d;return v.State.isMobile||r.hidden===a||r.addEventListener("visibilitychange",function(){r.hidden?(P=function(e){return setTimeout(function(){e(!0)},16)},c()):P=t.requestAnimationFrame||d}),e.Velocity=v,e!==t&&(e.fn.velocity=S,e.fn.velocity.defaults=v.defaults),$.each(["Down","Up"],function(e,t){v.Redirects["slide"+t]=function(e,r,n,o,i,s){var l=$.extend({},r),u=l.begin,c=l.complete,p={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},f={};l.display===a&&(l.display="Down"===t?"inline"===v.CSS.Values.getDisplayType(e)?"inline-block":"block":"none"),l.begin=function(){u&&u.call(i,i);for(var r in p){f[r]=e.style[r];var a=v.CSS.getPropertyValue(e,r);p[r]="Down"===t?[a,0]:[0,a]}f.overflow=e.style.overflow,e.style.overflow="hidden"},l.complete=function(){for(var t in f)e.style[t]=f[t];c&&c.call(i,i),s&&s.resolver(i)},v(e,p,l)}}),$.each(["In","Out"],function(e,t){v.Redirects["fade"+t]=function(e,r,n,o,i,s){var l=$.extend({},r),u={opacity:"In"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display="In"===t?"auto":"none"),v(this,u,l)}}),v}(window.jQuery||window.Zepto||window,window,document)});;/*! Hammer.JS - v2.0.4 - 2014-09-28 + * http://hammerjs.github.io/ + * + * Copyright (c) 2014 Jorik Tangelder; + * Licensed under the MIT license */ +(function(window, document, exportName, undefined) { + 'use strict'; + +var VENDOR_PREFIXES = ['', 'webkit', 'moz', 'MS', 'ms', 'o']; +var TEST_ELEMENT = document.createElement('div'); + +var TYPE_FUNCTION = 'function'; + +var round = Math.round; +var abs = Math.abs; +var now = Date.now; + +/** + * set a timeout with a given scope + * @param {Function} fn + * @param {Number} timeout + * @param {Object} context + * @returns {number} + */ +function setTimeoutContext(fn, timeout, context) { + return setTimeout(bindFn(fn, context), timeout); +} + +/** + * if the argument is an array, we want to execute the fn on each entry + * if it aint an array we don't want to do a thing. + * this is used by all the methods that accept a single and array argument. + * @param {*|Array} arg + * @param {String} fn + * @param {Object} [context] + * @returns {Boolean} + */ +function invokeArrayArg(arg, fn, context) { + if (Array.isArray(arg)) { + each(arg, context[fn], context); + return true; + } + return false; +} + +/** + * walk objects and arrays + * @param {Object} obj + * @param {Function} iterator + * @param {Object} context + */ +function each(obj, iterator, context) { + var i; + + if (!obj) { + return; + } + + if (obj.forEach) { + obj.forEach(iterator, context); + } else if (obj.length !== undefined) { + i = 0; + while (i < obj.length) { + iterator.call(context, obj[i], i, obj); + i++; + } + } else { + for (i in obj) { + obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj); + } + } +} + +/** + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge] + * @returns {Object} dest + */ +function extend(dest, src, merge) { + var keys = Object.keys(src); + var i = 0; + while (i < keys.length) { + if (!merge || (merge && dest[keys[i]] === undefined)) { + dest[keys[i]] = src[keys[i]]; + } + i++; + } + return dest; +} + +/** + * merge the values from src in the dest. + * means that properties that exist in dest will not be overwritten by src + * @param {Object} dest + * @param {Object} src + * @returns {Object} dest + */ +function merge(dest, src) { + return extend(dest, src, true); +} + +/** + * simple class inheritance + * @param {Function} child + * @param {Function} base + * @param {Object} [properties] + */ +function inherit(child, base, properties) { + var baseP = base.prototype, + childP; + + childP = child.prototype = Object.create(baseP); + childP.constructor = child; + childP._super = baseP; + + if (properties) { + extend(childP, properties); + } +} + +/** + * simple function bind + * @param {Function} fn + * @param {Object} context + * @returns {Function} + */ +function bindFn(fn, context) { + return function boundFn() { + return fn.apply(context, arguments); + }; +} + +/** + * let a boolean value also be a function that must return a boolean + * this first item in args will be used as the context + * @param {Boolean|Function} val + * @param {Array} [args] + * @returns {Boolean} + */ +function boolOrFn(val, args) { + if (typeof val == TYPE_FUNCTION) { + return val.apply(args ? args[0] || undefined : undefined, args); + } + return val; +} + +/** + * use the val2 when val1 is undefined + * @param {*} val1 + * @param {*} val2 + * @returns {*} + */ +function ifUndefined(val1, val2) { + return (val1 === undefined) ? val2 : val1; +} + +/** + * addEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ +function addEventListeners(target, types, handler) { + each(splitStr(types), function(type) { + target.addEventListener(type, handler, false); + }); +} + +/** + * removeEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ +function removeEventListeners(target, types, handler) { + each(splitStr(types), function(type) { + target.removeEventListener(type, handler, false); + }); +} + +/** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ +function hasParent(node, parent) { + while (node) { + if (node == parent) { + return true; + } + node = node.parentNode; + } + return false; +} + +/** + * small indexOf wrapper + * @param {String} str + * @param {String} find + * @returns {Boolean} found + */ +function inStr(str, find) { + return str.indexOf(find) > -1; +} + +/** + * split string on whitespace + * @param {String} str + * @returns {Array} words + */ +function splitStr(str) { + return str.trim().split(/\s+/g); +} + +/** + * find if a array contains the object using indexOf or a simple polyFill + * @param {Array} src + * @param {String} find + * @param {String} [findByKey] + * @return {Boolean|Number} false when not found, or the index + */ +function inArray(src, find, findByKey) { + if (src.indexOf && !findByKey) { + return src.indexOf(find); + } else { + var i = 0; + while (i < src.length) { + if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) { + return i; + } + i++; + } + return -1; + } +} + +/** + * convert array-like objects to real arrays + * @param {Object} obj + * @returns {Array} + */ +function toArray(obj) { + return Array.prototype.slice.call(obj, 0); +} + +/** + * unique array with objects based on a key (like 'id') or just by the array's value + * @param {Array} src [{id:1},{id:2},{id:1}] + * @param {String} [key] + * @param {Boolean} [sort=False] + * @returns {Array} [{id:1},{id:2}] + */ +function uniqueArray(src, key, sort) { + var results = []; + var values = []; + var i = 0; + + while (i < src.length) { + var val = key ? src[i][key] : src[i]; + if (inArray(values, val) < 0) { + results.push(src[i]); + } + values[i] = val; + i++; + } + + if (sort) { + if (!key) { + results = results.sort(); + } else { + results = results.sort(function sortUniqueArray(a, b) { + return a[key] > b[key]; + }); + } + } + + return results; +} + +/** + * get the prefixed property + * @param {Object} obj + * @param {String} property + * @returns {String|Undefined} prefixed + */ +function prefixed(obj, property) { + var prefix, prop; + var camelProp = property[0].toUpperCase() + property.slice(1); + + var i = 0; + while (i < VENDOR_PREFIXES.length) { + prefix = VENDOR_PREFIXES[i]; + prop = (prefix) ? prefix + camelProp : property; + + if (prop in obj) { + return prop; + } + i++; + } + return undefined; +} + +/** + * get a unique id + * @returns {number} uniqueId + */ +var _uniqueId = 1; +function uniqueId() { + return _uniqueId++; +} + +/** + * get the window object of an element + * @param {HTMLElement} element + * @returns {DocumentView|Window} + */ +function getWindowForElement(element) { + var doc = element.ownerDocument; + return (doc.defaultView || doc.parentWindow); +} + +var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i; + +var SUPPORT_TOUCH = ('ontouchstart' in window); +var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined; +var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent); + +var INPUT_TYPE_TOUCH = 'touch'; +var INPUT_TYPE_PEN = 'pen'; +var INPUT_TYPE_MOUSE = 'mouse'; +var INPUT_TYPE_KINECT = 'kinect'; + +var COMPUTE_INTERVAL = 25; + +var INPUT_START = 1; +var INPUT_MOVE = 2; +var INPUT_END = 4; +var INPUT_CANCEL = 8; + +var DIRECTION_NONE = 1; +var DIRECTION_LEFT = 2; +var DIRECTION_RIGHT = 4; +var DIRECTION_UP = 8; +var DIRECTION_DOWN = 16; + +var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT; +var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN; +var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL; + +var PROPS_XY = ['x', 'y']; +var PROPS_CLIENT_XY = ['clientX', 'clientY']; + +/** + * create new input type manager + * @param {Manager} manager + * @param {Function} callback + * @returns {Input} + * @constructor + */ +function Input(manager, callback) { + var self = this; + this.manager = manager; + this.callback = callback; + this.element = manager.element; + this.target = manager.options.inputTarget; + + // smaller wrapper around the handler, for the scope and the enabled state of the manager, + // so when disabled the input events are completely bypassed. + this.domHandler = function(ev) { + if (boolOrFn(manager.options.enable, [manager])) { + self.handler(ev); + } + }; + + this.init(); + +} + +Input.prototype = { + /** + * should handle the inputEvent data and trigger the callback + * @virtual + */ + handler: function() { }, + + /** + * bind the events + */ + init: function() { + this.evEl && addEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + }, + + /** + * unbind the events + */ + destroy: function() { + this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + } +}; + +/** + * create new input type manager + * called by the Manager constructor + * @param {Hammer} manager + * @returns {Input} + */ +function createInputInstance(manager) { + var Type; + var inputClass = manager.options.inputClass; + + if (inputClass) { + Type = inputClass; + } else if (SUPPORT_POINTER_EVENTS) { + Type = PointerEventInput; + } else if (SUPPORT_ONLY_TOUCH) { + Type = TouchInput; + } else if (!SUPPORT_TOUCH) { + Type = MouseInput; + } else { + Type = TouchMouseInput; + } + return new (Type)(manager, inputHandler); +} + +/** + * handle input events + * @param {Manager} manager + * @param {String} eventType + * @param {Object} input + */ +function inputHandler(manager, eventType, input) { + var pointersLen = input.pointers.length; + var changedPointersLen = input.changedPointers.length; + var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0)); + var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0)); + + input.isFirst = !!isFirst; + input.isFinal = !!isFinal; + + if (isFirst) { + manager.session = {}; + } + + // source event is the normalized value of the domEvents + // like 'touchstart, mouseup, pointerdown' + input.eventType = eventType; + + // compute scale, rotation etc + computeInputData(manager, input); + + // emit secret event + manager.emit('hammer.input', input); + + manager.recognize(input); + manager.session.prevInput = input; +} + +/** + * extend the data with some usable properties like scale, rotate, velocity etc + * @param {Object} manager + * @param {Object} input + */ +function computeInputData(manager, input) { + var session = manager.session; + var pointers = input.pointers; + var pointersLength = pointers.length; + + // store the first input to calculate the distance and direction + if (!session.firstInput) { + session.firstInput = simpleCloneInputData(input); + } + + // to compute scale and rotation we need to store the multiple touches + if (pointersLength > 1 && !session.firstMultiple) { + session.firstMultiple = simpleCloneInputData(input); + } else if (pointersLength === 1) { + session.firstMultiple = false; + } + + var firstInput = session.firstInput; + var firstMultiple = session.firstMultiple; + var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center; + + var center = input.center = getCenter(pointers); + input.timeStamp = now(); + input.deltaTime = input.timeStamp - firstInput.timeStamp; + + input.angle = getAngle(offsetCenter, center); + input.distance = getDistance(offsetCenter, center); + + computeDeltaXY(session, input); + input.offsetDirection = getDirection(input.deltaX, input.deltaY); + + input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1; + input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0; + + computeIntervalInputData(session, input); + + // find the correct target + var target = manager.element; + if (hasParent(input.srcEvent.target, target)) { + target = input.srcEvent.target; + } + input.target = target; +} + +function computeDeltaXY(session, input) { + var center = input.center; + var offset = session.offsetDelta || {}; + var prevDelta = session.prevDelta || {}; + var prevInput = session.prevInput || {}; + + if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) { + prevDelta = session.prevDelta = { + x: prevInput.deltaX || 0, + y: prevInput.deltaY || 0 + }; + + offset = session.offsetDelta = { + x: center.x, + y: center.y + }; + } + + input.deltaX = prevDelta.x + (center.x - offset.x); + input.deltaY = prevDelta.y + (center.y - offset.y); +} + +/** + * velocity is calculated every x ms + * @param {Object} session + * @param {Object} input + */ +function computeIntervalInputData(session, input) { + var last = session.lastInterval || input, + deltaTime = input.timeStamp - last.timeStamp, + velocity, velocityX, velocityY, direction; + + if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) { + var deltaX = last.deltaX - input.deltaX; + var deltaY = last.deltaY - input.deltaY; + + var v = getVelocity(deltaTime, deltaX, deltaY); + velocityX = v.x; + velocityY = v.y; + velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y; + direction = getDirection(deltaX, deltaY); + + session.lastInterval = input; + } else { + // use latest velocity info if it doesn't overtake a minimum period + velocity = last.velocity; + velocityX = last.velocityX; + velocityY = last.velocityY; + direction = last.direction; + } + + input.velocity = velocity; + input.velocityX = velocityX; + input.velocityY = velocityY; + input.direction = direction; +} + +/** + * create a simple clone from the input used for storage of firstInput and firstMultiple + * @param {Object} input + * @returns {Object} clonedInputData + */ +function simpleCloneInputData(input) { + // make a simple copy of the pointers because we will get a reference if we don't + // we only need clientXY for the calculations + var pointers = []; + var i = 0; + while (i < input.pointers.length) { + pointers[i] = { + clientX: round(input.pointers[i].clientX), + clientY: round(input.pointers[i].clientY) + }; + i++; + } + + return { + timeStamp: now(), + pointers: pointers, + center: getCenter(pointers), + deltaX: input.deltaX, + deltaY: input.deltaY + }; +} + +/** + * get the center of all the pointers + * @param {Array} pointers + * @return {Object} center contains `x` and `y` properties + */ +function getCenter(pointers) { + var pointersLength = pointers.length; + + // no need to loop when only one touch + if (pointersLength === 1) { + return { + x: round(pointers[0].clientX), + y: round(pointers[0].clientY) + }; + } + + var x = 0, y = 0, i = 0; + while (i < pointersLength) { + x += pointers[i].clientX; + y += pointers[i].clientY; + i++; + } + + return { + x: round(x / pointersLength), + y: round(y / pointersLength) + }; +} + +/** + * calculate the velocity between two points. unit is in px per ms. + * @param {Number} deltaTime + * @param {Number} x + * @param {Number} y + * @return {Object} velocity `x` and `y` + */ +function getVelocity(deltaTime, x, y) { + return { + x: x / deltaTime || 0, + y: y / deltaTime || 0 + }; +} + +/** + * get the direction between two points + * @param {Number} x + * @param {Number} y + * @return {Number} direction + */ +function getDirection(x, y) { + if (x === y) { + return DIRECTION_NONE; + } + + if (abs(x) >= abs(y)) { + return x > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return y > 0 ? DIRECTION_UP : DIRECTION_DOWN; +} + +/** + * calculate the absolute distance between two points + * @param {Object} p1 {x, y} + * @param {Object} p2 {x, y} + * @param {Array} [props] containing x and y keys + * @return {Number} distance + */ +function getDistance(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + var x = p2[props[0]] - p1[props[0]], + y = p2[props[1]] - p1[props[1]]; + + return Math.sqrt((x * x) + (y * y)); +} + +/** + * calculate the angle between two coordinates + * @param {Object} p1 + * @param {Object} p2 + * @param {Array} [props] containing x and y keys + * @return {Number} angle + */ +function getAngle(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + var x = p2[props[0]] - p1[props[0]], + y = p2[props[1]] - p1[props[1]]; + return Math.atan2(y, x) * 180 / Math.PI; +} + +/** + * calculate the rotation degrees between two pointersets + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} rotation + */ +function getRotation(start, end) { + return getAngle(end[1], end[0], PROPS_CLIENT_XY) - getAngle(start[1], start[0], PROPS_CLIENT_XY); +} + +/** + * calculate the scale factor between two pointersets + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} scale + */ +function getScale(start, end) { + return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY); +} + +var MOUSE_INPUT_MAP = { + mousedown: INPUT_START, + mousemove: INPUT_MOVE, + mouseup: INPUT_END +}; + +var MOUSE_ELEMENT_EVENTS = 'mousedown'; +var MOUSE_WINDOW_EVENTS = 'mousemove mouseup'; + +/** + * Mouse events input + * @constructor + * @extends Input + */ +function MouseInput() { + this.evEl = MOUSE_ELEMENT_EVENTS; + this.evWin = MOUSE_WINDOW_EVENTS; + + this.allow = true; // used by Input.TouchMouse to disable mouse events + this.pressed = false; // mousedown state + + Input.apply(this, arguments); +} + +inherit(MouseInput, Input, { + /** + * handle mouse events + * @param {Object} ev + */ + handler: function MEhandler(ev) { + var eventType = MOUSE_INPUT_MAP[ev.type]; + + // on start we want to have the left mouse button down + if (eventType & INPUT_START && ev.button === 0) { + this.pressed = true; + } + + if (eventType & INPUT_MOVE && ev.which !== 1) { + eventType = INPUT_END; + } + + // mouse must be down, and mouse events are allowed (see the TouchMouse input) + if (!this.pressed || !this.allow) { + return; + } + + if (eventType & INPUT_END) { + this.pressed = false; + } + + this.callback(this.manager, eventType, { + pointers: [ev], + changedPointers: [ev], + pointerType: INPUT_TYPE_MOUSE, + srcEvent: ev + }); + } +}); + +var POINTER_INPUT_MAP = { + pointerdown: INPUT_START, + pointermove: INPUT_MOVE, + pointerup: INPUT_END, + pointercancel: INPUT_CANCEL, + pointerout: INPUT_CANCEL +}; + +// in IE10 the pointer types is defined as an enum +var IE10_POINTER_TYPE_ENUM = { + 2: INPUT_TYPE_TOUCH, + 3: INPUT_TYPE_PEN, + 4: INPUT_TYPE_MOUSE, + 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816 +}; + +var POINTER_ELEMENT_EVENTS = 'pointerdown'; +var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; + +// IE10 has prefixed support, and case-sensitive +if (window.MSPointerEvent) { + POINTER_ELEMENT_EVENTS = 'MSPointerDown'; + POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel'; +} + +/** + * Pointer events input + * @constructor + * @extends Input + */ +function PointerEventInput() { + this.evEl = POINTER_ELEMENT_EVENTS; + this.evWin = POINTER_WINDOW_EVENTS; + + Input.apply(this, arguments); + + this.store = (this.manager.session.pointerEvents = []); +} + +inherit(PointerEventInput, Input, { + /** + * handle mouse events + * @param {Object} ev + */ + handler: function PEhandler(ev) { + var store = this.store; + var removePointer = false; + + var eventTypeNormalized = ev.type.toLowerCase().replace('ms', ''); + var eventType = POINTER_INPUT_MAP[eventTypeNormalized]; + var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType; + + var isTouch = (pointerType == INPUT_TYPE_TOUCH); + + // get index of the event in the store + var storeIndex = inArray(store, ev.pointerId, 'pointerId'); + + // start and mouse must be down + if (eventType & INPUT_START && (ev.button === 0 || isTouch)) { + if (storeIndex < 0) { + store.push(ev); + storeIndex = store.length - 1; + } + } else if (eventType & (INPUT_END | INPUT_CANCEL)) { + removePointer = true; + } + + // it not found, so the pointer hasn't been down (so it's probably a hover) + if (storeIndex < 0) { + return; + } + + // update the event in the store + store[storeIndex] = ev; + + this.callback(this.manager, eventType, { + pointers: store, + changedPointers: [ev], + pointerType: pointerType, + srcEvent: ev + }); + + if (removePointer) { + // remove from the store + store.splice(storeIndex, 1); + } + } +}); + +var SINGLE_TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL +}; + +var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart'; +var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel'; + +/** + * Touch events input + * @constructor + * @extends Input + */ +function SingleTouchInput() { + this.evTarget = SINGLE_TOUCH_TARGET_EVENTS; + this.evWin = SINGLE_TOUCH_WINDOW_EVENTS; + this.started = false; + + Input.apply(this, arguments); +} + +inherit(SingleTouchInput, Input, { + handler: function TEhandler(ev) { + var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; + + // should we handle the touch events? + if (type === INPUT_START) { + this.started = true; + } + + if (!this.started) { + return; + } + + var touches = normalizeSingleTouches.call(this, ev, type); + + // when done, reset the started state + if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) { + this.started = false; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + } +}); + +/** + * @this {TouchInput} + * @param {Object} ev + * @param {Number} type flag + * @returns {undefined|Array} [all, changed] + */ +function normalizeSingleTouches(ev, type) { + var all = toArray(ev.touches); + var changed = toArray(ev.changedTouches); + + if (type & (INPUT_END | INPUT_CANCEL)) { + all = uniqueArray(all.concat(changed), 'identifier', true); + } + + return [all, changed]; +} + +var TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL +}; + +var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel'; + +/** + * Multi-user touch events input + * @constructor + * @extends Input + */ +function TouchInput() { + this.evTarget = TOUCH_TARGET_EVENTS; + this.targetIds = {}; + + Input.apply(this, arguments); +} + +inherit(TouchInput, Input, { + handler: function MTEhandler(ev) { + var type = TOUCH_INPUT_MAP[ev.type]; + var touches = getTouches.call(this, ev, type); + if (!touches) { + return; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + } +}); + +/** + * @this {TouchInput} + * @param {Object} ev + * @param {Number} type flag + * @returns {undefined|Array} [all, changed] + */ +function getTouches(ev, type) { + var allTouches = toArray(ev.touches); + var targetIds = this.targetIds; + + // when there is only one touch, the process can be simplified + if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) { + targetIds[allTouches[0].identifier] = true; + return [allTouches, allTouches]; + } + + var i, + targetTouches, + changedTouches = toArray(ev.changedTouches), + changedTargetTouches = [], + target = this.target; + + // get target touches from touches + targetTouches = allTouches.filter(function(touch) { + return hasParent(touch.target, target); + }); + + // collect touches + if (type === INPUT_START) { + i = 0; + while (i < targetTouches.length) { + targetIds[targetTouches[i].identifier] = true; + i++; + } + } + + // filter changed touches to only contain touches that exist in the collected target ids + i = 0; + while (i < changedTouches.length) { + if (targetIds[changedTouches[i].identifier]) { + changedTargetTouches.push(changedTouches[i]); + } + + // cleanup removed touches + if (type & (INPUT_END | INPUT_CANCEL)) { + delete targetIds[changedTouches[i].identifier]; + } + i++; + } + + if (!changedTargetTouches.length) { + return; + } + + return [ + // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel' + uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), + changedTargetTouches + ]; +} + +/** + * Combined touch and mouse input + * + * Touch has a higher priority then mouse, and while touching no mouse events are allowed. + * This because touch devices also emit mouse events while doing a touch. + * + * @constructor + * @extends Input + */ +function TouchMouseInput() { + Input.apply(this, arguments); + + var handler = bindFn(this.handler, this); + this.touch = new TouchInput(this.manager, handler); + this.mouse = new MouseInput(this.manager, handler); +} + +inherit(TouchMouseInput, Input, { + /** + * handle mouse and touch events + * @param {Hammer} manager + * @param {String} inputEvent + * @param {Object} inputData + */ + handler: function TMEhandler(manager, inputEvent, inputData) { + var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH), + isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE); + + // when we're in a touch event, so block all upcoming mouse events + // most mobile browser also emit mouseevents, right after touchstart + if (isTouch) { + this.mouse.allow = false; + } else if (isMouse && !this.mouse.allow) { + return; + } + + // reset the allowMouse when we're done + if (inputEvent & (INPUT_END | INPUT_CANCEL)) { + this.mouse.allow = true; + } + + this.callback(manager, inputEvent, inputData); + }, + + /** + * remove the event listeners + */ + destroy: function destroy() { + this.touch.destroy(); + this.mouse.destroy(); + } +}); + +var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction'); +var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined; + +// magical touchAction value +var TOUCH_ACTION_COMPUTE = 'compute'; +var TOUCH_ACTION_AUTO = 'auto'; +var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented +var TOUCH_ACTION_NONE = 'none'; +var TOUCH_ACTION_PAN_X = 'pan-x'; +var TOUCH_ACTION_PAN_Y = 'pan-y'; + +/** + * Touch Action + * sets the touchAction property or uses the js alternative + * @param {Manager} manager + * @param {String} value + * @constructor + */ +function TouchAction(manager, value) { + this.manager = manager; + this.set(value); +} + +TouchAction.prototype = { + /** + * set the touchAction value on the element or enable the polyfill + * @param {String} value + */ + set: function(value) { + // find out the touch-action by the event handlers + if (value == TOUCH_ACTION_COMPUTE) { + value = this.compute(); + } + + if (NATIVE_TOUCH_ACTION) { + this.manager.element.style[PREFIXED_TOUCH_ACTION] = value; + } + this.actions = value.toLowerCase().trim(); + }, + + /** + * just re-set the touchAction value + */ + update: function() { + this.set(this.manager.options.touchAction); + }, + + /** + * compute the value for the touchAction property based on the recognizer's settings + * @returns {String} value + */ + compute: function() { + var actions = []; + each(this.manager.recognizers, function(recognizer) { + if (boolOrFn(recognizer.options.enable, [recognizer])) { + actions = actions.concat(recognizer.getTouchAction()); + } + }); + return cleanTouchActions(actions.join(' ')); + }, + + /** + * this method is called on each input cycle and provides the preventing of the browser behavior + * @param {Object} input + */ + preventDefaults: function(input) { + // not needed with native support for the touchAction property + if (NATIVE_TOUCH_ACTION) { + return; + } + + var srcEvent = input.srcEvent; + var direction = input.offsetDirection; + + // if the touch action did prevented once this session + if (this.manager.session.prevented) { + srcEvent.preventDefault(); + return; + } + + var actions = this.actions; + var hasNone = inStr(actions, TOUCH_ACTION_NONE); + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + + if (hasNone || + (hasPanY && direction & DIRECTION_HORIZONTAL) || + (hasPanX && direction & DIRECTION_VERTICAL)) { + return this.preventSrc(srcEvent); + } + }, + + /** + * call preventDefault to prevent the browser's default behavior (scrolling in most cases) + * @param {Object} srcEvent + */ + preventSrc: function(srcEvent) { + this.manager.session.prevented = true; + srcEvent.preventDefault(); + } +}; + +/** + * when the touchActions are collected they are not a valid value, so we need to clean things up. * + * @param {String} actions + * @returns {*} + */ +function cleanTouchActions(actions) { + // none + if (inStr(actions, TOUCH_ACTION_NONE)) { + return TOUCH_ACTION_NONE; + } + + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); + + // pan-x and pan-y can be combined + if (hasPanX && hasPanY) { + return TOUCH_ACTION_PAN_X + ' ' + TOUCH_ACTION_PAN_Y; + } + + // pan-x OR pan-y + if (hasPanX || hasPanY) { + return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y; + } + + // manipulation + if (inStr(actions, TOUCH_ACTION_MANIPULATION)) { + return TOUCH_ACTION_MANIPULATION; + } + + return TOUCH_ACTION_AUTO; +} + +/** + * Recognizer flow explained; * + * All recognizers have the initial state of POSSIBLE when a input session starts. + * The definition of a input session is from the first input until the last input, with all it's movement in it. * + * Example session for mouse-input: mousedown -> mousemove -> mouseup + * + * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed + * which determines with state it should be. + * + * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to + * POSSIBLE to give it another change on the next cycle. + * + * Possible + * | + * +-----+---------------+ + * | | + * +-----+-----+ | + * | | | + * Failed Cancelled | + * +-------+------+ + * | | + * Recognized Began + * | + * Changed + * | + * Ended/Recognized + */ +var STATE_POSSIBLE = 1; +var STATE_BEGAN = 2; +var STATE_CHANGED = 4; +var STATE_ENDED = 8; +var STATE_RECOGNIZED = STATE_ENDED; +var STATE_CANCELLED = 16; +var STATE_FAILED = 32; + +/** + * Recognizer + * Every recognizer needs to extend from this class. + * @constructor + * @param {Object} options + */ +function Recognizer(options) { + this.id = uniqueId(); + + this.manager = null; + this.options = merge(options || {}, this.defaults); + + // default is enable true + this.options.enable = ifUndefined(this.options.enable, true); + + this.state = STATE_POSSIBLE; + + this.simultaneous = {}; + this.requireFail = []; +} + +Recognizer.prototype = { + /** + * @virtual + * @type {Object} + */ + defaults: {}, + + /** + * set options + * @param {Object} options + * @return {Recognizer} + */ + set: function(options) { + extend(this.options, options); + + // also update the touchAction, in case something changed about the directions/enabled state + this.manager && this.manager.touchAction.update(); + return this; + }, + + /** + * recognize simultaneous with an other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + recognizeWith: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) { + return this; + } + + var simultaneous = this.simultaneous; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + if (!simultaneous[otherRecognizer.id]) { + simultaneous[otherRecognizer.id] = otherRecognizer; + otherRecognizer.recognizeWith(this); + } + return this; + }, + + /** + * drop the simultaneous link. it doesnt remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + dropRecognizeWith: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + delete this.simultaneous[otherRecognizer.id]; + return this; + }, + + /** + * recognizer can only run when an other is failing + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + requireFailure: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) { + return this; + } + + var requireFail = this.requireFail; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + if (inArray(requireFail, otherRecognizer) === -1) { + requireFail.push(otherRecognizer); + otherRecognizer.requireFailure(this); + } + return this; + }, + + /** + * drop the requireFailure link. it does not remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + dropRequireFailure: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + var index = inArray(this.requireFail, otherRecognizer); + if (index > -1) { + this.requireFail.splice(index, 1); + } + return this; + }, + + /** + * has require failures boolean + * @returns {boolean} + */ + hasRequireFailures: function() { + return this.requireFail.length > 0; + }, + + /** + * if the recognizer can recognize simultaneous with an other recognizer + * @param {Recognizer} otherRecognizer + * @returns {Boolean} + */ + canRecognizeWith: function(otherRecognizer) { + return !!this.simultaneous[otherRecognizer.id]; + }, + + /** + * You should use `tryEmit` instead of `emit` directly to check + * that all the needed recognizers has failed before emitting. + * @param {Object} input + */ + emit: function(input) { + var self = this; + var state = this.state; + + function emit(withState) { + self.manager.emit(self.options.event + (withState ? stateStr(state) : ''), input); + } + + // 'panstart' and 'panmove' + if (state < STATE_ENDED) { + emit(true); + } + + emit(); // simple 'eventName' events + + // panend and pancancel + if (state >= STATE_ENDED) { + emit(true); + } + }, + + /** + * Check that all the require failure recognizers has failed, + * if true, it emits a gesture event, + * otherwise, setup the state to FAILED. + * @param {Object} input + */ + tryEmit: function(input) { + if (this.canEmit()) { + return this.emit(input); + } + // it's failing anyway + this.state = STATE_FAILED; + }, + + /** + * can we emit? + * @returns {boolean} + */ + canEmit: function() { + var i = 0; + while (i < this.requireFail.length) { + if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) { + return false; + } + i++; + } + return true; + }, + + /** + * update the recognizer + * @param {Object} inputData + */ + recognize: function(inputData) { + // make a new copy of the inputData + // so we can change the inputData without messing up the other recognizers + var inputDataClone = extend({}, inputData); + + // is is enabled and allow recognizing? + if (!boolOrFn(this.options.enable, [this, inputDataClone])) { + this.reset(); + this.state = STATE_FAILED; + return; + } + + // reset when we've reached the end + if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) { + this.state = STATE_POSSIBLE; + } + + this.state = this.process(inputDataClone); + + // the recognizer has recognized a gesture + // so trigger an event + if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) { + this.tryEmit(inputDataClone); + } + }, + + /** + * return the state of the recognizer + * the actual recognizing happens in this method + * @virtual + * @param {Object} inputData + * @returns {Const} STATE + */ + process: function(inputData) { }, // jshint ignore:line + + /** + * return the preferred touch-action + * @virtual + * @returns {Array} + */ + getTouchAction: function() { }, + + /** + * called when the gesture isn't allowed to recognize + * like when another is being recognized or it is disabled + * @virtual + */ + reset: function() { } +}; + +/** + * get a usable string, used as event postfix + * @param {Const} state + * @returns {String} state + */ +function stateStr(state) { + if (state & STATE_CANCELLED) { + return 'cancel'; + } else if (state & STATE_ENDED) { + return 'end'; + } else if (state & STATE_CHANGED) { + return 'move'; + } else if (state & STATE_BEGAN) { + return 'start'; + } + return ''; +} + +/** + * direction cons to string + * @param {Const} direction + * @returns {String} + */ +function directionStr(direction) { + if (direction == DIRECTION_DOWN) { + return 'down'; + } else if (direction == DIRECTION_UP) { + return 'up'; + } else if (direction == DIRECTION_LEFT) { + return 'left'; + } else if (direction == DIRECTION_RIGHT) { + return 'right'; + } + return ''; +} + +/** + * get a recognizer by name if it is bound to a manager + * @param {Recognizer|String} otherRecognizer + * @param {Recognizer} recognizer + * @returns {Recognizer} + */ +function getRecognizerByNameIfManager(otherRecognizer, recognizer) { + var manager = recognizer.manager; + if (manager) { + return manager.get(otherRecognizer); + } + return otherRecognizer; +} + +/** + * This recognizer is just used as a base for the simple attribute recognizers. + * @constructor + * @extends Recognizer + */ +function AttrRecognizer() { + Recognizer.apply(this, arguments); +} + +inherit(AttrRecognizer, Recognizer, { + /** + * @namespace + * @memberof AttrRecognizer + */ + defaults: { + /** + * @type {Number} + * @default 1 + */ + pointers: 1 + }, + + /** + * Used to check if it the recognizer receives valid input, like input.distance > 10. + * @memberof AttrRecognizer + * @param {Object} input + * @returns {Boolean} recognized + */ + attrTest: function(input) { + var optionPointers = this.options.pointers; + return optionPointers === 0 || input.pointers.length === optionPointers; + }, + + /** + * Process the input and return the state for the recognizer + * @memberof AttrRecognizer + * @param {Object} input + * @returns {*} State + */ + process: function(input) { + var state = this.state; + var eventType = input.eventType; + + var isRecognized = state & (STATE_BEGAN | STATE_CHANGED); + var isValid = this.attrTest(input); + + // on cancel input and we've recognized before, return STATE_CANCELLED + if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) { + return state | STATE_CANCELLED; + } else if (isRecognized || isValid) { + if (eventType & INPUT_END) { + return state | STATE_ENDED; + } else if (!(state & STATE_BEGAN)) { + return STATE_BEGAN; + } + return state | STATE_CHANGED; + } + return STATE_FAILED; + } +}); + +/** + * Pan + * Recognized when the pointer is down and moved in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ +function PanRecognizer() { + AttrRecognizer.apply(this, arguments); + + this.pX = null; + this.pY = null; +} + +inherit(PanRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof PanRecognizer + */ + defaults: { + event: 'pan', + threshold: 10, + pointers: 1, + direction: DIRECTION_ALL + }, + + getTouchAction: function() { + var direction = this.options.direction; + var actions = []; + if (direction & DIRECTION_HORIZONTAL) { + actions.push(TOUCH_ACTION_PAN_Y); + } + if (direction & DIRECTION_VERTICAL) { + actions.push(TOUCH_ACTION_PAN_X); + } + return actions; + }, + + directionTest: function(input) { + var options = this.options; + var hasMoved = true; + var distance = input.distance; + var direction = input.direction; + var x = input.deltaX; + var y = input.deltaY; + + // lock to axis? + if (!(direction & options.direction)) { + if (options.direction & DIRECTION_HORIZONTAL) { + direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + hasMoved = x != this.pX; + distance = Math.abs(input.deltaX); + } else { + direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN; + hasMoved = y != this.pY; + distance = Math.abs(input.deltaY); + } + } + input.direction = direction; + return hasMoved && distance > options.threshold && direction & options.direction; + }, + + attrTest: function(input) { + return AttrRecognizer.prototype.attrTest.call(this, input) && + (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input))); + }, + + emit: function(input) { + this.pX = input.deltaX; + this.pY = input.deltaY; + + var direction = directionStr(input.direction); + if (direction) { + this.manager.emit(this.options.event + direction, input); + } + + this._super.emit.call(this, input); + } +}); + +/** + * Pinch + * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out). + * @constructor + * @extends AttrRecognizer + */ +function PinchRecognizer() { + AttrRecognizer.apply(this, arguments); +} + +inherit(PinchRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof PinchRecognizer + */ + defaults: { + event: 'pinch', + threshold: 0, + pointers: 2 + }, + + getTouchAction: function() { + return [TOUCH_ACTION_NONE]; + }, + + attrTest: function(input) { + return this._super.attrTest.call(this, input) && + (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN); + }, + + emit: function(input) { + this._super.emit.call(this, input); + if (input.scale !== 1) { + var inOut = input.scale < 1 ? 'in' : 'out'; + this.manager.emit(this.options.event + inOut, input); + } + } +}); + +/** + * Press + * Recognized when the pointer is down for x ms without any movement. + * @constructor + * @extends Recognizer + */ +function PressRecognizer() { + Recognizer.apply(this, arguments); + + this._timer = null; + this._input = null; +} + +inherit(PressRecognizer, Recognizer, { + /** + * @namespace + * @memberof PressRecognizer + */ + defaults: { + event: 'press', + pointers: 1, + time: 500, // minimal time of the pointer to be pressed + threshold: 5 // a minimal movement is ok, but keep it low + }, + + getTouchAction: function() { + return [TOUCH_ACTION_AUTO]; + }, + + process: function(input) { + var options = this.options; + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTime = input.deltaTime > options.time; + + this._input = input; + + // we only allow little movement + // and we've reached an end event, so a tap is possible + if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) { + this.reset(); + } else if (input.eventType & INPUT_START) { + this.reset(); + this._timer = setTimeoutContext(function() { + this.state = STATE_RECOGNIZED; + this.tryEmit(); + }, options.time, this); + } else if (input.eventType & INPUT_END) { + return STATE_RECOGNIZED; + } + return STATE_FAILED; + }, + + reset: function() { + clearTimeout(this._timer); + }, + + emit: function(input) { + if (this.state !== STATE_RECOGNIZED) { + return; + } + + if (input && (input.eventType & INPUT_END)) { + this.manager.emit(this.options.event + 'up', input); + } else { + this._input.timeStamp = now(); + this.manager.emit(this.options.event, this._input); + } + } +}); + +/** + * Rotate + * Recognized when two or more pointer are moving in a circular motion. + * @constructor + * @extends AttrRecognizer + */ +function RotateRecognizer() { + AttrRecognizer.apply(this, arguments); +} + +inherit(RotateRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof RotateRecognizer + */ + defaults: { + event: 'rotate', + threshold: 0, + pointers: 2 + }, + + getTouchAction: function() { + return [TOUCH_ACTION_NONE]; + }, + + attrTest: function(input) { + return this._super.attrTest.call(this, input) && + (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN); + } +}); + +/** + * Swipe + * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ +function SwipeRecognizer() { + AttrRecognizer.apply(this, arguments); +} + +inherit(SwipeRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof SwipeRecognizer + */ + defaults: { + event: 'swipe', + threshold: 10, + velocity: 0.65, + direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL, + pointers: 1 + }, + + getTouchAction: function() { + return PanRecognizer.prototype.getTouchAction.call(this); + }, + + attrTest: function(input) { + var direction = this.options.direction; + var velocity; + + if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) { + velocity = input.velocity; + } else if (direction & DIRECTION_HORIZONTAL) { + velocity = input.velocityX; + } else if (direction & DIRECTION_VERTICAL) { + velocity = input.velocityY; + } + + return this._super.attrTest.call(this, input) && + direction & input.direction && + input.distance > this.options.threshold && + abs(velocity) > this.options.velocity && input.eventType & INPUT_END; + }, + + emit: function(input) { + var direction = directionStr(input.direction); + if (direction) { + this.manager.emit(this.options.event + direction, input); + } + + this.manager.emit(this.options.event, input); + } +}); + +/** + * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur + * between the given interval and position. The delay option can be used to recognize multi-taps without firing + * a single tap. + * + * The eventData from the emitted event contains the property `tapCount`, which contains the amount of + * multi-taps being recognized. + * @constructor + * @extends Recognizer + */ +function TapRecognizer() { + Recognizer.apply(this, arguments); + + // previous time and center, + // used for tap counting + this.pTime = false; + this.pCenter = false; + + this._timer = null; + this._input = null; + this.count = 0; +} + +inherit(TapRecognizer, Recognizer, { + /** + * @namespace + * @memberof PinchRecognizer + */ + defaults: { + event: 'tap', + pointers: 1, + taps: 1, + interval: 300, // max time between the multi-tap taps + time: 250, // max time of the pointer to be down (like finger on the screen) + threshold: 2, // a minimal movement is ok, but keep it low + posThreshold: 10 // a multi-tap can be a bit off the initial position + }, + + getTouchAction: function() { + return [TOUCH_ACTION_MANIPULATION]; + }, + + process: function(input) { + var options = this.options; + + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTouchTime = input.deltaTime < options.time; + + this.reset(); + + if ((input.eventType & INPUT_START) && (this.count === 0)) { + return this.failTimeout(); + } + + // we only allow little movement + // and we've reached an end event, so a tap is possible + if (validMovement && validTouchTime && validPointers) { + if (input.eventType != INPUT_END) { + return this.failTimeout(); + } + + var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true; + var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold; + + this.pTime = input.timeStamp; + this.pCenter = input.center; + + if (!validMultiTap || !validInterval) { + this.count = 1; + } else { + this.count += 1; + } + + this._input = input; + + // if tap count matches we have recognized it, + // else it has began recognizing... + var tapCount = this.count % options.taps; + if (tapCount === 0) { + // no failing requirements, immediately trigger the tap event + // or wait as long as the multitap interval to trigger + if (!this.hasRequireFailures()) { + return STATE_RECOGNIZED; + } else { + this._timer = setTimeoutContext(function() { + this.state = STATE_RECOGNIZED; + this.tryEmit(); + }, options.interval, this); + return STATE_BEGAN; + } + } + } + return STATE_FAILED; + }, + + failTimeout: function() { + this._timer = setTimeoutContext(function() { + this.state = STATE_FAILED; + }, this.options.interval, this); + return STATE_FAILED; + }, + + reset: function() { + clearTimeout(this._timer); + }, + + emit: function() { + if (this.state == STATE_RECOGNIZED ) { + this._input.tapCount = this.count; + this.manager.emit(this.options.event, this._input); + } + } +}); + +/** + * Simple way to create an manager with a default set of recognizers. + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ +function Hammer(element, options) { + options = options || {}; + options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset); + return new Manager(element, options); +} + +/** + * @const {string} + */ +Hammer.VERSION = '2.0.4'; + +/** + * default settings + * @namespace + */ +Hammer.defaults = { + /** + * set if DOM events are being triggered. + * But this is slower and unused by simple implementations, so disabled by default. + * @type {Boolean} + * @default false + */ + domEvents: false, + + /** + * The value for the touchAction property/fallback. + * When set to `compute` it will magically set the correct value based on the added recognizers. + * @type {String} + * @default compute + */ + touchAction: TOUCH_ACTION_COMPUTE, + + /** + * @type {Boolean} + * @default true + */ + enable: true, + + /** + * EXPERIMENTAL FEATURE -- can be removed/changed + * Change the parent input target element. + * If Null, then it is being set the to main element. + * @type {Null|EventTarget} + * @default null + */ + inputTarget: null, + + /** + * force an input class + * @type {Null|Function} + * @default null + */ + inputClass: null, + + /** + * Default recognizer setup when calling `Hammer()` + * When creating a new Manager these will be skipped. + * @type {Array} + */ + preset: [ + // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...] + [RotateRecognizer, { enable: false }], + [PinchRecognizer, { enable: false }, ['rotate']], + [SwipeRecognizer,{ direction: DIRECTION_HORIZONTAL }], + [PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']], + [TapRecognizer], + [TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']], + [PressRecognizer] + ], + + /** + * Some CSS properties can be used to improve the working of Hammer. + * Add them to this method and they will be set when creating a new Manager. + * @namespace + */ + cssProps: { + /** + * Disables text selection to improve the dragging gesture. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userSelect: 'default', + + /** + * Disable the Windows Phone grippers when pressing an element. + * @type {String} + * @default 'none' + */ + touchSelect: 'none', + + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @type {String} + * @default 'none' + */ + touchCallout: 'none', + + /** + * Specifies whether zooming is enabled. Used by IE10> + * @type {String} + * @default 'none' + */ + contentZooming: 'none', + + /** + * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userDrag: 'none', + + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in iOS. This property obeys the alpha value, if specified. + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } +}; + +var STOP = 1; +var FORCED_STOP = 2; + +/** + * Manager + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ +function Manager(element, options) { + options = options || {}; + + this.options = merge(options, Hammer.defaults); + this.options.inputTarget = this.options.inputTarget || element; + + this.handlers = {}; + this.session = {}; + this.recognizers = []; + + this.element = element; + this.input = createInputInstance(this); + this.touchAction = new TouchAction(this, this.options.touchAction); + + toggleCssProps(this, true); + + each(options.recognizers, function(item) { + var recognizer = this.add(new (item[0])(item[1])); + item[2] && recognizer.recognizeWith(item[2]); + item[3] && recognizer.requireFailure(item[3]); + }, this); +} + +Manager.prototype = { + /** + * set options + * @param {Object} options + * @returns {Manager} + */ + set: function(options) { + extend(this.options, options); + + // Options that need a little more setup + if (options.touchAction) { + this.touchAction.update(); + } + if (options.inputTarget) { + // Clean up existing event listeners and reinitialize + this.input.destroy(); + this.input.target = options.inputTarget; + this.input.init(); + } + return this; + }, + + /** + * stop recognizing for this session. + * This session will be discarded, when a new [input]start event is fired. + * When forced, the recognizer cycle is stopped immediately. + * @param {Boolean} [force] + */ + stop: function(force) { + this.session.stopped = force ? FORCED_STOP : STOP; + }, + + /** + * run the recognizers! + * called by the inputHandler function on every movement of the pointers (touches) + * it walks through all the recognizers and tries to detect the gesture that is being made + * @param {Object} inputData + */ + recognize: function(inputData) { + var session = this.session; + if (session.stopped) { + return; + } + + // run the touch-action polyfill + this.touchAction.preventDefaults(inputData); + + var recognizer; + var recognizers = this.recognizers; + + // this holds the recognizer that is being recognized. + // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED + // if no recognizer is detecting a thing, it is set to `null` + var curRecognizer = session.curRecognizer; + + // reset when the last recognizer is recognized + // or when we're in a new session + if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) { + curRecognizer = session.curRecognizer = null; + } + + var i = 0; + while (i < recognizers.length) { + recognizer = recognizers[i]; + + // find out if we are allowed try to recognize the input for this one. + // 1. allow if the session is NOT forced stopped (see the .stop() method) + // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one + // that is being recognized. + // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer. + // this can be setup with the `recognizeWith()` method on the recognizer. + if (session.stopped !== FORCED_STOP && ( // 1 + !curRecognizer || recognizer == curRecognizer || // 2 + recognizer.canRecognizeWith(curRecognizer))) { // 3 + recognizer.recognize(inputData); + } else { + recognizer.reset(); + } + + // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the + // current active recognizer. but only if we don't already have an active recognizer + if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) { + curRecognizer = session.curRecognizer = recognizer; + } + i++; + } + }, + + /** + * get a recognizer by its event name. + * @param {Recognizer|String} recognizer + * @returns {Recognizer|Null} + */ + get: function(recognizer) { + if (recognizer instanceof Recognizer) { + return recognizer; + } + + var recognizers = this.recognizers; + for (var i = 0; i < recognizers.length; i++) { + if (recognizers[i].options.event == recognizer) { + return recognizers[i]; + } + } + return null; + }, + + /** + * add a recognizer to the manager + * existing recognizers with the same event name will be removed + * @param {Recognizer} recognizer + * @returns {Recognizer|Manager} + */ + add: function(recognizer) { + if (invokeArrayArg(recognizer, 'add', this)) { + return this; + } + + // remove existing + var existing = this.get(recognizer.options.event); + if (existing) { + this.remove(existing); + } + + this.recognizers.push(recognizer); + recognizer.manager = this; + + this.touchAction.update(); + return recognizer; + }, + + /** + * remove a recognizer by name or instance + * @param {Recognizer|String} recognizer + * @returns {Manager} + */ + remove: function(recognizer) { + if (invokeArrayArg(recognizer, 'remove', this)) { + return this; + } + + var recognizers = this.recognizers; + recognizer = this.get(recognizer); + recognizers.splice(inArray(recognizers, recognizer), 1); + + this.touchAction.update(); + return this; + }, + + /** + * bind event + * @param {String} events + * @param {Function} handler + * @returns {EventEmitter} this + */ + on: function(events, handler) { + var handlers = this.handlers; + each(splitStr(events), function(event) { + handlers[event] = handlers[event] || []; + handlers[event].push(handler); + }); + return this; + }, + + /** + * unbind event, leave emit blank to remove all handlers + * @param {String} events + * @param {Function} [handler] + * @returns {EventEmitter} this + */ + off: function(events, handler) { + var handlers = this.handlers; + each(splitStr(events), function(event) { + if (!handler) { + delete handlers[event]; + } else { + handlers[event].splice(inArray(handlers[event], handler), 1); + } + }); + return this; + }, + + /** + * emit event to the listeners + * @param {String} event + * @param {Object} data + */ + emit: function(event, data) { + // we also want to trigger dom events + if (this.options.domEvents) { + triggerDomEvent(event, data); + } + + // no handlers, so skip it all + var handlers = this.handlers[event] && this.handlers[event].slice(); + if (!handlers || !handlers.length) { + return; + } + + data.type = event; + data.preventDefault = function() { + data.srcEvent.preventDefault(); + }; + + var i = 0; + while (i < handlers.length) { + handlers[i](data); + i++; + } + }, + + /** + * destroy the manager and unbinds all events + * it doesn't unbind dom events, that is the user own responsibility + */ + destroy: function() { + this.element && toggleCssProps(this, false); + + this.handlers = {}; + this.session = {}; + this.input.destroy(); + this.element = null; + } +}; + +/** + * add/remove the css properties as defined in manager.options.cssProps + * @param {Manager} manager + * @param {Boolean} add + */ +function toggleCssProps(manager, add) { + var element = manager.element; + each(manager.options.cssProps, function(value, name) { + element.style[prefixed(element.style, name)] = add ? value : ''; + }); +} + +/** + * trigger dom event + * @param {String} event + * @param {Object} data + */ +function triggerDomEvent(event, data) { + var gestureEvent = document.createEvent('Event'); + gestureEvent.initEvent(event, true, true); + gestureEvent.gesture = data; + data.target.dispatchEvent(gestureEvent); +} + +extend(Hammer, { + INPUT_START: INPUT_START, + INPUT_MOVE: INPUT_MOVE, + INPUT_END: INPUT_END, + INPUT_CANCEL: INPUT_CANCEL, + + STATE_POSSIBLE: STATE_POSSIBLE, + STATE_BEGAN: STATE_BEGAN, + STATE_CHANGED: STATE_CHANGED, + STATE_ENDED: STATE_ENDED, + STATE_RECOGNIZED: STATE_RECOGNIZED, + STATE_CANCELLED: STATE_CANCELLED, + STATE_FAILED: STATE_FAILED, + + DIRECTION_NONE: DIRECTION_NONE, + DIRECTION_LEFT: DIRECTION_LEFT, + DIRECTION_RIGHT: DIRECTION_RIGHT, + DIRECTION_UP: DIRECTION_UP, + DIRECTION_DOWN: DIRECTION_DOWN, + DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL, + DIRECTION_VERTICAL: DIRECTION_VERTICAL, + DIRECTION_ALL: DIRECTION_ALL, + + Manager: Manager, + Input: Input, + TouchAction: TouchAction, + + TouchInput: TouchInput, + MouseInput: MouseInput, + PointerEventInput: PointerEventInput, + TouchMouseInput: TouchMouseInput, + SingleTouchInput: SingleTouchInput, + + Recognizer: Recognizer, + AttrRecognizer: AttrRecognizer, + Tap: TapRecognizer, + Pan: PanRecognizer, + Swipe: SwipeRecognizer, + Pinch: PinchRecognizer, + Rotate: RotateRecognizer, + Press: PressRecognizer, + + on: addEventListeners, + off: removeEventListeners, + each: each, + merge: merge, + extend: extend, + inherit: inherit, + bindFn: bindFn, + prefixed: prefixed +}); + +if (typeof define == TYPE_FUNCTION && define.amd) { + define(function() { + return Hammer; + }); +} else if (typeof module != 'undefined' && module.exports) { + module.exports = Hammer; +} else { + window[exportName] = Hammer; +} + +})(window, document, 'Hammer');;(function(factory) { + if (typeof define === 'function' && define.amd) { + define(['jquery', 'hammerjs'], factory); + } else if (typeof exports === 'object') { + factory(require('jquery'), require('hammerjs')); + } else { + factory(jQuery, Hammer); + } +}(function($, Hammer) { + function hammerify(el, options) { + var $el = $(el); + if(!$el.data("hammer")) { + $el.data("hammer", new Hammer($el[0], options)); + } + } + + $.fn.hammer = function(options) { + return this.each(function() { + hammerify(this, options); + }); + }; + + // extend the emit method to also trigger jQuery events + Hammer.Manager.prototype.emit = (function(originalEmit) { + return function(type, data) { + originalEmit.call(this, type, data); + $(this.element).trigger({ + type: type, + gesture: data + }); + }; + })(Hammer.Manager.prototype.emit); +})); +;(function ($) { + $.fn.collapsible = function(options) { + var defaults = { + accordion: true + }; + + options = $.extend(defaults, options); + var $this = $(this); + + var $panel_headers = $(this).find('.collapsible-header'); + + if (defaults.accordion) { + + $panel_headers.each(function () { + $(this).click(function () { + + $(this).parent().toggleClass('active'); + if ($(this).parent().hasClass('active')){ + $(this).siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false}); + } + else{ + $(this).siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false}); + } + $panel_headers.not($(this)).parent().removeClass('active'); + $panel_headers.not($(this)).parent().children('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false}); + }); + }); + + } + else { + $panel_headers.each(function () { + $(this).click(function () { + $(this).parent().toggleClass('active'); + if ($(this).parent().hasClass('active')){ + $(this).siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false}); + } + else{ + $(this).siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false}); + } + }); + }); + } + }; +}( jQuery ));;(function ($) { + + $.fn.dropdown = function (options) { + var defaults = { + hover: true + } + + options = $.extend(defaults, options); + + this.each(function(){ + + + var origin = $(this); + + var activates = $("#"+ origin.attr('data-activates')); // Dropdown menu + + activates.hide(0); + + + if (defaults.hover) { + // Click handler for list container + origin.on('mouseover', function(e){ // Mouse over + activates.css('width', origin.outerWidth()); + activates.css('top', origin.offset().top); + activates.css('left', origin.offset().left); + activates.show({duration: 200, easing: 'easeOutCubic'}); + }); + + // Document click handler + activates.on('mouseleave', function(e){ // Mouse out + activates.hide({duration: 175, easing: 'easeOutCubic'}); + }); + + + + } else { + var open = false; + + // Click handler for list container + origin.click( function(e){ // Click + e.preventDefault(); + e.stopPropagation(); + activates.css('width', origin.outerWidth()); + activates.css('top', origin.offset().top); + activates.css('left', origin.offset().left); + activates.show({duration: 200, easing: 'easeOutCubic'}); + + $(document).bind('click.'+ activates.attr('id'), function (e) { + e.preventDefault(); + if (!activates.is(e.target) && (!origin.is(e.target))) { + activates.hide({duration: 175, easing: 'easeOutCubic'}); + $(document).unbind('click.' + activates.attr('id')); + } + + }); + }); + + + } + + // Window Resize Reposition + $(document).on('resize', function(){ + if (origin.is(':visible')) { + activates.css('top', origin.offset().top); + activates.css('left', origin.offset().left); + } + }); + }); + }; +}( jQuery ));;(function($) { + $.fn.extend({ + openModal: function(options) { + var modal = this; + var overlay = $('
'); + $("body").append(overlay); + + var defaults = { + opacity: 0.5, + in_duration: 300, + out_duration: 200, + ready: undefined, + complete: undefined + } + + // Override defaults + options = $.extend(defaults, options); + + $("#lean-overlay").click(function() { + closeModal(modal); + }); + + $(modal).find(".modal-close").click(function(e) { + e.preventDefault(); + closeModal(modal); + }); + + $("#lean-overlay").css({ display : "block", opacity : 0 }); + + $(modal).css({ + display : "block", + top: "4%", + opacity: 0 + }); + + $("#lean-overlay").velocity({opacity: options.opacity}, {duration: options.in_duration, queue: false, ease: "easeOutCubic"}); + + $(modal).velocity({top: "10%", opacity: 1}, { + duration: options.in_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + if (typeof(options.ready) === "function") { + options.ready(); + } + } + }); + + function closeModal(modal_id) { + $("#lean-overlay").velocity( { opacity: 0}, {duration: options.out_duration, queue: false, ease: "easeOutQuart"}); + $(modal_id).fadeOut(options.out_duration, function() { + $(modal_id).css({ top: 0}); + $("#lean-overlay").css({display:"none"}); + + // Call complete callback + if (typeof(options.complete) === "function") { + options.complete(); + } + }); + } + } + }); + + $.fn.extend({ + leanModal: function(options) { + return this.each(function() { + // Close Handlers + $(this).click(function(e) { + var modal_id = $(this).attr("href"); + $(modal_id).openModal(options); + e.preventDefault(); + }); // done set on click + }); // done return + } + }); +})(jQuery); +;(function ($) { + + $.fn.materialbox = function () { + + return this.each(function() { + + var overlayActive = false; + var doneAnimating = true; + var inDuration = 275; + var outDuration = 225; + var origin = $(this); + var placeholder = $('
').addClass('material-placeholder'); + var originalWidth = origin.width(); + var originalHeight = origin.height(); + + origin.wrap(placeholder); + origin.on('click', function(){ + + + var windowWidth = window.innerWidth; + var windowHeight = window.innerHeight; + + // If already modal, do nothing + if (overlayActive || doneAnimating === false) { + returnToOriginal(); + return false; + } + + // add active class + origin.addClass('active'); + originalWidth = origin.width(); + originalHeight = origin.height(); + + + // Set positioning for placeholder + origin.parent('.material-placeholder').css('width', origin.innerWidth()) + .css('height', originalHeight) + .css('position', 'relative') + .css('top', 0) + .css('left', 0) + .css('z-index', origin.attr('z-indez')); + + + origin.css('position', 'absolute'); + + // Add overlay + var overlay = $('
'); + overlay.attr('id', 'materialbox-overlay') + .css('width', $(document).width() + 100) // account for any scrollbar + .css('height', $(document).height() + 100) // account for any scrollbar + .css('top', 0) + .css('left', 0) + .css('opacity', 0) + .css('will-change', 'opacity') + .click(function(){ + returnToOriginal(); + }); + $('body').append(overlay); + overlay.animate({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'} + ); + + // Set states + overlayActive = true; + doneAnimating = false; + + + // Resize Image + var ratio = 0; + var widthPercent = originalWidth / windowWidth; + var heightPercent = originalHeight / windowHeight; + var newWidth = 0; + var newHeight = 0; + + if (widthPercent > heightPercent) { + ratio = originalHeight / originalWidth; + newWidth = windowWidth * 0.9; + newHeight = windowWidth * 0.9 * ratio; + } + else { + ratio = originalWidth / originalHeight; + newWidth = (windowHeight * 0.9) * ratio; + newHeight = windowHeight * 0.9; + } + + // Reposition Element AND Animate image + set z-index + origin.css('left', 0) + .css('top', 0) + .css('z-index', 1000) + .css('will-change', 'left, top') + .animate({ height: newHeight, width: newWidth }, {duration: inDuration, queue: false, easing: 'easeOutQuad'}) + .animate({ left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2 }, {duration: inDuration, queue: false, easing: 'easeOutQuad'}) + .animate({ top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2}, {duration: inDuration, queue: false, easing: 'easeOutQuad', complete: function(){doneAnimating = true;} }); + }); + + + // Return on scroll + $(window).scroll(function() { + if (overlayActive) { + returnToOriginal(); + } + }); + + // Return on ESC + $(document).keyup(function(e) { + + if (e.keyCode === 27) { // ESC key + if (overlayActive) { + returnToOriginal(); + } + } + }); + + + // This function returns the modaled image to the original spot + function returnToOriginal() { + // Reset z-index + var original_z_index = origin.parent('.material-placeholder').attr('z-index'); + if (!original_z_index) { + original_z_index = 0; + } + // Remove Overlay + overlayActive = false; + $('#materialbox-overlay').fadeOut(outDuration, function(){ + $(this).remove(); + origin.css('z-index', original_z_index); + }); + // Resize + origin.animate({ width: originalWidth}, {duration: outDuration, queue: false, easing: 'easeOutQuad'}); + origin.animate({ height: originalHeight}, {duration: outDuration, queue: false, easing: 'easeOutQuad'}); + + // Reposition Element + origin.animate({ left: 0}, {duration: outDuration, queue: false, easing: 'easeOutQuad'}); + origin.animate({ top: 0 }, {duration: outDuration, queue: false, easing: 'easeOutQuad'}); + origin.css('will-change', ''); + // add active class + origin.removeClass('active'); + } + }); + }; +}( jQuery ));;(function ($) { + + $.fn.parallax = function () { + var window_width = $(window).width(); + // Parallax Scripts + return this.each(function(i) { + var $this = $(this); + $this.addClass('parallax'); + + function updateParallax(initial) { + if (window_width > 992) { + var container_height = $this.height(); + var img_height = $this.children("img").height(); + var parallax_dist = img_height - container_height; + var bottom = $this.offset().top + container_height; + var top = $this.offset().top; + var scrollTop = $(window).scrollTop(); + var windowHeight = window.innerHeight; + var windowBottom = scrollTop + windowHeight; + var percentScrolled = (windowBottom - top) / (container_height + windowHeight); + var parallax = -1 * parallax_dist * percentScrolled; + + if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) { + $this.children("img").first().css('bottom', parallax + "px"); + } + if (initial) { + $this.children("img").first().show(); + } + + } + else { + $this.children("img").show(); + } + } + updateParallax(true); + + $(window).scroll(function() { + window_width = $(window).width(); + updateParallax(false); + }); + + }); + + }; +}( jQuery ));;(function ($) { + + $.fn.tabs = function () { + + return this.each(function() { + + // For each set of tabs, we want to keep track of + // which tab is active and its associated content + var $this = $(this); + var window_width = $(window).width(); + + $this.width('100%'); + // Set Tab Width for each tab + var $num_tabs = $(this).children('li').length; + $this.children('li').each(function() { + $(this).width((100/$num_tabs)+'%'); + }); + var $active, $content, $links = $this.find('li.tab a'); + var $tabs_width = $this.width(); + var $tab_width = $this.find('li').first().outerWidth(); + var $index = 0; + + // If the location.hash matches one of the links, use that as the active tab. + // If no match is found, use the first link as the initial active tab. + $active = $($links.filter('[href="'+location.hash+'"]')[0] || $links[0]); + $active.addClass('active'); + $index = $links.index($active); + if ($index < 0) { + $index = 0; + } + + $content = $($active[0].hash); + + // append indicator then set indicator width to tab width + $this.append('
'); + var $indicator = $this.find('.indicator'); + if ($this.is(":visible")) { + $indicator.css({"right": $tabs_width - (($index + 1) * $tab_width)}); + $indicator.css({"left": $index * $tab_width}); + } + $(window).resize(function () { + $tabs_width = $this.width(); + $tab_width = $this.find('li').first().outerWidth(); + if ($index < 0) { + $index = 0; + } + if ($tab_width !== 0 && $tabs_width !== 0) { + $indicator.css({"right": $tabs_width - (($index + 1) * $tab_width)}); + $indicator.css({"left": $index * $tab_width}); + } + }); + + // Hide the remaining content + $links.not($active).each(function () { + $(this.hash).hide(); + }); + + // Bind the click event handler + $this.on('click', 'a', function(e){ + $tabs_width = $this.width(); + $tab_width = $this.find('li').first().outerWidth(); + + // Make the old tab inactive. + $active.removeClass('active'); + $content.hide(); + + // Update the variables with the new link and content + $active = $(this); + $content = $(this.hash); + $links = $this.find('li.tab a'); + + // Make the tab active. + $active.addClass('active'); + var $prev_index = $index; + $index = $links.index($(this)); + if ($index < 0) { + $index = 0; + } + // Change url to current tab +// window.location.hash = $active.attr('href'); + + $content.show(); + + // Update indicator + if (($index - $prev_index) >= 0) { + $indicator.velocity({"right": $tabs_width - (($index + 1) * $tab_width)}, { duration: 300, queue: false, easing: 'easeOutQuad'}); + $indicator.velocity({"left": $index * $tab_width}, {duration: 300, queue: false, easing: 'easeOutQuad', delay: 80}); + + } + else { + $indicator.velocity({"left": $index * $tab_width}, { duration: 300, queue: false, easing: 'easeOutQuad'}); + $indicator.velocity({"right": $tabs_width - (($index + 1) * $tab_width)}, {duration: 300, queue: false, easing: 'easeOutQuad', delay: 80}); + } + + // Prevent the anchor's default click action + e.preventDefault(); + }); + }); + + }; +}( jQuery ));;(function ($) { + + var newTooltip; + var timeout; + var counter; + var started; + var counterInterval + $.fn.tooltip = function (options) { + var defaults = { + delay: 350 + } + options = $.extend(defaults, options); + + var origin = $(this); + var margin = 5; + + // Create tooltip + var newTooltip = $('
= defaults.delay && started == false) { + started = true + newTooltip.css({ display: 'block' }); + + // Bottom Position + newTooltip.css({top: origin.offset().top + origin.outerHeight() + margin, + left: origin.offset().left + origin.outerWidth()/2 - newTooltip.outerWidth()/2 }); + + + newTooltip.velocity({ opacity: 1, marginTop: '+10px'}, { duration: 250, queue: false }); + backdrop.css({ display: 'block' }) + .velocity({opacity:1},{duration: 200, delay: 0, queue: false}) + .velocity({scale: 12}, {duration: 250, delay: 20, queue: false, easing: 'easeInOutQuad'}); + } + }, 50); + + + +// Mouse Out + }, function(){ + clearInterval(counterInterval); + counter = 0; + + + newTooltip.velocity({ + opacity: 0, marginTop: '-10px'}, { duration: 225, queue: false, delay: 275 } + ); + + backdrop.velocity({opacity: 0, scale: 1}, + {duration:225, + delay: 275, queue: false, + complete: function(){ + backdrop.css('display', 'none'); + newTooltip.css('display', 'none'); + started = false; + } + } + ); + + + + }); + } +}( jQuery ));; +/*! + * Waves v0.5.3 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ + +;(function(window) { + 'use strict'; + + var Waves = Waves || {}; + var $$ = document.querySelectorAll.bind(document); + + // Find exact position of element + function isWindow(obj) { + return obj !== null && obj === obj.window; + } + + function getWindow(elem) { + return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; + } + + function offset(elem) { + + var docElem, win, + box = {top: 0, left: 0}, + doc = elem && elem.ownerDocument; + + docElem = doc.documentElement; + + if (typeof elem.getBoundingClientRect !== typeof undefined) { + box = elem.getBoundingClientRect(); + } + win = getWindow(doc); + return { + top: box.top + win.pageYOffset - docElem.clientTop, + left: box.left + win.pageXOffset - docElem.clientLeft + }; + } + + function convertStyle(obj) { + + var style = ''; + + for (var a in obj) { + if (obj.hasOwnProperty(a)) { + style += (a + ':' + obj[a] + ';'); + } + } + + return style; + } + + var Effect = { + + // Effect delay + duration: 500, + + show: function(e) { + + // Disable right click + if (e.button === 2) { + return false; + } + + var el = this; + + // Create ripple + var ripple = document.createElement('div'); + ripple.className = 'waves-ripple'; + el.appendChild(ripple); + + // Get click coordinate and element witdh + var pos = offset(el); + var relativeY = (e.pageY - pos.top) - 10; + var relativeX = (e.pageX - pos.left) - 10; + // var scale = 'scale('+((el.clientWidth / 100) * 2.5)+')'; + var scale = 'scale(15)'; + + // Support for touch devices + if ('touches' in e) { + relativeY = (e.touches[0].pageY - pos.top) - 45; + relativeX = (e.touches[0].pageX - pos.left) - 45; + } + + // Attach data to element + ripple.setAttribute('data-hold', Date.now()); + ripple.setAttribute('data-scale', scale); + ripple.setAttribute('data-x', relativeX); + ripple.setAttribute('data-y', relativeY); + + // Set ripple position + var rippleStyle = { + 'top': relativeY+'px', + 'left': relativeX+'px' + }; + + ripple.className = ripple.className + ' waves-notransition'; + ripple.setAttribute('style', convertStyle(rippleStyle)); + ripple.className = ripple.className.replace('waves-notransition', ''); + + // Scale the ripple + rippleStyle['-webkit-transform'] = scale; + rippleStyle['-moz-transform'] = scale; + rippleStyle['-ms-transform'] = scale; + rippleStyle['-o-transform'] = scale; + rippleStyle.transform = scale; + rippleStyle.opacity = '1'; + + rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; + rippleStyle['transition-duration'] = Effect.duration + 'ms'; + + ripple.setAttribute('style', convertStyle(rippleStyle)); + + }, + + hide: function() { + + var el = this; + + var width = el.clientWidth * 1.4; + + // Get first ripple + var ripple = null; + + var childrenLength = el.children.length; + + for (var a = 0; a < childrenLength; a++) { + if (el.children[a].className.indexOf('waves-ripple') !== -1) { + ripple = el.children[a]; + continue; + } + } + + if (!ripple) { + return false; + } + + var relativeX = ripple.getAttribute('data-x'); + var relativeY = ripple.getAttribute('data-y'); + var scale = ripple.getAttribute('data-scale'); + + // Get delay beetween mousedown and mouse leave + var diff = Date.now() - Number(ripple.getAttribute('data-hold')); + var delay = 500 - diff; + + if (delay < 0) { + delay = 0; + } + + // Fade out ripple after delay + setTimeout(function() { + + var style = { + 'top': relativeY+'px', + 'left': relativeX+'px', + 'opacity': '0', + + // Duration + '-webkit-transition-duration': Effect.duration + 'ms', + '-moz-transition-duration': Effect.duration + 'ms', + '-o-transition-duration': Effect.duration + 'ms', + 'transition-duration': Effect.duration + 'ms', + '-webkit-transform': scale, + '-moz-transform': scale, + '-ms-transform': scale, + '-o-transform': scale, + 'transform': scale, + }; + + ripple.setAttribute('style', convertStyle(style)); + + setTimeout(function() { + + try { + el.removeChild(ripple); + } catch(e) { + return false; + } + + + }, Effect.duration); + + }, delay); + + }, + + // Little hack to make can perform waves effect + wrapInput: function(elements) { + + for (var a = 0; a < elements.length; a++) { + + var el = elements[a]; + + if (el.tagName.toLowerCase() === 'input') { + + var parent = el.parentNode; + + // If input already have parent just pass through + if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) { + return false; + } + + // Put element class and style to the specified parent + var wrapper = document.createElement('i'); + wrapper.className = el.className + ' waves-input-wrapper'; + + var elementStyle = el.getAttribute('style'); + var dimensionStyle = 'width:'+el.offsetWidth+'px;height:'+el.clientHeight+'px;'; + + if (!elementStyle) { + elementStyle = ''; + } + + wrapper.setAttribute('style', dimensionStyle+elementStyle); + + el.className = 'waves-button-input'; + el.removeAttribute('style'); + + // Put element as child + parent.replaceChild(wrapper, el); + wrapper.appendChild(el); + + } + + } + } + }; + + Waves.displayEffect = function(options) { + + options = options || {}; + + if ('duration' in options) { + Effect.duration = options.duration; + } + + //Wrap input inside tag + Effect.wrapInput($$('.waves-effect')); + + Array.prototype.forEach.call($$('.waves-effect'), function(i) { + + if ('ontouchstart' in window) { + i.addEventListener('mouseup', Effect.hide, false); i.addEventListener('touchstart', Effect.show, false); + i.addEventListener('mouseleave', Effect.hide, false); i.addEventListener('touchend', Effect.hide, false); + i.addEventListener('touchcancel', Effect.hide, false); + } else { + i.addEventListener('mousedown', Effect.show, false); + i.addEventListener('mouseup', Effect.hide, false); + i.addEventListener('mouseleave', Effect.hide, false); + } + + }); + + }; + + window.Waves = Waves; + + $(document).ready(function() { + Waves.displayEffect(); + }); + +})(window); +;function toast(message, displayLength, className) { + className = className || ""; + if ($('#toast-container').length == 0) { + // create notification container + var container = $('
') + .attr('id', 'toast-container'); + $('body').append(container); + } + + // Select and append toast + var container = $('#toast-container') + var newToast = createToast(message); + container.append(newToast); + + newToast.css({"top" : parseFloat(newToast.css("top"))+35+"px", + "opacity": 0}); + newToast.velocity({"top" : "0px", + opacity: 1}, + {duration: 300, + easing: 'easeOutCubic', + queue: false}); + + // Allows timer to be pause while being panned + var timeLeft = displayLength; + var counterInterval = setInterval (function(){ + if (newToast.parent().length === 0) + window.clearInterval(counterInterval); + + if (!newToast.hasClass("panning")) { + timeLeft -= 100; + } + + if (timeLeft <= 0) { + newToast.velocity({"opacity": 0, marginTop: '-40px'}, + { duration: 375, + easing: 'easeOutExpo', + queue: false, + complete: function(){$(this).remove()} + } + ); + window.clearInterval(counterInterval); + } + }, 100); + + + + function createToast(message) { + var toast = $('
'); + toast.addClass('toast'); + toast.addClass(className); + var text = $(''); + text.text(message); + toast.append(text); + // Bind hammer + toast.hammer({prevent_default:false + }).bind('pan', function(e) { + + var deltaX = e.gesture.deltaX; + var activationDistance = 80; + +// change toast state + if (!toast.hasClass("panning")) + toast.addClass("panning"); + + var opacityPercent = 1-Math.abs(deltaX / activationDistance); + if (opacityPercent < 0) + opacityPercent = 0; + + toast.velocity({left: deltaX, opacity: opacityPercent }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + }).bind('panend', function(e) { + var deltaX = e.gesture.deltaX; + var activationDistance = 80; + + // If toast dragged past activation point + if (Math.abs(deltaX) > activationDistance) { + toast.velocity({marginTop: '-40px'}, + { duration: 375, + easing: 'easeOutExpo', + queue: false, + complete: function(){toast.remove()} + }) + } else { + toast.removeClass("panning"); + // Put toast back into original position + toast.velocity({left: 0, opacity: 1}, + { duration: 300, + easing: 'easeOutExpo', + queue: false + }) + } + }); + return toast; + } +};(function ($) { + // left: 37, up: 38, right: 39, down: 40, + // spacebar: 32, pageup: 33, pagedown: 34, end: 35, home: 36 + var keys = [32, 33, 34, 35, 36, 37, 38, 39, 40]; + + function preventDefault(e) { + e = e || window.event; + if (e.preventDefault) + e.preventDefault(); + e.returnValue = false; + } + + function keydown(e) { + for (var i = keys.length; i--;) { + if (e.keyCode === keys[i]) { + preventDefault(e); + return; + } + } + } + + function wheel(e) { + preventDefault(e); + } + + function disable_scroll() { + if (window.addEventListener) { + window.addEventListener('DOMMouseScroll', wheel, false); + } + window.onmousewheel = document.onmousewheel = wheel; + document.onkeydown = keydown; + } + + function enable_scroll() { + if (window.removeEventListener) { + window.removeEventListener('DOMMouseScroll', wheel, false); + } + window.onmousewheel = document.onmousewheel = document.onkeydown = null; + } + + + + $.fn.sideNav = function (options) { + var defaults = { + menuWidth: 240, + activationWidth: 70 + } + options = $.extend(defaults, options); + + + var $this = $(this); + var menu_id = $("#"+ $this.attr('data-activates')); + + function removeMenu() { + $('#sidenav-overlay').animate({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $(this).remove(); + } }); + menu_id.velocity({left: -1 * options.menuWidth}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + enable_scroll(); + } + + // Touch Event + var panning = false; + var menuOut = false; + + $('nothing').hammer({ + prevent_default: false + }).bind('pan', function(e) { + + if (e.gesture.pointerType === "touch") { + + var direction = e.gesture.direction; + var x = e.gesture.center.x; + var y = e.gesture.center.y; + + if (panning) { + if (!$('#sidenav-overlay').length) { + var overlay = $('
'); + overlay.css('opacity', 0) + .click(function(){ + panning = false; + menuOut = false; + removeMenu(); + menu_id.velocity({left: -1 * options.menuWidth}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + overlay.animate({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $(this).remove(); + } }); + + + }); + $('body').append(overlay); + } + + + if (x > options.menuWidth) { x = options.menuWidth; } + else if (x < 0) { x = 0; } + else if (x < (options.menuWidth / 2)) { menuOut = false; } + else if (x >= (options.menuWidth / 2)) { menuOut = true; } + + menu_id.velocity({left: (-1 * options.menuWidth) + x}, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + // Percentage overlay + var overlayPerc = x / options.menuWidth; + $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + } + else { + if (menuOut) { + if ((e.gesture.center.x > (options.menuWidth - options.activationWidth)) && direction === 2) { + panning = true; + } + } + else { + if ((e.gesture.center.x < options.activationWidth) && direction === 4) { + panning = true; + } + } + } + } + }).bind('panend', function(e) { + if (e.gesture.pointerType === "touch") { + + panning = false; + if (menuOut) { + menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + } + else { + menu_id.velocity({left: -240}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 50, queue: false, easing: 'easeOutQuad', + complete: function () { + $(this).remove(); + }}); + } + } + }); + + $this.click(function() { + if (menu_id.hasClass('active')) { + menuOut = false; + panning = false; + removeMenu(); + } + else { + disable_scroll(); + menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + + var overlay = $('
'); + overlay.css('opacity', 0) + .click(function(){ + menuOut = false; + panning = false; + removeMenu(); + overlay.animate({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $(this).remove(); + } }); + + }); + $('body').append(overlay); + overlay.animate({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function () { + menuOut = true; + panning = false; + } + }); + } + + + return false; + }); + + + }; +}( jQuery ));;/** + * Extend jquery with a scrollspy plugin. + * This watches the window scroll and fires events when elements are scrolled into viewport. + * + * throttle() and getTime() taken from Underscore.js + * https://github.com/jashkenas/underscore + * + * @author Copyright 2013 John Smart + * @license https://raw.github.com/thesmart/jquery-scrollspy/master/LICENSE + * @see https://github.com/thesmart + * @version 0.1.2 + */ +(function($) { + + var jWindow = $(window); + var elements = []; + var elementsInView = []; + var isSpying = false; + var ticks = 0; + var unique_id = 1; + var offset = { + top : 0, + right : 0, + bottom : 0, + left : 0, + } + + /** + * Find elements that are within the boundary + * @param {number} top + * @param {number} right + * @param {number} bottom + * @param {number} left + * @return {jQuery} A collection of elements + */ + function findElements(top, right, bottom, left) { + var hits = $(); + $.each(elements, function(i, element) { + if (element.height() > 0) { + var elTop = element.offset().top, + elLeft = element.offset().left, + elRight = elLeft + element.width(), + elBottom = elTop + element.height(); + + var isIntersect = !(elLeft > right || + elRight < left || + elTop > bottom || + elBottom < top); + + if (isIntersect) { + hits.push(element); + } + } + }); + + return hits; + } + + + /** + * Called when the user scrolls the window + */ + function onScroll() { + // unique tick id + ++ticks; + + // viewport rectangle + var top = jWindow.scrollTop(), + left = jWindow.scrollLeft(), + right = left + jWindow.width(), + bottom = top + jWindow.height(); + + // determine which elements are in view +// + 60 accounts for fixed nav + var intersections = findElements(top+offset.top + 200, right+offset.right, bottom+offset.bottom, left+offset.left); + $.each(intersections, function(i, element) { + + var lastTick = element.data('scrollSpy:ticks'); + if (typeof lastTick != 'number') { + // entered into view + element.triggerHandler('scrollSpy:enter'); + } + + // update tick id + element.data('scrollSpy:ticks', ticks); + }); + + // determine which elements are no longer in view + $.each(elementsInView, function(i, element) { + var lastTick = element.data('scrollSpy:ticks'); + if (typeof lastTick == 'number' && lastTick !== ticks) { + // exited from view + element.triggerHandler('scrollSpy:exit'); + element.data('scrollSpy:ticks', null); + } + }); + + // remember elements in view for next tick + elementsInView = intersections; + } + + /** + * Called when window is resized + */ + function onWinSize() { + jWindow.trigger('scrollSpy:winSize'); + } + + /** + * Get time in ms + * @license https://raw.github.com/jashkenas/underscore/master/LICENSE + * @type {function} + * @return {number} + */ + var getTime = (Date.now || function () { + return new Date().getTime(); + }); + + /** + * Returns a function, that, when invoked, will only be triggered at most once + * during a given window of time. Normally, the throttled function will run + * as much as it can, without ever going more than once per `wait` duration; + * but if you'd like to disable the execution on the leading edge, pass + * `{leading: false}`. To disable execution on the trailing edge, ditto. + * @license https://raw.github.com/jashkenas/underscore/master/LICENSE + * @param {function} func + * @param {number} wait + * @param {Object=} options + * @returns {Function} + */ + function throttle(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + options || (options = {}); + var later = function () { + previous = options.leading === false ? 0 : getTime(); + timeout = null; + result = func.apply(context, args); + context = args = null; + }; + return function () { + var now = getTime(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + /** + * Enables ScrollSpy using a selector + * @param {jQuery|string} selector The elements collection, or a selector + * @param {Object=} options Optional. + throttle : number -> scrollspy throttling. Default: 100 ms + offsetTop : number -> offset from top. Default: 0 + offsetRight : number -> offset from right. Default: 0 + offsetBottom : number -> offset from bottom. Default: 0 + offsetLeft : number -> offset from left. Default: 0 + * @returns {jQuery} + */ + $.scrollSpy = function(selector, options) { + var visible = []; + selector = $(selector); + selector.each(function(i, element) { + elements.push($(element)); + $(element).data("scrollSpy:id", i); + // Smooth scroll to section + $('a[href=#' + $(element).attr('id') + ']').click(function(e) { + e.preventDefault(); + var offset = $(this.hash).offset().top + 1; + +// offset-60 to handle floating fixed tab bar + if ($('.tabs-wrapper').length) { + $('html, body').animate({ scrollTop: offset-60 }, {duration: 400, easing: 'easeOutCubic'}); + } + else { + $('html, body').animate({ scrollTop: offset }, {duration: 400, easing: 'easeOutCubic'}); + } + }); + }); + options = options || { + throttle: 100 + }; + + offset.top = options.offsetTop || 0; + offset.right = options.offsetRight || 0; + offset.bottom = options.offsetBottom || 0; + offset.left = options.offsetLeft || 0; + + var throttledScroll = throttle(onScroll, options.throttle || 100); + var readyScroll = function(){ + $(document).ready(throttledScroll); + }; + + if (!isSpying) { + jWindow.on('scroll', readyScroll); + jWindow.on('resize', readyScroll); + isSpying = true; + } + + // perform a scan once, after current execution context, and after dom is ready + setTimeout(readyScroll, 0); + + + selector.on('scrollSpy:enter', function() { + visible = $.grep(visible, function(value) { + return value.height() != 0; + }); + + var $this = $(this); + + if (visible[0]) { + $('a[href=#' + visible[0].attr('id') + ']').removeClass('active'); + if ($this.data('scrollSpy:id') < visible[0].data('scrollSpy:id')) { + visible.unshift($(this)); + } + else { + visible.push($(this)); + } + } + else { + visible.push($(this)); + } + + $('a[href=#' + visible[0].attr('id') + ']').addClass('active'); + }); + selector.on('scrollSpy:exit', function() { + visible = $.grep(visible, function(value) { + return value.height() != 0; + }); + + if (visible[0]) { + $('a[href=#' + visible[0].attr('id') + ']').removeClass('active'); + var $this = $(this); + visible = $.grep(visible, function(value) { + return value.attr('id') != $this.attr('id'); + }); + $('a[href=#' + visible[0].attr('id') + ']').addClass('active'); + } + }); + + return selector; + }; + + /** + * Listen for window resize events + * @param {Object=} options Optional. Set { throttle: number } to change throttling. Default: 100 ms + * @returns {jQuery} $(window) + */ + $.winSizeSpy = function(options) { + $.winSizeSpy = function() { return jWindow; }; // lock from multiple calls + options = options || { + throttle: 100 + }; + return jWindow.on('resize', throttle(onWinSize, options.throttle || 100)); + }; + + /** + * Enables ScrollSpy on a collection of elements + * e.g. $('.scrollSpy').scrollSpy() + * @param {Object=} options Optional. + throttle : number -> scrollspy throttling. Default: 100 ms + offsetTop : number -> offset from top. Default: 0 + offsetRight : number -> offset from right. Default: 0 + offsetBottom : number -> offset from bottom. Default: 0 + offsetLeft : number -> offset from left. Default: 0 + * @returns {jQuery} + */ + $.fn.scrollSpy = function(options) { + return $.scrollSpy($(this), options); + }; + +})(jQuery);;(function ($) { + + // Text based inputs + var text_inputs = $('input[type=text], input[type=password], input[type=email], textarea'); + + text_inputs.each(function(){ + if($(this).val().length !== 0) { + $(this).siblings('label').addClass('active'); + } + }) + + text_inputs.focus(function () { + $(this).siblings('label').addClass('active'); + }); + + text_inputs.blur(function () { + if ($(this).val().length === 0) { + $(this).siblings('label').removeClass('active'); + } + }); + + + // Textarea Auto Resize + $('textarea').each(function () { + var hiddenDiv = $('
'), + content = null; + + $('body').append(hiddenDiv); + + $(this).on('keyup keydown', function () { + + content = $(this).val(); + + content = content.replace(/\n/g, '
'); + hiddenDiv.html(content + '
'); + + $(this).css('height', hiddenDiv.height()); + + }); + }); + + + // Range Input + var range_input = $('input[type=range]'); + var range_mousedown = false; + + range_input.each(function () { + var thumb = $(''); + $(this).after(thumb); + }); + + var range_wrapper = $('.range-field'); + + range_wrapper.on("mousedown", function(e) { + range_mousedown = true; + $(this).addClass('active'); + + var thumb = $(this).children('.thumb'); + if (!thumb.hasClass('active')) { + thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); + } + var left = e.pageX - $(this).offset().left; + var width = $(this).outerWidth(); + + if (left < 0) { + left = 0; + } + else if (left > width) { + left = width; + } + thumb.addClass('active').css('left', left); + thumb.find('.value').html($(this).children('input[type=range]').val()); + + }); + range_wrapper.on("mouseup", function() { + range_mousedown = false; + $(this).removeClass('active'); + }); + + range_wrapper.on("mousemove", function(e) { + + var thumb = $(this).children('.thumb'); + if (range_mousedown) { + if (!thumb.hasClass('active')) { + thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); + } + var left = e.pageX - $(this).offset().left; + var width = $(this).outerWidth(); + + if (left < 0) { + left = 0; + } + else if (left > width) { + left = width; + } + thumb.addClass('active').css('left', left); + thumb.find('.value').html($(this).children('input[type=range]').val()); + } + + }); + range_wrapper.on("mouseout", function() { + if (!range_mousedown) { + + var thumb = $(this).children('.thumb'); + + if (thumb.hasClass('active')) { + thumb.velocity({ height: "0", width: "0", top: "10px", marginLeft: "-6px"}, { duration: 100 }); + } + thumb.removeClass('active'); + + } + + + }); + + + // Select Functionality + + var createSelectStructure = function($select, $index) { + var wrapper = $('
'); + var options = $(''); + var selectOptions = $select.children('option'); + var label = selectOptions.first(); + selectOptions = selectOptions.slice(1); + + selectOptions.each(function () { + options.append($('
  • ' + $(this).html() + '
  • ')); + }); + options.find('li').each(function (i) { + $(this).click(function () { + $select.find('option').eq(i + 1).prop('selected', true); + $select.prev('span.select-dropdown').html($(this).text()); + }); + }); + + $select.wrap(wrapper); + $select.before($('' + label.html() + '')); + $('body').append(options); + + }; + + $('select').not('.disabled').each(function (i) { + createSelectStructure($(this), i); + }); + + + $('.select-dropdown').dropdown({"hover": false}); + + + + +}( jQuery ));;/*! + * pickadate.js v3.5.4, 2014/09/11 + * By Amsul, http://amsul.ca + * Hosted on http://amsul.github.io/pickadate.js + * Licensed under MIT + */ + +(function ( factory ) { + + // AMD. + if ( typeof define == 'function' && define.amd ) + define( 'picker', ['jquery'], factory ) + + // Node.js/browserify. + else if ( typeof exports == 'object' ) + module.exports = factory( require('jquery') ) + + // Browser globals. + else this.Picker = factory( jQuery ) + +}(function( $ ) { + +var $window = $( window ) +var $document = $( document ) +var $html = $( document.documentElement ) + + +/** + * The picker constructor that creates a blank picker. + */ +function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) { + + // If there’s no element, return the picker constructor. + if ( !ELEMENT ) return PickerConstructor + + + var + IS_DEFAULT_THEME = false, + + + // The state of the picker. + STATE = { + id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ) + }, + + + // Merge the defaults and options passed. + SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {}, + + + // Merge the default classes with the settings classes. + CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ), + + + // The element node wrapper into a jQuery object. + $ELEMENT = $( ELEMENT ), + + + // Pseudo picker constructor. + PickerInstance = function() { + return this.start() + }, + + + // The picker prototype. + P = PickerInstance.prototype = { + + constructor: PickerInstance, + + $node: $ELEMENT, + + + /** + * Initialize everything + */ + start: function() { + + // If it’s already started, do nothing. + if ( STATE && STATE.start ) return P + + + // Update the picker states. + STATE.methods = {} + STATE.start = true + STATE.open = false + STATE.type = ELEMENT.type + + + // Confirm focus state, convert into text input to remove UA stylings, + // and set as readonly to prevent keyboard popup. + ELEMENT.autofocus = ELEMENT == getActiveElement() + ELEMENT.readOnly = !SETTINGS.editable + ELEMENT.id = ELEMENT.id || STATE.id + if ( ELEMENT.type != 'text' ) { + ELEMENT.type = 'text' + } + + + // Create a new picker component with the settings. + P.component = new COMPONENT(P, SETTINGS) + + + // Create the picker root with a holder and then prepare it. + P.$root = $( PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id="' + ELEMENT.id + '_root" tabindex="0"') ) + prepareElementRoot() + + + // If there’s a format for the hidden input element, create the element. + if ( SETTINGS.formatSubmit ) { + prepareElementHidden() + } + + + // Prepare the input element. + prepareElement() + + + // Insert the root as specified in the settings. + if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root ) + else $ELEMENT.after( P.$root ) + + + // Bind the default component and settings events. + P.on({ + start: P.component.onStart, + render: P.component.onRender, + stop: P.component.onStop, + open: P.component.onOpen, + close: P.component.onClose, + set: P.component.onSet + }).on({ + start: SETTINGS.onStart, + render: SETTINGS.onRender, + stop: SETTINGS.onStop, + open: SETTINGS.onOpen, + close: SETTINGS.onClose, + set: SETTINGS.onSet + }) + + + // Once we’re all set, check the theme in use. + IS_DEFAULT_THEME = isUsingDefaultTheme( P.$root.children()[ 0 ] ) + + + // If the element has autofocus, open the picker. + if ( ELEMENT.autofocus ) { + P.open() + } + + + // Trigger queued the “start” and “render” events. + return P.trigger( 'start' ).trigger( 'render' ) + }, //start + + + /** + * Render a new picker + */ + render: function( entireComponent ) { + + // Insert a new component holder in the root or box. + if ( entireComponent ) P.$root.html( createWrappedComponent() ) + else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) ) + + // Trigger the queued “render” events. + return P.trigger( 'render' ) + }, //render + + + /** + * Destroy everything + */ + stop: function() { + + // If it’s already stopped, do nothing. + if ( !STATE.start ) return P + + // Then close the picker. + P.close() + + // Remove the hidden field. + if ( P._hidden ) { + P._hidden.parentNode.removeChild( P._hidden ) + } + + // Remove the root. + P.$root.remove() + + // Remove the input class, remove the stored data, and unbind + // the events (after a tick for IE - see `P.close`). + $ELEMENT.removeClass( CLASSES.input ).removeData( NAME ) + setTimeout( function() { + $ELEMENT.off( '.' + STATE.id ) + }, 0) + + // Restore the element state + ELEMENT.type = STATE.type + ELEMENT.readOnly = false + + // Trigger the queued “stop” events. + P.trigger( 'stop' ) + + // Reset the picker states. + STATE.methods = {} + STATE.start = false + + return P + }, //stop + + + /** + * Open up the picker + */ + open: function( dontGiveFocus ) { + + // If it’s already open, do nothing. + if ( STATE.open ) return P + + // Add the “active” class. + $ELEMENT.addClass( CLASSES.active ) + aria( ELEMENT, 'expanded', true ) + + // * A Firefox bug, when `html` has `overflow:hidden`, results in + // killing transitions :(. So add the “opened” state on the next tick. + // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 + setTimeout( function() { + + // Add the “opened” class to the picker root. + P.$root.addClass( CLASSES.opened ) + aria( P.$root[0], 'hidden', false ) + + }, 0 ) + + // If we have to give focus, bind the element and doc events. + if ( dontGiveFocus !== false ) { + + // Set it as open. + STATE.open = true + + // Prevent the page from scrolling. + if ( IS_DEFAULT_THEME ) { + $html. + css( 'overflow', 'hidden' ). + css( 'padding-right', '+=' + getScrollbarWidth() ) + } + + // Pass focus to the root element’s jQuery object. + // * Workaround for iOS8 to bring the picker’s root into view. + P.$root[0].focus() + + // Bind the document events. + $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) { + + var target = event.target + + // If the target of the event is not the element, close the picker picker. + // * Don’t worry about clicks or focusins on the root because those don’t bubble up. + // Also, for Firefox, a click on an `option` element bubbles up directly + // to the doc. So make sure the target wasn't the doc. + // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling, + // which causes the picker to unexpectedly close when right-clicking it. So make + // sure the event wasn’t a right-click. + if ( target != ELEMENT && target != document && event.which != 3 ) { + + // If the target was the holder that covers the screen, + // keep the element focused to maintain tabindex. + P.close( target === P.$root.children()[0] ) + } + + }).on( 'keydown.' + STATE.id, function( event ) { + + var + // Get the keycode. + keycode = event.keyCode, + + // Translate that to a selection change. + keycodeToMove = P.component.key[ keycode ], + + // Grab the target. + target = event.target + + + // On escape, close the picker and give focus. + if ( keycode == 27 ) { + P.close( true ) + } + + + // Check if there is a key movement or “enter” keypress on the element. + else if ( target == P.$root[0] && ( keycodeToMove || keycode == 13 ) ) { + + // Prevent the default action to stop page movement. + event.preventDefault() + + // Trigger the key movement action. + if ( keycodeToMove ) { + PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] ) + } + + // On “enter”, if the highlighted item isn’t disabled, set the value and close. + else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) { + P.set( 'select', P.component.item.highlight ).close() + } + } + + + // If the target is within the root and “enter” is pressed, + // prevent the default action and trigger a click on the target instead. + else if ( $.contains( P.$root[0], target ) && keycode == 13 ) { + event.preventDefault() + target.click() + } + }) + } + + // Trigger the queued “open” events. + return P.trigger( 'open' ) + }, //open + + + /** + * Close the picker + */ + close: function( giveFocus ) { + + // If we need to give focus, do it before changing states. + if ( giveFocus ) { + // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :| + // The focus is triggered *after* the close has completed - causing it + // to open again. So unbind and rebind the event at the next tick. + P.$root.off( 'focus.toOpen' )[0].focus() + setTimeout( function() { + P.$root.on( 'focus.toOpen', handleFocusToOpenEvent ) + }, 0 ) + } + + // Remove the “active” class. + $ELEMENT.removeClass( CLASSES.active ) + aria( ELEMENT, 'expanded', false ) + + // * A Firefox bug, when `html` has `overflow:hidden`, results in + // killing transitions :(. So remove the “opened” state on the next tick. + // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 + setTimeout( function() { + + // Remove the “opened” and “focused” class from the picker root. + P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused ) + aria( P.$root[0], 'hidden', true ) + + }, 0 ) + + // If it’s already closed, do nothing more. + if ( !STATE.open ) return P + + // Set it as closed. + STATE.open = false + + // Allow the page to scroll. + if ( IS_DEFAULT_THEME ) { + $html. + css( 'overflow', '' ). + css( 'padding-right', '-=' + getScrollbarWidth() ) + } + + // Unbind the document events. + $document.off( '.' + STATE.id ) + + // Trigger the queued “close” events. + return P.trigger( 'close' ) + }, //close + + + /** + * Clear the values + */ + clear: function( options ) { + return P.set( 'clear', null, options ) + }, //clear + + + /** + * Set something + */ + set: function( thing, value, options ) { + + var thingItem, thingValue, + thingIsObject = $.isPlainObject( thing ), + thingObject = thingIsObject ? thing : {} + + // Make sure we have usable options. + options = thingIsObject && $.isPlainObject( value ) ? value : options || {} + + if ( thing ) { + + // If the thing isn’t an object, make it one. + if ( !thingIsObject ) { + thingObject[ thing ] = value + } + + // Go through the things of items to set. + for ( thingItem in thingObject ) { + + // Grab the value of the thing. + thingValue = thingObject[ thingItem ] + + // First, if the item exists and there’s a value, set it. + if ( thingItem in P.component.item ) { + if ( thingValue === undefined ) thingValue = null + P.component.set( thingItem, thingValue, options ) + } + + // Then, check to update the element value and broadcast a change. + if ( thingItem == 'select' || thingItem == 'clear' ) { + $ELEMENT. + val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ). + trigger( 'change' ) + } + } + + // Render a new picker. + P.render() + } + + // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`. + return options.muted ? P : P.trigger( 'set', thingObject ) + }, //set + + + /** + * Get something + */ + get: function( thing, format ) { + + // Make sure there’s something to get. + thing = thing || 'value' + + // If a picker state exists, return that. + if ( STATE[ thing ] != null ) { + return STATE[ thing ] + } + + // Return the submission value, if that. + if ( thing == 'valueSubmit' ) { + if ( P._hidden ) { + return P._hidden.value + } + thing = value + } + + // Return the value, if that. + if ( thing == 'value' ) { + return ELEMENT.value + } + + // Check if a component item exists, return that. + if ( thing in P.component.item ) { + if ( typeof format == 'string' ) { + var thingValue = P.component.get( thing ) + return thingValue ? + PickerConstructor._.trigger( + P.component.formats.toString, + P.component, + [ format, thingValue ] + ) : '' + } + return P.component.get( thing ) + } + }, //get + + + + /** + * Bind events on the things. + */ + on: function( thing, method, internal ) { + + var thingName, thingMethod, + thingIsObject = $.isPlainObject( thing ), + thingObject = thingIsObject ? thing : {} + + if ( thing ) { + + // If the thing isn’t an object, make it one. + if ( !thingIsObject ) { + thingObject[ thing ] = method + } + + // Go through the things to bind to. + for ( thingName in thingObject ) { + + // Grab the method of the thing. + thingMethod = thingObject[ thingName ] + + // If it was an internal binding, prefix it. + if ( internal ) { + thingName = '_' + thingName + } + + // Make sure the thing methods collection exists. + STATE.methods[ thingName ] = STATE.methods[ thingName ] || [] + + // Add the method to the relative method collection. + STATE.methods[ thingName ].push( thingMethod ) + } + } + + return P + }, //on + + + + /** + * Unbind events on the things. + */ + off: function() { + var i, thingName, + names = arguments; + for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) { + thingName = names[i] + if ( thingName in STATE.methods ) { + delete STATE.methods[thingName] + } + } + return P + }, + + + /** + * Fire off method events. + */ + trigger: function( name, data ) { + var _trigger = function( name ) { + var methodList = STATE.methods[ name ] + if ( methodList ) { + methodList.map( function( method ) { + PickerConstructor._.trigger( method, P, [ data ] ) + }) + } + } + _trigger( '_' + name ) + _trigger( name ) + return P + } //trigger + } //PickerInstance.prototype + + + /** + * Wrap the picker holder components together. + */ + function createWrappedComponent() { + + // Create a picker wrapper holder + return PickerConstructor._.node( 'div', + + // Create a picker wrapper node + PickerConstructor._.node( 'div', + + // Create a picker frame + PickerConstructor._.node( 'div', + + // Create a picker box node + PickerConstructor._.node( 'div', + + // Create the components nodes. + P.component.nodes( STATE.open ), + + // The picker box class + CLASSES.box + ), + + // Picker wrap class + CLASSES.wrap + ), + + // Picker frame class + CLASSES.frame + ), + + // Picker holder class + CLASSES.holder + ) //endreturn + } //createWrappedComponent + + + + /** + * Prepare the input element with all bindings. + */ + function prepareElement() { + + $ELEMENT. + + // Store the picker data by component name. + data(NAME, P). + + // Add the “input” class name. + addClass(CLASSES.input). + + // Remove the tabindex. + attr('tabindex', -1). + + // If there’s a `data-value`, update the value of the element. + val( $ELEMENT.data('value') ? + P.get('select', SETTINGS.format) : + ELEMENT.value + ) + + + // Only bind keydown events if the element isn’t editable. + if ( !SETTINGS.editable ) { + + $ELEMENT. + + // On focus/click, focus onto the root to open it up. + on( 'focus.' + STATE.id + ' click.' + STATE.id, function( event ) { + event.preventDefault() + P.$root[0].focus() + }). + + // Handle keyboard event based on the picker being opened or not. + on( 'keydown.' + STATE.id, handleKeydownEvent ) + } + + + // Update the aria attributes. + aria(ELEMENT, { + haspopup: true, + expanded: false, + readonly: false, + owns: ELEMENT.id + '_root' + (P._hidden ? ' ' + P._hidden.id : '') + }) + } + + + /** + * Prepare the root picker element with all bindings. + */ + function prepareElementRoot() { + + P.$root. + + on({ + + // For iOS8. + keydown: handleKeydownEvent, + + // When something within the root is focused, stop from bubbling + // to the doc and remove the “focused” state from the root. + focusin: function( event ) { + P.$root.removeClass( CLASSES.focused ) + event.stopPropagation() + }, + + // When something within the root holder is clicked, stop it + // from bubbling to the doc. + 'mousedown click': function( event ) { + + var target = event.target + + // Make sure the target isn’t the root holder so it can bubble up. + if ( target != P.$root.children()[ 0 ] ) { + + event.stopPropagation() + + // * For mousedown events, cancel the default action in order to + // prevent cases where focus is shifted onto external elements + // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120). + // Also, for Firefox, don’t prevent action on the `option` element. + if ( event.type == 'mousedown' && !$( target ).is( ':input' ) && target.nodeName != 'OPTION' ) { + + event.preventDefault() + + // Re-focus onto the root so that users can click away + // from elements focused within the picker. + P.$root[0].focus() + } + } + } + }). + + // Add/remove the “target” class on focus and blur. + on({ + focus: function() { + $ELEMENT.addClass( CLASSES.target ) + }, + blur: function() { + $ELEMENT.removeClass( CLASSES.target ) + } + }). + + // Open the picker and adjust the root “focused” state + on( 'focus.toOpen', handleFocusToOpenEvent ). + + // If there’s a click on an actionable element, carry out the actions. + on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() { + + var $target = $( this ), + targetData = $target.data(), + targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ), + + // * For IE, non-focusable elements can be active elements as well + // (http://stackoverflow.com/a/2684561). + activeElement = getActiveElement() + activeElement = activeElement && ( activeElement.type || activeElement.href ) + + // If it’s disabled or nothing inside is actively focused, re-focus the element. + if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) { + P.$root[0].focus() + } + + // If something is superficially changed, update the `highlight` based on the `nav`. + if ( !targetDisabled && targetData.nav ) { + P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } ) + } + + // If something is picked, set `select` then close with focus. + else if ( !targetDisabled && 'pick' in targetData ) { + P.set( 'select', targetData.pick ).close( true ) + } + + // If a “clear” button is pressed, empty the values and close with focus. + else if ( targetData.clear ) { + P.clear().close( true ) + } + + else if ( targetData.close ) { + P.close( true ) + } + + }) //P.$root + + aria( P.$root[0], 'hidden', true ) + } + + + /** + * Prepare the hidden input element along with all bindings. + */ + function prepareElementHidden() { + + var name + + if ( SETTINGS.hiddenName === true ) { + name = ELEMENT.name + ELEMENT.name = '' + } + else { + name = [ + typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '', + typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit' + ] + name = name[0] + ELEMENT.name + name[1] + } + + P._hidden = $( + '' + )[0] + + $ELEMENT. + + // If the value changes, update the hidden input with the correct format. + on('change.' + STATE.id, function() { + P._hidden.value = ELEMENT.value ? + P.get('select', SETTINGS.formatSubmit) : + '' + }). + + // Insert the hidden input after the element. + after(P._hidden) + } + + + // For iOS8. + function handleKeydownEvent( event ) { + + var keycode = event.keyCode, + + // Check if one of the delete keys was pressed. + isKeycodeDelete = /^(8|46)$/.test(keycode) + + // For some reason IE clears the input value on “escape”. + if ( keycode == 27 ) { + P.close() + return false + } + + // Check if `space` or `delete` was pressed or the picker is closed with a key movement. + if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) { + + // Prevent it from moving the page and bubbling to doc. + event.preventDefault() + event.stopPropagation() + + // If `delete` was pressed, clear the values and close the picker. + // Otherwise open the picker. + if ( isKeycodeDelete ) { P.clear().close() } + else { P.open() } + } + } + + + // Separated for IE + function handleFocusToOpenEvent( event ) { + + // Stop the event from propagating to the doc. + event.stopPropagation() + + // If it’s a focus event, add the “focused” class to the root. + if ( event.type == 'focus' ) { + P.$root.addClass( CLASSES.focused ) + } + + // And then finally open the picker. + P.open() + } + + + // Return a new picker instance. + return new PickerInstance() +} //PickerConstructor + + + +/** + * The default classes and prefix to use for the HTML classes. + */ +PickerConstructor.klasses = function( prefix ) { + prefix = prefix || 'picker' + return { + + picker: prefix, + opened: prefix + '--opened', + focused: prefix + '--focused', + + input: prefix + '__input', + active: prefix + '__input--active', + target: prefix + '__input--target', + + holder: prefix + '__holder', + + frame: prefix + '__frame', + wrap: prefix + '__wrap', + + box: prefix + '__box' + } +} //PickerConstructor.klasses + + + +/** + * Check if the default theme is being used. + */ +function isUsingDefaultTheme( element ) { + + var theme, + prop = 'position' + + // For IE. + if ( element.currentStyle ) { + theme = element.currentStyle[prop] + } + + // For normal browsers. + else if ( window.getComputedStyle ) { + theme = getComputedStyle( element )[prop] + } + + return theme == 'fixed' +} + + + +/** + * Get the width of the browser’s scrollbar. + * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js + */ +function getScrollbarWidth() { + + if ( $html.height() <= $window.height() ) { + return 0 + } + + var $outer = $( '
    ' ). + appendTo( 'body' ) + + // Get the width without scrollbars. + var widthWithoutScroll = $outer[0].offsetWidth + + // Force adding scrollbars. + $outer.css( 'overflow', 'scroll' ) + + // Add the inner div. + var $inner = $( '
    ' ).appendTo( $outer ) + + // Get the width with scrollbars. + var widthWithScroll = $inner[0].offsetWidth + + // Remove the divs. + $outer.remove() + + // Return the difference between the widths. + return widthWithoutScroll - widthWithScroll +} + + + +/** + * PickerConstructor helper methods. + */ +PickerConstructor._ = { + + /** + * Create a group of nodes. Expects: + * ` + { + min: {Integer}, + max: {Integer}, + i: {Integer}, + node: {String}, + item: {Function} + } + * ` + */ + group: function( groupObject ) { + + var + // Scope for the looped object + loopObjectScope, + + // Create the nodes list + nodesList = '', + + // The counter starts from the `min` + counter = PickerConstructor._.trigger( groupObject.min, groupObject ) + + + // Loop from the `min` to `max`, incrementing by `i` + for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) { + + // Trigger the `item` function within scope of the object + loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] ) + + // Splice the subgroup and create nodes out of the sub nodes + nodesList += PickerConstructor._.node( + groupObject.node, + loopObjectScope[ 0 ], // the node + loopObjectScope[ 1 ], // the classes + loopObjectScope[ 2 ] // the attributes + ) + } + + // Return the list of nodes + return nodesList + }, //group + + + /** + * Create a dom node string + */ + node: function( wrapper, item, klass, attribute ) { + + // If the item is false-y, just return an empty string + if ( !item ) return '' + + // If the item is an array, do a join + item = $.isArray( item ) ? item.join( '' ) : item + + // Check for the class + klass = klass ? ' class="' + klass + '"' : '' + + // Check for any attributes + attribute = attribute ? ' ' + attribute : '' + + // Return the wrapped item + return '<' + wrapper + klass + attribute + '>' + item + '' + }, //node + + + /** + * Lead numbers below 10 with a zero. + */ + lead: function( number ) { + return ( number < 10 ? '0': '' ) + number + }, + + + /** + * Trigger a function otherwise return the value. + */ + trigger: function( callback, scope, args ) { + return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback + }, + + + /** + * If the second character is a digit, length is 2 otherwise 1. + */ + digits: function( string ) { + return ( /\d/ ).test( string[ 1 ] ) ? 2 : 1 + }, + + + /** + * Tell if something is a date object. + */ + isDate: function( value ) { + return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() ) + }, + + + /** + * Tell if something is an integer. + */ + isInteger: function( value ) { + return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0 + }, + + + /** + * Create ARIA attribute strings. + */ + ariaAttr: ariaAttr +} //PickerConstructor._ + + + +/** + * Extend the picker with a component and defaults. + */ +PickerConstructor.extend = function( name, Component ) { + + // Extend jQuery. + $.fn[ name ] = function( options, action ) { + + // Grab the component data. + var componentData = this.data( name ) + + // If the picker is requested, return the data object. + if ( options == 'picker' ) { + return componentData + } + + // If the component data exists and `options` is a string, carry out the action. + if ( componentData && typeof options == 'string' ) { + return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] ) + } + + // Otherwise go through each matched element and if the component + // doesn’t exist, create a new picker using `this` element + // and merging the defaults and options with a deep copy. + return this.each( function() { + var $this = $( this ) + if ( !$this.data( name ) ) { + new PickerConstructor( this, name, Component, options ) + } + }) + } + + // Set the defaults. + $.fn[ name ].defaults = Component.defaults +} //PickerConstructor.extend + + + +function aria(element, attribute, value) { + if ( $.isPlainObject(attribute) ) { + for ( var key in attribute ) { + ariaSet(element, key, attribute[key]) + } + } + else { + ariaSet(element, attribute, value) + } +} +function ariaSet(element, attribute, value) { + element.setAttribute( + (attribute == 'role' ? '' : 'aria-') + attribute, + value + ) +} +function ariaAttr(attribute, data) { + if ( !$.isPlainObject(attribute) ) { + attribute = { attribute: data } + } + data = '' + for ( var key in attribute ) { + var attr = (key == 'role' ? '' : 'aria-') + key, + attrVal = attribute[key] + data += attrVal == null ? '' : attr + '="' + attribute[key] + '"' + } + return data +} + +// IE8 bug throws an error for activeElements within iframes. +function getActiveElement() { + try { + return document.activeElement + } catch ( err ) { } +} + + + +// Expose the picker constructor. +return PickerConstructor + + +})); + + + +; +/*! + * Date picker for pickadate.js v3.5.4 + * http://amsul.github.io/pickadate.js/date.htm + */ + +(function ( factory ) { + + // AMD. + if ( typeof define == 'function' && define.amd ) + define( ['picker','jquery'], factory ) + + // Node.js/browserify. + else if ( typeof exports == 'object' ) + module.exports = factory( require('./picker.js'), require('jquery') ) + + // Browser globals. + else factory( Picker, jQuery ) + +}(function( Picker, $ ) { + + +/** + * Globals and constants + */ +var DAYS_IN_WEEK = 7, + WEEKS_IN_CALENDAR = 6, + _ = Picker._ + + +/** + * Local date comparison helpers + */ +var timezoneOffset = new Date().getTimezoneOffset() +var timezoneOffsetMS = timezoneOffset * 60 * 1000 +var isLocalDateSame = function(relative, absolute) { + return relative.getDate() === absolute.getUTCDate() && + relative.getMonth() === absolute.getUTCMonth() && + relative.getFullYear() === absolute.getUTCFullYear() +} +var isLocalDateLessThan = function(one, two) { + return new Date(one.year, one.month, one.date) < new Date(two.year, two.month, two.date) +} +var isLocalDateGreaterThan = function(one, two) { + return new Date(one.year, one.month, one.date) > new Date(two.year, two.month, two.date) +} + + +/** + * The date picker constructor + */ +function DatePicker( picker, settings ) { + + var calendar = this, + element = picker.$node[ 0 ], + elementValue = element.value, + elementDataValue = picker.$node.data( 'value' ), + valueString = elementDataValue || elementValue, + formatString = elementDataValue ? settings.formatSubmit : settings.format, + isRTL = function() { + + return element.currentStyle ? + + // For IE. + element.currentStyle.direction == 'rtl' : + + // For normal browsers. + getComputedStyle( picker.$root[0] ).direction == 'rtl' + } + + calendar.settings = settings + calendar.$node = picker.$node + + // The queue of methods that will be used to build item objects. + calendar.queue = { + min: 'measure create', + max: 'measure create', + now: 'now create', + select: 'parse create validate', + highlight: 'parse navigate create validate', + view: 'parse create validate viewset', + disable: 'deactivate', + enable: 'activate' + } + + // The component's item object. + calendar.item = {} + + calendar.item.clear = null + calendar.item.disable = ( settings.disable || [] ).slice( 0 ) + calendar.item.enable = -(function( collectionDisabled ) { + return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1 + })( calendar.item.disable ) + + calendar. + set( 'min', settings.min ). + set( 'max', settings.max ). + set( 'now' ) + + // When there’s a value, set the `select`, which in turn + // also sets the `highlight` and `view`. + if ( valueString ) { + calendar.set( 'select', valueString, { format: formatString }) + } + + // If there’s no value, default to highlighting “today”. + else { + calendar. + set( 'select', null ). + set( 'highlight', calendar.item.now ) + } + + + // The keycode to movement mapping. + calendar.key = { + 40: 7, // Down + 38: -7, // Up + 39: function() { return isRTL() ? -1 : 1 }, // Right + 37: function() { return isRTL() ? 1 : -1 }, // Left + go: function( timeChange ) { + var highlightedObject = calendar.item.highlight, + targetDate = new Date(highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange) + calendar.set( + 'highlight', + targetDate, + { interval: timeChange } + ) + this.render() + } + } + + + // Bind some picker events. + picker. + on( 'render', function() { + picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() { + var value = this.value + if ( value ) { + picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] ) + picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' ) + } + }) + picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() { + var value = this.value + if ( value ) { + picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] ) + picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' ) + } + }) + }, 1 ). + on( 'open', function() { + var includeToday = '' + if ( calendar.disabled( calendar.get('now') ) ) { + includeToday = ':not(.' + settings.klass.buttonToday + ')' + } + picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false ) + }, 1 ). + on( 'close', function() { + picker.$root.find( 'button, select' ).attr( 'disabled', true ) + }, 1 ) + +} //DatePicker + + +/** + * Set a datepicker item object. + */ +DatePicker.prototype.set = function( type, value, options ) { + + var calendar = this, + calendarItem = calendar.item + + // If the value is `null` just set it immediately. + if ( value === null ) { + if ( type == 'clear' ) type = 'select' + calendarItem[ type ] = value + return calendar + } + + // Otherwise go through the queue of methods, and invoke the functions. + // Update this as the time unit, and set the final value as this item. + // * In the case of `enable`, keep the queue but set `disable` instead. + // And in the case of `flip`, keep the queue but set `enable` instead. + calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) { + value = calendar[ method ]( type, value, options ) + return value + }).pop() + + // Check if we need to cascade through more updates. + if ( type == 'select' ) { + calendar.set( 'highlight', calendarItem.select, options ) + } + else if ( type == 'highlight' ) { + calendar.set( 'view', calendarItem.highlight, options ) + } + else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) { + if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) { + calendar.set( 'select', calendarItem.select, options ) + } + if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) { + calendar.set( 'highlight', calendarItem.highlight, options ) + } + } + + return calendar +} //DatePicker.prototype.set + + +/** + * Get a datepicker item object. + */ +DatePicker.prototype.get = function( type ) { + return this.item[ type ] +} //DatePicker.prototype.get + + +/** + * Create a picker date object. + */ +DatePicker.prototype.create = function( type, value, options ) { + + options = options || {} + + // If there’s no value, use the type as the value. + value = value === undefined ? type : value + + // If it’s infinite, return that. + if ( value == -Infinity || value == Infinity ) { + return { + year: value, + month: value, + date: value, + day: value, + obj: value, + pick: value + } + } + + // If it’s a literal `true`, set it to today. + if ( value === true ) { + value = new Date() + if ( options.rel ) { + value.setDate(value.getDate() + options.rel) + } + } + + // If it’s an object, create an array out of it. + else if ( $.isPlainObject(value) && _.isInteger(value.pick) ) { + value = [value.year, value.month, value.date] + } + + // If it’s an array, create a date. + if ( Array.isArray(value) ) { + value = new Date(value[0], value[1], value[2]) + } + + // Now it’s either a date or an integer. So create a new date. + value = new Date(value) + + // Update the hours based on the timezone offset + value.setHours(-timezoneOffset / 60, -timezoneOffset % 60, 0, 0) + + // Create another new date by updating by the offset. + value = new Date(value.getTime() + timezoneOffsetMS) + + return { + year: value.getFullYear(), + month: value.getMonth(), + date: value.getDate(), + day: value.getDay(), + obj: value, + pick: value.getTime() + } +} //DatePicker.prototype.create + + +/** + * Create a range limit object using an array, date object, + * literal “true”, or integer relative to another time. + */ +DatePicker.prototype.createRange = function( from, to ) { + + var calendar = this, + createDate = function( date ) { + if ( date === true || $.isArray( date ) || _.isDate( date ) ) { + return calendar.create( date ) + } + return date + } + + // Create objects if possible. + if ( !_.isInteger( from ) ) { + from = createDate( from ) + } + if ( !_.isInteger( to ) ) { + to = createDate( to ) + } + + // Create relative dates. + if ( _.isInteger( from ) && $.isPlainObject( to ) ) { + from = [ to.year, to.month, to.date + from ]; + } + else if ( _.isInteger( to ) && $.isPlainObject( from ) ) { + to = [ from.year, from.month, from.date + to ]; + } + + return { + from: createDate( from ), + to: createDate( to ) + } +} //DatePicker.prototype.createRange + + +/** + * Check if a date unit falls within a date range object. + */ +DatePicker.prototype.withinRange = function( range, dateUnit ) { + range = this.createRange(range.from, range.to) + return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick +} + + +/** + * Check if two date range objects overlap. + */ +DatePicker.prototype.overlapRanges = function( one, two ) { + + var calendar = this + + // Convert the ranges into comparable dates. + one = calendar.createRange( one.from, one.to ) + two = calendar.createRange( two.from, two.to ) + + return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) || + calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to ) +} + + +/** + * Get the date today. + */ +DatePicker.prototype.now = function(/* type, value, options */) { + return true +} + + +/** + * Navigate to next/prev month. + */ +DatePicker.prototype.navigate = function( type, value, options ) { + + var targetDateObject, + targetYear, + targetMonth, + targetDate, + isTargetArray = $.isArray( value ), + isTargetObject = $.isPlainObject( value ), + viewsetObject = this.item.view, + safety = 100 + + + if ( isTargetArray || isTargetObject ) { + + if ( isTargetObject ) { + targetYear = value.year + targetMonth = value.month + targetDate = value.date + } + else { + targetYear = +value[0] + targetMonth = +value[1] + targetDate = +value[2] + } + + // If we’re navigating months but the view is in a different + // month, navigate to the view’s year and month. + if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) { + targetYear = viewsetObject.year + targetMonth = viewsetObject.month + } + + // Figure out the expected target year and month. + targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 ) + targetYear = targetDateObject.getFullYear() + targetMonth = targetDateObject.getMonth() + + // If the month we’re going to doesn’t have enough days, + // keep decreasing the date until we reach the month’s last date. + while ( safety && new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) { + targetDate -= 1 + safety -= 1 + if ( !safety ) { + throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.' + } + } + + value = [ targetYear, targetMonth, targetDate ] + } + + return value +} //DatePicker.prototype.navigate + + +/** + * Measure the range of dates. + */ +DatePicker.prototype.measure = function( type, value, options ) { + + options = options || {} + + var calendar = this + + // If it’s anything false-y, remove the limits. + if ( !value ) { + value = type == 'min' ? -Infinity : Infinity + } + + // If it’s a string, parse it. + else if ( typeof value == 'string' ) { + value = calendar.parse( type, value ) + } + + // If it's an integer, get a date relative to today. + else if ( _.isInteger( value ) ) { + options.rel = value + value = true + } + + return value +} ///DatePicker.prototype.measure + + +/** + * Create a viewset object based on navigation. + */ +DatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) { + return this.create([ dateObject.year, dateObject.month, 1 ]) +} + + +/** + * Validate a date as enabled and shift if needed. + */ +DatePicker.prototype.validate = function( type, dateObject, options ) { + + var calendar = this, + + // Keep a reference to the original date. + originalDateObject = dateObject, + + // Make sure we have an interval. + interval = options && options.interval ? options.interval : 1, + + // Check if the calendar enabled dates are inverted. + isFlippedBase = calendar.item.enable === -1, + + // Check if we have any enabled dates after/before now. + hasEnabledBeforeTarget, hasEnabledAfterTarget, + + // The min & max limits. + minLimitObject = calendar.item.min, + maxLimitObject = calendar.item.max, + + // Check if we’ve reached the limit during shifting. + reachedMin, reachedMax, + + // Check if the calendar is inverted and at least one weekday is enabled. + hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) { + + // If there’s a date, check where it is relative to the target. + if ( $.isArray( value ) ) { + var dateTime = calendar.create( value ).pick + if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true + else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true + } + + // Return only integers for enabled weekdays. + return _.isInteger( value ) + }).length, + + safety = 100 + + + + // Cases to validate for: + // [1] Not inverted and date disabled. + // [2] Inverted and some dates enabled. + // [3] Not inverted and out of range. + // + // Cases to **not** validate for: + // • Navigating months. + // • Not inverted and date enabled. + // • Inverted and all dates disabled. + // • ..and anything else. + if ( !options || !options.nav ) if ( + /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) || + /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) || + /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) ) + ) { + + + // When inverted, flip the direction if there aren’t any enabled weekdays + // and there are no enabled dates in the direction of the interval. + if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) { + interval *= -1 + } + + + // Keep looping until we reach an enabled date. + while ( safety && calendar.disabled( dateObject ) ) { + + safety -= 1 + if ( !safety ) { + throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.' + } + + + // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval. + if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) { + dateObject = originalDateObject + interval = interval > 0 ? 1 : -1 + } + + + // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit. + if ( dateObject.pick <= minLimitObject.pick ) { + reachedMin = true + interval = 1 + dateObject = calendar.create([ + minLimitObject.year, + minLimitObject.month, + minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1) + ]) + } + else if ( dateObject.pick >= maxLimitObject.pick ) { + reachedMax = true + interval = -1 + dateObject = calendar.create([ + maxLimitObject.year, + maxLimitObject.month, + maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1) + ]) + } + + + // If we’ve reached both limits, just break out of the loop. + if ( reachedMin && reachedMax ) { + break + } + + + // Finally, create the shifted date using the interval and keep looping. + dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ]) + } + + } //endif + + + // Return the date object settled on. + return dateObject +} //DatePicker.prototype.validate + + +/** + * Check if a date is disabled. + */ +DatePicker.prototype.disabled = function( dateToVerify ) { + + var + calendar = this, + + // Filter through the disabled dates to check if this is one. + isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) { + + // If the date is a number, match the weekday with 0index and `firstDay` check. + if ( _.isInteger( dateToDisable ) ) { + return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7 + } + + // If it’s an array or a native JS date, create and match the exact date. + if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) { + return dateToVerify.pick === calendar.create( dateToDisable ).pick + } + + // If it’s an object, match a date within the “from” and “to” range. + if ( $.isPlainObject( dateToDisable ) ) { + return calendar.withinRange( dateToDisable, dateToVerify ) + } + }) + + // If this date matches a disabled date, confirm it’s not inverted. + isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) { + return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' || + $.isPlainObject( dateToDisable ) && dateToDisable.inverted + }).length + + // Check the calendar “enabled” flag and respectively flip the + // disabled state. Then also check if it’s beyond the min/max limits. + return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch || + dateToVerify.pick < calendar.item.min.pick || + dateToVerify.pick > calendar.item.max.pick + +} //DatePicker.prototype.disabled + + +/** + * Parse a string into a usable type. + */ +DatePicker.prototype.parse = function( type, value, options ) { + + var calendar = this, + parsingObject = {} + + // If it’s already parsed, we’re good. + if ( !value || typeof value != 'string' ) { + return value + } + + // We need a `.format` to parse the value with. + if ( !( options && options.format ) ) { + options = options || {} + options.format = calendar.settings.format + } + + // Convert the format into an array and then map through it. + calendar.formats.toArray( options.format ).map( function( label ) { + + var + // Grab the formatting label. + formattingLabel = calendar.formats[ label ], + + // The format length is from the formatting label function or the + // label length without the escaping exclamation (!) mark. + formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length + + // If there's a format label, split the value up to the format length. + // Then add it to the parsing object with appropriate label. + if ( formattingLabel ) { + parsingObject[ label ] = value.substr( 0, formatLength ) + } + + // Update the value as the substring from format length to end. + value = value.substr( formatLength ) + }) + + // Compensate for month 0index. + return [ + parsingObject.yyyy || parsingObject.yy, + +( parsingObject.mm || parsingObject.m ) - 1, + parsingObject.dd || parsingObject.d + ] +} //DatePicker.prototype.parse + + +/** + * Various formats to display the object in. + */ +DatePicker.prototype.formats = (function() { + + // Return the length of the first word in a collection. + function getWordLengthFromCollection( string, collection, dateObject ) { + + // Grab the first word from the string. + var word = string.match( /\w+/ )[ 0 ] + + // If there's no month index, add it to the date object + if ( !dateObject.mm && !dateObject.m ) { + dateObject.m = collection.indexOf( word ) + 1 + } + + // Return the length of the word. + return word.length + } + + // Get the length of the first word in a string. + function getFirstWordLength( string ) { + return string.match( /\w+/ )[ 0 ].length + } + + return { + + d: function( string, dateObject ) { + + // If there's string, then get the digits length. + // Otherwise return the selected date. + return string ? _.digits( string ) : dateObject.date + }, + dd: function( string, dateObject ) { + + // If there's a string, then the length is always 2. + // Otherwise return the selected date with a leading zero. + return string ? 2 : _.lead( dateObject.date ) + }, + ddd: function( string, dateObject ) { + + // If there's a string, then get the length of the first word. + // Otherwise return the short selected weekday. + return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ] + }, + dddd: function( string, dateObject ) { + + // If there's a string, then get the length of the first word. + // Otherwise return the full selected weekday. + return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ] + }, + m: function( string, dateObject ) { + + // If there's a string, then get the length of the digits + // Otherwise return the selected month with 0index compensation. + return string ? _.digits( string ) : dateObject.month + 1 + }, + mm: function( string, dateObject ) { + + // If there's a string, then the length is always 2. + // Otherwise return the selected month with 0index and leading zero. + return string ? 2 : _.lead( dateObject.month + 1 ) + }, + mmm: function( string, dateObject ) { + + var collection = this.settings.monthsShort + + // If there's a string, get length of the relevant month from the short + // months collection. Otherwise return the selected month from that collection. + return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] + }, + mmmm: function( string, dateObject ) { + + var collection = this.settings.monthsFull + + // If there's a string, get length of the relevant month from the full + // months collection. Otherwise return the selected month from that collection. + return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] + }, + yy: function( string, dateObject ) { + + // If there's a string, then the length is always 2. + // Otherwise return the selected year by slicing out the first 2 digits. + return string ? 2 : ( '' + dateObject.year ).slice( 2 ) + }, + yyyy: function( string, dateObject ) { + + // If there's a string, then the length is always 4. + // Otherwise return the selected year. + return string ? 4 : dateObject.year + }, + + // Create an array by splitting the formatting string passed. + toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) }, + + // Format an object into a string using the formatting options. + toString: function ( formatString, itemObject ) { + var calendar = this + return calendar.formats.toArray( formatString ).map( function( label ) { + return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' ) + }).join( '' ) + } + } +})() //DatePicker.prototype.formats + + + + +/** + * Check if two date units are the exact. + */ +DatePicker.prototype.isDateExact = function( one, two ) { + + var calendar = this + + // When we’re working with weekdays, do a direct comparison. + if ( + ( _.isInteger( one ) && _.isInteger( two ) ) || + ( typeof one == 'boolean' && typeof two == 'boolean' ) + ) { + return one === two + } + + // When we’re working with date representations, compare the “pick” value. + if ( + ( _.isDate( one ) || $.isArray( one ) ) && + ( _.isDate( two ) || $.isArray( two ) ) + ) { + return calendar.create( one ).pick === calendar.create( two ).pick + } + + // When we’re working with range objects, compare the “from” and “to”. + if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { + return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to ) + } + + return false +} + + +/** + * Check if two date units overlap. + */ +DatePicker.prototype.isDateOverlap = function( one, two ) { + + var calendar = this, + firstDay = calendar.settings.firstDay ? 1 : 0 + + // When we’re working with a weekday index, compare the days. + if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) { + one = one % 7 + firstDay + return one === calendar.create( two ).day + 1 + } + if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) { + two = two % 7 + firstDay + return two === calendar.create( one ).day + 1 + } + + // When we’re working with range objects, check if the ranges overlap. + if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { + return calendar.overlapRanges( one, two ) + } + + return false +} + + +/** + * Flip the “enabled” state. + */ +DatePicker.prototype.flipEnable = function(val) { + var itemObject = this.item + itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1) +} + + +/** + * Mark a collection of dates as “disabled”. + */ +DatePicker.prototype.deactivate = function( type, datesToDisable ) { + + var calendar = this, + disabledItems = calendar.item.disable.slice(0) + + + // If we’re flipping, that’s all we need to do. + if ( datesToDisable == 'flip' ) { + calendar.flipEnable() + } + + else if ( datesToDisable === false ) { + calendar.flipEnable(1) + disabledItems = [] + } + + else if ( datesToDisable === true ) { + calendar.flipEnable(-1) + disabledItems = [] + } + + // Otherwise go through the dates to disable. + else { + + datesToDisable.map(function( unitToDisable ) { + + var matchFound + + // When we have disabled items, check for matches. + // If something is matched, immediately break out. + for ( var index = 0; index < disabledItems.length; index += 1 ) { + if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) { + matchFound = true + break + } + } + + // If nothing was found, add the validated unit to the collection. + if ( !matchFound ) { + if ( + _.isInteger( unitToDisable ) || + _.isDate( unitToDisable ) || + $.isArray( unitToDisable ) || + ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to ) + ) { + disabledItems.push( unitToDisable ) + } + } + }) + } + + // Return the updated collection. + return disabledItems +} //DatePicker.prototype.deactivate + + +/** + * Mark a collection of dates as “enabled”. + */ +DatePicker.prototype.activate = function( type, datesToEnable ) { + + var calendar = this, + disabledItems = calendar.item.disable, + disabledItemsCount = disabledItems.length + + // If we’re flipping, that’s all we need to do. + if ( datesToEnable == 'flip' ) { + calendar.flipEnable() + } + + else if ( datesToEnable === true ) { + calendar.flipEnable(1) + disabledItems = [] + } + + else if ( datesToEnable === false ) { + calendar.flipEnable(-1) + disabledItems = [] + } + + // Otherwise go through the disabled dates. + else { + + datesToEnable.map(function( unitToEnable ) { + + var matchFound, + disabledUnit, + index, + isExactRange + + // Go through the disabled items and try to find a match. + for ( index = 0; index < disabledItemsCount; index += 1 ) { + + disabledUnit = disabledItems[index] + + // When an exact match is found, remove it from the collection. + if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) { + matchFound = disabledItems[index] = null + isExactRange = true + break + } + + // When an overlapped match is found, add the “inverted” state to it. + else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) { + if ( $.isPlainObject( unitToEnable ) ) { + unitToEnable.inverted = true + matchFound = unitToEnable + } + else if ( $.isArray( unitToEnable ) ) { + matchFound = unitToEnable + if ( !matchFound[3] ) matchFound.push( 'inverted' ) + } + else if ( _.isDate( unitToEnable ) ) { + matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ] + } + break + } + } + + // If a match was found, remove a previous duplicate entry. + if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) { + if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) { + disabledItems[index] = null + break + } + } + + // In the event that we’re dealing with an exact range of dates, + // make sure there are no “inverted” dates because of it. + if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) { + if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) { + disabledItems[index] = null + break + } + } + + // If something is still matched, add it into the collection. + if ( matchFound ) { + disabledItems.push( matchFound ) + } + }) + } + + // Return the updated collection. + return disabledItems.filter(function( val ) { return val != null }) +} //DatePicker.prototype.activate + + +/** + * Create a string for the nodes in the picker. + */ +DatePicker.prototype.nodes = function( isOpen ) { + + var + calendar = this, + settings = calendar.settings, + calendarItem = calendar.item, + nowObject = calendarItem.now, + selectedObject = calendarItem.select, + highlightedObject = calendarItem.highlight, + viewsetObject = calendarItem.view, + disabledCollection = calendarItem.disable, + minLimitObject = calendarItem.min, + maxLimitObject = calendarItem.max, + + + // Create the calendar table head using a copy of weekday labels collection. + // * We do a copy so we don't mutate the original array. + tableHead = (function( collection, fullCollection ) { + + // If the first day should be Monday, move Sunday to the end. + if ( settings.firstDay ) { + collection.push( collection.shift() ) + fullCollection.push( fullCollection.shift() ) + } + + // Create and return the table head group. + return _.node( + 'thead', + _.node( + 'tr', + _.group({ + min: 0, + max: DAYS_IN_WEEK - 1, + i: 1, + node: 'th', + item: function( counter ) { + return [ + collection[ counter ], + settings.klass.weekdays, + 'scope=col title="' + fullCollection[ counter ] + '"' + ] + } + }) + ) + ) //endreturn + })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead + + + // Create the nav for next/prev month. + createMonthNav = function( next ) { + + // Otherwise, return the created month tag. + return _.node( + 'div', + ' ', + settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + ( + + // If the focused month is outside the range, disabled the button. + ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) || + ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ? + ' ' + settings.klass.navDisabled : '' + ), + 'data-nav=' + ( next || -1 ) + ' ' + + _.ariaAttr({ + role: 'button', + controls: calendar.$node[0].id + '_table' + }) + ' ' + + 'title="' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '"' + ) //endreturn + }, //createMonthNav + + + // Create the month label. + createMonthLabel = function(override) { + + var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull + +// use override + if (override == "short_months") { + monthsCollection = settings.monthsShort; + } + + // If there are months to select, add a dropdown menu. + if ( settings.selectMonths ) { + + return _.node( 'select', + _.group({ + min: 0, + max: 11, + i: 1, + node: 'option', + item: function( loopedMonth ) { + + return [ + + // The looped month and no classes. + monthsCollection[ loopedMonth ], 0, + + // Set the value and selected index. + 'value=' + loopedMonth + + ( viewsetObject.month == loopedMonth ? ' selected' : '' ) + + ( + ( + ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) || + ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month ) + ) ? + ' disabled' : '' + ) + ] + } + }), + settings.klass.selectMonth, + ( isOpen ? '' : 'disabled' ) + ' ' + + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + + 'title="' + settings.labelMonthSelect + '"' + ) + } + // Return materialize raw override + if (override == "short_months") + return _.node( 'div', monthsCollection[ viewsetObject.month ] ) + + // If there's a need for a month selector + return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month ) + }, //createMonthLabel + + + // Create the year label. + createYearLabel = function(override) { + + var focusedYear = viewsetObject.year, + + // If years selector is set to a literal "true", set it to 5. Otherwise + // divide in half to get half before and half after focused year. + numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 ) + + // If there are years to select, add a dropdown menu. + if ( numberYears ) { + + var + minYear = minLimitObject.year, + maxYear = maxLimitObject.year, + lowestYear = focusedYear - numberYears, + highestYear = focusedYear + numberYears + + // If the min year is greater than the lowest year, increase the highest year + // by the difference and set the lowest year to the min year. + if ( minYear > lowestYear ) { + highestYear += minYear - lowestYear + lowestYear = minYear + } + + // If the max year is less than the highest year, decrease the lowest year + // by the lower of the two: available and needed years. Then set the + // highest year to the max year. + if ( maxYear < highestYear ) { + + var availableYears = lowestYear - minYear, + neededYears = highestYear - maxYear + + lowestYear -= availableYears > neededYears ? neededYears : availableYears + highestYear = maxYear + } + + return _.node( 'select', + _.group({ + min: lowestYear, + max: highestYear, + i: 1, + node: 'option', + item: function( loopedYear ) { + return [ + + // The looped year and no classes. + loopedYear, 0, + + // Set the value and selected index. + 'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' ) + ] + } + }), + settings.klass.selectYear, + ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + + 'title="' + settings.labelYearSelect + '"' + ) + } + + // If materialize override then + if (override == "raw") + return _.node( 'div', focusedYear ) + // Otherwise just return the year focused + return _.node( 'div', focusedYear, settings.klass.year ) + } //createYearLabel + + createDayLabel = function() { + if (selectedObject != null) + return _.node( 'div', selectedObject.date) + else return _.node( 'div', nowObject.date) + } + + createWeekdayLabel = function() { + var display_day; + + if (selectedObject != null) + display_day = selectedObject.day; + else + display_day = nowObject.day; + var weekday = settings.weekdaysFull[ display_day ] + return weekday + } + + // Create and return the entire calendar. This contains the HTML elements + return _.node( + // Date presentation View + 'div', + _.node( + 'div', + createWeekdayLabel(), + "picker__weekday-display" + )+ + _.node( + // Div for short Month + 'div', + createMonthLabel("short_months"), + settings.klass.month_display + )+ + _.node( + // Div for Day + 'div', + createDayLabel() , + settings.klass.day_display + )+ + _.node( + // Div for Year + 'div', + createYearLabel("raw") , + settings.klass.year_display + ), + settings.klass.date_display + )+ + // Calendar container + _.node('div', + _.node('div', + ( settings.selectYears ? createYearLabel() + createMonthLabel() : createMonthLabel() + createYearLabel() ) + + createMonthNav() + createMonthNav( 1 ), + settings.klass.header + ) + _.node( + 'table', + tableHead + + _.node( + 'tbody', + _.group({ + min: 0, + max: WEEKS_IN_CALENDAR - 1, + i: 1, + node: 'tr', + item: function( rowCounter ) { + + // If Monday is the first day and the month starts on Sunday, shift the date back a week. + var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0 + + return [ + _.group({ + min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index + max: function() { + return this.min + DAYS_IN_WEEK - 1 + }, + i: 1, + node: 'td', + item: function( targetDate ) { + + // Convert the time date from a relative date to a target date. + targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ]) + + var isToday = isLocalDateSame(nowObject.obj, targetDate.obj), + isSelected = selectedObject && isLocalDateSame(selectedObject.obj, targetDate.obj), + isHighlighted = highlightedObject && isLocalDateSame(highlightedObject.obj, targetDate.obj), + isDisabled = disabledCollection && calendar.disabled( targetDate ) || isLocalDateLessThan(targetDate, minLimitObject) || isLocalDateGreaterThan(targetDate, maxLimitObject) + + return [ + _.node( + 'div', + targetDate.obj.getUTCDate(), + (function( klasses ) { + + // Add the `infocus` or `outfocus` classes based on month in view. + klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus ) + + // Add the `today` class if needed. + if ( isToday ) { + klasses.push( settings.klass.now ) + } + + // Add the `selected` class if something's selected and the time matches. + if ( isSelected ) { + klasses.push( settings.klass.selected ) + } + + // Add the `highlighted` class if something's highlighted and the time matches. + if ( isHighlighted ) { + klasses.push( settings.klass.highlighted ) + } + + // Add the `disabled` class if something's disabled and the object matches. + if ( isDisabled ) { + klasses.push( settings.klass.disabled ) + } + + return klasses.join( ' ' ) + })([ settings.klass.day ]), + 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({ + role: 'gridcell', + selected: isSelected && calendar.$node.val() === _.trigger( + calendar.formats.toString, + calendar, + [ settings.format, targetDate ] + ) ? true : null, + activedescendant: isHighlighted ? true : null, + disabled: isDisabled ? true : null + }) + ), + '', + _.ariaAttr({ role: 'presentation' }) + ] //endreturn + } + }) + ] //endreturn + } + }) + ), + settings.klass.table, + 'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({ + role: 'grid', + controls: calendar.$node[0].id, + readonly: true + }) + ) + + , settings.klass.calendar_container) // end calendar + + + + + // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”. + _.node( + 'div', + _.node( 'button', settings.today, "btn-flat picker__today", + 'type=button data-pick=' + nowObject.pick + + ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' + + _.ariaAttr({ controls: calendar.$node[0].id }) ) + + // _.node( 'button', settings.clear, settings.klass.buttonClear, + // 'type=button data-clear=1' + + // ( isOpen ? '' : ' disabled' ) + ' ' + + // _.ariaAttr({ controls: calendar.$node[0].id }) ) + + _.node('button', settings.close, "btn-flat picker__close", + 'type=button data-close=true ' + + ( isOpen ? '' : ' disabled' ) + ' ' + + _.ariaAttr({ controls: calendar.$node[0].id }) ), + settings.klass.footer + ) //endreturn +} //DatePicker.prototype.nodes + + + + +/** + * The date picker defaults. + */ +DatePicker.defaults = (function( prefix ) { + + return { + + // The title label to use for the month nav buttons + labelMonthNext: 'Next month', + labelMonthPrev: 'Previous month', + + // The title label to use for the dropdown selectors + labelMonthSelect: 'Select a month', + labelYearSelect: 'Select a year', + + // Months and weekdays + monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], + monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ], + weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ], + weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ], + + // Materialize Added + weekdaysLetter: [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ], + + // Today and clear + today: 'Today', + clear: 'Clear', + close: 'Close', + + // The format to show on the `input` element + format: 'd mmmm, yyyy', + + // Classes + klass: { + + table: prefix + 'table', + + header: prefix + 'header', + + // Materialize Added klasses + date_display: prefix + 'date-display', + day_display: prefix + 'day-display', + month_display: prefix + 'month-display', + year_display: prefix + 'year-display', + calendar_container: prefix + 'calendar-container', + // end + + navPrev: prefix + 'nav--prev', + navNext: prefix + 'nav--next', + navDisabled: prefix + 'nav--disabled', + + month: prefix + 'month', + year: prefix + 'year', + + selectMonth: prefix + 'select--month', + selectYear: prefix + 'select--year', + + weekdays: prefix + 'weekday', + + day: prefix + 'day', + disabled: prefix + 'day--disabled', + selected: prefix + 'day--selected', + highlighted: prefix + 'day--highlighted', + now: prefix + 'day--today', + infocus: prefix + 'day--infocus', + outfocus: prefix + 'day--outfocus', + + footer: prefix + 'footer', + + buttonClear: prefix + 'button--clear', + buttonToday: prefix + 'button--today', + buttonClose: prefix + 'button--close' + } + } +})( Picker.klasses().picker + '__' ) + + + + + +/** + * Extend the picker to add the date picker. + */ +Picker.extend( 'pickadate', DatePicker ) + + +})); + + + diff --git a/dist/js/materialize.min.js b/dist/js/materialize.min.js new file mode 100644 index 0000000000..a83019e900 --- /dev/null +++ b/dist/js/materialize.min.js @@ -0,0 +1,4 @@ +function toast(a,b,c){function d(a){var b=$("
    ");b.addClass("toast"),b.addClass(c);var d=$("");return d.text(a),b.append(d),b.hammer({prevent_default:!1}).bind("pan",function(a){var c=a.gesture.deltaX,d=80;b.hasClass("panning")||b.addClass("panning");var e=1-Math.abs(c/d);0>e&&(e=0),b.velocity({left:c,opacity:e},{duration:50,queue:!1,easing:"easeOutQuad"})}).bind("panend",function(a){var c=a.gesture.deltaX,d=80;Math.abs(c)>d?b.velocity({marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){b.remove()}}):(b.removeClass("panning"),b.velocity({left:0,opacity:1},{duration:300,easing:"easeOutExpo",queue:!1}))}),b}if(c=c||"",0==$("#toast-container").length){var e=$("
    ").attr("id","toast-container");$("body").append(e)}var e=$("#toast-container"),f=d(a);e.append(f),f.css({top:parseFloat(f.css("top"))+35+"px",opacity:0}),f.velocity({top:"0px",opacity:1},{duration:300,easing:"easeOutCubic",queue:!1});var g=b,h=setInterval(function(){0===f.parent().length&&window.clearInterval(h),f.hasClass("panning")||(g-=100),0>=g&&(f.velocity({opacity:0,marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){$(this).remove()}}),window.clearInterval(h))},100)}jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(a,b,c,d,e){return jQuery.easing[jQuery.easing.def](a,b,c,d,e)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:(b/=e/2)<1?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(1==(b/=e))return c+d;if(g||(g=.3*e),hb?-.5*h*Math.pow(2,10*(b-=1))*Math.sin(2*(b*e-f)*Math.PI/g)+c:h*Math.pow(2,-10*(b-=1))*Math.sin(2*(b*e-f)*Math.PI/g)*.5+d+c},easeInBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*(b/=e)*b*((f+1)*b-f)+c},easeOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*((b=b/e-1)*b*((f+1)*b+f)+1)+c},easeInOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),(b/=e/2)<1?d/2*b*b*(((f*=1.525)+1)*b-f)+c:d/2*((b-=2)*b*(((f*=1.525)+1)*b+f)+2)+c},easeInBounce:function(a,b,c,d,e){return d-jQuery.easing.easeOutBounce(a,e-b,0,d,e)+c},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?7.5625*d*b*b+c:2/2.75>b?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:2.5/2.75>b?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(a,b,c,d,e){return e/2>b?.5*jQuery.easing.easeInBounce(a,2*b,0,d,e)+c:.5*jQuery.easing.easeOutBounce(a,2*b-e,0,d,e)+.5*d+c}}),!function(a){function b(a){var b=a.length,d=c.type(a);return"function"===d||c.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===d||0===b||"number"==typeof b&&b>0&&b-1 in a}if(!a.jQuery){var c=function(a,b){return new c.fn.init(a,b)};c.isWindow=function(a){return null!=a&&a==a.window},c.type=function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?e[g.call(a)]||"object":typeof a},c.isArray=Array.isArray||function(a){return"array"===c.type(a)},c.isPlainObject=function(a){var b;if(!a||"object"!==c.type(a)||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!f.call(a,"constructor")&&!f.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(d){return!1}for(b in a);return void 0===b||f.call(a,b)},c.each=function(a,c,d){var e,f=0,g=a.length,h=b(a);if(d){if(h)for(;g>f&&(e=c.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=c.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=c.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=c.call(a[f],f,a[f]),e===!1)break;return a},c.data=function(a,b,e){if(void 0===e){var f=a[c.expando],g=f&&d[f];if(void 0===b)return g;if(g&&b in g)return g[b]}else if(void 0!==b){var f=a[c.expando]||(a[c.expando]=++c.uuid);return d[f]=d[f]||{},d[f][b]=e,e}},c.removeData=function(a,b){var e=a[c.expando],f=e&&d[e];f&&c.each(b,function(a,b){delete f[b]})},c.extend=function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[i]||{},i++),"object"!=typeof h&&"function"!==c.type(h)&&(h={}),i===j&&(h=this,i--);j>i;i++)if(null!=(f=arguments[i]))for(e in f)a=h[e],d=f[e],h!==d&&(k&&d&&(c.isPlainObject(d)||(b=c.isArray(d)))?(b?(b=!1,g=a&&c.isArray(a)?a:[]):g=a&&c.isPlainObject(a)?a:{},h[e]=c.extend(k,g,d)):void 0!==d&&(h[e]=d));return h},c.queue=function(a,d,e){function f(a,c){var d=c||[];return null!=a&&(b(Object(a))?!function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;)a[e++]=b[d++];if(c!==c)for(;void 0!==b[d];)a[e++]=b[d++];return a.length=e,a}(d,"string"==typeof a?[a]:a):[].push.call(d,a)),d}if(a){d=(d||"fx")+"queue";var g=c.data(a,d);return e?(!g||c.isArray(e)?g=c.data(a,d,f(e)):g.push(e),g):g||[]}},c.dequeue=function(a,b){c.each(a.nodeType?[a]:a,function(a,d){b=b||"fx";var e=c.queue(d,b),f=e.shift();"inprogress"===f&&(f=e.shift()),f&&("fx"===b&&e.unshift("inprogress"),f.call(d,function(){c.dequeue(d,b)}))})},c.fn=c.prototype={init:function(a){if(a.nodeType)return this[0]=a,this;throw new Error("Not a DOM node.")},offset:function(){var b=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:b.top+(a.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:b.left+(a.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function a(){for(var a=this.offsetParent||document;a&&"html"===!a.nodeType.toLowerCase&&"static"===a.style.position;)a=a.offsetParent;return a||document}var b=this[0],a=a.apply(b),d=this.offset(),e=/^(?:body|html)$/i.test(a.nodeName)?{top:0,left:0}:c(a).offset();return d.top-=parseFloat(b.style.marginTop)||0,d.left-=parseFloat(b.style.marginLeft)||0,a.style&&(e.top+=parseFloat(a.style.borderTopWidth)||0,e.left+=parseFloat(a.style.borderLeftWidth)||0),{top:d.top-e.top,left:d.left-e.left}}};var d={};c.expando="velocity"+(new Date).getTime(),c.uuid=0;for(var e={},f=e.hasOwnProperty,g=e.toString,h="Boolean Number String Function Array Date RegExp Object Error".split(" "),i=0;ie;++e){var f=j(c,a,d);if(0===f)return c;var g=i(c,a,d)-b;c-=g/f}return c}function l(){for(var b=0;t>b;++b)x[b]=i(b*u,a,d)}function m(b,c,e){var f,g,h=0;do g=c+(e-c)/2,f=i(g,a,d)-b,f>0?e=g:c=g;while(Math.abs(f)>r&&++h=q?k(b,h):0==i?h:m(b,c,c+u)}function o(){y=!0,(a!=c||d!=e)&&l()}var p=4,q=.001,r=1e-7,s=10,t=11,u=1/(t-1),v="Float32Array"in b;if(4!==arguments.length)return!1;for(var w=0;4>w;++w)if("number"!=typeof arguments[w]||isNaN(arguments[w])||!isFinite(arguments[w]))return!1;a=Math.min(a,1),d=Math.min(d,1),a=Math.max(a,0),d=Math.max(d,0);var x=v?new Float32Array(t):new Array(t),y=!1,z=function(b){return y||o(),a===c&&d===e?b:0===b?0:1===b?1:i(n(b),c,e)};z.getControlPoints=function(){return[{x:a,y:c},{x:d,y:e}]};var A="generateBezier("+[a,c,d,e]+")";return z.toString=function(){return A},z}function j(a,b){var c=a;return p.isString(a)?t.Easings[a]||(c=!1):c=p.isArray(a)&&1===a.length?h.apply(null,a):p.isArray(a)&&2===a.length?u.apply(null,a.concat([b])):p.isArray(a)&&4===a.length?i.apply(null,a):!1,c===!1&&(c=t.Easings[t.defaults.easing]?t.defaults.easing:s),c}function k(a){if(a)for(var b=(new Date).getTime(),c=0,e=t.State.calls.length;e>c;c++)if(t.State.calls[c]){var f=t.State.calls[c],h=f[0],i=f[2],j=f[3],n=!!j;j||(j=t.State.calls[c][3]=b-16);for(var o=Math.min((b-j)/i.duration,1),q=0,r=h.length;r>q;q++){var s=h[q],u=s.element;if(g(u)){var w=!1;if(i.display!==d&&null!==i.display&&"none"!==i.display){if("flex"===i.display){var y=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];m.each(y,function(a,b){v.setPropertyValue(u,"display",b)})}v.setPropertyValue(u,"display",i.display)}i.visibility!==d&&"hidden"!==i.visibility&&v.setPropertyValue(u,"visibility",i.visibility);for(var z in s)if("element"!==z){var A,B=s[z],C=p.isString(B.easing)?t.Easings[B.easing]:B.easing;if(1===o)A=B.endValue;else if(A=B.startValue+(B.endValue-B.startValue)*C(o),!n&&A===B.currentValue)continue;if(B.currentValue=A,v.Hooks.registered[z]){var D=v.Hooks.getRoot(z),E=g(u).rootPropertyValueCache[D];E&&(B.rootPropertyValue=E)}var F=v.setPropertyValue(u,z,B.currentValue+(0===parseFloat(A)?"":B.unitType),B.rootPropertyValue,B.scrollData);v.Hooks.registered[z]&&(g(u).rootPropertyValueCache[D]=v.Normalizations.registered[D]?v.Normalizations.registered[D]("extract",null,F[1]):F[1]),"transform"===F[0]&&(w=!0)}i.mobileHA&&g(u).transformCache.translate3d===d&&(g(u).transformCache.translate3d="(0px, 0px, 0px)",w=!0),w&&v.flushTransformCache(u)}}i.display!==d&&"none"!==i.display&&(t.State.calls[c][2].display=!1),i.visibility!==d&&"hidden"!==i.visibility&&(t.State.calls[c][2].visibility=!1),i.progress&&i.progress.call(f[1],f[1],o,Math.max(0,j+i.duration-b),j),1===o&&l(c)}t.State.isTicking&&x(k)}function l(a,b){if(!t.State.calls[a])return!1;for(var c=t.State.calls[a][0],e=t.State.calls[a][1],f=t.State.calls[a][2],h=t.State.calls[a][4],i=!1,j=0,k=c.length;k>j;j++){var l=c[j].element;if(b||f.loop||("none"===f.display&&v.setPropertyValue(l,"display",f.display),"hidden"===f.visibility&&v.setPropertyValue(l,"visibility",f.visibility)),f.loop!==!0&&(m.queue(l)[1]===d||!/\.velocityQueueEntryFlag/i.test(m.queue(l)[1]))&&g(l)){g(l).isAnimating=!1,g(l).rootPropertyValueCache={};var n=!1;m.each(v.Lists.transforms3D,function(a,b){var c=/^scale/.test(b)?1:0,e=g(l).transformCache[b];g(l).transformCache[b]!==d&&new RegExp("^\\("+c+"[^.]").test(e)&&(n=!0,delete g(l).transformCache[b])}),f.mobileHA&&(n=!0,delete g(l).transformCache.translate3d),n&&v.flushTransformCache(l),v.Values.removeClass(l,"velocity-animating")}if(!b&&f.complete&&!f.loop&&j===k-1)try{f.complete.call(e,e)}catch(o){setTimeout(function(){throw o},1)}h&&f.loop!==!0&&h(e),f.loop!==!0||b||(m.each(g(l).tweensContainer,function(a,b){/^rotate/.test(a)&&360===parseFloat(b.endValue)&&(b.endValue=0,b.startValue=360)}),t(l,"reverse",{loop:!0,delay:f.delay})),f.queue!==!1&&m.dequeue(l,f.queue)}t.State.calls[a]=!1;for(var p=0,q=t.State.calls.length;q>p;p++)if(t.State.calls[p]!==!1){i=!0;break}i===!1&&(t.State.isTicking=!1,delete t.State.calls,t.State.calls=[])}var m,n=function(){if(c.documentMode)return c.documentMode;for(var a=7;a>4;a--){var b=c.createElement("div");if(b.innerHTML="",b.getElementsByTagName("span").length)return b=null,a}return d}(),o=function(){var a=0;return b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame||function(b){var c,d=(new Date).getTime();return c=Math.max(0,16-(d-a)),a=d+c,setTimeout(function(){b(d+c)},c)}}(),p={isString:function(a){return"string"==typeof a},isArray:Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},isFunction:function(a){return"[object Function]"===Object.prototype.toString.call(a)},isNode:function(a){return a&&a.nodeType},isNodeList:function(a){return"object"==typeof a&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(a))&&a.length!==d&&(0===a.length||"object"==typeof a[0]&&a[0].nodeType>0)},isWrapped:function(a){return a&&(a.jquery||b.Zepto&&b.Zepto.zepto.isZ(a))},isSVG:function(a){return b.SVGElement&&a instanceof b.SVGElement},isEmptyObject:function(a){for(var b in a)return!1;return!0}},q=!1;if(a.fn&&a.fn.jquery?(m=a,q=!0):m=b.Velocity.Utilities,8>=n&&!q)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=n)return void(jQuery.fn.velocity=jQuery.fn.animate);var r=400,s="swing",t={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:b.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:c.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:m,Redirects:{},Easings:{},Promise:b.Promise,defaults:{queue:"",duration:r,easing:s,begin:d,complete:d,progress:d,display:d,visibility:d,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(a){m.data(a,"velocity",{isSVG:p.isSVG(a),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:1,patch:0},debug:!1};b.pageYOffset!==d?(t.State.scrollAnchor=b,t.State.scrollPropertyLeft="pageXOffset",t.State.scrollPropertyTop="pageYOffset"):(t.State.scrollAnchor=c.documentElement||c.body.parentNode||c.body,t.State.scrollPropertyLeft="scrollLeft",t.State.scrollPropertyTop="scrollTop");var u=function(){function a(a){return-a.tension*a.x-a.friction*a.v}function b(b,c,d){var e={x:b.x+d.dx*c,v:b.v+d.dv*c,tension:b.tension,friction:b.friction};return{dx:e.v,dv:a(e)}}function c(c,d){var e={dx:c.v,dv:a(c)},f=b(c,.5*d,e),g=b(c,.5*d,f),h=b(c,d,g),i=1/6*(e.dx+2*(f.dx+g.dx)+h.dx),j=1/6*(e.dv+2*(f.dv+g.dv)+h.dv);return c.x=c.x+i*d,c.v=c.v+j*d,c}return function d(a,b,e){var f,g,h,i={x:-1,v:0,tension:null,friction:null},j=[0],k=0,l=1e-4,m=.016;for(a=parseFloat(a)||500,b=parseFloat(b)||20,e=e||null,i.tension=a,i.friction=b,f=null!==e,f?(k=d(a,b),g=k/e*m):g=m;h=c(h||i,g),j.push(1+h.x),k+=16,Math.abs(h.x)>l&&Math.abs(h.v)>l;);return f?function(a){return j[a*(j.length-1)|0]}:k}}();t.Easings={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},spring:function(a){return 1-Math.cos(4.5*a*Math.PI)*Math.exp(6*-a)}},m.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(a,b){t.Easings[b[0]]=i.apply(null,b[1])});var v=t.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var a=0;a=n)switch(a){case"name":return"filter";case"extract":var d=c.toString().match(/alpha\(opacity=(.*)\)/i);return c=d?d[1]/100:1;case"inject":return b.style.zoom=1,parseFloat(c)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(c),10)+")"}else switch(a){case"name":return"opacity";case"extract":return c;case"inject":return c}}},register:function(){9>=n||t.State.isGingerbread||(v.Lists.transformsBase=v.Lists.transformsBase.concat(v.Lists.transforms3D));for(var a=0;ae&&(e=1),f=!/(\d)$/i.test(e);break;case"skew":f=!/(deg|\d)$/i.test(e);break;case"rotate":f=!/(deg|\d)$/i.test(e)}return f||(g(c).transformCache[b]="("+e+")"),g(c).transformCache[b]}}}();for(var a=0;a=n||3!==f.split(" ").length||(f+=" 1"),f;case"inject":return 8>=n?4===e.split(" ").length&&(e=e.split(/\s+/).slice(0,3).join(" ")):3===e.split(" ").length&&(e+=" 1"),(8>=n?"rgb":"rgba")+"("+e.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(a){return a.replace(/-(\w)/g,function(a,b){return b.toUpperCase()})},SVGAttribute:function(a){var b="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(n||t.State.isAndroid&&!t.State.isChrome)&&(b+="|transform"),new RegExp("^("+b+")$","i").test(a)},prefixCheck:function(a){if(t.State.prefixMatches[a])return[t.State.prefixMatches[a],!0];for(var b=["","Webkit","Moz","ms","O"],c=0,d=b.length;d>c;c++){var e;if(e=0===c?a:b[c]+a.replace(/^\w/,function(a){return a.toUpperCase()}),p.isString(t.State.prefixElement.style[e]))return t.State.prefixMatches[a]=e,[e,!0]}return[a,!1]}},Values:{hexToRgb:function(a){var b,c=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return a=a.replace(c,function(a,b,c,d){return b+b+c+c+d+d}),b=d.exec(a),b?[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]:[0,0,0]},isCSSNullValue:function(a){return 0==a||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(a)},getUnitType:function(a){return/^(rotate|skew)/i.test(a)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(a)?"":"px"},getDisplayType:function(a){var b=a&&a.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(b)?"inline":/^(li)$/i.test(b)?"list-item":/^(tr)$/i.test(b)?"table-row":"block"},addClass:function(a,b){a.classList?a.classList.add(b):a.className+=(a.className.length?" ":"")+b},removeClass:function(a,b){a.classList?a.classList.remove(b):a.className=a.className.toString().replace(new RegExp("(^|\\s)"+b.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(a,c,e,f){function h(a,c){function e(){j&&v.setPropertyValue(a,"display","none")}var i=0;if(8>=n)i=m.css(a,c);else{var j=!1;if(/^(width|height)$/.test(c)&&0===v.getPropertyValue(a,"display")&&(j=!0,v.setPropertyValue(a,"display",v.Values.getDisplayType(a))),!f){if("height"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var k=a.offsetHeight-(parseFloat(v.getPropertyValue(a,"borderTopWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderBottomWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingTop"))||0)-(parseFloat(v.getPropertyValue(a,"paddingBottom"))||0);return e(),k}if("width"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var l=a.offsetWidth-(parseFloat(v.getPropertyValue(a,"borderLeftWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderRightWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingLeft"))||0)-(parseFloat(v.getPropertyValue(a,"paddingRight"))||0);return e(),l}}var o;o=g(a)===d?b.getComputedStyle(a,null):g(a).computedStyle?g(a).computedStyle:g(a).computedStyle=b.getComputedStyle(a,null),(n||t.State.isFirefox)&&"borderColor"===c&&(c="borderTopColor"),i=9===n&&"filter"===c?o.getPropertyValue(c):o[c],(""===i||null===i)&&(i=a.style[c]),e()}if("auto"===i&&/^(top|right|bottom|left)$/i.test(c)){var p=h(a,"position");("fixed"===p||"absolute"===p&&/top|left/i.test(c))&&(i=m(a).position()[c]+"px")}return i}var i;if(v.Hooks.registered[c]){var j=c,k=v.Hooks.getRoot(j);e===d&&(e=v.getPropertyValue(a,v.Names.prefixCheck(k)[0])),v.Normalizations.registered[k]&&(e=v.Normalizations.registered[k]("extract",a,e)),i=v.Hooks.extractValue(j,e)}else if(v.Normalizations.registered[c]){var l,o;l=v.Normalizations.registered[c]("name",a),"transform"!==l&&(o=h(a,v.Names.prefixCheck(l)[0]),v.Values.isCSSNullValue(o)&&v.Hooks.templates[c]&&(o=v.Hooks.templates[c][1])),i=v.Normalizations.registered[c]("extract",a,o)}return/^[\d-]/.test(i)||(i=g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c)?/^(height|width)$/i.test(c)?a.getBBox()[c]:a.getAttribute(c):h(a,v.Names.prefixCheck(c)[0])),v.Values.isCSSNullValue(i)&&(i=0),t.debug>=2&&console.log("Get "+c+": "+i),i},setPropertyValue:function(a,c,d,e,f){var h=c;if("scroll"===c)f.container?f.container["scroll"+f.direction]=d:"Left"===f.direction?b.scrollTo(d,f.alternateValue):b.scrollTo(f.alternateValue,d);else if(v.Normalizations.registered[c]&&"transform"===v.Normalizations.registered[c]("name",a))v.Normalizations.registered[c]("inject",a,d),h="transform",d=g(a).transformCache[c];else{if(v.Hooks.registered[c]){var i=c,j=v.Hooks.getRoot(c);e=e||v.getPropertyValue(a,j),d=v.Hooks.injectValue(i,d,e),c=j}if(v.Normalizations.registered[c]&&(d=v.Normalizations.registered[c]("inject",a,d),c=v.Normalizations.registered[c]("name",a)),h=v.Names.prefixCheck(c)[0],8>=n)try{a.style[h]=d}catch(k){t.debug&&console.log("Browser does not support ["+d+"] for ["+h+"]")}else g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c)?a.setAttribute(c,d):a.style[h]=d;t.debug>=2&&console.log("Set "+c+" ("+h+"): "+d)}return[h,d]},flushTransformCache:function(a){function b(b){return parseFloat(v.getPropertyValue(a,b))}var c="";if((n||t.State.isAndroid&&!t.State.isChrome)&&g(a).isSVG){var d={translate:[b("translateX"),b("translateY")],skewX:[b("skewX")],skewY:[b("skewY")],scale:1!==b("scale")?[b("scale"),b("scale")]:[b("scaleX"),b("scaleY")],rotate:[b("rotateZ"),0,0]};m.each(g(a).transformCache,function(a){/^translate/i.test(a)?a="translate":/^scale/i.test(a)?a="scale":/^rotate/i.test(a)&&(a="rotate"),d[a]&&(c+=a+"("+d[a].join(" ")+") ",delete d[a])})}else{var e,f;m.each(g(a).transformCache,function(b){return e=g(a).transformCache[b],"transformPerspective"===b?(f=e,!0):(9===n&&"rotateZ"===b&&(b="rotate"),void(c+=b+e+" "))}),f&&(c="perspective"+f+" "+c)}v.setPropertyValue(a,"transform",c)}};v.Hooks.register(),v.Normalizations.register(),t.hook=function(a,b,c){var e=d;return a=f(a),m.each(a,function(a,f){if(g(f)===d&&t.init(f),c===d)e===d&&(e=t.CSS.getPropertyValue(f,b));else{var h=t.CSS.setPropertyValue(f,b,c);"transform"===h[0]&&t.CSS.flushTransformCache(f),e=h}}),e};var w=function(){function a(){return i?C.promise||null:n}function h(){function a(){function a(a,b){var c=d,e=d,f=d;return p.isArray(a)?(c=a[0],!p.isArray(a[1])&&/^[\d-]/.test(a[1])||p.isFunction(a[1])||v.RegEx.isHex.test(a[1])?f=a[1]:(p.isString(a[1])&&!v.RegEx.isHex.test(a[1])||p.isArray(a[1]))&&(e=b?a[1]:j(a[1],i.duration),a[2]!==d&&(f=a[2]))):c=a,b||(e=e||i.easing),p.isFunction(c)&&(c=c.call(h,z,y)),p.isFunction(f)&&(f=f.call(h,z,y)),[c||0,e,f]}function n(a,b){var c,d;return d=(b||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(a){return c=a,""}),c||(c=v.Values.getUnitType(a)),[d,c]}function o(){var a={myParent:h.parentNode||c.body,position:v.getPropertyValue(h,"position"),fontSize:v.getPropertyValue(h,"fontSize")},d=a.position===J.lastPosition&&a.myParent===J.lastParent,e=a.fontSize===J.lastFontSize;J.lastParent=a.myParent,J.lastPosition=a.position,J.lastFontSize=a.fontSize;var f=100,i={};if(e&&d)i.emToPx=J.lastEmToPx,i.percentToPxWidth=J.lastPercentToPxWidth,i.percentToPxHeight=J.lastPercentToPxHeight;else{var j=g(h).isSVG?c.createElementNS("http://www.w3.org/2000/svg","rect"):c.createElement("div");t.init(j),a.myParent.appendChild(j),m.each(["overflow","overflowX","overflowY"],function(a,b){t.CSS.setPropertyValue(j,b,"hidden")}),t.CSS.setPropertyValue(j,"position",a.position),t.CSS.setPropertyValue(j,"fontSize",a.fontSize),t.CSS.setPropertyValue(j,"boxSizing","content-box"),m.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(a,b){t.CSS.setPropertyValue(j,b,f+"%")}),t.CSS.setPropertyValue(j,"paddingLeft",f+"em"),i.percentToPxWidth=J.lastPercentToPxWidth=(parseFloat(v.getPropertyValue(j,"width",null,!0))||1)/f,i.percentToPxHeight=J.lastPercentToPxHeight=(parseFloat(v.getPropertyValue(j,"height",null,!0))||1)/f,i.emToPx=J.lastEmToPx=(parseFloat(v.getPropertyValue(j,"paddingLeft"))||1)/f,a.myParent.removeChild(j)}return null===J.remToPx&&(J.remToPx=parseFloat(v.getPropertyValue(c.body,"fontSize"))||16),null===J.vwToPx&&(J.vwToPx=parseFloat(b.innerWidth)/100,J.vhToPx=parseFloat(b.innerHeight)/100),i.remToPx=J.remToPx,i.vwToPx=J.vwToPx,i.vhToPx=J.vhToPx,t.debug>=1&&console.log("Unit ratios: "+JSON.stringify(i),h),i}if(i.begin&&0===z)try{i.begin.call(q,q)}catch(r){setTimeout(function(){throw r},1)}if("scroll"===D){var w,x,A,B=/^x$/i.test(i.axis)?"Left":"Top",E=parseFloat(i.offset)||0;i.container?p.isWrapped(i.container)||p.isNode(i.container)?(i.container=i.container[0]||i.container,w=i.container["scroll"+B],A=w+m(h).position()[B.toLowerCase()]+E):i.container=null:(w=t.State.scrollAnchor[t.State["scrollProperty"+B]],x=t.State.scrollAnchor[t.State["scrollProperty"+("Left"===B?"Top":"Left")]],A=m(h).offset()[B.toLowerCase()]+E),l={scroll:{rootPropertyValue:!1,startValue:w,currentValue:w,endValue:A,unitType:"",easing:i.easing,scrollData:{container:i.container,direction:B,alternateValue:x}},element:h},t.debug&&console.log("tweensContainer (scroll): ",l.scroll,h)}else if("reverse"===D){if(!g(h).tweensContainer)return void m.dequeue(h,i.queue);"none"===g(h).opts.display&&(g(h).opts.display="auto"),"hidden"===g(h).opts.visibility&&(g(h).opts.visibility="visible"),g(h).opts.loop=!1,g(h).opts.begin=null,g(h).opts.complete=null,u.easing||delete i.easing,u.duration||delete i.duration,i=m.extend({},g(h).opts,i);var F=m.extend(!0,{},g(h).tweensContainer);for(var G in F)if("element"!==G){var H=F[G].startValue;F[G].startValue=F[G].currentValue=F[G].endValue,F[G].endValue=H,p.isEmptyObject(u)||(F[G].easing=i.easing),t.debug&&console.log("reverse tweensContainer ("+G+"): "+JSON.stringify(F[G]),h)}l=F}else if("start"===D){var F;g(h).tweensContainer&&g(h).isAnimating===!0&&(F=g(h).tweensContainer),m.each(s,function(b,c){if(RegExp("^"+v.Lists.colors.join("$|^")+"$").test(b)){var e=a(c,!0),f=e[0],g=e[1],h=e[2];if(v.RegEx.isHex.test(f)){for(var i=["Red","Green","Blue"],j=v.Values.hexToRgb(f),k=h?v.Values.hexToRgb(h):d,l=0;l1e4&&(t.State.calls=e(t.State.calls)),t.State.calls.push([K,q,i,null,C.resolver]),t.State.isTicking===!1&&(t.State.isTicking=!0,k())):z++)}var f,h=this,i=m.extend({},t.defaults,u),l={};switch(g(h)===d&&t.init(h),parseFloat(i.delay)&&i.queue!==!1&&m.queue(h,i.queue,function(a){t.velocityQueueEntryFlag=!0,g(h).delayTimer={setTimeout:setTimeout(a,parseFloat(i.delay)),next:a}}),i.duration.toString().toLowerCase()){case"fast":i.duration=200;break;case"normal":i.duration=r;break;case"slow":i.duration=600;break;default:i.duration=parseFloat(i.duration)||1}t.mock!==!1&&(t.mock===!0?i.duration=i.delay=1:(i.duration*=parseFloat(t.mock)||1,i.delay*=parseFloat(t.mock)||1)),i.easing=j(i.easing,i.duration),i.begin&&!p.isFunction(i.begin)&&(i.begin=null),i.progress&&!p.isFunction(i.progress)&&(i.progress=null),i.complete&&!p.isFunction(i.complete)&&(i.complete=null),i.display!==d&&null!==i.display&&(i.display=i.display.toString().toLowerCase(),"auto"===i.display&&(i.display=t.CSS.Values.getDisplayType(h))),i.visibility!==d&&null!==i.visibility&&(i.visibility=i.visibility.toString().toLowerCase()),i.mobileHA=i.mobileHA&&t.State.isMobile&&!t.State.isGingerbread,i.queue===!1?i.delay?setTimeout(a,i.delay):a():m.queue(h,i.queue,function(b,c){return c===!0?(C.promise&&C.resolver(q),!0):(t.velocityQueueEntryFlag=!0,void a(b))}),""!==i.queue&&"fx"!==i.queue||"inprogress"===m.queue(h)[0]||m.dequeue(h)}var i,n,o,q,s,u,x=arguments[0]&&(m.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||p.isString(arguments[0].properties));if(p.isWrapped(this)?(i=!1,o=0,q=this,n=this):(i=!0,o=1,q=x?arguments[0].elements:arguments[0]),q=f(q)){x?(s=arguments[0].properties,u=arguments[0].options):(s=arguments[o],u=arguments[o+1]);var y=q.length,z=0;if("stop"!==s&&!m.isPlainObject(u)){var A=o+1;u={};for(var B=A;BM;M++){var N={delay:F.delay,progress:F.progress};M===L-1&&(N.display=F.display,N.visibility=F.visibility,N.complete=F.complete),w(q,"reverse",N)}return a()}};t=m.extend(w,t),t.animate=w;var x=b.requestAnimationFrame||o;return t.State.isMobile||c.hidden===d||c.addEventListener("visibilitychange",function(){c.hidden?(x=function(a){return setTimeout(function(){a(!0)},16)},k()):x=b.requestAnimationFrame||o}),a.Velocity=t,a!==b&&(a.fn.velocity=w,a.fn.velocity.defaults=t.defaults),m.each(["Down","Up"],function(a,b){t.Redirects["slide"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j=i.begin,k=i.complete,l={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},n={};i.display===d&&(i.display="Down"===b?"inline"===t.CSS.Values.getDisplayType(a)?"inline-block":"block":"none"),i.begin=function(){j&&j.call(g,g);for(var c in l){n[c]=a.style[c];var d=t.CSS.getPropertyValue(a,c);l[c]="Down"===b?[d,0]:[0,d]}n.overflow=a.style.overflow,a.style.overflow="hidden"},i.complete=function(){for(var b in n)a.style[b]=n[b];k&&k.call(g,g),h&&h.resolver(g)},t(a,l,i)}}),m.each(["In","Out"],function(a,b){t.Redirects["fade"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j={opacity:"In"===b?1:0},k=i.complete;i.complete=e!==f-1?i.begin=null:function(){k&&k.call(g,g),h&&h.resolver(g)},i.display===d&&(i.display="In"===b?"auto":"none"),t(this,j,i)}}),t}(window.jQuery||window.Zepto||window,window,document)}),function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=nb(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===yb||f.eventType===Ab)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Bb&&(i>xb||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=mb(l.x)>mb(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:lb(c/b),y:lb(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Cb:mb(a)>=mb(b)?a>0?Db:Eb:b>0?Fb:Gb}function I(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],Lb)-J(a[1],a[0],Lb)}function L(a,b){return I(b[0],b[1],Lb)/I(a[0],a[1],Lb)}function M(){this.evEl=Nb,this.evWin=Ob,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Rb,this.evWin=Sb,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ub,this.evWin=Vb,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Ab|Bb)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xb,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(yb|zb)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===yb)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Ab|Bb)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Tb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Ub="touchstart",Vb="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Tb[a.type];if(b===yb&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Ab|Bb)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}});var Wb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Xb="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wb[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==tb,e=c.pointerType==vb;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ab|Bb)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Yb=v(jb.style,"touchAction"),Zb=Yb!==d,$b="compute",_b="auto",ac="manipulation",bc="none",cc="pan-x",dc="pan-y";T.prototype={set:function(a){a==$b&&(a=this.compute()),Zb&&(this.manager.element.style[Yb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Zb){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bc),f=q(d,dc),g=q(d,cc);return e||f&&c&Hb||g&&c&Ib?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var ec=1,fc=2,gc=4,hc=8,ic=hc,jc=16,kc=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hc>d&&b(!0),b(),d>=hc&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kc)},canEmit:function(){for(var a=0;af?Db:Eb,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Cb:0>g?Fb:Gb,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fc||!(this.state&fc)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fc)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(ab,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_b]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Ab|Bb)&&!f)this.reset();else if(a.eventType&yb)this.reset(),this._timer=e(function(){this.state=ic,this.tryEmit()},b.time,this);else if(a.eventType&Ab)return ic;return kc},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ic&&(a&&a.eventType&Ab?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=nb(),this.manager.emit(this.options.event,this._input)))}}),j(bb,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fc)}}),j(cb,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Hb|Ib,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Hb|Ib)?b=a.velocity:c&Hb?b=a.velocityX:c&Ib&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&mb(b)>this.options.velocity&&a.eventType&Ab},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(db,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ac]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance
    ');a("body").append(e);var f={opacity:.5,in_duration:300,out_duration:200,ready:void 0,complete:void 0};b=a.extend(f,b),a("#lean-overlay").click(function(){c(d)}),a(d).find(".modal-close").click(function(a){a.preventDefault(),c(d)}),a("#lean-overlay").css({display:"block",opacity:0}),a(d).css({display:"block",top:"4%",opacity:0}),a("#lean-overlay").velocity({opacity:b.opacity},{duration:b.in_duration,queue:!1,ease:"easeOutCubic"}),a(d).velocity({top:"10%",opacity:1},{duration:b.in_duration,queue:!1,ease:"easeOutCubic",complete:function(){"function"==typeof b.ready&&b.ready()}})}}),a.fn.extend({leanModal:function(b){return this.each(function(){a(this).click(function(c){var d=a(this).attr("href");a(d).openModal(b),c.preventDefault()})})}})}(jQuery),function(a){a.fn.materialbox=function(){return this.each(function(){function b(){var b=g.parent(".material-placeholder").attr("z-index");b||(b=0),c=!1,a("#materialbox-overlay").fadeOut(f,function(){a(this).remove(),g.css("z-index",b)}),g.animate({width:i},{duration:f,queue:!1,easing:"easeOutQuad"}),g.animate({height:j},{duration:f,queue:!1,easing:"easeOutQuad"}),g.animate({left:0},{duration:f,queue:!1,easing:"easeOutQuad"}),g.animate({top:0},{duration:f,queue:!1,easing:"easeOutQuad"}),g.css("will-change",""),g.removeClass("active")}var c=!1,d=!0,e=275,f=225,g=a(this),h=a("
    ").addClass("material-placeholder"),i=g.width(),j=g.height();g.wrap(h),g.on("click",function(){var f=window.innerWidth,h=window.innerHeight;if(c||d===!1)return b(),!1;g.addClass("active"),i=g.width(),j=g.height(),g.parent(".material-placeholder").css("width",g.innerWidth()).css("height",j).css("position","relative").css("top",0).css("left",0).css("z-index",g.attr("z-indez")),g.css("position","absolute");var k=a("
    ");k.attr("id","materialbox-overlay").css("width",a(document).width()+100).css("height",a(document).height()+100).css("top",0).css("left",0).css("opacity",0).css("will-change","opacity").click(function(){b()}),a("body").append(k),k.animate({opacity:1},{duration:e,queue:!1,easing:"easeOutQuad"}),c=!0,d=!1;var l=0,m=i/f,n=j/h,o=0,p=0;m>n?(l=j/i,o=.9*f,p=.9*f*l):(l=i/j,o=.9*h*l,p=.9*h),g.css("left",0).css("top",0).css("z-index",1e3).css("will-change","left, top").animate({height:p,width:o},{duration:e,queue:!1,easing:"easeOutQuad"}).animate({left:a(document).scrollLeft()+f/2-g.parent(".material-placeholder").offset().left-o/2},{duration:e,queue:!1,easing:"easeOutQuad"}).animate({top:a(document).scrollTop()+h/2-g.parent(".material-placeholder").offset().top-p/2},{duration:e,queue:!1,easing:"easeOutQuad",complete:function(){d=!0}})}),a(window).scroll(function(){c&&b()}),a(document).keyup(function(a){27===a.keyCode&&c&&b()})})}}(jQuery),function(a){a.fn.parallax=function(){var b=a(window).width();return this.each(function(){function c(c){if(b>992){var e=d.height(),f=d.children("img").height(),g=f-e,h=d.offset().top+e,i=d.offset().top,j=a(window).scrollTop(),k=window.innerHeight,l=j+k,m=(l-i)/(e+k),n=-1*g*m;h>j&&j+k>i&&d.children("img").first().css("bottom",n+"px"),c&&d.children("img").first().show()}else d.children("img").show()}var d=a(this);d.addClass("parallax"),c(!0),a(window).scroll(function(){b=a(window).width(),c(!1)})})}}(jQuery),function(a){a.fn.tabs=function(){return this.each(function(){{var b=a(this);a(window).width()}b.width("100%");var c=a(this).children("li").length;b.children("li").each(function(){a(this).width(100/c+"%")});var d,e,f=b.find("li.tab a"),g=b.width(),h=b.find("li").first().outerWidth(),i=0;d=a(f.filter('[href="'+location.hash+'"]')[0]||f[0]),d.addClass("active"),i=f.index(d),0>i&&(i=0),e=a(d[0].hash),b.append('
    ');var j=b.find(".indicator");b.is(":visible")&&(j.css({right:g-(i+1)*h}),j.css({left:i*h})),a(window).resize(function(){g=b.width(),h=b.find("li").first().outerWidth(),0>i&&(i=0),0!==h&&0!==g&&(j.css({right:g-(i+1)*h}),j.css({left:i*h}))}),f.not(d).each(function(){a(this.hash).hide()}),b.on("click","a",function(c){g=b.width(),h=b.find("li").first().outerWidth(),d.removeClass("active"),e.hide(),d=a(this),e=a(this.hash),f=b.find("li.tab a"),d.addClass("active");var k=i;i=f.index(a(this)),0>i&&(i=0),e.show(),i-k>=0?(j.velocity({right:g-(i+1)*h},{duration:300,queue:!1,easing:"easeOutQuad"}),j.velocity({left:i*h},{duration:300,queue:!1,easing:"easeOutQuad",delay:80})):(j.velocity({left:i*h},{duration:300,queue:!1,easing:"easeOutQuad"}),j.velocity({right:g-(i+1)*h},{duration:300,queue:!1,easing:"easeOutQuad",delay:80})),c.preventDefault()})})}}(jQuery),function(a){var b,c,d;a.fn.tooltip=function(e){var f={delay:350}; +e=a.extend(f,e);var g=a(this),h=5,i=a("
    =f.delay&&0==c&&(c=!0,i.css({display:"block"}),i.css({top:g.offset().top+g.outerHeight()+h,left:g.offset().left+g.outerWidth()/2-i.outerWidth()/2}),i.velocity({opacity:1,marginTop:"+10px"},{duration:250,queue:!1}),j.css({display:"block"}).velocity({opacity:1},{duration:200,delay:0,queue:!1}).velocity({scale:12},{duration:250,delay:20,queue:!1,easing:"easeInOutQuad"}))},50)},function(){clearInterval(d),b=0,i.velocity({opacity:0,marginTop:"-10px"},{duration:225,queue:!1,delay:275}),j.velocity({opacity:0,scale:1},{duration:225,delay:275,queue:!1,complete:function(){j.css("display","none"),i.css("display","none"),c=!1}})})}}(jQuery),function(a){"use strict";function b(a){return null!==a&&a===a.window}function c(a){return b(a)?a:9===a.nodeType&&a.defaultView}function d(a){var b,d,e={top:0,left:0},f=a&&a.ownerDocument;return b=f.documentElement,"undefined"!=typeof a.getBoundingClientRect&&(e=a.getBoundingClientRect()),d=c(f),{top:e.top+d.pageYOffset-b.clientTop,left:e.left+d.pageXOffset-b.clientLeft}}function e(a){var b="";for(var c in a)a.hasOwnProperty(c)&&(b+=c+":"+a[c]+";");return b}var f=f||{},g=document.querySelectorAll.bind(document),h={duration:500,show:function(a){if(2===a.button)return!1;var b=this,c=document.createElement("div");c.className="waves-ripple",b.appendChild(c);var f=d(b),g=a.pageY-f.top-10,i=a.pageX-f.left-10,j="scale(15)";"touches"in a&&(g=a.touches[0].pageY-f.top-45,i=a.touches[0].pageX-f.left-45),c.setAttribute("data-hold",Date.now()),c.setAttribute("data-scale",j),c.setAttribute("data-x",i),c.setAttribute("data-y",g);var k={top:g+"px",left:i+"px"};c.className=c.className+" waves-notransition",c.setAttribute("style",e(k)),c.className=c.className.replace("waves-notransition",""),k["-webkit-transform"]=j,k["-moz-transform"]=j,k["-ms-transform"]=j,k["-o-transform"]=j,k.transform=j,k.opacity="1",k["-webkit-transition-duration"]=h.duration+"ms",k["-moz-transition-duration"]=h.duration+"ms",k["-o-transition-duration"]=h.duration+"ms",k["transition-duration"]=h.duration+"ms",c.setAttribute("style",e(k))},hide:function(){for(var a=this,b=(1.4*a.clientWidth,null),c=a.children.length,d=0;c>d;d++)-1===a.children[d].className.indexOf("waves-ripple")||(b=a.children[d]);if(!b)return!1;var f=b.getAttribute("data-x"),g=b.getAttribute("data-y"),i=b.getAttribute("data-scale"),j=Date.now()-Number(b.getAttribute("data-hold")),k=500-j;0>k&&(k=0),setTimeout(function(){var c={top:g+"px",left:f+"px",opacity:"0","-webkit-transition-duration":h.duration+"ms","-moz-transition-duration":h.duration+"ms","-o-transition-duration":h.duration+"ms","transition-duration":h.duration+"ms","-webkit-transform":i,"-moz-transform":i,"-ms-transform":i,"-o-transform":i,transform:i};b.setAttribute("style",e(c)),setTimeout(function(){try{a.removeChild(b)}catch(c){return!1}},h.duration)},k)},wrapInput:function(a){for(var b=0;b
    ');g.css("opacity",0).click(function(){i=!1,j=!1,c(),h.velocity({left:-1*b.menuWidth},{duration:300,queue:!1,easing:"easeOutQuad"}),g.animate({opacity:0},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}})}),a("body").append(g)}f>b.menuWidth?f=b.menuWidth:0>f?f=0:f=b.menuWidth/2&&(j=!0),h.velocity({left:-1*b.menuWidth+f},{duration:50,queue:!1,easing:"easeOutQuad"});var k=f/b.menuWidth;a("#sidenav-overlay").velocity({opacity:k},{duration:50,queue:!1,easing:"easeOutQuad"})}else j?d.gesture.center.x>b.menuWidth-b.activationWidth&&2===e&&(i=!0):d.gesture.center.x
    ');b.css("opacity",0).click(function(){j=!1,i=!1,c(),b.animate({opacity:0},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}})}),a("body").append(b),b.animate({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){j=!0,i=!1}})}return!1})}}(jQuery),function(a){function b(b,c,d,e){var f=a();return a.each(g,function(a,g){if(g.height()>0){var h=g.offset().top,i=g.offset().left,j=i+g.width(),k=h+g.height(),l=!(i>c||e>j||h>d||b>k);l&&f.push(g)}}),f}function c(){++j;var c=f.scrollTop(),d=f.scrollLeft(),e=d+f.width(),g=c+f.height(),i=b(c+k.top+200,e+k.right,g+k.bottom,d+k.left);a.each(i,function(a,b){var c=b.data("scrollSpy:ticks");"number"!=typeof c&&b.triggerHandler("scrollSpy:enter"),b.data("scrollSpy:ticks",j)}),a.each(h,function(a,b){var c=b.data("scrollSpy:ticks");"number"==typeof c&&c!==j&&(b.triggerHandler("scrollSpy:exit"),b.data("scrollSpy:ticks",null))}),h=i}function d(){f.trigger("scrollSpy:winSize")}function e(a,b,c){var d,e,f,g=null,h=0;c||(c={});var i=function(){h=c.leading===!1?0:l(),g=null,f=a.apply(d,e),d=e=null};return function(){var j=l();h||c.leading!==!1||(h=j);var k=b-(j-h);return d=this,e=arguments,0>=k?(clearTimeout(g),g=null,h=j,f=a.apply(d,e),d=e=null):g||c.trailing===!1||(g=setTimeout(i,k)),f}}var f=a(window),g=[],h=[],i=!1,j=0,k={top:0,right:0,bottom:0,left:0},l=Date.now||function(){return(new Date).getTime()};a.scrollSpy=function(b,d){var h=[];b=a(b),b.each(function(b,c){g.push(a(c)),a(c).data("scrollSpy:id",b),a("a[href=#"+a(c).attr("id")+"]").click(function(b){b.preventDefault();var c=a(this.hash).offset().top+1;a(".tabs-wrapper").length?a("html, body").animate({scrollTop:c-60},{duration:400,easing:"easeOutCubic"}):a("html, body").animate({scrollTop:c},{duration:400,easing:"easeOutCubic"})})}),d=d||{throttle:100},k.top=d.offsetTop||0,k.right=d.offsetRight||0,k.bottom=d.offsetBottom||0,k.left=d.offsetLeft||0;var j=e(c,d.throttle||100),l=function(){a(document).ready(j)};return i||(f.on("scroll",l),f.on("resize",l),i=!0),setTimeout(l,0),b.on("scrollSpy:enter",function(){h=a.grep(h,function(a){return 0!=a.height()});var b=a(this);h[0]?(a("a[href=#"+h[0].attr("id")+"]").removeClass("active"),b.data("scrollSpy:id")
    '),c=null;a("body").append(b),a(this).on("keyup keydown",function(){c=a(this).val(),c=c.replace(/\n/g,"
    "),b.html(c+"
    "),a(this).css("height",b.height())})});var c=a("input[type=range]"),d=!1;c.each(function(){var b=a('');a(this).after(b)});var e=a(".range-field");e.on("mousedown",function(b){d=!0,a(this).addClass("active");var c=a(this).children(".thumb");c.hasClass("active")||c.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"});var e=b.pageX-a(this).offset().left,f=a(this).outerWidth();0>e?e=0:e>f&&(e=f),c.addClass("active").css("left",e),c.find(".value").html(a(this).children("input[type=range]").val())}),e.on("mouseup",function(){d=!1,a(this).removeClass("active")}),e.on("mousemove",function(b){var c=a(this).children(".thumb");if(d){c.hasClass("active")||c.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"});var e=b.pageX-a(this).offset().left,f=a(this).outerWidth();0>e?e=0:e>f&&(e=f),c.addClass("active").css("left",e),c.find(".value").html(a(this).children("input[type=range]").val())}}),e.on("mouseout",function(){if(!d){var b=a(this).children(".thumb");b.hasClass("active")&&b.velocity({height:"0",width:"0",top:"10px",marginLeft:"-6px"},{duration:100}),b.removeClass("active")}});var f=function(b,c){var d=a('
    '),e=a(''),f=b.children("option"),g=f.first();f=f.slice(1),f.each(function(){e.append(a("
  • "+a(this).html()+"
  • "))}),e.find("li").each(function(c){a(this).click(function(){b.find("option").eq(c+1).prop("selected",!0),b.prev("span.select-dropdown").html(a(this).text())})}),b.wrap(d),b.before(a(''+g.html()+"")),a("body").append(e)};a("select").not(".disabled").each(function(b){f(a(this),b)}),a(".select-dropdown").dropdown({hover:!1})}(jQuery),function(a){"function"==typeof define&&define.amd?define("picker",["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):this.Picker=a(jQuery)}(function(a){function b(f,g,i,l){function m(){return b._.node("div",b._.node("div",b._.node("div",b._.node("div",y.component.nodes(t.open),v.box),v.wrap),v.frame),v.holder)}function n(){w.data(g,y).addClass(v.input).attr("tabindex",-1).val(w.data("value")?y.get("select",u.format):f.value),u.editable||w.on("focus."+t.id+" click."+t.id,function(a){a.preventDefault(),y.$root[0].focus()}).on("keydown."+t.id,q),e(f,{haspopup:!0,expanded:!1,readonly:!1,owns:f.id+"_root"+(y._hidden?" "+y._hidden.id:"")})}function o(){y.$root.on({keydown:q,focusin:function(a){y.$root.removeClass(v.focused),a.stopPropagation()},"mousedown click":function(b){var c=b.target;c!=y.$root.children()[0]&&(b.stopPropagation(),"mousedown"!=b.type||a(c).is(":input")||"OPTION"==c.nodeName||(b.preventDefault(),y.$root[0].focus()))}}).on({focus:function(){w.addClass(v.target)},blur:function(){w.removeClass(v.target)}}).on("focus.toOpen",r).on("click","[data-pick], [data-nav], [data-clear], [data-close]",function(){var b=a(this),c=b.data(),d=b.hasClass(v.navDisabled)||b.hasClass(v.disabled),e=h();e=e&&(e.type||e.href),(d||e&&!a.contains(y.$root[0],e))&&y.$root[0].focus(),!d&&c.nav?y.set("highlight",y.component.item.highlight,{nav:c.nav}):!d&&"pick"in c?y.set("select",c.pick).close(!0):c.clear?y.clear().close(!0):c.close&&y.close(!0)}),e(y.$root[0],"hidden",!0)}function p(){var b;u.hiddenName===!0?(b=f.name,f.name=""):(b=["string"==typeof u.hiddenPrefix?u.hiddenPrefix:"","string"==typeof u.hiddenSuffix?u.hiddenSuffix:"_submit"],b=b[0]+f.name+b[1]),y._hidden=a('")[0],w.on("change."+t.id,function(){y._hidden.value=f.value?y.get("select",u.formatSubmit):""}).after(y._hidden)}function q(a){var b=a.keyCode,c=/^(8|46)$/.test(b);return 27==b?(y.close(),!1):void((32==b||c||!t.open&&y.component.key[b])&&(a.preventDefault(),a.stopPropagation(),c?y.clear().close():y.open()))}function r(a){a.stopPropagation(),"focus"==a.type&&y.$root.addClass(v.focused),y.open()}if(!f)return b;var s=!1,t={id:f.id||"P"+Math.abs(~~(Math.random()*new Date))},u=i?a.extend(!0,{},i.defaults,l):l||{},v=a.extend({},b.klasses(),u.klass),w=a(f),x=function(){return this.start()},y=x.prototype={constructor:x,$node:w,start:function(){return t&&t.start?y:(t.methods={},t.start=!0,t.open=!1,t.type=f.type,f.autofocus=f==h(),f.readOnly=!u.editable,f.id=f.id||t.id,"text"!=f.type&&(f.type="text"),y.component=new i(y,u),y.$root=a(b._.node("div",m(),v.picker,'id="'+f.id+'_root" tabindex="0"')),o(),u.formatSubmit&&p(),n(),u.container?a(u.container).append(y.$root):w.after(y.$root),y.on({start:y.component.onStart,render:y.component.onRender,stop:y.component.onStop,open:y.component.onOpen,close:y.component.onClose,set:y.component.onSet}).on({start:u.onStart,render:u.onRender,stop:u.onStop,open:u.onOpen,close:u.onClose,set:u.onSet}),s=c(y.$root.children()[0]),f.autofocus&&y.open(),y.trigger("start").trigger("render"))},render:function(a){return a?y.$root.html(m()):y.$root.find("."+v.box).html(y.component.nodes(t.open)),y.trigger("render")},stop:function(){return t.start?(y.close(),y._hidden&&y._hidden.parentNode.removeChild(y._hidden),y.$root.remove(),w.removeClass(v.input).removeData(g),setTimeout(function(){w.off("."+t.id)},0),f.type=t.type,f.readOnly=!1,y.trigger("stop"),t.methods={},t.start=!1,y):y},open:function(c){return t.open?y:(w.addClass(v.active),e(f,"expanded",!0),setTimeout(function(){y.$root.addClass(v.opened),e(y.$root[0],"hidden",!1)},0),c!==!1&&(t.open=!0,s&&k.css("overflow","hidden").css("padding-right","+="+d()),y.$root[0].focus(),j.on("click."+t.id+" focusin."+t.id,function(a){var b=a.target;b!=f&&b!=document&&3!=a.which&&y.close(b===y.$root.children()[0])}).on("keydown."+t.id,function(c){var d=c.keyCode,e=y.component.key[d],f=c.target;27==d?y.close(!0):f!=y.$root[0]||!e&&13!=d?a.contains(y.$root[0],f)&&13==d&&(c.preventDefault(),f.click()):(c.preventDefault(),e?b._.trigger(y.component.key.go,y,[b._.trigger(e)]):y.$root.find("."+v.highlighted).hasClass(v.disabled)||y.set("select",y.component.item.highlight).close())})),y.trigger("open"))},close:function(a){return a&&(y.$root.off("focus.toOpen")[0].focus(),setTimeout(function(){y.$root.on("focus.toOpen",r)},0)),w.removeClass(v.active),e(f,"expanded",!1),setTimeout(function(){y.$root.removeClass(v.opened+" "+v.focused),e(y.$root[0],"hidden",!0)},0),t.open?(t.open=!1,s&&k.css("overflow","").css("padding-right","-="+d()),j.off("."+t.id),y.trigger("close")):y},clear:function(a){return y.set("clear",null,a)},set:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(d=g&&a.isPlainObject(c)?c:d||{},b){g||(h[b]=c);for(e in h)f=h[e],e in y.component.item&&(void 0===f&&(f=null),y.component.set(e,f,d)),("select"==e||"clear"==e)&&w.val("clear"==e?"":y.get(e,u.format)).trigger("change");y.render()}return d.muted?y:y.trigger("set",h)},get:function(a,c){if(a=a||"value",null!=t[a])return t[a];if("valueSubmit"==a){if(y._hidden)return y._hidden.value;a=value}if("value"==a)return f.value;if(a in y.component.item){if("string"==typeof c){var d=y.component.get(a);return d?b._.trigger(y.component.formats.toString,y.component,[c,d]):""}return y.component.get(a)}},on:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(b){g||(h[b]=c);for(e in h)f=h[e],d&&(e="_"+e),t.methods[e]=t.methods[e]||[],t.methods[e].push(f)}return y},off:function(){var a,b,c=arguments;for(a=0,namesCount=c.length;namesCount>a;a+=1)b=c[a],b in t.methods&&delete t.methods[b];return y},trigger:function(a,c){var d=function(a){var d=t.methods[a];d&&d.map(function(a){b._.trigger(a,y,[c])})};return d("_"+a),d(a),y}};return new x}function c(a){var b,c="position";return a.currentStyle?b=a.currentStyle[c]:window.getComputedStyle&&(b=getComputedStyle(a)[c]),"fixed"==b}function d(){if(k.height()<=i.height())return 0;var b=a('
    ').appendTo("body"),c=b[0].offsetWidth;b.css("overflow","scroll");var d=a('
    ').appendTo(b),e=d[0].offsetWidth;return b.remove(),c-e}function e(b,c,d){if(a.isPlainObject(c))for(var e in c)f(b,e,c[e]);else f(b,c,d)}function f(a,b,c){a.setAttribute(("role"==b?"":"aria-")+b,c)}function g(b,c){a.isPlainObject(b)||(b={attribute:c}),c="";for(var d in b){var e=("role"==d?"":"aria-")+d,f=b[d];c+=null==f?"":e+'="'+b[d]+'"'}return c}function h(){try{return document.activeElement}catch(a){}}var i=a(window),j=a(document),k=a(document.documentElement);return b.klasses=function(a){return a=a||"picker",{picker:a,opened:a+"--opened",focused:a+"--focused",input:a+"__input",active:a+"__input--active",target:a+"__input--target",holder:a+"__holder",frame:a+"__frame",wrap:a+"__wrap",box:a+"__box"}},b._={group:function(a){for(var c,d="",e=b._.trigger(a.min,a);e<=b._.trigger(a.max,a,[e]);e+=a.i)c=b._.trigger(a.item,a,[e]),d+=b._.node(a.node,c[0],c[1],c[2]);return d},node:function(b,c,d,e){return c?(c=a.isArray(c)?c.join(""):c,d=d?' class="'+d+'"':"",e=e?" "+e:"","<"+b+d+e+">"+c+""):""},lead:function(a){return(10>a?"0":"")+a},trigger:function(a,b,c){return"function"==typeof a?a.apply(b,c||[]):a},digits:function(a){return/\d/.test(a[1])?2:1},isDate:function(a){return{}.toString.call(a).indexOf("Date")>-1&&this.isInteger(a.getDate())},isInteger:function(a){return{}.toString.call(a).indexOf("Number")>-1&&a%1===0},ariaAttr:g},b.extend=function(c,d){a.fn[c]=function(e,f){var g=this.data(c);return"picker"==e?g:g&&"string"==typeof e?b._.trigger(g[e],g,[f]):this.each(function(){var f=a(this);f.data(c)||new b(this,c,d,e)})},a.fn[c].defaults=d.defaults},b}),function(a){"function"==typeof define&&define.amd?define(["picker","jquery"],a):"object"==typeof exports?module.exports=a(require("./picker.js"),require("jquery")):a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0],e=d.value,f=a.$node.data("value"),g=f||e,h=f?b.formatSubmit:b.format,i=function(){return d.currentStyle?"rtl"==d.currentStyle.direction:"rtl"==getComputedStyle(a.$root[0]).direction};c.settings=b,c.$node=a.$node,c.queue={min:"measure create",max:"measure create",now:"now create",select:"parse create validate",highlight:"parse navigate create validate",view:"parse create validate viewset",disable:"deactivate",enable:"activate"},c.item={},c.item.clear=null,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return a[0]===!0?a.shift():-1}(c.item.disable),c.set("min",b.min).set("max",b.max).set("now"),g?c.set("select",g,{format:h}):c.set("select",null).set("highlight",c.item.now),c.key={40:7,38:-7,39:function(){return i()?-1:1},37:function(){return i()?1:-1},go:function(a){var b=c.item.highlight,d=new Date(b.year,b.month,b.date+a);c.set("highlight",d,{interval:a}),this.render()}},a.on("render",function(){a.$root.find("."+b.klass.selectMonth).on("change",function(){var c=this.value;c&&(a.set("highlight",[a.get("view").year,c,a.get("highlight").date]),a.$root.find("."+b.klass.selectMonth).trigger("focus"))}),a.$root.find("."+b.klass.selectYear).on("change",function(){var c=this.value;c&&(a.set("highlight",[c,a.get("view").month,a.get("highlight").date]),a.$root.find("."+b.klass.selectYear).trigger("focus"))})},1).on("open",function(){var d="";c.disabled(c.get("now"))&&(d=":not(."+b.klass.buttonToday+")"),a.$root.find("button"+d+", select").attr("disabled",!1)},1).on("close",function(){a.$root.find("button, select").attr("disabled",!0)},1)}var d=7,e=6,f=a._,g=(new Date).getTimezoneOffset(),h=60*g*1e3,i=function(a,b){return a.getDate()===b.getUTCDate()&&a.getMonth()===b.getUTCMonth()&&a.getFullYear()===b.getUTCFullYear()},j=function(a,b){return new Date(a.year,a.month,a.date)new Date(b.year,b.month,b.date)};c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?("clear"==a&&(a="select"),e[a]=b,d):(e["enable"==a?"disable":"flip"==a?"enable":a]=d.queue[a].split(" ").map(function(e){return b=d[e](a,b,c)}).pop(),"select"==a?d.set("highlight",e.select,c):"highlight"==a?d.set("view",e.highlight,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set("select",e.select,c),e.highlight&&d.disabled(e.highlight)&&d.set("highlight",e.highlight,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,d){return d=d||{},c=void 0===c?a:c,c==-1/0||1/0==c?{year:c,month:c,date:c,day:c,obj:c,pick:c}:(c===!0?(c=new Date,d.rel&&c.setDate(c.getDate()+d.rel)):b.isPlainObject(c)&&f.isInteger(c.pick)&&(c=[c.year,c.month,c.date]),Array.isArray(c)&&(c=new Date(c[0],c[1],c[2])),c=new Date(c),c.setHours(-g/60,-g%60,0,0),c=new Date(c.getTime()+h),{year:c.getFullYear(),month:c.getMonth(),date:c.getDate(),day:c.getDay(),obj:c,pick:c.getTime()})},c.prototype.createRange=function(a,c){var d=this,e=function(a){return a===!0||b.isArray(a)||f.isDate(a)?d.create(a):a};return f.isInteger(a)||(a=e(a)),f.isInteger(c)||(c=e(c)),f.isInteger(a)&&b.isPlainObject(c)?a=[c.year,c.month,c.date+a]:f.isInteger(c)&&b.isPlainObject(a)&&(c=[a.year,a.month,a.date+c]),{from:e(a),to:e(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(){return!0},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view,l=100;if(i||j){for(j?(f=c.year,g=c.month,h=c.date):(f=+c[0],g=+c[1],h=+c[2]),d&&d.nav&&k&&k.month!==g&&(f=k.year,g=k.month),e=new Date(f,g+(d&&d.nav?d.nav:0),1),f=e.getFullYear(),g=e.getMonth();l&&new Date(f,g,h).getMonth()!==g;)if(h-=1,l-=1,!l)throw"Fell into an infinite loop while navigating to "+new Date(f,g,h)+".";c=[f,g,h]}return c},c.prototype.measure=function(a,b,c){c=c||{};var d=this;return b?"string"==typeof b?b=d.parse(a,b):f.isInteger(b)&&(c.rel=b,b=!0):b="min"==a?-1/0:1/0,b},c.prototype.viewset=function(a,b){return this.create([b.year,b.month,1])},c.prototype.validate=function(a,c,d){var e,g,h,i,j=this,k=c,l=d&&d.interval?d.interval:1,m=-1===j.item.enable,n=j.item.min,o=j.item.max,p=m&&j.item.disable.filter(function(a){if(b.isArray(a)){var d=j.create(a).pick;dc.pick&&(g=!0)}return f.isInteger(a)}).length,q=100;if((!d||!d.nav)&&(!m&&j.disabled(c)||m&&j.disabled(c)&&(p||e||g)||!m&&(c.pick<=n.pick||c.pick>=o.pick)))for(m&&!p&&(!g&&l>0||!e&&0>l)&&(l*=-1);q&&j.disabled(c);){if(q-=1,!q)throw"Fell into an infinite loop while validating "+c.obj+".";if(Math.abs(l)>1&&(c.monthk.month)&&(c=k,l=l>0?1:-1),c.pick<=n.pick?(h=!0,l=1,c=j.create([n.year,n.month,n.date+(c.pick===n.pick?0:-1)])):c.pick>=o.pick&&(i=!0,l=-1,c=j.create([o.year,o.month,o.date+(c.pick===o.pick?0:1)])),h&&i)break;c=j.create([c.year,c.month,c.date+l])}return c},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return f.isInteger(d)?a.day===(c.settings.firstDay?d:d-1)%7:b.isArray(d)||f.isDate(d)?a.pick===c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&"inverted"==a[3]||b.isPlainObject(a)&&a.inverted}).length,-1===c.item.enable?!d:d||a.pickc.item.max.pick},c.prototype.parse=function(a,b,c){var d=this,e={};return b&&"string"==typeof b?(c&&c.format||(c=c||{},c.format=d.settings.format),d.formats.toArray(c.format).map(function(a){var c=d.formats[a],g=c?f.trigger(c,d,[b,e]):a.replace(/^!/,"").length;c&&(e[a]=b.substr(0,g)),b=b.substr(g)}),[e.yyyy||e.yy,+(e.mm||e.m)-1,e.dd||e.d]):b},c.prototype.formats=function(){function a(a,b,c){var d=a.match(/\w+/)[0];return c.mm||c.m||(c.m=b.indexOf(d)+1),d.length}function b(a){return a.match(/\w+/)[0].length}return{d:function(a,b){return a?f.digits(a):b.date},dd:function(a,b){return a?2:f.lead(b.date)},ddd:function(a,c){return a?b(a):this.settings.weekdaysShort[c.day]},dddd:function(a,c){return a?b(a):this.settings.weekdaysFull[c.day]},m:function(a,b){return a?f.digits(a):b.month+1},mm:function(a,b){return a?2:f.lead(b.month+1)},mmm:function(b,c){var d=this.settings.monthsShort;return b?a(b,d,c):d[c.month]},mmmm:function(b,c){var d=this.settings.monthsFull;return b?a(b,d,c):d[c.month]},yy:function(a,b){return a?2:(""+b.year).slice(2)},yyyy:function(a,b){return a?4:b.year},toArray:function(a){return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return f.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,"")}).join("")}}}(),c.prototype.isDateExact=function(a,c){var d=this;return f.isInteger(a)&&f.isInteger(c)||"boolean"==typeof a&&"boolean"==typeof c?a===c:(f.isDate(a)||b.isArray(a))&&(f.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:b.isPlainObject(a)&&b.isPlainObject(c)?d.isDateExact(a.from,c.from)&&d.isDateExact(a.to,c.to):!1},c.prototype.isDateOverlap=function(a,c){var d=this,e=d.settings.firstDay?1:0;return f.isInteger(a)&&(f.isDate(c)||b.isArray(c))?(a=a%7+e,a===d.create(c).day+1):f.isInteger(c)&&(f.isDate(a)||b.isArray(a))?(c=c%7+e,c===d.create(a).day+1):b.isPlainObject(a)&&b.isPlainObject(c)?d.overlapRanges(a,c):!1},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(-1==b.enable?1:-1)},c.prototype.deactivate=function(a,c){var d=this,e=d.item.disable.slice(0);return"flip"==c?d.flipEnable():c===!1?(d.flipEnable(1),e=[]):c===!0?(d.flipEnable(-1),e=[]):c.map(function(a){for(var c,g=0;gi;i+=1){if(h=e[i],d.isDateExact(h,a)){c=e[i]=null,j=!0;break}if(d.isDateOverlap(h,a)){b.isPlainObject(a)?(a.inverted=!0,c=a):b.isArray(a)?(c=a,c[3]||c.push("inverted")):f.isDate(a)&&(c=[a.getFullYear(),a.getMonth(),a.getDate(),"inverted"]);break}}if(c)for(i=0;g>i;i+=1)if(d.isDateExact(e[i],a)){e[i]=null;break}if(j)for(i=0;g>i;i+=1)if(d.isDateOverlap(e[i],a)){e[i]=null;break}c&&e.push(c)}),e.filter(function(a){return null!=a})},c.prototype.nodes=function(a){var b=this,c=b.settings,g=b.item,h=g.now,l=g.select,m=g.highlight,n=g.view,o=g.disable,p=g.min,q=g.max,r=function(a,b){return c.firstDay&&(a.push(a.shift()),b.push(b.shift())),f.node("thead",f.node("tr",f.group({min:0,max:d-1,i:1,node:"th",item:function(d){return[a[d],c.klass.weekdays,'scope=col title="'+b[d]+'"']}})))}((c.showWeekdaysFull?c.weekdaysFull:c.weekdaysLetter).slice(0),c.weekdaysFull.slice(0)),s=function(a){return f.node("div"," ",c.klass["nav"+(a?"Next":"Prev")]+(a&&n.year>=q.year&&n.month>=q.month||!a&&n.year<=p.year&&n.month<=p.month?" "+c.klass.navDisabled:""),"data-nav="+(a||-1)+" "+f.ariaAttr({role:"button",controls:b.$node[0].id+"_table"})+' title="'+(a?c.labelMonthNext:c.labelMonthPrev)+'"')},t=function(d){var e=c.showMonthsShort?c.monthsShort:c.monthsFull;return"short_months"==d&&(e=c.monthsShort),c.selectMonths?f.node("select",f.group({min:0,max:11,i:1,node:"option",item:function(a){return[e[a],0,"value="+a+(n.month==a?" selected":"")+(n.year==p.year&&aq.month?" disabled":"")]}}),c.klass.selectMonth,(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelMonthSelect+'"'):"short_months"==d?f.node("div",e[n.month]):f.node("div",e[n.month],c.klass.month)},u=function(d){var e=n.year,g=c.selectYears===!0?5:~~(c.selectYears/2);if(g){var h=p.year,i=q.year,j=e-g,k=e+g;if(h>j&&(k+=h-j,j=h),k>i){var l=j-h,m=k-i;j-=l>m?m:l,k=i}return f.node("select",f.group({min:j,max:k,i:1,node:"option",item:function(a){return[a,0,"value="+a+(e==a?" selected":"")]}}),c.klass.selectYear,(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelYearSelect+'"')}return"raw"==d?f.node("div",e):f.node("div",e,c.klass.year)};return createDayLabel=function(){return null!=l?f.node("div",l.date):f.node("div",h.date)},createWeekdayLabel=function(){var a;a=null!=l?l.day:h.day;var b=c.weekdaysFull[a];return b},f.node("div",f.node("div",createWeekdayLabel(),"picker__weekday-display")+f.node("div",t("short_months"),c.klass.month_display)+f.node("div",createDayLabel(),c.klass.day_display)+f.node("div",u("raw"),c.klass.year_display),c.klass.date_display)+f.node("div",f.node("div",(c.selectYears?u()+t():t()+u())+s()+s(1),c.klass.header)+f.node("table",r+f.node("tbody",f.group({min:0,max:e-1,i:1,node:"tr",item:function(a){var e=c.firstDay&&0===b.create([n.year,n.month,1]).day?-7:0;return[f.group({min:d*a-n.day+e+1,max:function(){return this.min+d-1},i:1,node:"td",item:function(a){a=b.create([n.year,n.month,a+(c.firstDay?1:0)]);var d=i(h.obj,a.obj),e=l&&i(l.obj,a.obj),g=m&&i(m.obj,a.obj),r=o&&b.disabled(a)||j(a,p)||k(a,q);return[f.node("div",a.obj.getUTCDate(),function(b){return b.push(n.month==a.month?c.klass.infocus:c.klass.outfocus),d&&b.push(c.klass.now),e&&b.push(c.klass.selected),g&&b.push(c.klass.highlighted),r&&b.push(c.klass.disabled),b.join(" ")}([c.klass.day]),"data-pick="+a.pick+" "+f.ariaAttr({role:"gridcell",selected:e&&b.$node.val()===f.trigger(b.formats.toString,b,[c.format,a])?!0:null,activedescendant:g?!0:null,disabled:r?!0:null})),"",f.ariaAttr({role:"presentation"})]}})]}})),c.klass.table,'id="'+b.$node[0].id+'_table" '+f.ariaAttr({role:"grid",controls:b.$node[0].id,readonly:!0})),c.klass.calendar_container)+f.node("div",f.node("button",c.today,"btn-flat picker__today","type=button data-pick="+h.pick+(a&&!b.disabled(h)?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.close,"btn-flat picker__close","type=button data-close=true "+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id})),c.klass.footer) +},c.defaults=function(a){return{labelMonthNext:"Next month",labelMonthPrev:"Previous month",labelMonthSelect:"Select a month",labelYearSelect:"Select a year",monthsFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdaysFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekdaysLetter:["S","M","T","W","T","F","S"],today:"Today",clear:"Clear",close:"Close",format:"d mmmm, yyyy",klass:{table:a+"table",header:a+"header",date_display:a+"date-display",day_display:a+"day-display",month_display:a+"month-display",year_display:a+"year-display",calendar_container:a+"calendar-container",navPrev:a+"nav--prev",navNext:a+"nav--next",navDisabled:a+"nav--disabled",month:a+"month",year:a+"year",selectMonth:a+"select--month",selectYear:a+"select--year",weekdays:a+"weekday",day:a+"day",disabled:a+"day--disabled",selected:a+"day--selected",highlighted:a+"day--highlighted",now:a+"day--today",infocus:a+"day--infocus",outfocus:a+"day--outfocus",footer:a+"footer",buttonClear:a+"button--clear",buttonToday:a+"button--today",buttonClose:a+"button--close"}}}(a.klasses().picker+"__"),a.extend("pickadate",c)}); \ No newline at end of file diff --git a/getting_started.html b/getting_started.html index 20830c3a35..e850c47f81 100644 --- a/getting_started.html +++ b/getting_started.html @@ -83,12 +83,12 @@

    Download

    Materialize

    This is the standard version that comes with both the minified and unminified CSS and JavaScript files. This option require little to no setup. Use this if you are unfamiliar with Sass.

    - Materialize + Materialize

    Sass

    This version contains the source SCSS files. By choosing this version you have more control over which components to include. You will need a Sass compiler if you choose this option.

    - Source + Source

    diff --git a/index.html b/index.html index 04db4cc373..f9b81eb852 100644 --- a/index.html +++ b/index.html @@ -52,7 +52,7 @@

    A modern responsive front-end framework - +
    diff --git a/jade/getting_started/getting_started_content.html b/jade/getting_started/getting_started_content.html index eb32d57184..5908c04734 100644 --- a/jade/getting_started/getting_started_content.html +++ b/jade/getting_started/getting_started_content.html @@ -38,12 +38,12 @@

    Download

    Materialize

    This is the standard version that comes with both the minified and unminified CSS and JavaScript files. This option require little to no setup. Use this if you are unfamiliar with Sass.

    - Materialize + Materialize

    Sass

    This version contains the source SCSS files. By choosing this version you have more control over which components to include. You will need a Sass compiler if you choose this option.

    - Source + Source

    diff --git a/jade/index/index_content.html b/jade/index/index_content.html index 1a24b7eb92..142467fb7f 100644 --- a/jade/index/index_content.html +++ b/jade/index/index_content.html @@ -7,7 +7,7 @@

    A modern responsive front-end framework - +