commit 82ffeb60f89de2924bffa2d5f75d751991524253 Author: Difrex Date: Wed Jan 27 17:58:45 2016 +0300 alpha2 diff --git a/README b/README new file mode 100644 index 0000000..90c0b54 --- /dev/null +++ b/README @@ -0,0 +1 @@ +Thx to Materialize framework authors http://materializecss.com/ diff --git a/css/default.css b/css/default.css new file mode 100644 index 0000000..66fea12 --- /dev/null +++ b/css/default.css @@ -0,0 +1,6 @@ +.post { + display: block; + border-width: 1px; + padding: 5pt; + border: solid; +} diff --git a/css/ghpages-materialize.css b/css/ghpages-materialize.css new file mode 100644 index 0000000..e56d86f --- /dev/null +++ b/css/ghpages-materialize.css @@ -0,0 +1,8734 @@ +.materialize-red.lighten-5 { + background-color: #fdeaeb !important; } + +.materialize-red-text.text-lighten-5 { + color: #fdeaeb !important; } + +.materialize-red.lighten-4 { + background-color: #f8c1c3 !important; } + +.materialize-red-text.text-lighten-4 { + color: #f8c1c3 !important; } + +.materialize-red.lighten-3 { + background-color: #f3989b !important; } + +.materialize-red-text.text-lighten-3 { + color: #f3989b !important; } + +.materialize-red.lighten-2 { + background-color: #ee6e73 !important; } + +.materialize-red-text.text-lighten-2 { + color: #ee6e73 !important; } + +.materialize-red.lighten-1 { + background-color: #ea454b !important; } + +.materialize-red-text.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.text-darken-1 { + color: #d0181e !important; } + +.materialize-red.darken-2 { + background-color: #b9151b !important; } + +.materialize-red-text.text-darken-2 { + color: #b9151b !important; } + +.materialize-red.darken-3 { + background-color: #a21318 !important; } + +.materialize-red-text.text-darken-3 { + color: #a21318 !important; } + +.materialize-red.darken-4 { + background-color: #8b1014 !important; } + +.materialize-red-text.text-darken-4 { + color: #8b1014 !important; } + +.red.lighten-5 { + background-color: #FFEBEE !important; } + +.red-text.text-lighten-5 { + color: #FFEBEE !important; } + +.red.lighten-4 { + background-color: #FFCDD2 !important; } + +.red-text.text-lighten-4 { + color: #FFCDD2 !important; } + +.red.lighten-3 { + background-color: #EF9A9A !important; } + +.red-text.text-lighten-3 { + color: #EF9A9A !important; } + +.red.lighten-2 { + background-color: #E57373 !important; } + +.red-text.text-lighten-2 { + color: #E57373 !important; } + +.red.lighten-1 { + background-color: #EF5350 !important; } + +.red-text.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.text-darken-1 { + color: #E53935 !important; } + +.red.darken-2 { + background-color: #D32F2F !important; } + +.red-text.text-darken-2 { + color: #D32F2F !important; } + +.red.darken-3 { + background-color: #C62828 !important; } + +.red-text.text-darken-3 { + color: #C62828 !important; } + +.red.darken-4 { + background-color: #B71C1C !important; } + +.red-text.text-darken-4 { + color: #B71C1C !important; } + +.red.accent-1 { + background-color: #FF8A80 !important; } + +.red-text.text-accent-1 { + color: #FF8A80 !important; } + +.red.accent-2 { + background-color: #FF5252 !important; } + +.red-text.text-accent-2 { + color: #FF5252 !important; } + +.red.accent-3 { + background-color: #FF1744 !important; } + +.red-text.text-accent-3 { + color: #FF1744 !important; } + +.red.accent-4 { + background-color: #D50000 !important; } + +.red-text.text-accent-4 { + color: #D50000 !important; } + +.pink.lighten-5 { + background-color: #fce4ec !important; } + +.pink-text.text-lighten-5 { + color: #fce4ec !important; } + +.pink.lighten-4 { + background-color: #f8bbd0 !important; } + +.pink-text.text-lighten-4 { + color: #f8bbd0 !important; } + +.pink.lighten-3 { + background-color: #f48fb1 !important; } + +.pink-text.text-lighten-3 { + color: #f48fb1 !important; } + +.pink.lighten-2 { + background-color: #f06292 !important; } + +.pink-text.text-lighten-2 { + color: #f06292 !important; } + +.pink.lighten-1 { + background-color: #ec407a !important; } + +.pink-text.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.text-darken-1 { + color: #d81b60 !important; } + +.pink.darken-2 { + background-color: #c2185b !important; } + +.pink-text.text-darken-2 { + color: #c2185b !important; } + +.pink.darken-3 { + background-color: #ad1457 !important; } + +.pink-text.text-darken-3 { + color: #ad1457 !important; } + +.pink.darken-4 { + background-color: #880e4f !important; } + +.pink-text.text-darken-4 { + color: #880e4f !important; } + +.pink.accent-1 { + background-color: #ff80ab !important; } + +.pink-text.text-accent-1 { + color: #ff80ab !important; } + +.pink.accent-2 { + background-color: #ff4081 !important; } + +.pink-text.text-accent-2 { + color: #ff4081 !important; } + +.pink.accent-3 { + background-color: #f50057 !important; } + +.pink-text.text-accent-3 { + color: #f50057 !important; } + +.pink.accent-4 { + background-color: #c51162 !important; } + +.pink-text.text-accent-4 { + color: #c51162 !important; } + +.purple.lighten-5 { + background-color: #f3e5f5 !important; } + +.purple-text.text-lighten-5 { + color: #f3e5f5 !important; } + +.purple.lighten-4 { + background-color: #e1bee7 !important; } + +.purple-text.text-lighten-4 { + color: #e1bee7 !important; } + +.purple.lighten-3 { + background-color: #ce93d8 !important; } + +.purple-text.text-lighten-3 { + color: #ce93d8 !important; } + +.purple.lighten-2 { + background-color: #ba68c8 !important; } + +.purple-text.text-lighten-2 { + color: #ba68c8 !important; } + +.purple.lighten-1 { + background-color: #ab47bc !important; } + +.purple-text.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.text-darken-1 { + color: #8e24aa !important; } + +.purple.darken-2 { + background-color: #7b1fa2 !important; } + +.purple-text.text-darken-2 { + color: #7b1fa2 !important; } + +.purple.darken-3 { + background-color: #6a1b9a !important; } + +.purple-text.text-darken-3 { + color: #6a1b9a !important; } + +.purple.darken-4 { + background-color: #4a148c !important; } + +.purple-text.text-darken-4 { + color: #4a148c !important; } + +.purple.accent-1 { + background-color: #ea80fc !important; } + +.purple-text.text-accent-1 { + color: #ea80fc !important; } + +.purple.accent-2 { + background-color: #e040fb !important; } + +.purple-text.text-accent-2 { + color: #e040fb !important; } + +.purple.accent-3 { + background-color: #d500f9 !important; } + +.purple-text.text-accent-3 { + color: #d500f9 !important; } + +.purple.accent-4 { + background-color: #aa00ff !important; } + +.purple-text.text-accent-4 { + color: #aa00ff !important; } + +.deep-purple.lighten-5 { + background-color: #ede7f6 !important; } + +.deep-purple-text.text-lighten-5 { + color: #ede7f6 !important; } + +.deep-purple.lighten-4 { + background-color: #d1c4e9 !important; } + +.deep-purple-text.text-lighten-4 { + color: #d1c4e9 !important; } + +.deep-purple.lighten-3 { + background-color: #b39ddb !important; } + +.deep-purple-text.text-lighten-3 { + color: #b39ddb !important; } + +.deep-purple.lighten-2 { + background-color: #9575cd !important; } + +.deep-purple-text.text-lighten-2 { + color: #9575cd !important; } + +.deep-purple.lighten-1 { + background-color: #7e57c2 !important; } + +.deep-purple-text.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.text-darken-1 { + color: #5e35b1 !important; } + +.deep-purple.darken-2 { + background-color: #512da8 !important; } + +.deep-purple-text.text-darken-2 { + color: #512da8 !important; } + +.deep-purple.darken-3 { + background-color: #4527a0 !important; } + +.deep-purple-text.text-darken-3 { + color: #4527a0 !important; } + +.deep-purple.darken-4 { + background-color: #311b92 !important; } + +.deep-purple-text.text-darken-4 { + color: #311b92 !important; } + +.deep-purple.accent-1 { + background-color: #b388ff !important; } + +.deep-purple-text.text-accent-1 { + color: #b388ff !important; } + +.deep-purple.accent-2 { + background-color: #7c4dff !important; } + +.deep-purple-text.text-accent-2 { + color: #7c4dff !important; } + +.deep-purple.accent-3 { + background-color: #651fff !important; } + +.deep-purple-text.text-accent-3 { + color: #651fff !important; } + +.deep-purple.accent-4 { + background-color: #6200ea !important; } + +.deep-purple-text.text-accent-4 { + color: #6200ea !important; } + +.indigo.lighten-5 { + background-color: #e8eaf6 !important; } + +.indigo-text.text-lighten-5 { + color: #e8eaf6 !important; } + +.indigo.lighten-4 { + background-color: #c5cae9 !important; } + +.indigo-text.text-lighten-4 { + color: #c5cae9 !important; } + +.indigo.lighten-3 { + background-color: #9fa8da !important; } + +.indigo-text.text-lighten-3 { + color: #9fa8da !important; } + +.indigo.lighten-2 { + background-color: #7986cb !important; } + +.indigo-text.text-lighten-2 { + color: #7986cb !important; } + +.indigo.lighten-1 { + background-color: #5c6bc0 !important; } + +.indigo-text.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.text-darken-1 { + color: #3949ab !important; } + +.indigo.darken-2 { + background-color: #303f9f !important; } + +.indigo-text.text-darken-2 { + color: #303f9f !important; } + +.indigo.darken-3 { + background-color: #283593 !important; } + +.indigo-text.text-darken-3 { + color: #283593 !important; } + +.indigo.darken-4 { + background-color: #1a237e !important; } + +.indigo-text.text-darken-4 { + color: #1a237e !important; } + +.indigo.accent-1 { + background-color: #8c9eff !important; } + +.indigo-text.text-accent-1 { + color: #8c9eff !important; } + +.indigo.accent-2 { + background-color: #536dfe !important; } + +.indigo-text.text-accent-2 { + color: #536dfe !important; } + +.indigo.accent-3 { + background-color: #3d5afe !important; } + +.indigo-text.text-accent-3 { + color: #3d5afe !important; } + +.indigo.accent-4 { + background-color: #304ffe !important; } + +.indigo-text.text-accent-4 { + color: #304ffe !important; } + +.blue.lighten-5 { + background-color: #E3F2FD !important; } + +.blue-text.text-lighten-5 { + color: #E3F2FD !important; } + +.blue.lighten-4 { + background-color: #BBDEFB !important; } + +.blue-text.text-lighten-4 { + color: #BBDEFB !important; } + +.blue.lighten-3 { + background-color: #90CAF9 !important; } + +.blue-text.text-lighten-3 { + color: #90CAF9 !important; } + +.blue.lighten-2 { + background-color: #64B5F6 !important; } + +.blue-text.text-lighten-2 { + color: #64B5F6 !important; } + +.blue.lighten-1 { + background-color: #42A5F5 !important; } + +.blue-text.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.text-darken-1 { + color: #1E88E5 !important; } + +.blue.darken-2 { + background-color: #1976D2 !important; } + +.blue-text.text-darken-2 { + color: #1976D2 !important; } + +.blue.darken-3 { + background-color: #1565C0 !important; } + +.blue-text.text-darken-3 { + color: #1565C0 !important; } + +.blue.darken-4 { + background-color: #0D47A1 !important; } + +.blue-text.text-darken-4 { + color: #0D47A1 !important; } + +.blue.accent-1 { + background-color: #82B1FF !important; } + +.blue-text.text-accent-1 { + color: #82B1FF !important; } + +.blue.accent-2 { + background-color: #448AFF !important; } + +.blue-text.text-accent-2 { + color: #448AFF !important; } + +.blue.accent-3 { + background-color: #2979FF !important; } + +.blue-text.text-accent-3 { + color: #2979FF !important; } + +.blue.accent-4 { + background-color: #2962FF !important; } + +.blue-text.text-accent-4 { + color: #2962FF !important; } + +.light-blue.lighten-5 { + background-color: #e1f5fe !important; } + +.light-blue-text.text-lighten-5 { + color: #e1f5fe !important; } + +.light-blue.lighten-4 { + background-color: #b3e5fc !important; } + +.light-blue-text.text-lighten-4 { + color: #b3e5fc !important; } + +.light-blue.lighten-3 { + background-color: #81d4fa !important; } + +.light-blue-text.text-lighten-3 { + color: #81d4fa !important; } + +.light-blue.lighten-2 { + background-color: #4fc3f7 !important; } + +.light-blue-text.text-lighten-2 { + color: #4fc3f7 !important; } + +.light-blue.lighten-1 { + background-color: #29b6f6 !important; } + +.light-blue-text.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.text-darken-1 { + color: #039be5 !important; } + +.light-blue.darken-2 { + background-color: #0288d1 !important; } + +.light-blue-text.text-darken-2 { + color: #0288d1 !important; } + +.light-blue.darken-3 { + background-color: #0277bd !important; } + +.light-blue-text.text-darken-3 { + color: #0277bd !important; } + +.light-blue.darken-4 { + background-color: #01579b !important; } + +.light-blue-text.text-darken-4 { + color: #01579b !important; } + +.light-blue.accent-1 { + background-color: #80d8ff !important; } + +.light-blue-text.text-accent-1 { + color: #80d8ff !important; } + +.light-blue.accent-2 { + background-color: #40c4ff !important; } + +.light-blue-text.text-accent-2 { + color: #40c4ff !important; } + +.light-blue.accent-3 { + background-color: #00b0ff !important; } + +.light-blue-text.text-accent-3 { + color: #00b0ff !important; } + +.light-blue.accent-4 { + background-color: #0091ea !important; } + +.light-blue-text.text-accent-4 { + color: #0091ea !important; } + +.cyan.lighten-5 { + background-color: #e0f7fa !important; } + +.cyan-text.text-lighten-5 { + color: #e0f7fa !important; } + +.cyan.lighten-4 { + background-color: #b2ebf2 !important; } + +.cyan-text.text-lighten-4 { + color: #b2ebf2 !important; } + +.cyan.lighten-3 { + background-color: #80deea !important; } + +.cyan-text.text-lighten-3 { + color: #80deea !important; } + +.cyan.lighten-2 { + background-color: #4dd0e1 !important; } + +.cyan-text.text-lighten-2 { + color: #4dd0e1 !important; } + +.cyan.lighten-1 { + background-color: #26c6da !important; } + +.cyan-text.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.text-darken-1 { + color: #00acc1 !important; } + +.cyan.darken-2 { + background-color: #0097a7 !important; } + +.cyan-text.text-darken-2 { + color: #0097a7 !important; } + +.cyan.darken-3 { + background-color: #00838f !important; } + +.cyan-text.text-darken-3 { + color: #00838f !important; } + +.cyan.darken-4 { + background-color: #006064 !important; } + +.cyan-text.text-darken-4 { + color: #006064 !important; } + +.cyan.accent-1 { + background-color: #84ffff !important; } + +.cyan-text.text-accent-1 { + color: #84ffff !important; } + +.cyan.accent-2 { + background-color: #18ffff !important; } + +.cyan-text.text-accent-2 { + color: #18ffff !important; } + +.cyan.accent-3 { + background-color: #00e5ff !important; } + +.cyan-text.text-accent-3 { + color: #00e5ff !important; } + +.cyan.accent-4 { + background-color: #00b8d4 !important; } + +.cyan-text.text-accent-4 { + color: #00b8d4 !important; } + +.teal.lighten-5 { + background-color: #e0f2f1 !important; } + +.teal-text.text-lighten-5 { + color: #e0f2f1 !important; } + +.teal.lighten-4 { + background-color: #b2dfdb !important; } + +.teal-text.text-lighten-4 { + color: #b2dfdb !important; } + +.teal.lighten-3 { + background-color: #80cbc4 !important; } + +.teal-text.text-lighten-3 { + color: #80cbc4 !important; } + +.teal.lighten-2 { + background-color: #4db6ac !important; } + +.teal-text.text-lighten-2 { + color: #4db6ac !important; } + +.teal.lighten-1 { + background-color: #26a69a !important; } + +.teal-text.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.text-darken-1 { + color: #00897b !important; } + +.teal.darken-2 { + background-color: #00796b !important; } + +.teal-text.text-darken-2 { + color: #00796b !important; } + +.teal.darken-3 { + background-color: #00695c !important; } + +.teal-text.text-darken-3 { + color: #00695c !important; } + +.teal.darken-4 { + background-color: #004d40 !important; } + +.teal-text.text-darken-4 { + color: #004d40 !important; } + +.teal.accent-1 { + background-color: #a7ffeb !important; } + +.teal-text.text-accent-1 { + color: #a7ffeb !important; } + +.teal.accent-2 { + background-color: #64ffda !important; } + +.teal-text.text-accent-2 { + color: #64ffda !important; } + +.teal.accent-3 { + background-color: #1de9b6 !important; } + +.teal-text.text-accent-3 { + color: #1de9b6 !important; } + +.teal.accent-4 { + background-color: #00bfa5 !important; } + +.teal-text.text-accent-4 { + color: #00bfa5 !important; } + +.green.lighten-5 { + background-color: #E8F5E9 !important; } + +.green-text.text-lighten-5 { + color: #E8F5E9 !important; } + +.green.lighten-4 { + background-color: #C8E6C9 !important; } + +.green-text.text-lighten-4 { + color: #C8E6C9 !important; } + +.green.lighten-3 { + background-color: #A5D6A7 !important; } + +.green-text.text-lighten-3 { + color: #A5D6A7 !important; } + +.green.lighten-2 { + background-color: #81C784 !important; } + +.green-text.text-lighten-2 { + color: #81C784 !important; } + +.green.lighten-1 { + background-color: #66BB6A !important; } + +.green-text.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.text-darken-1 { + color: #43A047 !important; } + +.green.darken-2 { + background-color: #388E3C !important; } + +.green-text.text-darken-2 { + color: #388E3C !important; } + +.green.darken-3 { + background-color: #2E7D32 !important; } + +.green-text.text-darken-3 { + color: #2E7D32 !important; } + +.green.darken-4 { + background-color: #1B5E20 !important; } + +.green-text.text-darken-4 { + color: #1B5E20 !important; } + +.green.accent-1 { + background-color: #B9F6CA !important; } + +.green-text.text-accent-1 { + color: #B9F6CA !important; } + +.green.accent-2 { + background-color: #69F0AE !important; } + +.green-text.text-accent-2 { + color: #69F0AE !important; } + +.green.accent-3 { + background-color: #00E676 !important; } + +.green-text.text-accent-3 { + color: #00E676 !important; } + +.green.accent-4 { + background-color: #00C853 !important; } + +.green-text.text-accent-4 { + color: #00C853 !important; } + +.light-green.lighten-5 { + background-color: #f1f8e9 !important; } + +.light-green-text.text-lighten-5 { + color: #f1f8e9 !important; } + +.light-green.lighten-4 { + background-color: #dcedc8 !important; } + +.light-green-text.text-lighten-4 { + color: #dcedc8 !important; } + +.light-green.lighten-3 { + background-color: #c5e1a5 !important; } + +.light-green-text.text-lighten-3 { + color: #c5e1a5 !important; } + +.light-green.lighten-2 { + background-color: #aed581 !important; } + +.light-green-text.text-lighten-2 { + color: #aed581 !important; } + +.light-green.lighten-1 { + background-color: #9ccc65 !important; } + +.light-green-text.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.text-darken-1 { + color: #7cb342 !important; } + +.light-green.darken-2 { + background-color: #689f38 !important; } + +.light-green-text.text-darken-2 { + color: #689f38 !important; } + +.light-green.darken-3 { + background-color: #558b2f !important; } + +.light-green-text.text-darken-3 { + color: #558b2f !important; } + +.light-green.darken-4 { + background-color: #33691e !important; } + +.light-green-text.text-darken-4 { + color: #33691e !important; } + +.light-green.accent-1 { + background-color: #ccff90 !important; } + +.light-green-text.text-accent-1 { + color: #ccff90 !important; } + +.light-green.accent-2 { + background-color: #b2ff59 !important; } + +.light-green-text.text-accent-2 { + color: #b2ff59 !important; } + +.light-green.accent-3 { + background-color: #76ff03 !important; } + +.light-green-text.text-accent-3 { + color: #76ff03 !important; } + +.light-green.accent-4 { + background-color: #64dd17 !important; } + +.light-green-text.text-accent-4 { + color: #64dd17 !important; } + +.lime.lighten-5 { + background-color: #f9fbe7 !important; } + +.lime-text.text-lighten-5 { + color: #f9fbe7 !important; } + +.lime.lighten-4 { + background-color: #f0f4c3 !important; } + +.lime-text.text-lighten-4 { + color: #f0f4c3 !important; } + +.lime.lighten-3 { + background-color: #e6ee9c !important; } + +.lime-text.text-lighten-3 { + color: #e6ee9c !important; } + +.lime.lighten-2 { + background-color: #dce775 !important; } + +.lime-text.text-lighten-2 { + color: #dce775 !important; } + +.lime.lighten-1 { + background-color: #d4e157 !important; } + +.lime-text.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.text-darken-1 { + color: #c0ca33 !important; } + +.lime.darken-2 { + background-color: #afb42b !important; } + +.lime-text.text-darken-2 { + color: #afb42b !important; } + +.lime.darken-3 { + background-color: #9e9d24 !important; } + +.lime-text.text-darken-3 { + color: #9e9d24 !important; } + +.lime.darken-4 { + background-color: #827717 !important; } + +.lime-text.text-darken-4 { + color: #827717 !important; } + +.lime.accent-1 { + background-color: #f4ff81 !important; } + +.lime-text.text-accent-1 { + color: #f4ff81 !important; } + +.lime.accent-2 { + background-color: #eeff41 !important; } + +.lime-text.text-accent-2 { + color: #eeff41 !important; } + +.lime.accent-3 { + background-color: #c6ff00 !important; } + +.lime-text.text-accent-3 { + color: #c6ff00 !important; } + +.lime.accent-4 { + background-color: #aeea00 !important; } + +.lime-text.text-accent-4 { + color: #aeea00 !important; } + +.yellow.lighten-5 { + background-color: #fffde7 !important; } + +.yellow-text.text-lighten-5 { + color: #fffde7 !important; } + +.yellow.lighten-4 { + background-color: #fff9c4 !important; } + +.yellow-text.text-lighten-4 { + color: #fff9c4 !important; } + +.yellow.lighten-3 { + background-color: #fff59d !important; } + +.yellow-text.text-lighten-3 { + color: #fff59d !important; } + +.yellow.lighten-2 { + background-color: #fff176 !important; } + +.yellow-text.text-lighten-2 { + color: #fff176 !important; } + +.yellow.lighten-1 { + background-color: #ffee58 !important; } + +.yellow-text.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.text-darken-1 { + color: #fdd835 !important; } + +.yellow.darken-2 { + background-color: #fbc02d !important; } + +.yellow-text.text-darken-2 { + color: #fbc02d !important; } + +.yellow.darken-3 { + background-color: #f9a825 !important; } + +.yellow-text.text-darken-3 { + color: #f9a825 !important; } + +.yellow.darken-4 { + background-color: #f57f17 !important; } + +.yellow-text.text-darken-4 { + color: #f57f17 !important; } + +.yellow.accent-1 { + background-color: #ffff8d !important; } + +.yellow-text.text-accent-1 { + color: #ffff8d !important; } + +.yellow.accent-2 { + background-color: #ffff00 !important; } + +.yellow-text.text-accent-2 { + color: #ffff00 !important; } + +.yellow.accent-3 { + background-color: #ffea00 !important; } + +.yellow-text.text-accent-3 { + color: #ffea00 !important; } + +.yellow.accent-4 { + background-color: #ffd600 !important; } + +.yellow-text.text-accent-4 { + color: #ffd600 !important; } + +.amber.lighten-5 { + background-color: #fff8e1 !important; } + +.amber-text.text-lighten-5 { + color: #fff8e1 !important; } + +.amber.lighten-4 { + background-color: #ffecb3 !important; } + +.amber-text.text-lighten-4 { + color: #ffecb3 !important; } + +.amber.lighten-3 { + background-color: #ffe082 !important; } + +.amber-text.text-lighten-3 { + color: #ffe082 !important; } + +.amber.lighten-2 { + background-color: #ffd54f !important; } + +.amber-text.text-lighten-2 { + color: #ffd54f !important; } + +.amber.lighten-1 { + background-color: #ffca28 !important; } + +.amber-text.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.text-darken-1 { + color: #ffb300 !important; } + +.amber.darken-2 { + background-color: #ffa000 !important; } + +.amber-text.text-darken-2 { + color: #ffa000 !important; } + +.amber.darken-3 { + background-color: #ff8f00 !important; } + +.amber-text.text-darken-3 { + color: #ff8f00 !important; } + +.amber.darken-4 { + background-color: #ff6f00 !important; } + +.amber-text.text-darken-4 { + color: #ff6f00 !important; } + +.amber.accent-1 { + background-color: #ffe57f !important; } + +.amber-text.text-accent-1 { + color: #ffe57f !important; } + +.amber.accent-2 { + background-color: #ffd740 !important; } + +.amber-text.text-accent-2 { + color: #ffd740 !important; } + +.amber.accent-3 { + background-color: #ffc400 !important; } + +.amber-text.text-accent-3 { + color: #ffc400 !important; } + +.amber.accent-4 { + background-color: #ffab00 !important; } + +.amber-text.text-accent-4 { + color: #ffab00 !important; } + +.orange.lighten-5 { + background-color: #fff3e0 !important; } + +.orange-text.text-lighten-5 { + color: #fff3e0 !important; } + +.orange.lighten-4 { + background-color: #ffe0b2 !important; } + +.orange-text.text-lighten-4 { + color: #ffe0b2 !important; } + +.orange.lighten-3 { + background-color: #ffcc80 !important; } + +.orange-text.text-lighten-3 { + color: #ffcc80 !important; } + +.orange.lighten-2 { + background-color: #ffb74d !important; } + +.orange-text.text-lighten-2 { + color: #ffb74d !important; } + +.orange.lighten-1 { + background-color: #ffa726 !important; } + +.orange-text.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.text-darken-1 { + color: #fb8c00 !important; } + +.orange.darken-2 { + background-color: #f57c00 !important; } + +.orange-text.text-darken-2 { + color: #f57c00 !important; } + +.orange.darken-3 { + background-color: #ef6c00 !important; } + +.orange-text.text-darken-3 { + color: #ef6c00 !important; } + +.orange.darken-4 { + background-color: #e65100 !important; } + +.orange-text.text-darken-4 { + color: #e65100 !important; } + +.orange.accent-1 { + background-color: #ffd180 !important; } + +.orange-text.text-accent-1 { + color: #ffd180 !important; } + +.orange.accent-2 { + background-color: #ffab40 !important; } + +.orange-text.text-accent-2 { + color: #ffab40 !important; } + +.orange.accent-3 { + background-color: #ff9100 !important; } + +.orange-text.text-accent-3 { + color: #ff9100 !important; } + +.orange.accent-4 { + background-color: #ff6d00 !important; } + +.orange-text.text-accent-4 { + color: #ff6d00 !important; } + +.deep-orange.lighten-5 { + background-color: #fbe9e7 !important; } + +.deep-orange-text.text-lighten-5 { + color: #fbe9e7 !important; } + +.deep-orange.lighten-4 { + background-color: #ffccbc !important; } + +.deep-orange-text.text-lighten-4 { + color: #ffccbc !important; } + +.deep-orange.lighten-3 { + background-color: #ffab91 !important; } + +.deep-orange-text.text-lighten-3 { + color: #ffab91 !important; } + +.deep-orange.lighten-2 { + background-color: #ff8a65 !important; } + +.deep-orange-text.text-lighten-2 { + color: #ff8a65 !important; } + +.deep-orange.lighten-1 { + background-color: #ff7043 !important; } + +.deep-orange-text.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.text-darken-1 { + color: #f4511e !important; } + +.deep-orange.darken-2 { + background-color: #e64a19 !important; } + +.deep-orange-text.text-darken-2 { + color: #e64a19 !important; } + +.deep-orange.darken-3 { + background-color: #d84315 !important; } + +.deep-orange-text.text-darken-3 { + color: #d84315 !important; } + +.deep-orange.darken-4 { + background-color: #bf360c !important; } + +.deep-orange-text.text-darken-4 { + color: #bf360c !important; } + +.deep-orange.accent-1 { + background-color: #ff9e80 !important; } + +.deep-orange-text.text-accent-1 { + color: #ff9e80 !important; } + +.deep-orange.accent-2 { + background-color: #ff6e40 !important; } + +.deep-orange-text.text-accent-2 { + color: #ff6e40 !important; } + +.deep-orange.accent-3 { + background-color: #ff3d00 !important; } + +.deep-orange-text.text-accent-3 { + color: #ff3d00 !important; } + +.deep-orange.accent-4 { + background-color: #dd2c00 !important; } + +.deep-orange-text.text-accent-4 { + color: #dd2c00 !important; } + +.brown.lighten-5 { + background-color: #efebe9 !important; } + +.brown-text.text-lighten-5 { + color: #efebe9 !important; } + +.brown.lighten-4 { + background-color: #d7ccc8 !important; } + +.brown-text.text-lighten-4 { + color: #d7ccc8 !important; } + +.brown.lighten-3 { + background-color: #bcaaa4 !important; } + +.brown-text.text-lighten-3 { + color: #bcaaa4 !important; } + +.brown.lighten-2 { + background-color: #a1887f !important; } + +.brown-text.text-lighten-2 { + color: #a1887f !important; } + +.brown.lighten-1 { + background-color: #8d6e63 !important; } + +.brown-text.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.text-darken-1 { + color: #6d4c41 !important; } + +.brown.darken-2 { + background-color: #5d4037 !important; } + +.brown-text.text-darken-2 { + color: #5d4037 !important; } + +.brown.darken-3 { + background-color: #4e342e !important; } + +.brown-text.text-darken-3 { + color: #4e342e !important; } + +.brown.darken-4 { + background-color: #3e2723 !important; } + +.brown-text.text-darken-4 { + color: #3e2723 !important; } + +.blue-grey.lighten-5 { + background-color: #eceff1 !important; } + +.blue-grey-text.text-lighten-5 { + color: #eceff1 !important; } + +.blue-grey.lighten-4 { + background-color: #cfd8dc !important; } + +.blue-grey-text.text-lighten-4 { + color: #cfd8dc !important; } + +.blue-grey.lighten-3 { + background-color: #b0bec5 !important; } + +.blue-grey-text.text-lighten-3 { + color: #b0bec5 !important; } + +.blue-grey.lighten-2 { + background-color: #90a4ae !important; } + +.blue-grey-text.text-lighten-2 { + color: #90a4ae !important; } + +.blue-grey.lighten-1 { + background-color: #78909c !important; } + +.blue-grey-text.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.text-darken-1 { + color: #546e7a !important; } + +.blue-grey.darken-2 { + background-color: #455a64 !important; } + +.blue-grey-text.text-darken-2 { + color: #455a64 !important; } + +.blue-grey.darken-3 { + background-color: #37474f !important; } + +.blue-grey-text.text-darken-3 { + color: #37474f !important; } + +.blue-grey.darken-4 { + background-color: #263238 !important; } + +.blue-grey-text.text-darken-4 { + color: #263238 !important; } + +.grey.lighten-5 { + background-color: #fafafa !important; } + +.grey-text.text-lighten-5 { + color: #fafafa !important; } + +.grey.lighten-4 { + background-color: #f5f5f5 !important; } + +.grey-text.text-lighten-4 { + color: #f5f5f5 !important; } + +.grey.lighten-3 { + background-color: #eeeeee !important; } + +.grey-text.text-lighten-3 { + color: #eeeeee !important; } + +.grey.lighten-2 { + background-color: #e0e0e0 !important; } + +.grey-text.text-lighten-2 { + color: #e0e0e0 !important; } + +.grey.lighten-1 { + background-color: #bdbdbd !important; } + +.grey-text.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.text-darken-1 { + color: #757575 !important; } + +.grey.darken-2 { + background-color: #616161 !important; } + +.grey-text.text-darken-2 { + color: #616161 !important; } + +.grey.darken-3 { + background-color: #424242 !important; } + +.grey-text.text-darken-3 { + color: #424242 !important; } + +.grey.darken-4 { + background-color: #212121 !important; } + +.grey-text.text-darken-4 { + color: #212121 !important; } + +.shades.black { + background-color: #000000 !important; } + +.shades-text.text-black { + color: #000000 !important; } + +.shades.white { + background-color: #FFFFFF !important; } + +.shades-text.text-white { + color: #FFFFFF !important; } + +.shades.transparent { + background-color: transparent !important; } + +.shades-text.text-transparent { + color: transparent !important; } + +.black { + background-color: #000000 !important; } + +.black-text { + color: #000000 !important; } + +.white { + background-color: #FFFFFF !important; } + +.white-text { + color: #FFFFFF !important; } + +.transparent { + background-color: transparent !important; } + +.transparent-text { + color: transparent !important; } + +/*** Colors ***/ +/*** Badges ***/ +/*** Buttons ***/ +/*** Cards ***/ +/*** Collapsible ***/ +/*** Dropdown ***/ +/*** Fonts ***/ +/*** Forms ***/ +/*** Global ***/ +/*** Navbar ***/ +/*** SideNav ***/ +/*** Photo Slider ***/ +/*** Tabs ***/ +/*** Tables ***/ +/*** Toasts ***/ +/*** Typography ***/ +/*** Collections ***/ +/* Progress Bar */ +/*! normalize.css v3.0.2 | 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, menu, 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-color: 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. + */ +/* 1 */ +html input[type="button"], 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; } + +html { + box-sizing: border-box; } + +*, *:before, *:after { + box-sizing: inherit; } + +ul { + list-style-type: none; } + +a { + color: #039be5; + text-decoration: none; + -webkit-tap-highlight-color: transparent; } + +.valign-wrapper { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; } + .valign-wrapper .valign { + display: block; } + +ul { + padding: 0; } + ul li { + list-style-type: none; } + +.clearfix { + clear: both; } + +.z-depth-0 { + box-shadow: none !important; } + +.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav { + 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 { + 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 { + 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 { + 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, .modal { + 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 { + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); } + +.hoverable:hover { + transition: box-shadow .25s; + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } + +.divider { + height: 1px; + overflow: hidden; + background-color: #e0e0e0; } + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid #ee6e73; } + +i { + line-height: inherit; } + i.left { + float: left; + margin-right: 15px; } + i.right { + float: right; + margin-left: 15px; } + i.tiny { + font-size: 1rem; } + i.small { + font-size: 2rem; } + i.medium { + font-size: 4rem; } + i.large { + font-size: 6rem; } + +img.responsive-img, video.responsive-video { + max-width: 100%; + height: auto; } + +.pagination li { + float: left; + font-size: 1.2rem; + padding: 0 10px; + line-height: 30px; + border-radius: 2px; + text-align: center; } + .pagination li a { + color: #444; } + .pagination li.active a { + color: #fff; } + .pagination li.active { + background-color: #ee6e73; } + .pagination li.disabled a { + cursor: default; + color: #999; } + .pagination li i { + font-size: 2rem; } +.pagination li.pages ul li { + display: inline-block; + float: none; } + +@media only screen and (max-width : 992px) { + .pagination { + width: 100%; } + .pagination li.prev, .pagination li.next { + width: 10%; } + .pagination li.pages { + width: 80%; + overflow: hidden; + white-space: nowrap; } } + +.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; + left: 50%; + bottom: 0; + min-width: 100%; + min-height: 100%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + transform: translateX(-50%); } + +.pin-top, .pin-bottom { + position: relative; } + +.pinned { + position: fixed !important; } + +/********************* + Transition Classes +**********************/ +ul.staggered-list li { + opacity: 0; } + +.fade-in { + opacity: 0; + transform-origin: 0 50%; } + +/********************* + Media Query Classes +**********************/ +@media only screen and (max-width : 600px) { + .hide-on-small-only, .tabs-wrapper, .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 : 601px) { + .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 : 993px) { + .hide-on-large-only { + display: none !important; } } + +@media only screen and (min-width : 993px) { + .show-on-large { + display: initial !important; } } + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .show-on-medium { + display: initial !important; } } + +@media only screen and (max-width : 600px) { + .show-on-small { + display: initial !important; } } + +@media only screen and (min-width : 601px) { + .show-on-medium-and-up { + display: initial !important; } } + +@media only screen and (max-width : 992px) { + .show-on-medium-and-down { + display: initial !important; } } + +@media only screen and (max-width : 600px) { + .center-on-small-only { + text-align: center; } } + +footer.page-footer { + margin-top: 20px; + padding-top: 20px; + background-color: #ee6e73; } + footer.page-footer .footer-copyright { + overflow: hidden; + height: 50px; + line-height: 50px; + color: rgba(255, 255, 255, 0.8); + background-color: rgba(51, 51, 51, 0.08); } + +table, th, td { + border: none; } + +table { + width: 100%; + display: table; } + table.bordered > thead > tr, table.bordered > tbody > tr { + border-bottom: 1px solid #d0d0d0; } + table.striped > tbody > tr:nth-child(odd) { + background-color: #f2f2f2; } + table.striped > tbody > tr > td { + border-radius: 0px; } + table.hoverable > tbody > tr { + -webkit-transition: background-color .25s ease; + -moz-transition: background-color .25s ease; + -o-transition: background-color .25s ease; + -ms-transition: background-color .25s ease; + transition: background-color .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 #d0d0d0; } + +td, th { + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; } + +@media only screen and (max-width : 992px) { + table.responsive-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: block; + position: relative; + /* sort out borders */ } + table.responsive-table th, table.responsive-table td { + margin: 0; + vertical-align: top; } + table.responsive-table th { + text-align: left; } + table.responsive-table thead { + display: block; + float: left; } + table.responsive-table thead tr { + display: block; + padding: 0 10px 0 0; } + table.responsive-table thead tr th::before { + content: "\00a0"; } + table.responsive-table tbody { + display: block; + width: auto; + position: relative; + overflow-x: auto; + white-space: nowrap; } + table.responsive-table tbody tr { + display: inline-block; + vertical-align: top; } + table.responsive-table th { + display: block; + text-align: right; } + table.responsive-table td { + display: block; + min-height: 1.25em; + text-align: left; } + table.responsive-table tr { + padding: 0 10px; } + table.responsive-table thead { + border: 0; + border-right: 1px solid #d0d0d0; } + table.responsive-table.bordered th { + border-bottom: 0; + border-left: 0; } + table.responsive-table.bordered td { + border-left: 0; + border-right: 0; + border-bottom: 0; } + table.responsive-table.bordered tr { + border: 0; } + table.responsive-table.bordered tbody tr { + border-right: 1px solid #d0d0d0; } } + +.collection { + margin: 0.5rem 0 1rem 0; + border: 1px solid #e0e0e0; + border-radius: 2px; + overflow: hidden; + position: relative; } + .collection .collection-item { + background-color: #fff; + line-height: 1.5rem; + padding: 10px 20px; + margin: 0; + border-bottom: 1px solid #e0e0e0; } + .collection .collection-item.avatar { + min-height: 84px; + padding-left: 72px; + position: relative; } + .collection .collection-item.avatar .circle { + position: absolute; + width: 42px; + height: 42px; + overflow: hidden; + left: 15px; + display: inline-block; + vertical-align: middle; } + .collection .collection-item.avatar i.circle { + font-size: 18px; + line-height: 42px; + color: #fff; + background-color: #999; + text-align: center; } + .collection .collection-item.avatar .title { + font-size: 16px; } + .collection .collection-item.avatar p { + margin: 0; } + .collection .collection-item.avatar .secondary-content { + position: absolute; + top: 16px; + right: 16px; } + .collection .collection-item:last-child { + border-bottom: none; } + .collection .collection-item.active { + background-color: #26a69a; + color: #eafaf9; } + .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; + color: #26a69a; } + .collection a.collection-item:not(.active):hover { + background-color: #ddd; } + .collection.with-header .collection-header { + background-color: #fff; + border-bottom: 1px solid #e0e0e0; + padding: 10px 20px; } + .collection.with-header .collection-item { + padding-left: 30px; } + .collection.with-header .collection-item.avatar { + padding-left: 72px; } + +.secondary-content { + float: right; + color: #26a69a; } + +span.badge { + min-width: 3rem; + padding: 0 6px; + text-align: center; + font-size: 1rem; + line-height: inherit; + color: #757575; + position: absolute; + right: 15px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + span.badge.new { + font-weight: 300; + font-size: 0.8rem; + color: #fff; + background-color: #26a69a; + border-radius: 2px; } + span.badge.new:after { + content: " new"; } + +.video-container { + position: relative; + padding-bottom: 56.25%; + padding-top: 30px; + height: 0; + overflow: hidden; } + .video-container.no-controls { + padding-top: 0; } + .video-container iframe, .video-container object, .video-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +.progress { + position: relative; + height: 4px; + display: block; + width: 100%; + background-color: #acece6; + border-radius: 2px; + margin: 0.5rem 0 1rem 0; + overflow: hidden; } + .progress .determinate { + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + background-color: #26a69a; + -webkit-transition: width .3s linear; + -moz-transition: width .3s linear; + -o-transition: width .3s linear; + -ms-transition: width .3s linear; + transition: width .3s linear; } + .progress .indeterminate { + background-color: #26a69a; } + .progress .indeterminate:before { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -moz-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -ms-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -o-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } + .progress .indeterminate:after { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -moz-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -ms-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -o-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation-delay: 1.15s; + -moz-animation-delay: 1.15s; + -ms-animation-delay: 1.15s; + -o-animation-delay: 1.15s; + animation-delay: 1.15s; } + +@-webkit-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + + 60% { + left: 100%; + right: -90%; } + + 100% { + left: 100%; + right: -90%; } } + +@-moz-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + + 60% { + left: 100%; + right: -90%; } + + 100% { + left: 100%; + right: -90%; } } + +@keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + + 60% { + left: 100%; + right: -90%; } + + 100% { + left: 100%; + right: -90%; } } + +@-webkit-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + + 60% { + left: 107%; + right: -8%; } + + 100% { + left: 107%; + right: -8%; } } + +@-moz-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + + 60% { + left: 107%; + right: -8%; } + + 100% { + left: 107%; + right: -8%; } } + +@keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + + 60% { + left: 107%; + right: -8%; } + + 100% { + left: 107%; + right: -8%; } } + +/******************* + Utility Classes +*******************/ +.hide { + display: none !important; } + +.left-align { + text-align: left; } + +.right-align { + text-align: right; } + +.center, .center-align { + text-align: center; } + +.left { + float: left !important; } + +.right { + float: right !important; } + +.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; } + +.circle { + border-radius: 50%; } + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; } + +.truncate { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +.no-padding { + padding: 0 !important; } + +@font-face { + font-family: "Material-Design-Icons"; + src: url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"), url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"), url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"), url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"), url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg"); + font-weight: normal; + font-style: normal; } + +[class^="mdi-"], [class*="mdi-"] { + speak: none; + display: inline-block; + font-family: "Material-Design-Icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-rendering: auto; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); } + [class^="mdi-"]:before, [class*="mdi-"]:before { + display: inline-block; + speak: none; + text-decoration: inherit; } + [class^="mdi-"].pull-left, [class*="mdi-"].pull-left { + margin-right: .3em; } + [class^="mdi-"].pull-right, [class*="mdi-"].pull-right { + margin-left: .3em; } + [class^="mdi-"].mdi-lg:before, [class^="mdi-"].mdi-lg:after, [class*="mdi-"].mdi-lg:before, [class*="mdi-"].mdi-lg:after { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; } + [class^="mdi-"].mdi-2x:before, [class^="mdi-"].mdi-2x:after, [class*="mdi-"].mdi-2x:before, [class*="mdi-"].mdi-2x:after { + font-size: 2em; } + [class^="mdi-"].mdi-3x:before, [class^="mdi-"].mdi-3x:after, [class*="mdi-"].mdi-3x:before, [class*="mdi-"].mdi-3x:after { + font-size: 3em; } + [class^="mdi-"].mdi-4x:before, [class^="mdi-"].mdi-4x:after, [class*="mdi-"].mdi-4x:before, [class*="mdi-"].mdi-4x:after { + font-size: 4em; } + [class^="mdi-"].mdi-5x:before, [class^="mdi-"].mdi-5x:after, [class*="mdi-"].mdi-5x:before, [class*="mdi-"].mdi-5x:after { + font-size: 5em; } + +[class^="mdi-device-signal-cellular-"]:after, [class^="mdi-device-battery-"]:after, [class^="mdi-device-battery-charging-"]:after, [class^="mdi-device-signal-cellular-connected-no-internet-"]:after, [class^="mdi-device-signal-wifi-"]:after, [class^="mdi-device-signal-wifi-statusbar-not-connected"]:after, .mdi-device-network-wifi:after { + opacity: .3; + position: absolute; + left: 0; + top: 0; + z-index: 1; + display: inline-block; + speak: none; + text-decoration: inherit; } + +[class^="mdi-device-signal-cellular-"]:after { + content: "\e758"; } + +[class^="mdi-device-battery-"]:after { + content: "\e735"; } + +[class^="mdi-device-battery-charging-"]:after { + content: "\e733"; } + +[class^="mdi-device-signal-cellular-connected-no-internet-"]:after { + content: "\e75d"; } + +[class^="mdi-device-signal-wifi-"]:after, .mdi-device-network-wifi:after { + content: "\e765"; } + +[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after { + content: "\e8f7"; } + +.mdi-device-signal-cellular-off:after, .mdi-device-signal-cellular-null:after, .mdi-device-signal-cellular-no-sim:after, .mdi-device-signal-wifi-off:after, .mdi-device-signal-wifi-4-bar:after, .mdi-device-signal-cellular-4-bar:after, .mdi-device-battery-alert:after, .mdi-device-signal-cellular-connected-no-internet-4-bar:after, .mdi-device-battery-std:after, .mdi-device-battery-full .mdi-device-battery-unknown:after { + content: ""; } + +.mdi-fw { + width: 1.28571429em; + text-align: center; } + +.mdi-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; } + +.mdi-ul > li { + position: relative; } + +.mdi-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; } + +.mdi-li.mdi-lg { + left: -1.85714286em; } + +.mdi-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; } + +.mdi-spin { + -webkit-animation: mdi-spin 2s infinite linear; + animation: mdi-spin 2s infinite linear; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +.mdi-pulse { + -webkit-animation: mdi-spin 1s steps(8) infinite; + animation: mdi-spin 1s steps(8) infinite; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +@-webkit-keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } + +@keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } + +.mdi-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } + +.mdi-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } + +.mdi-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } + +.mdi-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.mdi-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + +:root .mdi-rotate-90, :root .mdi-rotate-180, :root .mdi-rotate-270, :root .mdi-flip-horizontal, :root .mdi-flip-vertical { + filter: none; } + +.mdi-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; } + +.mdi-stack-1x, .mdi-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; } + +.mdi-stack-1x { + line-height: inherit; } + +.mdi-stack-2x { + font-size: 2em; } + +.mdi-inverse { + color: #ffffff; } + +/* Start Icons */ +.mdi-action-3d-rotation:before { + content: "\e600"; } + +.mdi-action-accessibility:before { + content: "\e601"; } + +.mdi-action-account-balance-wallet:before { + content: "\e602"; } + +.mdi-action-account-balance: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-add:before { + content: "\e608"; } + +.mdi-action-alarm-off:before { + content: "\e609"; } + +.mdi-action-alarm-on:before { + content: "\e60a"; } + +.mdi-action-alarm: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-ind:before { + content: "\e610"; } + +.mdi-action-assignment-late:before { + content: "\e611"; } + +.mdi-action-assignment-return:before { + content: "\e612"; } + +.mdi-action-assignment-returned:before { + content: "\e613"; } + +.mdi-action-assignment-turned-in:before { + content: "\e614"; } + +.mdi-action-assignment:before { + content: "\e615"; } + +.mdi-action-autorenew:before { + content: "\e616"; } + +.mdi-action-backup:before { + content: "\e617"; } + +.mdi-action-book:before { + content: "\e618"; } + +.mdi-action-bookmark-outline:before { + content: "\e619"; } + +.mdi-action-bookmark:before { + content: "\e61a"; } + +.mdi-action-bug-report:before { + content: "\e61b"; } + +.mdi-action-cached:before { + content: "\e61c"; } + +.mdi-action-check-circle:before { + content: "\e61d"; } + +.mdi-action-class:before { + content: "\e61e"; } + +.mdi-action-credit-card:before { + content: "\e61f"; } + +.mdi-action-dashboard:before { + content: "\e620"; } + +.mdi-action-delete:before { + content: "\e621"; } + +.mdi-action-description:before { + content: "\e622"; } + +.mdi-action-dns:before { + content: "\e623"; } + +.mdi-action-done-all:before { + content: "\e624"; } + +.mdi-action-done:before { + content: "\e625"; } + +.mdi-action-event:before { + content: "\e626"; } + +.mdi-action-exit-to-app:before { + content: "\e627"; } + +.mdi-action-explore:before { + content: "\e628"; } + +.mdi-action-extension:before { + content: "\e629"; } + +.mdi-action-face-unlock:before { + content: "\e62a"; } + +.mdi-action-favorite-outline:before { + content: "\e62b"; } + +.mdi-action-favorite:before { + content: "\e62c"; } + +.mdi-action-find-in-page:before { + content: "\e62d"; } + +.mdi-action-find-replace:before { + content: "\e62e"; } + +.mdi-action-flip-to-back:before { + content: "\e62f"; } + +.mdi-action-flip-to-front:before { + content: "\e630"; } + +.mdi-action-get-app:before { + content: "\e631"; } + +.mdi-action-grade:before { + content: "\e632"; } + +.mdi-action-group-work:before { + content: "\e633"; } + +.mdi-action-help:before { + content: "\e634"; } + +.mdi-action-highlight-remove:before { + content: "\e635"; } + +.mdi-action-history:before { + content: "\e636"; } + +.mdi-action-home:before { + content: "\e637"; } + +.mdi-action-https:before { + content: "\e638"; } + +.mdi-action-info-outline:before { + content: "\e639"; } + +.mdi-action-info:before { + content: "\e63a"; } + +.mdi-action-input:before { + content: "\e63b"; } + +.mdi-action-invert-colors:before { + content: "\e63c"; } + +.mdi-action-label-outline:before { + content: "\e63d"; } + +.mdi-action-label:before { + content: "\e63e"; } + +.mdi-action-language:before { + content: "\e63f"; } + +.mdi-action-launch:before { + content: "\e640"; } + +.mdi-action-list:before { + content: "\e641"; } + +.mdi-action-lock-open:before { + content: "\e642"; } + +.mdi-action-lock-outline:before { + content: "\e643"; } + +.mdi-action-lock:before { + content: "\e644"; } + +.mdi-action-loyalty:before { + content: "\e645"; } + +.mdi-action-markunread-mailbox:before { + content: "\e646"; } + +.mdi-action-note-add:before { + content: "\e647"; } + +.mdi-action-open-in-browser:before { + content: "\e648"; } + +.mdi-action-open-in-new:before { + content: "\e649"; } + +.mdi-action-open-with:before { + content: "\e64a"; } + +.mdi-action-pageview:before { + content: "\e64b"; } + +.mdi-action-payment:before { + content: "\e64c"; } + +.mdi-action-perm-camera-mic:before { + content: "\e64d"; } + +.mdi-action-perm-contact-cal:before { + content: "\e64e"; } + +.mdi-action-perm-data-setting:before { + content: "\e64f"; } + +.mdi-action-perm-device-info:before { + content: "\e650"; } + +.mdi-action-perm-identity:before { + content: "\e651"; } + +.mdi-action-perm-media:before { + content: "\e652"; } + +.mdi-action-perm-phone-msg:before { + content: "\e653"; } + +.mdi-action-perm-scan-wifi:before { + content: "\e654"; } + +.mdi-action-picture-in-picture:before { + content: "\e655"; } + +.mdi-action-polymer:before { + content: "\e656"; } + +.mdi-action-print:before { + content: "\e657"; } + +.mdi-action-query-builder:before { + content: "\e658"; } + +.mdi-action-question-answer:before { + content: "\e659"; } + +.mdi-action-receipt:before { + content: "\e65a"; } + +.mdi-action-redeem:before { + content: "\e65b"; } + +.mdi-action-reorder:before { + content: "\e65c"; } + +.mdi-action-report-problem:before { + content: "\e65d"; } + +.mdi-action-restore:before { + content: "\e65e"; } + +.mdi-action-room:before { + content: "\e65f"; } + +.mdi-action-schedule:before { + content: "\e660"; } + +.mdi-action-search:before { + content: "\e661"; } + +.mdi-action-settings-applications:before { + content: "\e662"; } + +.mdi-action-settings-backup-restore:before { + content: "\e663"; } + +.mdi-action-settings-bluetooth:before { + content: "\e664"; } + +.mdi-action-settings-cell:before { + content: "\e665"; } + +.mdi-action-settings-display:before { + content: "\e666"; } + +.mdi-action-settings-ethernet:before { + content: "\e667"; } + +.mdi-action-settings-input-antenna:before { + content: "\e668"; } + +.mdi-action-settings-input-component:before { + content: "\e669"; } + +.mdi-action-settings-input-composite:before { + content: "\e66a"; } + +.mdi-action-settings-input-hdmi:before { + content: "\e66b"; } + +.mdi-action-settings-input-svideo:before { + content: "\e66c"; } + +.mdi-action-settings-overscan:before { + content: "\e66d"; } + +.mdi-action-settings-phone:before { + content: "\e66e"; } + +.mdi-action-settings-power:before { + content: "\e66f"; } + +.mdi-action-settings-remote:before { + content: "\e670"; } + +.mdi-action-settings-voice:before { + content: "\e671"; } + +.mdi-action-settings:before { + content: "\e672"; } + +.mdi-action-shop-two:before { + content: "\e673"; } + +.mdi-action-shop:before { + content: "\e674"; } + +.mdi-action-shopping-basket:before { + content: "\e675"; } + +.mdi-action-shopping-cart:before { + content: "\e676"; } + +.mdi-action-speaker-notes:before { + content: "\e677"; } + +.mdi-action-spellcheck:before { + content: "\e678"; } + +.mdi-action-star-rate:before { + content: "\e679"; } + +.mdi-action-stars:before { + content: "\e67a"; } + +.mdi-action-store:before { + content: "\e67b"; } + +.mdi-action-subject:before { + content: "\e67c"; } + +.mdi-action-supervisor-account:before { + content: "\e67d"; } + +.mdi-action-swap-horiz:before { + content: "\e67e"; } + +.mdi-action-swap-vert-circle:before { + content: "\e67f"; } + +.mdi-action-swap-vert:before { + content: "\e680"; } + +.mdi-action-system-update-tv:before { + content: "\e681"; } + +.mdi-action-tab-unselected:before { + content: "\e682"; } + +.mdi-action-tab:before { + content: "\e683"; } + +.mdi-action-theaters:before { + content: "\e684"; } + +.mdi-action-thumb-down:before { + content: "\e685"; } + +.mdi-action-thumb-up:before { + content: "\e686"; } + +.mdi-action-thumbs-up-down:before { + content: "\e687"; } + +.mdi-action-toc:before { + content: "\e688"; } + +.mdi-action-today:before { + content: "\e689"; } + +.mdi-action-track-changes:before { + content: "\e68a"; } + +.mdi-action-translate:before { + content: "\e68b"; } + +.mdi-action-trending-down:before { + content: "\e68c"; } + +.mdi-action-trending-neutral:before { + content: "\e68d"; } + +.mdi-action-trending-up:before { + content: "\e68e"; } + +.mdi-action-turned-in-not:before { + content: "\e68f"; } + +.mdi-action-turned-in:before { + content: "\e690"; } + +.mdi-action-verified-user:before { + content: "\e691"; } + +.mdi-action-view-agenda:before { + content: "\e692"; } + +.mdi-action-view-array:before { + content: "\e693"; } + +.mdi-action-view-carousel:before { + content: "\e694"; } + +.mdi-action-view-column:before { + content: "\e695"; } + +.mdi-action-view-day:before { + content: "\e696"; } + +.mdi-action-view-headline:before { + content: "\e697"; } + +.mdi-action-view-list:before { + content: "\e698"; } + +.mdi-action-view-module:before { + content: "\e699"; } + +.mdi-action-view-quilt:before { + content: "\e69a"; } + +.mdi-action-view-stream:before { + content: "\e69b"; } + +.mdi-action-view-week:before { + content: "\e69c"; } + +.mdi-action-visibility-off:before { + content: "\e69d"; } + +.mdi-action-visibility:before { + content: "\e69e"; } + +.mdi-action-wallet-giftcard:before { + content: "\e69f"; } + +.mdi-action-wallet-membership:before { + content: "\e6a0"; } + +.mdi-action-wallet-travel:before { + content: "\e6a1"; } + +.mdi-action-work:before { + content: "\e6a2"; } + +.mdi-alert-error:before { + content: "\e6a3"; } + +.mdi-alert-warning:before { + content: "\e6a4"; } + +.mdi-av-album:before { + content: "\e6a5"; } + +.mdi-av-closed-caption:before { + content: "\e6a6"; } + +.mdi-av-equalizer:before { + content: "\e6a7"; } + +.mdi-av-explicit:before { + content: "\e6a8"; } + +.mdi-av-fast-forward:before { + content: "\e6a9"; } + +.mdi-av-fast-rewind:before { + content: "\e6aa"; } + +.mdi-av-games:before { + content: "\e6ab"; } + +.mdi-av-hearing:before { + content: "\e6ac"; } + +.mdi-av-high-quality:before { + content: "\e6ad"; } + +.mdi-av-loop:before { + content: "\e6ae"; } + +.mdi-av-mic-none:before { + content: "\e6af"; } + +.mdi-av-mic-off:before { + content: "\e6b0"; } + +.mdi-av-mic:before { + content: "\e6b1"; } + +.mdi-av-movie:before { + content: "\e6b2"; } + +.mdi-av-my-library-add:before { + content: "\e6b3"; } + +.mdi-av-my-library-books:before { + content: "\e6b4"; } + +.mdi-av-my-library-music:before { + content: "\e6b5"; } + +.mdi-av-new-releases:before { + content: "\e6b6"; } + +.mdi-av-not-interested:before { + content: "\e6b7"; } + +.mdi-av-pause-circle-fill:before { + content: "\e6b8"; } + +.mdi-av-pause-circle-outline:before { + content: "\e6b9"; } + +.mdi-av-pause:before { + content: "\e6ba"; } + +.mdi-av-play-arrow:before { + content: "\e6bb"; } + +.mdi-av-play-circle-fill:before { + content: "\e6bc"; } + +.mdi-av-play-circle-outline:before { + content: "\e6bd"; } + +.mdi-av-play-shopping-bag:before { + content: "\e6be"; } + +.mdi-av-playlist-add:before { + content: "\e6bf"; } + +.mdi-av-queue-music:before { + content: "\e6c0"; } + +.mdi-av-queue:before { + content: "\e6c1"; } + +.mdi-av-radio:before { + content: "\e6c2"; } + +.mdi-av-recent-actors:before { + content: "\e6c3"; } + +.mdi-av-repeat-one:before { + content: "\e6c4"; } + +.mdi-av-repeat:before { + content: "\e6c5"; } + +.mdi-av-replay:before { + content: "\e6c6"; } + +.mdi-av-shuffle:before { + content: "\e6c7"; } + +.mdi-av-skip-next:before { + content: "\e6c8"; } + +.mdi-av-skip-previous:before { + content: "\e6c9"; } + +.mdi-av-snooze:before { + content: "\e6ca"; } + +.mdi-av-stop:before { + content: "\e6cb"; } + +.mdi-av-subtitles:before { + content: "\e6cc"; } + +.mdi-av-surround-sound:before { + content: "\e6cd"; } + +.mdi-av-timer:before { + content: "\e6ce"; } + +.mdi-av-video-collection:before { + content: "\e6cf"; } + +.mdi-av-videocam-off:before { + content: "\e6d0"; } + +.mdi-av-videocam:before { + content: "\e6d1"; } + +.mdi-av-volume-down:before { + content: "\e6d2"; } + +.mdi-av-volume-mute:before { + content: "\e6d3"; } + +.mdi-av-volume-off:before { + content: "\e6d4"; } + +.mdi-av-volume-up:before { + content: "\e6d5"; } + +.mdi-av-web:before { + content: "\e6d6"; } + +.mdi-communication-business:before { + content: "\e6d7"; } + +.mdi-communication-call-end:before { + content: "\e6d8"; } + +.mdi-communication-call-made:before { + content: "\e6d9"; } + +.mdi-communication-call-merge:before { + content: "\e6da"; } + +.mdi-communication-call-missed:before { + content: "\e6db"; } + +.mdi-communication-call-received:before { + content: "\e6dc"; } + +.mdi-communication-call-split:before { + content: "\e6dd"; } + +.mdi-communication-call:before { + content: "\e6de"; } + +.mdi-communication-chat:before { + content: "\e6df"; } + +.mdi-communication-clear-all:before { + content: "\e6e0"; } + +.mdi-communication-comment:before { + content: "\e6e1"; } + +.mdi-communication-contacts:before { + content: "\e6e2"; } + +.mdi-communication-dialer-sip:before { + content: "\e6e3"; } + +.mdi-communication-dialpad:before { + content: "\e6e4"; } + +.mdi-communication-dnd-on:before { + content: "\e6e5"; } + +.mdi-communication-email:before { + content: "\e6e6"; } + +.mdi-communication-forum:before { + content: "\e6e7"; } + +.mdi-communication-import-export:before { + content: "\e6e8"; } + +.mdi-communication-invert-colors-off:before { + content: "\e6e9"; } + +.mdi-communication-invert-colors-on:before { + content: "\e6ea"; } + +.mdi-communication-live-help:before { + content: "\e6eb"; } + +.mdi-communication-location-off:before { + content: "\e6ec"; } + +.mdi-communication-location-on:before { + content: "\e6ed"; } + +.mdi-communication-message:before { + content: "\e6ee"; } + +.mdi-communication-messenger:before { + content: "\e6ef"; } + +.mdi-communication-no-sim:before { + content: "\e6f0"; } + +.mdi-communication-phone:before { + content: "\e6f1"; } + +.mdi-communication-portable-wifi-off:before { + content: "\e6f2"; } + +.mdi-communication-quick-contacts-dialer:before { + content: "\e6f3"; } + +.mdi-communication-quick-contacts-mail:before { + content: "\e6f4"; } + +.mdi-communication-ring-volume:before { + content: "\e6f5"; } + +.mdi-communication-stay-current-landscape:before { + content: "\e6f6"; } + +.mdi-communication-stay-current-portrait:before { + content: "\e6f7"; } + +.mdi-communication-stay-primary-landscape:before { + content: "\e6f8"; } + +.mdi-communication-stay-primary-portrait:before { + content: "\e6f9"; } + +.mdi-communication-swap-calls:before { + content: "\e6fa"; } + +.mdi-communication-textsms:before { + content: "\e6fb"; } + +.mdi-communication-voicemail:before { + content: "\e6fc"; } + +.mdi-communication-vpn-key:before { + content: "\e6fd"; } + +.mdi-content-add-box:before { + content: "\e6fe"; } + +.mdi-content-add-circle-outline:before { + content: "\e6ff"; } + +.mdi-content-add-circle:before { + content: "\e700"; } + +.mdi-content-add:before { + content: "\e701"; } + +.mdi-content-archive:before { + content: "\e702"; } + +.mdi-content-backspace:before { + content: "\e703"; } + +.mdi-content-block:before { + content: "\e704"; } + +.mdi-content-clear:before { + content: "\e705"; } + +.mdi-content-content-copy:before { + content: "\e706"; } + +.mdi-content-content-cut:before { + content: "\e707"; } + +.mdi-content-content-paste:before { + content: "\e708"; } + +.mdi-content-create:before { + content: "\e709"; } + +.mdi-content-drafts:before { + content: "\e70a"; } + +.mdi-content-filter-list:before { + content: "\e70b"; } + +.mdi-content-flag:before { + content: "\e70c"; } + +.mdi-content-forward:before { + content: "\e70d"; } + +.mdi-content-gesture:before { + content: "\e70e"; } + +.mdi-content-inbox:before { + content: "\e70f"; } + +.mdi-content-link:before { + content: "\e710"; } + +.mdi-content-mail:before { + content: "\e711"; } + +.mdi-content-markunread:before { + content: "\e712"; } + +.mdi-content-redo:before { + content: "\e713"; } + +.mdi-content-remove-circle-outline:before { + content: "\e714"; } + +.mdi-content-remove-circle:before { + content: "\e715"; } + +.mdi-content-remove:before { + content: "\e716"; } + +.mdi-content-reply-all:before { + content: "\e717"; } + +.mdi-content-reply:before { + content: "\e718"; } + +.mdi-content-report:before { + content: "\e719"; } + +.mdi-content-save:before { + content: "\e71a"; } + +.mdi-content-select-all:before { + content: "\e71b"; } + +.mdi-content-send:before { + content: "\e71c"; } + +.mdi-content-sort:before { + content: "\e71d"; } + +.mdi-content-text-format:before { + content: "\e71e"; } + +.mdi-content-undo:before { + content: "\e71f"; } + +.mdi-editor-attach-file:before { + content: "\e776"; } + +.mdi-editor-attach-money:before { + content: "\e777"; } + +.mdi-editor-border-all:before { + content: "\e778"; } + +.mdi-editor-border-bottom:before { + content: "\e779"; } + +.mdi-editor-border-clear:before { + content: "\e77a"; } + +.mdi-editor-border-color:before { + content: "\e77b"; } + +.mdi-editor-border-horizontal:before { + content: "\e77c"; } + +.mdi-editor-border-inner:before { + content: "\e77d"; } + +.mdi-editor-border-left:before { + content: "\e77e"; } + +.mdi-editor-border-outer:before { + content: "\e77f"; } + +.mdi-editor-border-right:before { + content: "\e780"; } + +.mdi-editor-border-style:before { + content: "\e781"; } + +.mdi-editor-border-top:before { + content: "\e782"; } + +.mdi-editor-border-vertical:before { + content: "\e783"; } + +.mdi-editor-format-align-center:before { + content: "\e784"; } + +.mdi-editor-format-align-justify:before { + content: "\e785"; } + +.mdi-editor-format-align-left:before { + content: "\e786"; } + +.mdi-editor-format-align-right:before { + content: "\e787"; } + +.mdi-editor-format-bold:before { + content: "\e788"; } + +.mdi-editor-format-clear:before { + content: "\e789"; } + +.mdi-editor-format-color-fill:before { + content: "\e78a"; } + +.mdi-editor-format-color-reset:before { + content: "\e78b"; } + +.mdi-editor-format-color-text:before { + content: "\e78c"; } + +.mdi-editor-format-indent-decrease:before { + content: "\e78d"; } + +.mdi-editor-format-indent-increase:before { + content: "\e78e"; } + +.mdi-editor-format-italic:before { + content: "\e78f"; } + +.mdi-editor-format-line-spacing:before { + content: "\e790"; } + +.mdi-editor-format-list-bulleted:before { + content: "\e791"; } + +.mdi-editor-format-list-numbered:before { + content: "\e792"; } + +.mdi-editor-format-paint:before { + content: "\e793"; } + +.mdi-editor-format-quote:before { + content: "\e794"; } + +.mdi-editor-format-size:before { + content: "\e795"; } + +.mdi-editor-format-strikethrough:before { + content: "\e796"; } + +.mdi-editor-format-textdirection-l-to-r:before { + content: "\e797"; } + +.mdi-editor-format-textdirection-r-to-l:before { + content: "\e798"; } + +.mdi-editor-format-underline:before { + content: "\e799"; } + +.mdi-editor-functions:before { + content: "\e79a"; } + +.mdi-editor-insert-chart:before { + content: "\e79b"; } + +.mdi-editor-insert-comment:before { + content: "\e79c"; } + +.mdi-editor-insert-drive-file:before { + content: "\e79d"; } + +.mdi-editor-insert-emoticon:before { + content: "\e79e"; } + +.mdi-editor-insert-invitation:before { + content: "\e79f"; } + +.mdi-editor-insert-link:before { + content: "\e7a0"; } + +.mdi-editor-insert-photo:before { + content: "\e7a1"; } + +.mdi-editor-merge-type:before { + content: "\e7a2"; } + +.mdi-editor-mode-comment:before { + content: "\e7a3"; } + +.mdi-editor-mode-edit:before { + content: "\e7a4"; } + +.mdi-editor-publish:before { + content: "\e7a5"; } + +.mdi-editor-vertical-align-bottom:before { + content: "\e7a6"; } + +.mdi-editor-vertical-align-center:before { + content: "\e7a7"; } + +.mdi-editor-vertical-align-top:before { + content: "\e7a8"; } + +.mdi-editor-wrap-text:before { + content: "\e7a9"; } + +.mdi-file-attachment:before { + content: "\e7aa"; } + +.mdi-file-cloud-circle:before { + content: "\e7ab"; } + +.mdi-file-cloud-done:before { + content: "\e7ac"; } + +.mdi-file-cloud-download:before { + content: "\e7ad"; } + +.mdi-file-cloud-off:before { + content: "\e7ae"; } + +.mdi-file-cloud-queue:before { + content: "\e7af"; } + +.mdi-file-cloud-upload:before { + content: "\e7b0"; } + +.mdi-file-cloud:before { + content: "\e7b1"; } + +.mdi-file-file-download:before { + content: "\e7b2"; } + +.mdi-file-file-upload:before { + content: "\e7b3"; } + +.mdi-file-folder-open:before { + content: "\e7b4"; } + +.mdi-file-folder-shared:before { + content: "\e7b5"; } + +.mdi-file-folder:before { + content: "\e7b6"; } + +.mdi-device-access-alarm:before { + content: "\e720"; } + +.mdi-device-access-alarms:before { + content: "\e721"; } + +.mdi-device-access-time:before { + content: "\e722"; } + +.mdi-device-add-alarm:before { + content: "\e723"; } + +.mdi-device-airplanemode-off:before { + content: "\e724"; } + +.mdi-device-airplanemode-on:before { + content: "\e725"; } + +.mdi-device-battery-20:before { + content: "\e726"; } + +.mdi-device-battery-30:before { + content: "\e727"; } + +.mdi-device-battery-50:before { + content: "\e728"; } + +.mdi-device-battery-60:before { + content: "\e729"; } + +.mdi-device-battery-80:before { + content: "\e72a"; } + +.mdi-device-battery-90:before { + content: "\e72b"; } + +.mdi-device-battery-alert:before { + content: "\e72c"; } + +.mdi-device-battery-charging-20:before { + content: "\e72d"; } + +.mdi-device-battery-charging-30:before { + content: "\e72e"; } + +.mdi-device-battery-charging-50:before { + content: "\e72f"; } + +.mdi-device-battery-charging-60:before { + content: "\e730"; } + +.mdi-device-battery-charging-80:before { + content: "\e731"; } + +.mdi-device-battery-charging-90:before { + content: "\e732"; } + +.mdi-device-battery-charging-full:before { + content: "\e733"; } + +.mdi-device-battery-full:before { + content: "\e734"; } + +.mdi-device-battery-std:before { + content: "\e735"; } + +.mdi-device-battery-unknown:before { + content: "\e736"; } + +.mdi-device-bluetooth-connected:before { + content: "\e737"; } + +.mdi-device-bluetooth-disabled:before { + content: "\e738"; } + +.mdi-device-bluetooth-searching:before { + content: "\e739"; } + +.mdi-device-bluetooth:before { + content: "\e73a"; } + +.mdi-device-brightness-auto:before { + content: "\e73b"; } + +.mdi-device-brightness-high:before { + content: "\e73c"; } + +.mdi-device-brightness-low:before { + content: "\e73d"; } + +.mdi-device-brightness-medium:before { + content: "\e73e"; } + +.mdi-device-data-usage:before { + content: "\e73f"; } + +.mdi-device-developer-mode:before { + content: "\e740"; } + +.mdi-device-devices:before { + content: "\e741"; } + +.mdi-device-dvr:before { + content: "\e742"; } + +.mdi-device-gps-fixed:before { + content: "\e743"; } + +.mdi-device-gps-not-fixed:before { + content: "\e744"; } + +.mdi-device-gps-off:before { + content: "\e745"; } + +.mdi-device-location-disabled:before { + content: "\e746"; } + +.mdi-device-location-searching:before { + content: "\e747"; } + +.mdi-device-multitrack-audio:before { + content: "\e748"; } + +.mdi-device-network-cell:before { + content: "\e749"; } + +.mdi-device-network-wifi:before { + content: "\e74a"; } + +.mdi-device-nfc:before { + content: "\e74b"; } + +.mdi-device-now-wallpaper:before { + content: "\e74c"; } + +.mdi-device-now-widgets:before { + content: "\e74d"; } + +.mdi-device-screen-lock-landscape:before { + content: "\e74e"; } + +.mdi-device-screen-lock-portrait:before { + content: "\e74f"; } + +.mdi-device-screen-lock-rotation:before { + content: "\e750"; } + +.mdi-device-screen-rotation:before { + content: "\e751"; } + +.mdi-device-sd-storage:before { + content: "\e752"; } + +.mdi-device-settings-system-daydream:before { + content: "\e753"; } + +.mdi-device-signal-cellular-0-bar:before { + content: "\e754"; } + +.mdi-device-signal-cellular-1-bar:before { + content: "\e755"; } + +.mdi-device-signal-cellular-2-bar:before { + content: "\e756"; } + +.mdi-device-signal-cellular-3-bar:before { + content: "\e757"; } + +.mdi-device-signal-cellular-4-bar:before { + content: "\e758"; } + +.mdi-signal-wifi-statusbar-connected-no-internet-after:before { + content: "\e8f6"; } + +.mdi-device-signal-cellular-connected-no-internet-0-bar:before { + content: "\e759"; } + +.mdi-device-signal-cellular-connected-no-internet-1-bar:before { + content: "\e75a"; } + +.mdi-device-signal-cellular-connected-no-internet-2-bar:before { + content: "\e75b"; } + +.mdi-device-signal-cellular-connected-no-internet-3-bar:before { + content: "\e75c"; } + +.mdi-device-signal-cellular-connected-no-internet-4-bar:before { + content: "\e75d"; } + +.mdi-device-signal-cellular-no-sim:before { + content: "\e75e"; } + +.mdi-device-signal-cellular-null:before { + content: "\e75f"; } + +.mdi-device-signal-cellular-off:before { + content: "\e760"; } + +.mdi-device-signal-wifi-0-bar:before { + content: "\e761"; } + +.mdi-device-signal-wifi-1-bar:before { + content: "\e762"; } + +.mdi-device-signal-wifi-2-bar:before { + content: "\e763"; } + +.mdi-device-signal-wifi-3-bar:before { + content: "\e764"; } + +.mdi-device-signal-wifi-4-bar:before { + content: "\e765"; } + +.mdi-device-signal-wifi-off:before { + content: "\e766"; } + +.mdi-device-signal-wifi-statusbar-1-bar:before { + content: "\e767"; } + +.mdi-device-signal-wifi-statusbar-2-bar:before { + content: "\e768"; } + +.mdi-device-signal-wifi-statusbar-3-bar:before { + content: "\e769"; } + +.mdi-device-signal-wifi-statusbar-4-bar:before { + content: "\e76a"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-:before { + content: "\e76b"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet:before { + content: "\e76f"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before { + content: "\e76c"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before { + content: "\e76d"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before { + content: "\e76e"; } + +.mdi-signal-wifi-statusbar-not-connected-after:before { + content: "\e8f7"; } + +.mdi-device-signal-wifi-statusbar-not-connected:before { + content: "\e770"; } + +.mdi-device-signal-wifi-statusbar-null:before { + content: "\e771"; } + +.mdi-device-storage:before { + content: "\e772"; } + +.mdi-device-usb:before { + content: "\e773"; } + +.mdi-device-wifi-lock:before { + content: "\e774"; } + +.mdi-device-wifi-tethering:before { + content: "\e775"; } + +.mdi-hardware-cast-connected:before { + content: "\e7b7"; } + +.mdi-hardware-cast:before { + content: "\e7b8"; } + +.mdi-hardware-computer:before { + content: "\e7b9"; } + +.mdi-hardware-desktop-mac:before { + content: "\e7ba"; } + +.mdi-hardware-desktop-windows:before { + content: "\e7bb"; } + +.mdi-hardware-dock:before { + content: "\e7bc"; } + +.mdi-hardware-gamepad:before { + content: "\e7bd"; } + +.mdi-hardware-headset-mic:before { + content: "\e7be"; } + +.mdi-hardware-headset:before { + content: "\e7bf"; } + +.mdi-hardware-keyboard-alt:before { + content: "\e7c0"; } + +.mdi-hardware-keyboard-arrow-down:before { + content: "\e7c1"; } + +.mdi-hardware-keyboard-arrow-left:before { + content: "\e7c2"; } + +.mdi-hardware-keyboard-arrow-right:before { + content: "\e7c3"; } + +.mdi-hardware-keyboard-arrow-up:before { + content: "\e7c4"; } + +.mdi-hardware-keyboard-backspace:before { + content: "\e7c5"; } + +.mdi-hardware-keyboard-capslock:before { + content: "\e7c6"; } + +.mdi-hardware-keyboard-control:before { + content: "\e7c7"; } + +.mdi-hardware-keyboard-hide:before { + content: "\e7c8"; } + +.mdi-hardware-keyboard-return:before { + content: "\e7c9"; } + +.mdi-hardware-keyboard-tab:before { + content: "\e7ca"; } + +.mdi-hardware-keyboard-voice:before { + content: "\e7cb"; } + +.mdi-hardware-keyboard:before { + content: "\e7cc"; } + +.mdi-hardware-laptop-chromebook:before { + content: "\e7cd"; } + +.mdi-hardware-laptop-mac:before { + content: "\e7ce"; } + +.mdi-hardware-laptop-windows:before { + content: "\e7cf"; } + +.mdi-hardware-laptop:before { + content: "\e7d0"; } + +.mdi-hardware-memory:before { + content: "\e7d1"; } + +.mdi-hardware-mouse:before { + content: "\e7d2"; } + +.mdi-hardware-phone-android:before { + content: "\e7d3"; } + +.mdi-hardware-phone-iphone:before { + content: "\e7d4"; } + +.mdi-hardware-phonelink-off:before { + content: "\e7d5"; } + +.mdi-hardware-phonelink:before { + content: "\e7d6"; } + +.mdi-hardware-security:before { + content: "\e7d7"; } + +.mdi-hardware-sim-card:before { + content: "\e7d8"; } + +.mdi-hardware-smartphone:before { + content: "\e7d9"; } + +.mdi-hardware-speaker:before { + content: "\e7da"; } + +.mdi-hardware-tablet-android:before { + content: "\e7db"; } + +.mdi-hardware-tablet-mac:before { + content: "\e7dc"; } + +.mdi-hardware-tablet:before { + content: "\e7dd"; } + +.mdi-hardware-tv:before { + content: "\e7de"; } + +.mdi-hardware-watch:before { + content: "\e7df"; } + +.mdi-image-add-to-photos:before { + content: "\e7e0"; } + +.mdi-image-adjust:before { + content: "\e7e1"; } + +.mdi-image-assistant-photo:before { + content: "\e7e2"; } + +.mdi-image-audiotrack:before { + content: "\e7e3"; } + +.mdi-image-blur-circular:before { + content: "\e7e4"; } + +.mdi-image-blur-linear:before { + content: "\e7e5"; } + +.mdi-image-blur-off:before { + content: "\e7e6"; } + +.mdi-image-blur-on:before { + content: "\e7e7"; } + +.mdi-image-brightness-1:before { + content: "\e7e8"; } + +.mdi-image-brightness-2:before { + content: "\e7e9"; } + +.mdi-image-brightness-3:before { + content: "\e7ea"; } + +.mdi-image-brightness-4:before { + content: "\e7eb"; } + +.mdi-image-brightness-5:before { + content: "\e7ec"; } + +.mdi-image-brightness-6:before { + content: "\e7ed"; } + +.mdi-image-brightness-7:before { + content: "\e7ee"; } + +.mdi-image-brush:before { + content: "\e7ef"; } + +.mdi-image-camera-alt:before { + content: "\e7f0"; } + +.mdi-image-camera-front:before { + content: "\e7f1"; } + +.mdi-image-camera-rear:before { + content: "\e7f2"; } + +.mdi-image-camera-roll:before { + content: "\e7f3"; } + +.mdi-image-camera:before { + content: "\e7f4"; } + +.mdi-image-center-focus-strong:before { + content: "\e7f5"; } + +.mdi-image-center-focus-weak:before { + content: "\e7f6"; } + +.mdi-image-collections:before { + content: "\e7f7"; } + +.mdi-image-color-lens:before { + content: "\e7f8"; } + +.mdi-image-colorize:before { + content: "\e7f9"; } + +.mdi-image-compare:before { + content: "\e7fa"; } + +.mdi-image-control-point-duplicate:before { + content: "\e7fb"; } + +.mdi-image-control-point:before { + content: "\e7fc"; } + +.mdi-image-crop-3-2:before { + content: "\e7fd"; } + +.mdi-image-crop-5-4:before { + content: "\e7fe"; } + +.mdi-image-crop-7-5:before { + content: "\e7ff"; } + +.mdi-image-crop-16-9:before { + content: "\e800"; } + +.mdi-image-crop-din:before { + content: "\e801"; } + +.mdi-image-crop-free:before { + content: "\e802"; } + +.mdi-image-crop-landscape:before { + content: "\e803"; } + +.mdi-image-crop-original:before { + content: "\e804"; } + +.mdi-image-crop-portrait:before { + content: "\e805"; } + +.mdi-image-crop-square:before { + content: "\e806"; } + +.mdi-image-crop:before { + content: "\e807"; } + +.mdi-image-dehaze:before { + content: "\e808"; } + +.mdi-image-details:before { + content: "\e809"; } + +.mdi-image-edit:before { + content: "\e80a"; } + +.mdi-image-exposure-minus-1:before { + content: "\e80b"; } + +.mdi-image-exposure-minus-2:before { + content: "\e80c"; } + +.mdi-image-exposure-plus-1:before { + content: "\e80d"; } + +.mdi-image-exposure-plus-2:before { + content: "\e80e"; } + +.mdi-image-exposure-zero:before { + content: "\e80f"; } + +.mdi-image-exposure:before { + content: "\e810"; } + +.mdi-image-filter-1:before { + content: "\e811"; } + +.mdi-image-filter-2:before { + content: "\e812"; } + +.mdi-image-filter-3:before { + content: "\e813"; } + +.mdi-image-filter-4:before { + content: "\e814"; } + +.mdi-image-filter-5:before { + content: "\e815"; } + +.mdi-image-filter-6:before { + content: "\e816"; } + +.mdi-image-filter-7:before { + content: "\e817"; } + +.mdi-image-filter-8:before { + content: "\e818"; } + +.mdi-image-filter-9-plus:before { + content: "\e819"; } + +.mdi-image-filter-9:before { + content: "\e81a"; } + +.mdi-image-filter-b-and-w:before { + content: "\e81b"; } + +.mdi-image-filter-center-focus:before { + content: "\e81c"; } + +.mdi-image-filter-drama:before { + content: "\e81d"; } + +.mdi-image-filter-frames:before { + content: "\e81e"; } + +.mdi-image-filter-hdr:before { + content: "\e81f"; } + +.mdi-image-filter-none:before { + content: "\e820"; } + +.mdi-image-filter-tilt-shift:before { + content: "\e821"; } + +.mdi-image-filter-vintage:before { + content: "\e822"; } + +.mdi-image-filter:before { + content: "\e823"; } + +.mdi-image-flare:before { + content: "\e824"; } + +.mdi-image-flash-auto:before { + content: "\e825"; } + +.mdi-image-flash-off:before { + content: "\e826"; } + +.mdi-image-flash-on:before { + content: "\e827"; } + +.mdi-image-flip:before { + content: "\e828"; } + +.mdi-image-gradient:before { + content: "\e829"; } + +.mdi-image-grain:before { + content: "\e82a"; } + +.mdi-image-grid-off:before { + content: "\e82b"; } + +.mdi-image-grid-on:before { + content: "\e82c"; } + +.mdi-image-hdr-off:before { + content: "\e82d"; } + +.mdi-image-hdr-on:before { + content: "\e82e"; } + +.mdi-image-hdr-strong:before { + content: "\e82f"; } + +.mdi-image-hdr-weak:before { + content: "\e830"; } + +.mdi-image-healing:before { + content: "\e831"; } + +.mdi-image-image-aspect-ratio:before { + content: "\e832"; } + +.mdi-image-image:before { + content: "\e833"; } + +.mdi-image-iso:before { + content: "\e834"; } + +.mdi-image-landscape:before { + content: "\e835"; } + +.mdi-image-leak-add:before { + content: "\e836"; } + +.mdi-image-leak-remove:before { + content: "\e837"; } + +.mdi-image-lens:before { + content: "\e838"; } + +.mdi-image-looks-3:before { + content: "\e839"; } + +.mdi-image-looks-4:before { + content: "\e83a"; } + +.mdi-image-looks-5:before { + content: "\e83b"; } + +.mdi-image-looks-6:before { + content: "\e83c"; } + +.mdi-image-looks-one:before { + content: "\e83d"; } + +.mdi-image-looks-two:before { + content: "\e83e"; } + +.mdi-image-looks:before { + content: "\e83f"; } + +.mdi-image-loupe:before { + content: "\e840"; } + +.mdi-image-movie-creation:before { + content: "\e841"; } + +.mdi-image-nature-people:before { + content: "\e842"; } + +.mdi-image-nature:before { + content: "\e843"; } + +.mdi-image-navigate-before:before { + content: "\e844"; } + +.mdi-image-navigate-next:before { + content: "\e845"; } + +.mdi-image-palette:before { + content: "\e846"; } + +.mdi-image-panorama-fisheye:before { + content: "\e847"; } + +.mdi-image-panorama-horizontal:before { + content: "\e848"; } + +.mdi-image-panorama-vertical:before { + content: "\e849"; } + +.mdi-image-panorama-wide-angle:before { + content: "\e84a"; } + +.mdi-image-panorama:before { + content: "\e84b"; } + +.mdi-image-photo-album:before { + content: "\e84c"; } + +.mdi-image-photo-camera:before { + content: "\e84d"; } + +.mdi-image-photo-library:before { + content: "\e84e"; } + +.mdi-image-photo:before { + content: "\e84f"; } + +.mdi-image-portrait:before { + content: "\e850"; } + +.mdi-image-remove-red-eye:before { + content: "\e851"; } + +.mdi-image-rotate-left:before { + content: "\e852"; } + +.mdi-image-rotate-right:before { + content: "\e853"; } + +.mdi-image-slideshow:before { + content: "\e854"; } + +.mdi-image-straighten:before { + content: "\e855"; } + +.mdi-image-style:before { + content: "\e856"; } + +.mdi-image-switch-camera:before { + content: "\e857"; } + +.mdi-image-switch-video:before { + content: "\e858"; } + +.mdi-image-tag-faces:before { + content: "\e859"; } + +.mdi-image-texture:before { + content: "\e85a"; } + +.mdi-image-timelapse:before { + content: "\e85b"; } + +.mdi-image-timer-3:before { + content: "\e85c"; } + +.mdi-image-timer-10:before { + content: "\e85d"; } + +.mdi-image-timer-auto:before { + content: "\e85e"; } + +.mdi-image-timer-off:before { + content: "\e85f"; } + +.mdi-image-timer:before { + content: "\e860"; } + +.mdi-image-tonality:before { + content: "\e861"; } + +.mdi-image-transform:before { + content: "\e862"; } + +.mdi-image-tune:before { + content: "\e863"; } + +.mdi-image-wb-auto:before { + content: "\e864"; } + +.mdi-image-wb-cloudy:before { + content: "\e865"; } + +.mdi-image-wb-incandescent:before { + content: "\e866"; } + +.mdi-image-wb-irradescent:before { + content: "\e867"; } + +.mdi-image-wb-sunny:before { + content: "\e868"; } + +.mdi-maps-beenhere:before { + content: "\e869"; } + +.mdi-maps-directions-bike:before { + content: "\e86a"; } + +.mdi-maps-directions-bus:before { + content: "\e86b"; } + +.mdi-maps-directions-car:before { + content: "\e86c"; } + +.mdi-maps-directions-ferry:before { + content: "\e86d"; } + +.mdi-maps-directions-subway:before { + content: "\e86e"; } + +.mdi-maps-directions-train:before { + content: "\e86f"; } + +.mdi-maps-directions-transit:before { + content: "\e870"; } + +.mdi-maps-directions-walk:before { + content: "\e871"; } + +.mdi-maps-directions:before { + content: "\e872"; } + +.mdi-maps-flight:before { + content: "\e873"; } + +.mdi-maps-hotel:before { + content: "\e874"; } + +.mdi-maps-layers-clear:before { + content: "\e875"; } + +.mdi-maps-layers:before { + content: "\e876"; } + +.mdi-maps-local-airport:before { + content: "\e877"; } + +.mdi-maps-local-atm:before { + content: "\e878"; } + +.mdi-maps-local-attraction:before { + content: "\e879"; } + +.mdi-maps-local-bar:before { + content: "\e87a"; } + +.mdi-maps-local-cafe:before { + content: "\e87b"; } + +.mdi-maps-local-car-wash:before { + content: "\e87c"; } + +.mdi-maps-local-convenience-store:before { + content: "\e87d"; } + +.mdi-maps-local-drink:before { + content: "\e87e"; } + +.mdi-maps-local-florist:before { + content: "\e87f"; } + +.mdi-maps-local-gas-station:before { + content: "\e880"; } + +.mdi-maps-local-grocery-store:before { + content: "\e881"; } + +.mdi-maps-local-hospital:before { + content: "\e882"; } + +.mdi-maps-local-hotel:before { + content: "\e883"; } + +.mdi-maps-local-laundry-service:before { + content: "\e884"; } + +.mdi-maps-local-library:before { + content: "\e885"; } + +.mdi-maps-local-mall:before { + content: "\e886"; } + +.mdi-maps-local-movies:before { + content: "\e887"; } + +.mdi-maps-local-offer:before { + content: "\e888"; } + +.mdi-maps-local-parking:before { + content: "\e889"; } + +.mdi-maps-local-pharmacy:before { + content: "\e88a"; } + +.mdi-maps-local-phone:before { + content: "\e88b"; } + +.mdi-maps-local-pizza:before { + content: "\e88c"; } + +.mdi-maps-local-play:before { + content: "\e88d"; } + +.mdi-maps-local-post-office:before { + content: "\e88e"; } + +.mdi-maps-local-print-shop:before { + content: "\e88f"; } + +.mdi-maps-local-restaurant:before { + content: "\e890"; } + +.mdi-maps-local-see:before { + content: "\e891"; } + +.mdi-maps-local-shipping:before { + content: "\e892"; } + +.mdi-maps-local-taxi:before { + content: "\e893"; } + +.mdi-maps-location-history:before { + content: "\e894"; } + +.mdi-maps-map:before { + content: "\e895"; } + +.mdi-maps-my-location:before { + content: "\e896"; } + +.mdi-maps-navigation:before { + content: "\e897"; } + +.mdi-maps-pin-drop:before { + content: "\e898"; } + +.mdi-maps-place:before { + content: "\e899"; } + +.mdi-maps-rate-review:before { + content: "\e89a"; } + +.mdi-maps-restaurant-menu:before { + content: "\e89b"; } + +.mdi-maps-satellite:before { + content: "\e89c"; } + +.mdi-maps-store-mall-directory:before { + content: "\e89d"; } + +.mdi-maps-terrain:before { + content: "\e89e"; } + +.mdi-maps-traffic:before { + content: "\e89f"; } + +.mdi-navigation-apps:before { + content: "\e8a0"; } + +.mdi-navigation-arrow-back:before { + content: "\e8a1"; } + +.mdi-navigation-arrow-drop-down-circle:before { + content: "\e8a2"; } + +.mdi-navigation-arrow-drop-down:before { + content: "\e8a3"; } + +.mdi-navigation-arrow-drop-up:before { + content: "\e8a4"; } + +.mdi-navigation-arrow-forward:before { + content: "\e8a5"; } + +.mdi-navigation-cancel:before { + content: "\e8a6"; } + +.mdi-navigation-check:before { + content: "\e8a7"; } + +.mdi-navigation-chevron-left:before { + content: "\e8a8"; } + +.mdi-navigation-chevron-right:before { + content: "\e8a9"; } + +.mdi-navigation-close:before { + content: "\e8aa"; } + +.mdi-navigation-expand-less:before { + content: "\e8ab"; } + +.mdi-navigation-expand-more:before { + content: "\e8ac"; } + +.mdi-navigation-fullscreen-exit:before { + content: "\e8ad"; } + +.mdi-navigation-fullscreen:before { + content: "\e8ae"; } + +.mdi-navigation-menu:before { + content: "\e8af"; } + +.mdi-navigation-more-horiz:before { + content: "\e8b0"; } + +.mdi-navigation-more-vert:before { + content: "\e8b1"; } + +.mdi-navigation-refresh:before { + content: "\e8b2"; } + +.mdi-navigation-unfold-less:before { + content: "\e8b3"; } + +.mdi-navigation-unfold-more:before { + content: "\e8b4"; } + +.mdi-notification-adb:before { + content: "\e8b5"; } + +.mdi-notification-bluetooth-audio:before { + content: "\e8b6"; } + +.mdi-notification-disc-full:before { + content: "\e8b7"; } + +.mdi-notification-dnd-forwardslash:before { + content: "\e8b8"; } + +.mdi-notification-do-not-disturb:before { + content: "\e8b9"; } + +.mdi-notification-drive-eta:before { + content: "\e8ba"; } + +.mdi-notification-event-available:before { + content: "\e8bb"; } + +.mdi-notification-event-busy:before { + content: "\e8bc"; } + +.mdi-notification-event-note:before { + content: "\e8bd"; } + +.mdi-notification-folder-special:before { + content: "\e8be"; } + +.mdi-notification-mms:before { + content: "\e8bf"; } + +.mdi-notification-more:before { + content: "\e8c0"; } + +.mdi-notification-network-locked:before { + content: "\e8c1"; } + +.mdi-notification-phone-bluetooth-speaker:before { + content: "\e8c2"; } + +.mdi-notification-phone-forwarded:before { + content: "\e8c3"; } + +.mdi-notification-phone-in-talk:before { + content: "\e8c4"; } + +.mdi-notification-phone-locked:before { + content: "\e8c5"; } + +.mdi-notification-phone-missed:before { + content: "\e8c6"; } + +.mdi-notification-phone-paused:before { + content: "\e8c7"; } + +.mdi-notification-play-download:before { + content: "\e8c8"; } + +.mdi-notification-play-install:before { + content: "\e8c9"; } + +.mdi-notification-sd-card:before { + content: "\e8ca"; } + +.mdi-notification-sim-card-alert:before { + content: "\e8cb"; } + +.mdi-notification-sms-failed:before { + content: "\e8cc"; } + +.mdi-notification-sms:before { + content: "\e8cd"; } + +.mdi-notification-sync-disabled:before { + content: "\e8ce"; } + +.mdi-notification-sync-problem:before { + content: "\e8cf"; } + +.mdi-notification-sync:before { + content: "\e8d0"; } + +.mdi-notification-system-update:before { + content: "\e8d1"; } + +.mdi-notification-tap-and-play:before { + content: "\e8d2"; } + +.mdi-notification-time-to-leave:before { + content: "\e8d3"; } + +.mdi-notification-vibration:before { + content: "\e8d4"; } + +.mdi-notification-voice-chat:before { + content: "\e8d5"; } + +.mdi-notification-vpn-lock:before { + content: "\e8d6"; } + +.mdi-social-cake:before { + content: "\e8d7"; } + +.mdi-social-domain:before { + content: "\e8d8"; } + +.mdi-social-group-add:before { + content: "\e8d9"; } + +.mdi-social-group:before { + content: "\e8da"; } + +.mdi-social-location-city:before { + content: "\e8db"; } + +.mdi-social-mood:before { + content: "\e8dc"; } + +.mdi-social-notifications-none:before { + content: "\e8dd"; } + +.mdi-social-notifications-off:before { + content: "\e8de"; } + +.mdi-social-notifications-on:before { + content: "\e8df"; } + +.mdi-social-notifications-paused:before { + content: "\e8e0"; } + +.mdi-social-notifications:before { + content: "\e8e1"; } + +.mdi-social-pages:before { + content: "\e8e2"; } + +.mdi-social-party-mode:before { + content: "\e8e3"; } + +.mdi-social-people-outline:before { + content: "\e8e4"; } + +.mdi-social-people:before { + content: "\e8e5"; } + +.mdi-social-person-add:before { + content: "\e8e6"; } + +.mdi-social-person-outline:before { + content: "\e8e7"; } + +.mdi-social-person:before { + content: "\e8e8"; } + +.mdi-social-plus-one:before { + content: "\e8e9"; } + +.mdi-social-poll:before { + content: "\e8ea"; } + +.mdi-social-public:before { + content: "\e8eb"; } + +.mdi-social-school:before { + content: "\e8ec"; } + +.mdi-social-share:before { + content: "\e8ed"; } + +.mdi-social-whatshot:before { + content: "\e8ee"; } + +.mdi-toggle-check-box-outline-blank:before { + content: "\e8ef"; } + +.mdi-toggle-check-box:before { + content: "\e8f0"; } + +.mdi-toggle-radio-button-off:before { + content: "\e8f1"; } + +.mdi-toggle-radio-button-on:before { + content: "\e8f2"; } + +.mdi-toggle-star-half:before { + content: "\e8f3"; } + +.mdi-toggle-star-outline:before { + content: "\e8f4"; } + +.mdi-toggle-star:before { + content: "\e8f5"; } + +.container { + margin: 0 auto; + max-width: 1280px; + width: 90%; } + +@media only screen and (min-width : 601px) { + .container { + width: 85%; } } + +@media only screen and (min-width : 993px) { + .container { + width: 70%; } } + +.container .row { + margin-left: -0.75rem; + margin-right: -0.75rem; } + +.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 { + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 0.75rem; } + .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 : 601px) { + .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 : 993px) { + .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 a { + color: #fff; } + nav .nav-wrapper { + position: relative; + height: 100%; } + nav .nav-wrapper i { + display: block; + font-size: 2rem; } + @media only screen and (min-width : 993px) { + nav a.button-collapse { + display: none; } } + nav .button-collapse { + float: left; + position: relative; + z-index: 1; + height: 56px; } + nav .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; + white-space: nowrap; } + nav .brand-logo.center { + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); } + @media only screen and (max-width : 992px) { + nav .brand-logo { + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); } } + nav .brand-logo.right { + right: 0.5rem; + padding: 0; } + nav ul { + margin: 0; } + nav ul li { + -webkit-transition: background-color .3s; + -moz-transition: background-color .3s; + -o-transition: background-color .3s; + -ms-transition: background-color .3s; + transition: background-color .3s; + float: left; + padding: 0; } + 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: 0 15px; } + nav ul.left { + float: left; } + nav .input-field { + margin: 0; } + nav .input-field input { + height: 100%; + font-size: 1.2rem; + border: none; + padding-left: 2rem; } + nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { + border: none; + box-shadow: none; } + nav .input-field label { + top: 0; + left: 0; } + nav .input-field label i { + color: rgba(255, 255, 255, 0.7); + -webkit-transition: color .3s; + -moz-transition: color .3s; + -o-transition: color .3s; + -ms-transition: color .3s; + transition: color .3s; } + nav .input-field label.active i { + color: #fff; } + nav .input-field label.active { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); } + +.navbar-fixed { + position: relative; + height: 56px; + z-index: 998; } + .navbar-fixed nav { + position: fixed; } + +@media only screen and (min-width : 601px) { + nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { + height: 64px; + line-height: 64px; } + .navbar-fixed { + height: 64px; } } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Thin.woff2") format("woff2"), url("../font/roboto/Roboto-Thin.woff") format("woff"), url("../font/roboto/Roboto-Thin.ttf") format("truetype"); + font-weight: 200; } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Light.woff2") format("woff2"), url("../font/roboto/Roboto-Light.woff") format("woff"), url("../font/roboto/Roboto-Light.ttf") format("truetype"); + font-weight: 300; } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Regular.woff2") format("woff2"), url("../font/roboto/Roboto-Regular.woff") format("woff"), url("../font/roboto/Roboto-Regular.ttf") format("truetype"); + font-weight: 400; } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Medium.woff2") format("woff2"), url("../font/roboto/Roboto-Medium.woff") format("woff"), url("../font/roboto/Roboto-Medium.ttf") format("truetype"); + font-weight: 500; } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Bold.woff2") format("woff2"), url("../font/roboto/Roboto-Bold.woff") format("woff"), url("../font/roboto/Roboto-Bold.ttf") format("truetype"); + font-weight: 700; } + +a { + text-decoration: none; } + +html { + line-height: 1.5; + font-family: "Roboto", sans-serif; + font-weight: normal; + color: rgba(0, 0, 0, 0.87); } + @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; + line-height: 1.1; } + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + font-weight: inherit; } + +h1 { + font-size: 4.2rem; + line-height: 110%; + margin: 2.1rem 0 1.68rem 0; } + +h2 { + font-size: 3.56rem; + line-height: 110%; + margin: 1.78rem 0 1.424rem 0; } + +h3 { + font-size: 2.92rem; + line-height: 110%; + margin: 1.46rem 0 1.168rem 0; } + +h4 { + font-size: 2.28rem; + line-height: 110%; + margin: 1.14rem 0 0.912rem 0; } + +h5 { + font-size: 1.64rem; + line-height: 110%; + margin: 0.82rem 0 0.656rem 0; } + +h6 { + font-size: 1rem; + line-height: 110%; + margin: 0.5rem 0 0.4rem 0; } + +em { + font-style: italic; } + +strong { + font-weight: 500; } + +small { + font-size: 75%; } + +.light, footer.page-footer .footer-copyright { + font-weight: 300; } + +.thin { + font-weight: 200; } + +.flow-text { + font-weight: 300; } + @media only screen and (min-width: 360px) { + .flow-text { + font-size: 1.2rem; } } + @media only screen and (min-width: 390px) { + .flow-text { + font-size: 1.224rem; } } + @media only screen and (min-width: 420px) { + .flow-text { + font-size: 1.248rem; } } + @media only screen and (min-width: 450px) { + .flow-text { + font-size: 1.272rem; } } + @media only screen and (min-width: 480px) { + .flow-text { + font-size: 1.296rem; } } + @media only screen and (min-width: 510px) { + .flow-text { + font-size: 1.32rem; } } + @media only screen and (min-width: 540px) { + .flow-text { + font-size: 1.344rem; } } + @media only screen and (min-width: 570px) { + .flow-text { + font-size: 1.368rem; } } + @media only screen and (min-width: 600px) { + .flow-text { + font-size: 1.392rem; } } + @media only screen and (min-width: 630px) { + .flow-text { + font-size: 1.416rem; } } + @media only screen and (min-width: 660px) { + .flow-text { + font-size: 1.44rem; } } + @media only screen and (min-width: 690px) { + .flow-text { + font-size: 1.464rem; } } + @media only screen and (min-width: 720px) { + .flow-text { + font-size: 1.488rem; } } + @media only screen and (min-width: 750px) { + .flow-text { + font-size: 1.512rem; } } + @media only screen and (min-width: 780px) { + .flow-text { + font-size: 1.536rem; } } + @media only screen and (min-width: 810px) { + .flow-text { + font-size: 1.56rem; } } + @media only screen and (min-width: 840px) { + .flow-text { + font-size: 1.584rem; } } + @media only screen and (min-width: 870px) { + .flow-text { + font-size: 1.608rem; } } + @media only screen and (min-width: 900px) { + .flow-text { + font-size: 1.632rem; } } + @media only screen and (min-width: 930px) { + .flow-text { + font-size: 1.656rem; } } + @media only screen and (min-width: 960px) { + .flow-text { + font-size: 1.68rem; } } + @media only screen and (max-width: 360px) { + .flow-text { + font-size: 1.2rem; } } + +.card-panel { + transition: box-shadow .25s; + padding: 20px; + margin: 0.5rem 0 1rem 0; + border-radius: 2px; + background-color: #fff; } + +.card { + position: relative; + overflow: hidden; + margin: 0.5rem 0 1rem 0; + background-color: #fff; + transition: box-shadow .25s; + border-radius: 2px; } + .card .card-title { + color: #fff; + font-size: 24px; + font-weight: 300; } + .card .card-title.activator { + cursor: pointer; } + .card.small, .card.medium, .card.large { + position: relative; } + .card.small .card-image, .card.medium .card-image, .card.large .card-image { + overflow: hidden; } + .card.small .card-content, .card.medium .card-content, .card.large .card-content { + overflow: hidden; } + .card.small .card-action, .card.medium .card-action, .card.large .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; } + .card.small { + height: 300px; } + .card.small .card-image { + height: 150px; } + .card.small .card-content { + height: 150px; } + .card.medium { + height: 400px; } + .card.medium .card-image { + height: 250px; } + .card.medium .card-content { + height: 150px; } + .card.large { + height: 500px; } + .card.large .card-image { + height: 330px; } + .card.large .card-content { + height: 170px; } + .card .card-image { + position: relative; } + .card .card-image img { + border-radius: 2px 2px 0 0; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; } + .card .card-image .card-title { + position: absolute; + bottom: 0; + left: 0; + padding: 20px; } + .card .card-content { + padding: 20px; + border-radius: 0 0 2px 2px; } + .card .card-content p { + margin: 0; + color: inherit; } + .card .card-content .card-title { + line-height: 48px; } + .card .card-action { + border-top: 1px solid rgba(160, 160, 160, 0.2); + padding: 20px; } + .card .card-action a { + color: #ffab40; + margin-right: 20px; + -webkit-transition: color .3s ease; + -moz-transition: color .3s ease; + -o-transition: color .3s ease; + -ms-transition: color .3s ease; + transition: color .3s ease; + text-transform: uppercase; } + .card .card-action a:hover { + color: #ffd8a6; } + .card .card-reveal { + padding: 20px; + position: absolute; + background-color: #fff; + width: 100%; + overflow-y: auto; + top: 100%; + height: 100%; + z-index: 1; + display: none; } + .card .card-reveal .card-title { + cursor: pointer; + display: block; } + +#toast-container { + display: block; + position: fixed; + z-index: 1001; } + @media only screen and (max-width : 600px) { + #toast-container { + min-width: 100%; + bottom: 0%; } } + @media only screen and (min-width : 601px) and (max-width : 992px) { + #toast-container { + min-width: 30%; + left: 5%; + bottom: 7%; } } + @media only screen and (min-width : 993px) { + #toast-container { + min-width: 8%; + top: 10%; + right: 7%; } } + +.toast { + border-radius: 2px; + top: 0; + width: auto; + clear: both; + margin-top: 10px; + position: relative; + max-width: 100%; + height: 48px; + line-height: 48px; + background-color: #323232; + padding: 0 25px; + font-size: 1.1rem; + font-weight: 300; + color: #fff; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: space-between; + justify-content: space-between; } + .toast .btn, .toast .btn-large, .toast .btn-flat { + margin: 0; + margin-left: 3rem; } + .toast.rounded { + border-radius: 24px; } + @media only screen and (max-width : 600px) { + .toast { + width: 100%; + border-radius: 0; } } + @media only screen and (min-width : 601px) and (max-width : 992px) { + .toast { + float: left; } } + @media only screen and (min-width : 993px) { + .toast { + float: right; } } + +.tabs { + position: relative; + height: 48px; + background-color: #fff; + margin: 0 auto; + width: 100%; + white-space: nowrap; } + .tabs .tab { + display: block; + float: left; + text-align: center; + line-height: 48px; + height: 48px; + padding: 0 20px; + margin: 0; + text-transform: uppercase; + letter-spacing: .8px; + width: 15%; } + .tabs .tab a { + color: #ee6e73; + display: block; + width: 100%; + height: 100%; + -webkit-transition: color .28s ease; + -moz-transition: color .28s ease; + -o-transition: color .28s ease; + -ms-transition: color .28s ease; + transition: color .28s ease; } + .tabs .tab a:hover { + color: #f9c9cb; } + .tabs .tab.disabled a { + color: #f9c9cb; + cursor: default; } + .tabs .indicator { + position: absolute; + bottom: 0; + height: 2px; + background-color: #f6b2b5; + will-change: left, right; } + +.tabs .tab { + padding: 0; } + +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 2000; + background-color: transparent; + border-radius: 2px; + color: #fff; + min-height: 36px; + line-height: 1rem; + opacity: 0; + display: none; + position: absolute; + text-align: center; + overflow: hidden; + left: 0; + top: 0; + will-change: top, left; } + +.backdrop { + position: absolute; + opacity: 0; + display: none; + height: 7px; + width: 14px; + border-radius: 0 0 14px 14px; + 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%; + will-change: transform, opacity; } + +.btn, .btn-large, .btn-flat { + border: none; + border-radius: 2px; + display: inline-block; + height: 36px; + line-height: 36px; + outline: 0; + padding: 0 2rem; + text-transform: uppercase; + vertical-align: middle; + -webkit-tap-highlight-color: transparent; } + +.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 !important; + box-shadow: none; + color: #9F9F9F !important; + cursor: default; } + .btn.disabled *, .disabled.btn-large *, .btn-floating.disabled *, .btn-large.disabled *, .btn:disabled *, .btn-large:disabled *, .btn-large:disabled *, .btn-floating:disabled * { + pointer-events: none; } + .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: #fff; + background-color: #26a69a; + text-align: center; + letter-spacing: .5px; + -webkit-transition: .2s ease-out; + -moz-transition: .2s ease-out; + -o-transition: .2s ease-out; + -ms-transition: .2s ease-out; + transition: .2s ease-out; + cursor: pointer; } + .btn:hover, .btn-large:hover { + background-color: #2bbbad; } + +.btn-floating { + display: inline-block; + color: #fff; + position: relative; + overflow: hidden; + z-index: 1; + width: 37px; + height: 37px; + line-height: 37px; + padding: 0; + background-color: #26a69a; + border-radius: 50%; + transition: .3s; + cursor: pointer; + vertical-align: middle; } + .btn-floating i { + width: inherit; + display: inline-block; + text-align: center; + color: #fff; + font-size: 1.6rem; + line-height: 37px; } + .btn-floating:before { + border-radius: 0; } + .btn-floating.btn-large { + width: 55.5px; + height: 55.5px; } + .btn-floating.btn-large i { + line-height: 55.5px; } + +button.btn-floating { + border: none; } + +.fixed-action-btn { + position: fixed; + right: 23px; + bottom: 23px; + padding-top: 15px; + margin-bottom: 0; + z-index: 998; } + .fixed-action-btn ul { + left: 0; + right: 0; + text-align: center; + position: absolute; + bottom: 64px; + margin: 0; } + .fixed-action-btn ul li { + margin-bottom: 15px; } + .fixed-action-btn ul a.btn-floating { + opacity: 0; } + +.btn-flat { + box-shadow: none; + background-color: transparent; + color: #343434; + cursor: pointer; } + .btn-flat.disabled { + color: #b3b3b3; + cursor: default; } + +.btn-large { + height: 54px; + line-height: 56px; } + .btn-large i { + font-size: 1.6rem; } + +.btn-block { + display: block; } + +.dropdown-content { + background-color: #fff; + margin: 0; + display: none; + min-width: 100px; + max-height: 650px; + overflow-y: auto; + opacity: 0; + position: absolute; + z-index: 999; + will-change: width, height; } + .dropdown-content li { + clear: both; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + line-height: 1.5rem; + width: 100%; + text-align: left; + text-transform: none; } + .dropdown-content li:hover, .dropdown-content li.active { + background-color: #eee; } + .dropdown-content li > a, .dropdown-content li > span { + font-size: 1.2rem; + color: #26a69a; + display: block; + padding: 1rem 1rem; } + .dropdown-content li > a > i { + height: inherit; + line-height: inherit; } + +/*! + * Waves v0.6.0 + * 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; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + will-change: opacity, transform; + -webkit-transition: all .3s ease-out; + -moz-transition: all .3s ease-out; + -o-transition: all .3s ease-out; + -ms-transition: all .3s ease-out; + transition: all .3s ease-out; } + .waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.7s ease-out; + -moz-transition: all 0.7s ease-out; + -o-transition: all 0.7s ease-out; + -ms-transition: all 0.7s ease-out; + transition: all 0.7s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; } + .waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); } + .waves-effect.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, 0.7); } + .waves-effect.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, 0.7); } + .waves-effect.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, 0.7); } + .waves-effect.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.7); } + .waves-effect.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.7); } + .waves-effect.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.7); } + +.waves-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + -ms-transition: none !important; + transition: none !important; } + +.waves-circle { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); } + +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; } + .waves-input-wrapper .waves-button-input { + position: relative; + 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%; + -webkit-mask-image: none; } + +.waves-block { + display: block; } + +/* Firefox Bug: link not triggered */ +a.waves-effect .waves-ripple { + z-index: -1; } + +.modal { + display: none; + position: fixed; + left: 0; + right: 0; + background-color: #fafafa; + padding: 0; + max-height: 70%; + width: 55%; + margin: auto; + overflow-y: auto; + border-radius: 2px; + will-change: top, opacity; } + @media only screen and (max-width : 992px) { + .modal { + width: 80%; } } + .modal h1, .modal h2, .modal h3, .modal h4 { + margin-top: 0; } + .modal .modal-content { + padding: 24px; } + .modal .modal-close { + cursor: pointer; } + .modal .modal-footer { + border-radius: 0 0 2px 2px; + background-color: #fafafa; + padding: 4px 6px; + height: 56px; + width: 100%; } + .modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { + float: right; + margin: 6px 0; } + +.lean-overlay { + position: fixed; + z-index: 999; + top: -100px; + left: 0; + bottom: 0; + right: 0; + height: 125%; + width: 100%; + background: #000; + display: none; + will-change: opacity; } + +.modal.modal-fixed-footer { + padding: 0; + height: 70%; } + .modal.modal-fixed-footer .modal-content { + position: absolute; + height: calc(100% - 56px); + max-height: 100%; + width: 100%; + overflow-y: auto; } + .modal.modal-fixed-footer .modal-footer { + border-top: 1px solid rgba(0, 0, 0, 0.1); + position: absolute; + bottom: 0; } + +.modal.bottom-sheet { + top: auto; + bottom: -100%; + margin: 0; + width: 100%; + max-height: 45%; + border-radius: 0; + will-change: bottom, opacity; } + +.collapsible { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; + border-left: 1px solid #ddd; + margin: 0.5rem 0 1rem 0; } + +.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: 1rem; } + +.collapsible-body { + 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; } + +.side-nav .collapsible { + border: none; + box-shadow: none; } + .side-nav .collapsible li { + padding: 0; } +.side-nav .collapsible-header { + background-color: transparent; + border: none; + line-height: inherit; + height: inherit; + margin: 0 1rem; } + .side-nav .collapsible-header i { + line-height: inherit; } +.side-nav .collapsible-body { + border: 0; + background-color: #fff; } + .side-nav .collapsible-body li a { + margin: 0 1rem 0 2rem; } + +.collapsible.popout { + border: none; + box-shadow: none; } + .collapsible.popout > li { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + margin: 0 24px; + transition: margin .35s cubic-bezier(0.25, 0.46, 0.45, 0.94); } + .collapsible.popout > li.active { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + margin: 16px 0; } + +.materialboxed { + cursor: zoom-in; + position: relative; + -webkit-transition: opacity .4s; + -moz-transition: opacity .4s; + -o-transition: opacity .4s; + -ms-transition: opacity .4s; + transition: opacity .4s; } + .materialboxed:hover { + will-change: left, top, width, height; } + .materialboxed:hover:not(.active) { + opacity: .8; } + +.materialboxed.active { + cursor: zoom-out; } + +#materialbox-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #292929; + z-index: 999; + will-change: opacity; } + +.materialbox-caption { + position: fixed; + display: none; + color: #fff; + line-height: 50px; + bottom: 0; + width: 100%; + text-align: center; + padding: 0% 15%; + height: 50px; + z-index: 1000; + -webkit-font-smoothing: antialiased; } + +/* Remove Focus Boxes */ +select:focus { + outline: 1px solid #c9f3ef; } + +button:focus { + outline: none; + background-color: #2ab7a9; } + +label { + font-size: 0.8rem; + color: #9e9e9e; } + +/*************************** + Text Inputs + Textarea +****************************/ +::-webkit-input-placeholder { + color: #d1d1d1; } + +:-moz-placeholder { + /* Firefox 18- */ + color: #d1d1d1; } + +::-moz-placeholder { + /* Firefox 19+ */ + color: #d1d1d1; } + +:-ms-input-placeholder { + color: #d1d1d1; } + +input[type=text], input[type=password], input[type=email], input[type=url], input[type=time], input[type=date], input[type=datetime-local], input[type=tel], input[type=number], input[type=search], textarea.materialize-textarea { + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + border-radius: 0; + outline: none; + height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + box-shadow: none; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + transition: all .3s; } + input[type=text]:disabled, input[type=text][readonly="readonly"], input[type=password]:disabled, input[type=password][readonly="readonly"], input[type=email]:disabled, input[type=email][readonly="readonly"], input[type=url]:disabled, input[type=url][readonly="readonly"], input[type=time]:disabled, input[type=time][readonly="readonly"], input[type=date]:disabled, input[type=date][readonly="readonly"], input[type=datetime-local]:disabled, input[type=datetime-local][readonly="readonly"], input[type=tel]:disabled, input[type=tel][readonly="readonly"], input[type=number]:disabled, input[type=number][readonly="readonly"], input[type=search]:disabled, input[type=search][readonly="readonly"], textarea.materialize-textarea:disabled, textarea.materialize-textarea[readonly="readonly"] { + color: rgba(0, 0, 0, 0.26); + border-bottom: 1px dotted rgba(0, 0, 0, 0.26); } + input[type=text]:disabled + label, input[type=text][readonly="readonly"] + label, input[type=password]:disabled + label, input[type=password][readonly="readonly"] + label, input[type=email]:disabled + label, input[type=email][readonly="readonly"] + label, input[type=url]:disabled + label, input[type=url][readonly="readonly"] + label, input[type=time]:disabled + label, input[type=time][readonly="readonly"] + label, input[type=date]:disabled + label, input[type=date][readonly="readonly"] + label, input[type=datetime-local]:disabled + label, input[type=datetime-local][readonly="readonly"] + label, input[type=tel]:disabled + label, input[type=tel][readonly="readonly"] + label, input[type=number]:disabled + label, input[type=number][readonly="readonly"] + label, input[type=search]:disabled + label, input[type=search][readonly="readonly"] + label, textarea.materialize-textarea:disabled + label, textarea.materialize-textarea[readonly="readonly"] + label { + color: rgba(0, 0, 0, 0.26); } + input[type=text]:focus:not([readonly]), input[type=password]:focus:not([readonly]), input[type=email]:focus:not([readonly]), input[type=url]:focus:not([readonly]), input[type=time]:focus:not([readonly]), input[type=date]:focus:not([readonly]), input[type=datetime-local]:focus:not([readonly]), input[type=tel]:focus:not([readonly]), input[type=number]:focus:not([readonly]), input[type=search]:focus:not([readonly]), textarea.materialize-textarea:focus:not([readonly]) { + border-bottom: 1px solid #26a69a; + box-shadow: 0 1px 0 0 #26a69a; } + input[type=text]:focus:not([readonly]) + label, input[type=password]:focus:not([readonly]) + label, input[type=email]:focus:not([readonly]) + label, input[type=url]:focus:not([readonly]) + label, input[type=time]:focus:not([readonly]) + label, input[type=date]:focus:not([readonly]) + label, input[type=datetime-local]:focus:not([readonly]) + label, input[type=tel]:focus:not([readonly]) + label, input[type=number]:focus:not([readonly]) + label, input[type=search]:focus:not([readonly]) + label, textarea.materialize-textarea:focus:not([readonly]) + label { + color: #26a69a; } + input[type=text].valid, input[type=text]:focus.valid, input[type=password].valid, input[type=password]:focus.valid, input[type=email].valid, input[type=email]:focus.valid, input[type=url].valid, input[type=url]:focus.valid, input[type=time].valid, input[type=time]:focus.valid, input[type=date].valid, input[type=date]:focus.valid, input[type=datetime-local].valid, input[type=datetime-local]:focus.valid, input[type=tel].valid, input[type=tel]:focus.valid, input[type=number].valid, input[type=number]:focus.valid, input[type=search].valid, input[type=search]:focus.valid, textarea.materialize-textarea.valid, textarea.materialize-textarea:focus.valid { + border-bottom: 1px solid #4CAF50; + box-shadow: 0 1px 0 0 #4CAF50; } + input[type=text].valid + label:after, input[type=text]:focus.valid + label:after, input[type=password].valid + label:after, input[type=password]:focus.valid + label:after, input[type=email].valid + label:after, input[type=email]:focus.valid + label:after, input[type=url].valid + label:after, input[type=url]:focus.valid + label:after, input[type=time].valid + label:after, input[type=time]:focus.valid + label:after, input[type=date].valid + label:after, input[type=date]:focus.valid + label:after, input[type=datetime-local].valid + label:after, input[type=datetime-local]:focus.valid + label:after, input[type=tel].valid + label:after, input[type=tel]:focus.valid + label:after, input[type=number].valid + label:after, input[type=number]:focus.valid + label:after, input[type=search].valid + label:after, input[type=search]:focus.valid + label:after, textarea.materialize-textarea.valid + label:after, textarea.materialize-textarea:focus.valid + label:after { + content: attr(data-success); + color: #4CAF50; + opacity: 1; } + input[type=text].invalid, input[type=text]:focus.invalid, input[type=password].invalid, input[type=password]:focus.invalid, input[type=email].invalid, input[type=email]:focus.invalid, input[type=url].invalid, input[type=url]:focus.invalid, input[type=time].invalid, input[type=time]:focus.invalid, input[type=date].invalid, input[type=date]:focus.invalid, input[type=datetime-local].invalid, input[type=datetime-local]:focus.invalid, input[type=tel].invalid, input[type=tel]:focus.invalid, input[type=number].invalid, input[type=number]:focus.invalid, input[type=search].invalid, input[type=search]:focus.invalid, textarea.materialize-textarea.invalid, textarea.materialize-textarea:focus.invalid { + border-bottom: 1px solid #F44336; + box-shadow: 0 1px 0 0 #F44336; } + input[type=text].invalid + label:after, input[type=text]:focus.invalid + label:after, input[type=password].invalid + label:after, input[type=password]:focus.invalid + label:after, input[type=email].invalid + label:after, input[type=email]:focus.invalid + label:after, input[type=url].invalid + label:after, input[type=url]:focus.invalid + label:after, input[type=time].invalid + label:after, input[type=time]:focus.invalid + label:after, input[type=date].invalid + label:after, input[type=date]:focus.invalid + label:after, input[type=datetime-local].invalid + label:after, input[type=datetime-local]:focus.invalid + label:after, input[type=tel].invalid + label:after, input[type=tel]:focus.invalid + label:after, input[type=number].invalid + label:after, input[type=number]:focus.invalid + label:after, input[type=search].invalid + label:after, input[type=search]:focus.invalid + label:after, textarea.materialize-textarea.invalid + label:after, textarea.materialize-textarea:focus.invalid + label:after { + content: attr(data-error); + color: #F44336; + opacity: 1; } + input[type=text] + label:after, input[type=password] + label:after, input[type=email] + label:after, input[type=url] + label:after, input[type=time] + label:after, input[type=date] + label:after, input[type=datetime-local] + label:after, input[type=tel] + label:after, input[type=number] + label:after, input[type=search] + label:after, textarea.materialize-textarea + label:after { + display: block; + content: ""; + position: absolute; + top: 65px; + opacity: 0; + transition: .2s opacity ease-out, .2s color ease-out; } + +.input-field { + position: relative; + margin-top: 1rem; } + .input-field label { + color: #9e9e9e; + position: absolute; + top: 0.8rem; + left: 0.75rem; + font-size: 1rem; + cursor: text; + -webkit-transition: .2s ease-out; + -moz-transition: .2s ease-out; + -o-transition: .2s ease-out; + -ms-transition: .2s ease-out; + transition: .2s ease-out; } + .input-field label.active { + font-size: 0.8rem; + -webkit-transform: translateY(-140%); + -moz-transform: translateY(-140%); + -ms-transform: translateY(-140%); + -o-transform: translateY(-140%); + transform: translateY(-140%); } + .input-field .prefix { + position: absolute; + width: 3rem; + font-size: 2rem; + -webkit-transition: color .2s; + -moz-transition: color .2s; + -o-transition: color .2s; + -ms-transition: color .2s; + transition: color .2s; } + .input-field .prefix.active { + color: #26a69a; } + .input-field .prefix ~ input, .input-field .prefix ~ textarea { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); } + .input-field .prefix ~ textarea { + padding-top: .8rem; } + .input-field .prefix ~ label { + margin-left: 3rem; } + @media only screen and (max-width : 992px) { + .input-field .prefix ~ input { + width: 86%; + width: calc(100% - 3rem); } } + @media only screen and (max-width : 600px) { + .input-field .prefix ~ input { + width: 80%; + width: calc(100% - 3rem); } } + +.input-field input[type=search] { + display: block; + line-height: inherit; + padding-left: 4rem; + width: calc(100% - 4rem); } + .input-field input[type=search]:focus { + background-color: #fff; + border: 0; + box-shadow: none; + color: #444; } + .input-field input[type=search]:focus + label i, .input-field input[type=search]:focus ~ .mdi-navigation-close { + color: #444; } + .input-field input[type=search] + label { + left: 1rem; } + .input-field input[type=search] ~ .mdi-navigation-close { + position: absolute; + top: 0; + right: 1rem; + color: transparent; + cursor: pointer; + font-size: 2rem; + transition: .3s color; } + +textarea { + width: 100%; + height: 3rem; + background-color: transparent; } + textarea.materialize-textarea { + overflow-y: hidden; + /* prevents scroll bar flash */ + padding: 1.6rem 0; + /* prevents text jump on Enter keypress */ + resize: none; + min-height: 3rem; } + +.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 Radio Buttons */ +[type="radio"]:not(:checked), [type="radio"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; } + +[type="radio"]:not(:checked) + label, [type="radio"]:checked + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-transition: .28s ease; + -moz-transition: .28s ease; + -o-transition: .28s ease; + -ms-transition: .28s ease; + transition: .28s ease; + -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: 0; + top: 0; + margin: 4px; + width: 16px; + height: 16px; + z-index: 0; + -webkit-transition: .28s ease; + -moz-transition: .28s ease; + -o-transition: .28s ease; + -ms-transition: .28s ease; + transition: .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 #26a69a; + background-color: #26a69a; + 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); } + +/* Radio With gap */ +[type="radio"].with-gap:checked + label:before { + border-radius: 50%; + border: 2px solid #26a69a; } + +[type="radio"].with-gap:checked + label:after { + border-radius: 50%; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; + -webkit-transform: scale(.5); + -moz-transform: scale(.5); + -ms-transform: scale(.5); + -o-transform: scale(.5); + transform: scale(.5); } + +/* Disabled Radio With gap */ +[type="radio"].with-gap:disabled:checked + label:before { + border: 2px solid rgba(0, 0, 0, 0.26); } + +[type="radio"].with-gap:disabled:checked + label:after { + border: none; + background-color: rgba(0, 0, 0, 0.26); } + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + label:before, [type="radio"]:disabled:checked + label:before { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled + label { + color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled:not(:checked) + label:before { + border-color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled:checked + label:after { + background-color: rgba(0, 0, 0, 0.26); + border-color: #BDBDBD; } + +/*************** + Checkboxes +***************/ +/* CUSTOM CSS CHECKBOXES */ +form p { + margin-bottom: 10px; + text-align: left; } + +form p:last-child { + margin-bottom: 0; } + +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), [type="checkbox"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; } + +[type="checkbox"] { + /* checkbox aspect */ } + [type="checkbox"] + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -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="checkbox"] + label:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid #5a5a5a; + border-radius: 1px; + margin-top: 2px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + -ms-transition: 0.2s; + transition: 0.2s; } + [type="checkbox"]:not(:checked):disabled + label:before { + border: none; + background-color: rgba(0, 0, 0, 0.26); } + +[type="checkbox"]:checked + label:before { + top: -4px; + left: -3px; + width: 12px; + height: 22px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #26a69a; + border-bottom: 2px solid #26a69a; + -webkit-transform: rotate(40deg); + -moz-transform: rotate(40deg); + -ms-transform: rotate(40deg); + -o-transform: rotate(40deg); + transform: rotate(40deg); + -webkit-backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"]:checked:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + border-bottom: 2px solid rgba(0, 0, 0, 0.26); } + +/* Indeterminate checkbox */ +[type="checkbox"]:indeterminate + label:before { + left: -10px; + top: -11px; + width: 10px; + height: 22px; + border-top: none; + border-left: none; + border-right: 2px solid #26a69a; + border-bottom: none; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"]:indeterminate:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + background-color: transparent; } + +[type="checkbox"].filled-in + label:after { + border-radius: 2px; } +[type="checkbox"].filled-in + label:before, [type="checkbox"].filled-in + label:after { + content: ''; + left: 0; + position: absolute; + /* .1s delay is for check animation */ + transition: border .25s, background-color .25s, width .2s .1s, height .2s .1s, top .2s .1s, left .2s .1s; + z-index: 1; } +[type="checkbox"].filled-in:not(:checked) + label:before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 20% 40%; + transform-origin: 100% 100%; } +[type="checkbox"].filled-in:not(:checked) + label:after { + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid #5a5a5a; + top: 0px; + z-index: 0; } +[type="checkbox"].filled-in:checked + label:before { + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #fff; + border-bottom: 2px solid #fff; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"].filled-in:checked + label:after { + top: 0px; + width: 20px; + height: 20px; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; } +[type="checkbox"].filled-in:disabled:not(:checked) + label:before { + background-color: transparent; + border: 2px solid transparent; } +[type="checkbox"].filled-in:disabled:not(:checked) + label:after { + border-color: transparent; + background-color: #BDBDBD; } +[type="checkbox"].filled-in:disabled:checked + label:before { + background-color: transparent; } +[type="checkbox"].filled-in:disabled:checked + label:after { + background-color: #BDBDBD; + border-color: #BDBDBD; } + +/*************** + Switch +***************/ +.switch, .switch * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -ms-user-select: none; } + +.switch label { + cursor: pointer; } + +.switch label input[type=checkbox] { + opacity: 0; + width: 0; + height: 0; } + +.switch label input[type=checkbox]:checked + .lever { + background-color: #84c7c1; } + +.switch label input[type=checkbox]:checked + .lever:after { + background-color: #26a69a; } + +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 40px; + height: 15px; + background-color: #818181; + border-radius: 15px; + margin-right: 10px; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; } + +.switch label .lever:after { + content: ""; + position: absolute; + display: inline-block; + width: 21px; + height: 21px; + background-color: #F1F1F1; + border-radius: 21px; + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); + left: -5px; + top: -3px; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; } + +input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1); } + +input[type=checkbox]:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08); } + +.switch label input[type=checkbox]:checked + .lever:after { + left: 24px; } + +.switch input[type=checkbox][disabled] + .lever { + cursor: default; } + +.switch label input[type=checkbox][disabled] + .lever:after, .switch label input[type=checkbox][disabled]:checked + .lever:after { + background-color: #BDBDBD; } + +/*************** + Select Field +***************/ +.select-label { + position: absolute; } + +.select-wrapper { + position: relative; } + .select-wrapper input.select-dropdown { + position: relative; + cursor: pointer; + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + outline: none; + height: 3rem; + line-height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + display: block; } + .select-wrapper span.caret { + color: initial; + position: absolute; + right: 0; + top: 16px; + font-size: 10px; } + .select-wrapper span.caret.disabled { + color: rgba(0, 0, 0, 0.26); } + .select-wrapper + label { + position: absolute; + top: -14px; + font-size: 0.8rem; } + +select { + display: none; } + +select.browser-default { + display: block; } + +select:disabled { + color: rgba(0, 0, 0, 0.3); } + +.select-wrapper input.select-dropdown:disabled { + color: rgba(0, 0, 0, 0.3); + cursor: default; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -ms-user-select: none; + /* IE10+ */ + border-bottom: 1px solid rgba(0, 0, 0, 0.3); } + +.select-wrapper i { + color: rgba(0, 0, 0, 0.3); } + +.select-dropdown li.disabled { + color: rgba(0, 0, 0, 0.3); + background-color: transparent; } + +/********************* + File Input +**********************/ +.file-field { + position: relative; } + .file-field .file-path-wrapper { + overflow: hidden; + padding-left: 10px; } + .file-field input.file-path { + width: 100%; } + .file-field .btn, .file-field .btn-large { + float: left; + height: 3rem; + line-height: 3rem; } + .file-field span { + cursor: pointer; } + .file-field input[type=file] { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: 100%; + margin: 0; + padding: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); } + +/*************** + 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: #26a69a; + 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: #26a69a; + font-size: 0; + -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: #26a69a; + 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; } + +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: #26a69a; + 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: #26a69a; } + +input[type=range]:focus::-ms-fill-lower { + background: #888; } + +input[type=range]:focus::-ms-fill-upper { + background: #ccc; } + +/*************************** + Text Inputs + Textarea +****************************/ +select { + background-color: rgba(255, 255, 255, 0.9); + width: 100%; + padding: 5px; + border: 1px solid #f2f2f2; + border-radius: 2px; + height: 3rem; } + +/*************** + Nav List +***************/ +.table-of-contents.fixed { + position: fixed; } +.table-of-contents li { + padding: 2px 0; } +.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; } + .table-of-contents a:hover { + color: #a8a8a8; + padding-left: 19px; + border-left: 1px solid #ea4a4f; } + .table-of-contents a.active { + font-weight: 500; + padding-left: 18px; + border-left: 2px solid #ea4a4f; } + +.side-nav { + position: fixed; + width: 240px; + left: -105%; + top: 0; + margin: 0; + height: 100%; + height: calc(100% + 60px); + height: -moz-calc(100%); + padding-bottom: 60px; + background-color: #fff; + z-index: 999; + overflow-y: auto; + will-change: left; } + .side-nav.right-aligned { + will-change: right; + right: -105%; + left: auto; } + .side-nav .collapsible { + margin: 0; } + .side-nav li { + float: none; + padding: 0 15px; } + .side-nav li:hover, .side-nav li.active { + background-color: #ddd; } + .side-nav a { + color: #444; + display: block; + font-size: 1rem; + height: 64px; + line-height: 64px; + padding: 0 15px; } + +.drag-target { + height: 100%; + width: 10px; + position: fixed; + top: 0; + z-index: 998; } + +.side-nav.fixed a { + display: block; + padding: 0 15px; + color: #444; } + +.side-nav.fixed { + left: 0; + position: fixed; } + .side-nav.fixed.right-aligned { + right: 0; + left: auto; } + +@media only screen and (max-width : 992px) { + .side-nav.fixed { + left: -105%; } + .side-nav.fixed.right-aligned { + right: -105%; + left: auto; } } + +.side-nav .collapsible-body li.active, .side-nav.fixed .collapsible-body li.active { + background-color: #ee6e73; } + .side-nav .collapsible-body li.active a, .side-nav.fixed .collapsible-body li.active a { + color: #fff; } + +#sidenav-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + height: 120vh; + background-color: rgba(0, 0, 0, 0.5); + z-index: 997; + 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, .spinner-blue-only { + border-color: #4285f4; } + +.spinner-red, .spinner-red-only { + border-color: #db4437; } + +.spinner-yellow, .spinner-yellow-only { + border-color: #f4b400; } + +.spinner-green, .spinner-green-only { + 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; } + +.active .spinner-layer.spinner-blue-only, .active .spinner-layer.spinner-red-only, .active .spinner-layer.spinner-yellow-only, .active .spinner-layer.spinner-green-only { + /* durations: 4 * ARCTIME */ + opacity: 1; + -webkit-animation: fill-unfill-rotate 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; } + +@-webkit-keyframes fill-unfill-rotate { + /* 0.5 * ARCSIZE */ + /* 1 * ARCSIZE */ + /* 1.5 * ARCSIZE */ + /* 2 * ARCSIZE */ + /* 2.5 * ARCSIZE */ + /* 3 * ARCSIZE */ + /* 3.5 * ARCSIZE */ + /* 4 * ARCSIZE */ + 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 { + /* 0.5 * ARCSIZE */ + /* 1 * ARCSIZE */ + /* 1.5 * ARCSIZE */ + /* 2 * ARCSIZE */ + /* 2.5 * ARCSIZE */ + /* 3 * ARCSIZE */ + /* 3.5 * ARCSIZE */ + /* 4 * ARCSIZE */ + 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; } } + +/** + * 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; + 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%; + 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; } } + +.slider { + position: relative; + height: 400px; + width: 100%; } + .slider.fullscreen { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; } + .slider.fullscreen ul.slides { + height: 100%; } + .slider.fullscreen ul.indicators { + z-index: 2; + bottom: 30px; } + .slider .slides { + background-color: #9e9e9e; + margin: 0; + height: 400px; } + .slider .slides li { + opacity: 0; + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: inherit; + overflow: hidden; } + .slider .slides li img { + height: 100%; + width: 100%; + background-size: cover; + background-position: center; } + .slider .slides li .caption { + color: #fff; + position: absolute; + top: 15%; + left: 15%; + width: 70%; + opacity: 0; } + .slider .slides li .caption p { + color: #e0e0e0; } + .slider .slides li.active { + z-index: 2; } + .slider .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; } + .slider .indicators .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 16px; + width: 16px; + margin: 0 12px; + background-color: #e0e0e0; + -webkit-transition: background-color .3s; + -moz-transition: background-color .3s; + -o-transition: background-color .3s; + -ms-transition: background-color .3s; + transition: background-color .3s; + border-radius: 50%; } + .slider .indicators .indicator-item.active { + background-color: #4CAF50; } + +/* ========================================================================== + $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; + 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: 0; + margin-left: .25em; + margin-right: .25em; } + +.picker__select--month.browser-default { + display: inline; + background-color: #FFFFFF; + width: 40%; } + +.picker__select--year.browser-default { + display: inline; + background-color: #FFFFFF; + width: 25%; } + +.picker__select--month:focus, .picker__select--year:focus { + border-color: rgba(0, 0, 0, 0.05); } + +/** + * 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--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 { + display: none; + padding: .75rem 0; + color: #fff; } + +.picker__day--outfocus:hover { + cursor: pointer; + color: #dddddd; + font-weight: 500; } + +.picker__day--highlighted:hover, .picker--focused .picker__day--highlighted { + cursor: pointer; } + +.picker__day--selected, .picker__day--selected:hover, .picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(.75); + -moz-transform: scale(.75); + -ms-transform: scale(.75); + -o-transform: scale(.75); + transform: scale(.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; + display: flex; + align-items: center; + justify-content: space-between; } + +.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: rgba(0, 0, 0, 0.05); + 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__nav--prev:hover, .picker__nav--next:hover { + cursor: pointer; + color: #000000; + background: #a1ded8; } + +.picker__weekday-display { + background-color: #1f897f; + 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: rgba(255, 255, 255, 0.4); } + +.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__day.picker__day--today { + color: #26a69a; } + +.picker__day.picker__day--today.picker__day--selected { + color: #fff; } + +.picker__weekday { + font-size: .9rem; } + +.picker__day--selected, .picker__day--selected:hover, .picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(.9); + -moz-transform: scale(.9); + -ms-transform: scale(.9); + -o-transform: scale(.9); + transform: scale(.9); + background-color: #26a69a; + color: #ffffff; } + .picker__day--selected.picker__day--outfocus, .picker__day--selected:hover.picker__day--outfocus, .picker--focused .picker__day--selected.picker__day--outfocus { + background-color: #a1ded8; } + +.picker__footer { + text-align: right; + padding: 5px 10px; } + +.picker__close, .picker__today { + font-size: 1.1rem; + padding: 0 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; } + +button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { + background-color: #a1ded8; } + +/* ========================================================================== + $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; } } + +/*************** + HTML Styles +***************/ +body { + background-color: #fcfcfc; } + +p.box { + padding: 20px; } + +p { + color: rgba(0, 0, 0, 0.71); + padding: 0; + -webkit-font-smoothing: antialiased; } + +h1, h2, h3, h4, h5, h6 { + -webkit-font-smoothing: antialiased; } + +nav a { + -webkit-font-smoothing: antialiased; } +nav ul li:hover, nav ul li.active { + background-color: #ea454b; } + +.header { + color: #ee6e73; + font-weight: 300; } + +.caption { + font-size: 1.25rem; + font-weight: 300; + margin-bottom: 30px; } + +.preview { + background-color: #FFF; + border: 1px solid #eee; + padding: 20px 20px; } + +header, main, footer { + padding-left: 240px; } + +.parallax-demo header, .parallax-demo main, .parallax-demo footer { + padding-left: 0; } + +footer.example { + padding-left: 0; } + +@media only screen and (max-width : 992px) { + header, main, footer { + padding-left: 0; } } + +/******************** + Index Page Styles +********************/ +ul.side-nav.fixed li.logo { + text-align: center; + margin-top: 32px; + margin-bottom: 16px; + border-bottom: 1px solid #ddd; } + ul.side-nav.fixed li.logo:hover { + background-color: transparent; } + +ul.side-nav.fixed { + overflow: hidden; } + ul.side-nav.fixed li { + line-height: 44px; } + ul.side-nav.fixed li:hover, ul.side-nav.fixed li.active { + background-color: rgba(0, 0, 0, 0.05); } + ul.side-nav.fixed li a { + font-size: 13px; + line-height: 44px; + height: 44px; } + ul.side-nav.fixed ul.collapsible-accordion { + background-color: #FFF; } + ul.side-nav.fixed:hover { + overflow-y: auto; } + +.bold > a { + font-weight: bold; } + +#logo-container { + height: 57px; + margin-bottom: 32px; } + +nav.top-nav { + height: 122px; + box-shadow: none; } + nav.top-nav a.page-title { + line-height: 122px; + font-size: 48px; } + +a.button-collapse.top-nav { + position: absolute; + text-align: center; + height: 48px; + width: 48px; + left: 7.5%; + top: 0; + float: none; + margin-left: 1.5rem; + color: #fff; + font-size: 32px; + z-index: 2; } + a.button-collapse.top-nav.full { + line-height: 122px; } + +@media only screen and (max-width : 600px) { + a.button-collapse.top-nav { + left: 5%; } } + +@media only screen and (max-width : 992px) { + nav .nav-wrapper { + text-align: center; } + nav .nav-wrapper a.page-title { + font-size: 36px; } } + +@media only screen and (min-width : 993px) { + .container { + width: 85%; } } + +#front-page-logo { + display: inline-block; + height: 100%; + pointer-events: none; } + +@media only screen and (max-width: 992px) { + #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; } } + +#responsive-img { + width: 80%; + display: block; + margin: 0 auto; } + +#index-banner { + background-color: #ee6e73; } + #index-banner .container { + position: relative; } + #index-banner .header { + color: #FFF; } + #index-banner h4 { + margin-bottom: 40px; } + #index-banner h1 { + margin-top: 16px; } + +@media only screen and (max-width : 992px) { + #index-banner h1 { + margin-top: 60px; } + #index-banner h4 { + margin-bottom: 15px; } } + +@media only screen and (max-width : 600px) { + #index-banner h4 { + margin-bottom: 0; } } + +.github-commit { + padding: 14px 0; + height: 64px; + line-height: 36px; + background-color: #5c5757; + color: #e6e6e6; + font-size: .9rem; } + +@media only screen and (max-width : 992px) { + .github-commit { + text-align: center; } } + +#github-button { + background-color: #6f6d6d; + -webkit-transition: .25s ease; + -moz-transition: .25s ease; + -o-transition: .25s ease; + -ms-transition: .25s ease; + transition: .25s ease; } + #github-button:hover { + background-color: #797777; } + +.sha { + color: #f0f0f0; + margin: 0 6px 0 6px; } + +#download-button { + background-color: #f3989b; + width: 260px; + height: 70px; + line-height: 70px; + font-size: 18px; + font-weight: 400; } + #download-button:hover { + background-color: #f5a5a8; } + +.promo { + width: 100%; } + @media only screen and (max-width : 992px) { + .promo { + width: 60%; + margin: 0 auto; + display: block; } } + .promo i { + margin: 40px 0; + color: #ee6e73; + font-size: 7rem; + display: block; } + +.promo-caption { + font-size: 1.7rem; + font-weight: 500; + margin-top: 5px; + margin-bottom: 0; } + +#front-page-nav { + background-color: #FFF; + position: relative; } + #front-page-nav a { + color: #ee6e73; } + #front-page-nav li:hover { + background-color: #fdeaeb; } + #front-page-nav li.active { + background-color: #fdeaeb; } + #front-page-nav .container { + height: inherit; } + +.col.grid-example { + border: 1px solid #eee; + margin: 7px 0; + text-align: center; + line-height: 50px; + font-size: 28px; + background-color: tomato; + color: white; + padding: 0; } + .col.grid-example span { + font-weight: 200; + line-height: 50px; } + +.promo-example { + overflow: hidden; } + +/******************* + Flat Site Mockup +*******************/ +#site-layout-example-left { + background-color: #90a4ae; + height: 300px; } + +#site-layout-example-right { + background-color: #26a69a; + height: 300px; } + +#site-layout-example-top { + background-color: #E57373; + height: 42px; } + +.flat-text-header { + height: 35px; + width: 80%; + background-color: rgba(255, 255, 255, 0.15); + display: block; + margin: 27px auto; } + +.flat-text { + height: 25px; + width: 80%; + background-color: rgba(0, 0, 0, 0.15); + display: block; + margin: 27px auto; } + .flat-text.small { + width: 25%; + height: 25px; + background-color: rgba(0, 0, 0, 0.15); } + .flat-text.full-width { + width: 100%; } + +/********************** +**********************/ +/***************** + Chrome Browser +*****************/ +.browser-window { + text-align: left; + width: 100%; + height: auto; + display: inline-block; + border-radius: 5px 5px 2px 2px; + background-color: #fff; + margin: 20px 0px; + overflow: hidden; } + .browser-window .top-bar { + height: 30px; + border-radius: 5px 5px 0 0; + border-top: thin solid #eaeae9; + border-bottom: thin solid #dfdfde; + background: linear-gradient(#e7e7e6, #E2E2E1); } + +.browser-window .circle { + height: 10px; + width: 10px; + display: inline-block; + border-radius: 50%; + background-color: white; + margin-right: 1px; } + +#close-circle { + background-color: #FF5C5A; } + +#minimize-circle { + background-color: #FFBB50; } + +#maximize-circle { + background-color: #1BC656; } + +.browser-window .circles { + margin: 5px 12px; } + +.browser-window .content { + margin: 0; + width: 100%; + display: inline-block; + border-radius: 0 0 5px 5px; + background-color: #fafafa; } + +.browser-window .row { + margin: 0; } + +.clear { + clear: both; } + +/********************** +**********************/ +.dynamic-color .red, .dynamic-color .pink, .dynamic-color .purple, .dynamic-color .deep-purple, .dynamic-color .indigo, .dynamic-color .blue, .dynamic-color .light-blue, .dynamic-color .cyan, .dynamic-color .teal, .dynamic-color .green, .dynamic-color .light-green, .dynamic-color .lime, .dynamic-color .yellow, .dynamic-color .amber, .dynamic-color .orange, .dynamic-color .deep-orange, .dynamic-color .brown, .dynamic-color .grey, .dynamic-color .blue-grey, .dynamic-color .black, .dynamic-color .white, .dynamic-color .transparent { + height: 55px; + width: 100%; + padding: 0 15px; + line-height: 55px; + font-weight: 500; + font-size: 12px; + display: block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } +.dynamic-color .col { + margin-bottom: 55px; } + +.center { + text-align: center; + vertical-align: middle; } + +.material-icons.icon-demo { + line-height: 50px; } + +.icon-container i { + font-size: 3em; + margin-bottom: 10px; } + +.icon-container .icon-preview { + height: 120px; + text-align: center; } + +.icon-container span { + display: block; } + +.icon-holder { + display: block; + text-align: center; + width: 150px; + height: 115px; + float: left; + margin: 0 0px 15px 0px; } + .icon-holder p { + margin: 0 0; } + +.tabs-wrapper { + position: relative; + height: 48px; } + .tabs-wrapper .row.pinned { + position: fixed; + width: 100%; + top: 0; + z-index: 10; } + +.shadow-demo { + background-color: #26a69a; + width: 100px; + height: 100px; + margin: 20px auto; } + @media only screen and (max-width: 600px) { + .shadow-demo { + width: 150px; + height: 150px; } } + +.parallax-container .text-center { + position: absolute; + top: 50%; + left: 0; + right: 0; + margin-top: -27px; } + +ul.table-of-contents { + margin-top: 0; + padding-top: 48px; } + +code, pre { + position: relative; + font-size: 1.1rem; } + +.directory-markup { + font-size: 1rem; + line-height: 1.1rem !important; } + +pre[class*="language-"] { + padding: 25px 12px 7px 12px; + border: solid 1px rgba(51, 51, 51, 0.12); } + pre[class*="language-"]:before { + position: absolute; + padding: 1px 5px; + background: #e8e6e3; + top: 0; + left: 0; + font-family: "Roboto", sans-serif; + -webkit-font-smoothing: antialiased; + color: #555; + content: attr(class); + font-size: .9rem; + border: solid 1px rgba(51, 51, 51, 0.12); + border-top: none; + border-left: none; } + +.toc-wrapper { + position: relative; + margin-top: 42px; } + +#carbonads { + max-width: 150px; + display: inline-block; + position: relative; + text-align: left; + -webkit-font-smoothing: antialiased; } + #carbonads > span, #carbonads span.carbon-wrap { + height: 100px; + display: block; } + #carbonads a.carbon-img { + height: 100px; + display: inline-block; + margin-right: 10px; } + #carbonads a.carbon-text, #carbonads input[type="submit"] { + position: relative; + top: 0; + width: 150px; + vertical-align: top; + display: inline-block; + font-size: 13px; + color: #E57373; } + #carbonads a.carbon-poweredby { + position: relative; + left: 28px; + font-size: 11px; + color: #EF9A9A; } + +.buysellads #carbonads > span, .buysellads #carbonads span.carbon-wrap { + height: auto; } +.buysellads #carbonads a.carbon-text { + top: 5px; + left: 0; + width: 130px; + display: block; + font-size: 13px; + -webkit-font-smoothing: antialiased; + color: #E57373; } +.buysellads #carbonads a.carbon-poweredby { + top: 5px; } + +.buysellads-header #carbonads > span, .buysellads-header #carbonads span.carbon-wrap { + height: auto; } +.buysellads-header #carbonads a.carbon-text { + color: #fff; } +.buysellads-header #carbonads a.carbon-poweredby { + color: rgba(255, 255, 255, 0.8); } + +.buysellads { + -webkit-font-smoothing: antialiased; + position: relative; } + .buysellads .bsa_it.one { + width: 130px; + position: absolute; + left: 0; + top: 50px; } + .buysellads .bsa_it.one .bsa_it_p { + left: 0; + bottom: -15px; } + .buysellads .bsa_it.one .bsa_it_ad .bsa_it_t { + color: #E57373; } + .buysellads .bsa_it.one .bsa_it_ad .bsa_it_d { + color: #EF9A9A; } + .buysellads .bsa_it_ad a { + display: block; + width: 130px; } + +.buysellads-header { + margin-top: 30px; } + .buysellads-header .bsa_it.one .bsa_it_p { + bottom: -20px; } + +.bsa_it.one { + min-width: 230px; + max-width: 270px; + display: inline-block; + text-align: left; } + .bsa_it.one .bsa_it_ad { + border: 0; + padding: 0; + background-color: transparent; } + .bsa_it.one .bsa_it_ad .bsa_it_t { + color: #fff; } + .bsa_it.one .bsa_it_ad .bsa_it_d { + color: #FFCDD2; } + .bsa_it.one .bsa_it_p { + right: auto; + left: 40px; + bottom: -5px; } + .bsa_it.one .bsa_it_p a { + color: #FFCDD2; } + +footer { + font-size: .9rem; } + +body.parallax-demo footer { + margin-top: 0; } + +.image-container { + width: 100%; } + .image-container img { + max-width: 100%; } + +@media only screen and (max-width : 600px) { + .mobile-image { + max-width: 100%; } } + +.waves-color-demo .collection-item { + height: 57px; + line-height: 57px; } + .waves-color-demo .collection-item code { + line-height: 57px; } +.waves-color-demo .btn:not(.waves-light), .waves-color-demo .btn-large:not(.waves-light) { + background-color: #FFFFFF; + color: #212121; } + +.card-panel span, .card-content p { + -webkit-font-smoothing: antialiased; } + +#images .card-panel .row { + margin-bottom: 0; } + +.pushpin-demo { + position: relative; + height: 100px; } + +#pushpin-demo-1 { + display: block; + height: inherit; + background-color: #ddd; } + +.valign-demo { + height: 400px; + background-color: #ddd; } + +.talign-demo { + height: 100px; + background-color: #ddd; } + +#staggered-test li, #image-test { + opacity: 0; } + +#tx-live-lang-container { + background-color: #fcfcfc; + z-index: 999; } + #tx-live-lang-container #tx-live-lang-picker { + background-color: #fcfcfc; } + #tx-live-lang-container #tx-live-lang-picker li { + color: rgba(0, 0, 0, 0.87); } + #tx-live-lang-container #tx-live-lang-picker li:hover { + color: inherit; + background-color: #fdeaeb; } + #tx-live-lang-container .txlive-langselector-toggle { + border-bottom: 2px solid #ee6e73; } + #tx-live-lang-container .txlive-langselector-current { + color: rgba(0, 0, 0, 0.87); } + #tx-live-lang-container .txlive-langselector-marker { + border-bottom: 4px solid rgba(0, 0, 0, 0.61); } + +#download-thanks { + display: none; } + +#twitter-widget-0 { + width: 190px !important; } diff --git a/css/materialize.css b/css/materialize.css new file mode 100644 index 0000000..cec0f46 --- /dev/null +++ b/css/materialize.css @@ -0,0 +1,8139 @@ +/*! + * Materialize v0.97.0 (http://materializecss.com) + * Copyright 2014-2015 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +.materialize-red.lighten-5 { + background-color: #fdeaeb !important; } + +.materialize-red-text.text-lighten-5 { + color: #fdeaeb !important; } + +.materialize-red.lighten-4 { + background-color: #f8c1c3 !important; } + +.materialize-red-text.text-lighten-4 { + color: #f8c1c3 !important; } + +.materialize-red.lighten-3 { + background-color: #f3989b !important; } + +.materialize-red-text.text-lighten-3 { + color: #f3989b !important; } + +.materialize-red.lighten-2 { + background-color: #ee6e73 !important; } + +.materialize-red-text.text-lighten-2 { + color: #ee6e73 !important; } + +.materialize-red.lighten-1 { + background-color: #ea454b !important; } + +.materialize-red-text.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.text-darken-1 { + color: #d0181e !important; } + +.materialize-red.darken-2 { + background-color: #b9151b !important; } + +.materialize-red-text.text-darken-2 { + color: #b9151b !important; } + +.materialize-red.darken-3 { + background-color: #a21318 !important; } + +.materialize-red-text.text-darken-3 { + color: #a21318 !important; } + +.materialize-red.darken-4 { + background-color: #8b1014 !important; } + +.materialize-red-text.text-darken-4 { + color: #8b1014 !important; } + +.red.lighten-5 { + background-color: #FFEBEE !important; } + +.red-text.text-lighten-5 { + color: #FFEBEE !important; } + +.red.lighten-4 { + background-color: #FFCDD2 !important; } + +.red-text.text-lighten-4 { + color: #FFCDD2 !important; } + +.red.lighten-3 { + background-color: #EF9A9A !important; } + +.red-text.text-lighten-3 { + color: #EF9A9A !important; } + +.red.lighten-2 { + background-color: #E57373 !important; } + +.red-text.text-lighten-2 { + color: #E57373 !important; } + +.red.lighten-1 { + background-color: #EF5350 !important; } + +.red-text.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.text-darken-1 { + color: #E53935 !important; } + +.red.darken-2 { + background-color: #D32F2F !important; } + +.red-text.text-darken-2 { + color: #D32F2F !important; } + +.red.darken-3 { + background-color: #C62828 !important; } + +.red-text.text-darken-3 { + color: #C62828 !important; } + +.red.darken-4 { + background-color: #B71C1C !important; } + +.red-text.text-darken-4 { + color: #B71C1C !important; } + +.red.accent-1 { + background-color: #FF8A80 !important; } + +.red-text.text-accent-1 { + color: #FF8A80 !important; } + +.red.accent-2 { + background-color: #FF5252 !important; } + +.red-text.text-accent-2 { + color: #FF5252 !important; } + +.red.accent-3 { + background-color: #FF1744 !important; } + +.red-text.text-accent-3 { + color: #FF1744 !important; } + +.red.accent-4 { + background-color: #D50000 !important; } + +.red-text.text-accent-4 { + color: #D50000 !important; } + +.pink.lighten-5 { + background-color: #fce4ec !important; } + +.pink-text.text-lighten-5 { + color: #fce4ec !important; } + +.pink.lighten-4 { + background-color: #f8bbd0 !important; } + +.pink-text.text-lighten-4 { + color: #f8bbd0 !important; } + +.pink.lighten-3 { + background-color: #f48fb1 !important; } + +.pink-text.text-lighten-3 { + color: #f48fb1 !important; } + +.pink.lighten-2 { + background-color: #f06292 !important; } + +.pink-text.text-lighten-2 { + color: #f06292 !important; } + +.pink.lighten-1 { + background-color: #ec407a !important; } + +.pink-text.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.text-darken-1 { + color: #d81b60 !important; } + +.pink.darken-2 { + background-color: #c2185b !important; } + +.pink-text.text-darken-2 { + color: #c2185b !important; } + +.pink.darken-3 { + background-color: #ad1457 !important; } + +.pink-text.text-darken-3 { + color: #ad1457 !important; } + +.pink.darken-4 { + background-color: #880e4f !important; } + +.pink-text.text-darken-4 { + color: #880e4f !important; } + +.pink.accent-1 { + background-color: #ff80ab !important; } + +.pink-text.text-accent-1 { + color: #ff80ab !important; } + +.pink.accent-2 { + background-color: #ff4081 !important; } + +.pink-text.text-accent-2 { + color: #ff4081 !important; } + +.pink.accent-3 { + background-color: #f50057 !important; } + +.pink-text.text-accent-3 { + color: #f50057 !important; } + +.pink.accent-4 { + background-color: #c51162 !important; } + +.pink-text.text-accent-4 { + color: #c51162 !important; } + +.purple.lighten-5 { + background-color: #f3e5f5 !important; } + +.purple-text.text-lighten-5 { + color: #f3e5f5 !important; } + +.purple.lighten-4 { + background-color: #e1bee7 !important; } + +.purple-text.text-lighten-4 { + color: #e1bee7 !important; } + +.purple.lighten-3 { + background-color: #ce93d8 !important; } + +.purple-text.text-lighten-3 { + color: #ce93d8 !important; } + +.purple.lighten-2 { + background-color: #ba68c8 !important; } + +.purple-text.text-lighten-2 { + color: #ba68c8 !important; } + +.purple.lighten-1 { + background-color: #ab47bc !important; } + +.purple-text.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.text-darken-1 { + color: #8e24aa !important; } + +.purple.darken-2 { + background-color: #7b1fa2 !important; } + +.purple-text.text-darken-2 { + color: #7b1fa2 !important; } + +.purple.darken-3 { + background-color: #6a1b9a !important; } + +.purple-text.text-darken-3 { + color: #6a1b9a !important; } + +.purple.darken-4 { + background-color: #4a148c !important; } + +.purple-text.text-darken-4 { + color: #4a148c !important; } + +.purple.accent-1 { + background-color: #ea80fc !important; } + +.purple-text.text-accent-1 { + color: #ea80fc !important; } + +.purple.accent-2 { + background-color: #e040fb !important; } + +.purple-text.text-accent-2 { + color: #e040fb !important; } + +.purple.accent-3 { + background-color: #d500f9 !important; } + +.purple-text.text-accent-3 { + color: #d500f9 !important; } + +.purple.accent-4 { + background-color: #aa00ff !important; } + +.purple-text.text-accent-4 { + color: #aa00ff !important; } + +.deep-purple.lighten-5 { + background-color: #ede7f6 !important; } + +.deep-purple-text.text-lighten-5 { + color: #ede7f6 !important; } + +.deep-purple.lighten-4 { + background-color: #d1c4e9 !important; } + +.deep-purple-text.text-lighten-4 { + color: #d1c4e9 !important; } + +.deep-purple.lighten-3 { + background-color: #b39ddb !important; } + +.deep-purple-text.text-lighten-3 { + color: #b39ddb !important; } + +.deep-purple.lighten-2 { + background-color: #9575cd !important; } + +.deep-purple-text.text-lighten-2 { + color: #9575cd !important; } + +.deep-purple.lighten-1 { + background-color: #7e57c2 !important; } + +.deep-purple-text.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.text-darken-1 { + color: #5e35b1 !important; } + +.deep-purple.darken-2 { + background-color: #512da8 !important; } + +.deep-purple-text.text-darken-2 { + color: #512da8 !important; } + +.deep-purple.darken-3 { + background-color: #4527a0 !important; } + +.deep-purple-text.text-darken-3 { + color: #4527a0 !important; } + +.deep-purple.darken-4 { + background-color: #311b92 !important; } + +.deep-purple-text.text-darken-4 { + color: #311b92 !important; } + +.deep-purple.accent-1 { + background-color: #b388ff !important; } + +.deep-purple-text.text-accent-1 { + color: #b388ff !important; } + +.deep-purple.accent-2 { + background-color: #7c4dff !important; } + +.deep-purple-text.text-accent-2 { + color: #7c4dff !important; } + +.deep-purple.accent-3 { + background-color: #651fff !important; } + +.deep-purple-text.text-accent-3 { + color: #651fff !important; } + +.deep-purple.accent-4 { + background-color: #6200ea !important; } + +.deep-purple-text.text-accent-4 { + color: #6200ea !important; } + +.indigo.lighten-5 { + background-color: #e8eaf6 !important; } + +.indigo-text.text-lighten-5 { + color: #e8eaf6 !important; } + +.indigo.lighten-4 { + background-color: #c5cae9 !important; } + +.indigo-text.text-lighten-4 { + color: #c5cae9 !important; } + +.indigo.lighten-3 { + background-color: #9fa8da !important; } + +.indigo-text.text-lighten-3 { + color: #9fa8da !important; } + +.indigo.lighten-2 { + background-color: #7986cb !important; } + +.indigo-text.text-lighten-2 { + color: #7986cb !important; } + +.indigo.lighten-1 { + background-color: #5c6bc0 !important; } + +.indigo-text.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.text-darken-1 { + color: #3949ab !important; } + +.indigo.darken-2 { + background-color: #303f9f !important; } + +.indigo-text.text-darken-2 { + color: #303f9f !important; } + +.indigo.darken-3 { + background-color: #283593 !important; } + +.indigo-text.text-darken-3 { + color: #283593 !important; } + +.indigo.darken-4 { + background-color: #1a237e !important; } + +.indigo-text.text-darken-4 { + color: #1a237e !important; } + +.indigo.accent-1 { + background-color: #8c9eff !important; } + +.indigo-text.text-accent-1 { + color: #8c9eff !important; } + +.indigo.accent-2 { + background-color: #536dfe !important; } + +.indigo-text.text-accent-2 { + color: #536dfe !important; } + +.indigo.accent-3 { + background-color: #3d5afe !important; } + +.indigo-text.text-accent-3 { + color: #3d5afe !important; } + +.indigo.accent-4 { + background-color: #304ffe !important; } + +.indigo-text.text-accent-4 { + color: #304ffe !important; } + +.blue.lighten-5 { + background-color: #E3F2FD !important; } + +.blue-text.text-lighten-5 { + color: #E3F2FD !important; } + +.blue.lighten-4 { + background-color: #BBDEFB !important; } + +.blue-text.text-lighten-4 { + color: #BBDEFB !important; } + +.blue.lighten-3 { + background-color: #90CAF9 !important; } + +.blue-text.text-lighten-3 { + color: #90CAF9 !important; } + +.blue.lighten-2 { + background-color: #64B5F6 !important; } + +.blue-text.text-lighten-2 { + color: #64B5F6 !important; } + +.blue.lighten-1 { + background-color: #42A5F5 !important; } + +.blue-text.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.text-darken-1 { + color: #1E88E5 !important; } + +.blue.darken-2 { + background-color: #1976D2 !important; } + +.blue-text.text-darken-2 { + color: #1976D2 !important; } + +.blue.darken-3 { + background-color: #1565C0 !important; } + +.blue-text.text-darken-3 { + color: #1565C0 !important; } + +.blue.darken-4 { + background-color: #0D47A1 !important; } + +.blue-text.text-darken-4 { + color: #0D47A1 !important; } + +.blue.accent-1 { + background-color: #82B1FF !important; } + +.blue-text.text-accent-1 { + color: #82B1FF !important; } + +.blue.accent-2 { + background-color: #448AFF !important; } + +.blue-text.text-accent-2 { + color: #448AFF !important; } + +.blue.accent-3 { + background-color: #2979FF !important; } + +.blue-text.text-accent-3 { + color: #2979FF !important; } + +.blue.accent-4 { + background-color: #2962FF !important; } + +.blue-text.text-accent-4 { + color: #2962FF !important; } + +.light-blue.lighten-5 { + background-color: #e1f5fe !important; } + +.light-blue-text.text-lighten-5 { + color: #e1f5fe !important; } + +.light-blue.lighten-4 { + background-color: #b3e5fc !important; } + +.light-blue-text.text-lighten-4 { + color: #b3e5fc !important; } + +.light-blue.lighten-3 { + background-color: #81d4fa !important; } + +.light-blue-text.text-lighten-3 { + color: #81d4fa !important; } + +.light-blue.lighten-2 { + background-color: #4fc3f7 !important; } + +.light-blue-text.text-lighten-2 { + color: #4fc3f7 !important; } + +.light-blue.lighten-1 { + background-color: #29b6f6 !important; } + +.light-blue-text.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.text-darken-1 { + color: #039be5 !important; } + +.light-blue.darken-2 { + background-color: #0288d1 !important; } + +.light-blue-text.text-darken-2 { + color: #0288d1 !important; } + +.light-blue.darken-3 { + background-color: #0277bd !important; } + +.light-blue-text.text-darken-3 { + color: #0277bd !important; } + +.light-blue.darken-4 { + background-color: #01579b !important; } + +.light-blue-text.text-darken-4 { + color: #01579b !important; } + +.light-blue.accent-1 { + background-color: #80d8ff !important; } + +.light-blue-text.text-accent-1 { + color: #80d8ff !important; } + +.light-blue.accent-2 { + background-color: #40c4ff !important; } + +.light-blue-text.text-accent-2 { + color: #40c4ff !important; } + +.light-blue.accent-3 { + background-color: #00b0ff !important; } + +.light-blue-text.text-accent-3 { + color: #00b0ff !important; } + +.light-blue.accent-4 { + background-color: #0091ea !important; } + +.light-blue-text.text-accent-4 { + color: #0091ea !important; } + +.cyan.lighten-5 { + background-color: #e0f7fa !important; } + +.cyan-text.text-lighten-5 { + color: #e0f7fa !important; } + +.cyan.lighten-4 { + background-color: #b2ebf2 !important; } + +.cyan-text.text-lighten-4 { + color: #b2ebf2 !important; } + +.cyan.lighten-3 { + background-color: #80deea !important; } + +.cyan-text.text-lighten-3 { + color: #80deea !important; } + +.cyan.lighten-2 { + background-color: #4dd0e1 !important; } + +.cyan-text.text-lighten-2 { + color: #4dd0e1 !important; } + +.cyan.lighten-1 { + background-color: #26c6da !important; } + +.cyan-text.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.text-darken-1 { + color: #00acc1 !important; } + +.cyan.darken-2 { + background-color: #0097a7 !important; } + +.cyan-text.text-darken-2 { + color: #0097a7 !important; } + +.cyan.darken-3 { + background-color: #00838f !important; } + +.cyan-text.text-darken-3 { + color: #00838f !important; } + +.cyan.darken-4 { + background-color: #006064 !important; } + +.cyan-text.text-darken-4 { + color: #006064 !important; } + +.cyan.accent-1 { + background-color: #84ffff !important; } + +.cyan-text.text-accent-1 { + color: #84ffff !important; } + +.cyan.accent-2 { + background-color: #18ffff !important; } + +.cyan-text.text-accent-2 { + color: #18ffff !important; } + +.cyan.accent-3 { + background-color: #00e5ff !important; } + +.cyan-text.text-accent-3 { + color: #00e5ff !important; } + +.cyan.accent-4 { + background-color: #00b8d4 !important; } + +.cyan-text.text-accent-4 { + color: #00b8d4 !important; } + +.teal.lighten-5 { + background-color: #e0f2f1 !important; } + +.teal-text.text-lighten-5 { + color: #e0f2f1 !important; } + +.teal.lighten-4 { + background-color: #b2dfdb !important; } + +.teal-text.text-lighten-4 { + color: #b2dfdb !important; } + +.teal.lighten-3 { + background-color: #80cbc4 !important; } + +.teal-text.text-lighten-3 { + color: #80cbc4 !important; } + +.teal.lighten-2 { + background-color: #4db6ac !important; } + +.teal-text.text-lighten-2 { + color: #4db6ac !important; } + +.teal.lighten-1 { + background-color: #26a69a !important; } + +.teal-text.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.text-darken-1 { + color: #00897b !important; } + +.teal.darken-2 { + background-color: #00796b !important; } + +.teal-text.text-darken-2 { + color: #00796b !important; } + +.teal.darken-3 { + background-color: #00695c !important; } + +.teal-text.text-darken-3 { + color: #00695c !important; } + +.teal.darken-4 { + background-color: #004d40 !important; } + +.teal-text.text-darken-4 { + color: #004d40 !important; } + +.teal.accent-1 { + background-color: #a7ffeb !important; } + +.teal-text.text-accent-1 { + color: #a7ffeb !important; } + +.teal.accent-2 { + background-color: #64ffda !important; } + +.teal-text.text-accent-2 { + color: #64ffda !important; } + +.teal.accent-3 { + background-color: #1de9b6 !important; } + +.teal-text.text-accent-3 { + color: #1de9b6 !important; } + +.teal.accent-4 { + background-color: #00bfa5 !important; } + +.teal-text.text-accent-4 { + color: #00bfa5 !important; } + +.green.lighten-5 { + background-color: #E8F5E9 !important; } + +.green-text.text-lighten-5 { + color: #E8F5E9 !important; } + +.green.lighten-4 { + background-color: #C8E6C9 !important; } + +.green-text.text-lighten-4 { + color: #C8E6C9 !important; } + +.green.lighten-3 { + background-color: #A5D6A7 !important; } + +.green-text.text-lighten-3 { + color: #A5D6A7 !important; } + +.green.lighten-2 { + background-color: #81C784 !important; } + +.green-text.text-lighten-2 { + color: #81C784 !important; } + +.green.lighten-1 { + background-color: #66BB6A !important; } + +.green-text.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.text-darken-1 { + color: #43A047 !important; } + +.green.darken-2 { + background-color: #388E3C !important; } + +.green-text.text-darken-2 { + color: #388E3C !important; } + +.green.darken-3 { + background-color: #2E7D32 !important; } + +.green-text.text-darken-3 { + color: #2E7D32 !important; } + +.green.darken-4 { + background-color: #1B5E20 !important; } + +.green-text.text-darken-4 { + color: #1B5E20 !important; } + +.green.accent-1 { + background-color: #B9F6CA !important; } + +.green-text.text-accent-1 { + color: #B9F6CA !important; } + +.green.accent-2 { + background-color: #69F0AE !important; } + +.green-text.text-accent-2 { + color: #69F0AE !important; } + +.green.accent-3 { + background-color: #00E676 !important; } + +.green-text.text-accent-3 { + color: #00E676 !important; } + +.green.accent-4 { + background-color: #00C853 !important; } + +.green-text.text-accent-4 { + color: #00C853 !important; } + +.light-green.lighten-5 { + background-color: #f1f8e9 !important; } + +.light-green-text.text-lighten-5 { + color: #f1f8e9 !important; } + +.light-green.lighten-4 { + background-color: #dcedc8 !important; } + +.light-green-text.text-lighten-4 { + color: #dcedc8 !important; } + +.light-green.lighten-3 { + background-color: #c5e1a5 !important; } + +.light-green-text.text-lighten-3 { + color: #c5e1a5 !important; } + +.light-green.lighten-2 { + background-color: #aed581 !important; } + +.light-green-text.text-lighten-2 { + color: #aed581 !important; } + +.light-green.lighten-1 { + background-color: #9ccc65 !important; } + +.light-green-text.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.text-darken-1 { + color: #7cb342 !important; } + +.light-green.darken-2 { + background-color: #689f38 !important; } + +.light-green-text.text-darken-2 { + color: #689f38 !important; } + +.light-green.darken-3 { + background-color: #558b2f !important; } + +.light-green-text.text-darken-3 { + color: #558b2f !important; } + +.light-green.darken-4 { + background-color: #33691e !important; } + +.light-green-text.text-darken-4 { + color: #33691e !important; } + +.light-green.accent-1 { + background-color: #ccff90 !important; } + +.light-green-text.text-accent-1 { + color: #ccff90 !important; } + +.light-green.accent-2 { + background-color: #b2ff59 !important; } + +.light-green-text.text-accent-2 { + color: #b2ff59 !important; } + +.light-green.accent-3 { + background-color: #76ff03 !important; } + +.light-green-text.text-accent-3 { + color: #76ff03 !important; } + +.light-green.accent-4 { + background-color: #64dd17 !important; } + +.light-green-text.text-accent-4 { + color: #64dd17 !important; } + +.lime.lighten-5 { + background-color: #f9fbe7 !important; } + +.lime-text.text-lighten-5 { + color: #f9fbe7 !important; } + +.lime.lighten-4 { + background-color: #f0f4c3 !important; } + +.lime-text.text-lighten-4 { + color: #f0f4c3 !important; } + +.lime.lighten-3 { + background-color: #e6ee9c !important; } + +.lime-text.text-lighten-3 { + color: #e6ee9c !important; } + +.lime.lighten-2 { + background-color: #dce775 !important; } + +.lime-text.text-lighten-2 { + color: #dce775 !important; } + +.lime.lighten-1 { + background-color: #d4e157 !important; } + +.lime-text.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.text-darken-1 { + color: #c0ca33 !important; } + +.lime.darken-2 { + background-color: #afb42b !important; } + +.lime-text.text-darken-2 { + color: #afb42b !important; } + +.lime.darken-3 { + background-color: #9e9d24 !important; } + +.lime-text.text-darken-3 { + color: #9e9d24 !important; } + +.lime.darken-4 { + background-color: #827717 !important; } + +.lime-text.text-darken-4 { + color: #827717 !important; } + +.lime.accent-1 { + background-color: #f4ff81 !important; } + +.lime-text.text-accent-1 { + color: #f4ff81 !important; } + +.lime.accent-2 { + background-color: #eeff41 !important; } + +.lime-text.text-accent-2 { + color: #eeff41 !important; } + +.lime.accent-3 { + background-color: #c6ff00 !important; } + +.lime-text.text-accent-3 { + color: #c6ff00 !important; } + +.lime.accent-4 { + background-color: #aeea00 !important; } + +.lime-text.text-accent-4 { + color: #aeea00 !important; } + +.yellow.lighten-5 { + background-color: #fffde7 !important; } + +.yellow-text.text-lighten-5 { + color: #fffde7 !important; } + +.yellow.lighten-4 { + background-color: #fff9c4 !important; } + +.yellow-text.text-lighten-4 { + color: #fff9c4 !important; } + +.yellow.lighten-3 { + background-color: #fff59d !important; } + +.yellow-text.text-lighten-3 { + color: #fff59d !important; } + +.yellow.lighten-2 { + background-color: #fff176 !important; } + +.yellow-text.text-lighten-2 { + color: #fff176 !important; } + +.yellow.lighten-1 { + background-color: #ffee58 !important; } + +.yellow-text.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.text-darken-1 { + color: #fdd835 !important; } + +.yellow.darken-2 { + background-color: #fbc02d !important; } + +.yellow-text.text-darken-2 { + color: #fbc02d !important; } + +.yellow.darken-3 { + background-color: #f9a825 !important; } + +.yellow-text.text-darken-3 { + color: #f9a825 !important; } + +.yellow.darken-4 { + background-color: #f57f17 !important; } + +.yellow-text.text-darken-4 { + color: #f57f17 !important; } + +.yellow.accent-1 { + background-color: #ffff8d !important; } + +.yellow-text.text-accent-1 { + color: #ffff8d !important; } + +.yellow.accent-2 { + background-color: #ffff00 !important; } + +.yellow-text.text-accent-2 { + color: #ffff00 !important; } + +.yellow.accent-3 { + background-color: #ffea00 !important; } + +.yellow-text.text-accent-3 { + color: #ffea00 !important; } + +.yellow.accent-4 { + background-color: #ffd600 !important; } + +.yellow-text.text-accent-4 { + color: #ffd600 !important; } + +.amber.lighten-5 { + background-color: #fff8e1 !important; } + +.amber-text.text-lighten-5 { + color: #fff8e1 !important; } + +.amber.lighten-4 { + background-color: #ffecb3 !important; } + +.amber-text.text-lighten-4 { + color: #ffecb3 !important; } + +.amber.lighten-3 { + background-color: #ffe082 !important; } + +.amber-text.text-lighten-3 { + color: #ffe082 !important; } + +.amber.lighten-2 { + background-color: #ffd54f !important; } + +.amber-text.text-lighten-2 { + color: #ffd54f !important; } + +.amber.lighten-1 { + background-color: #ffca28 !important; } + +.amber-text.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.text-darken-1 { + color: #ffb300 !important; } + +.amber.darken-2 { + background-color: #ffa000 !important; } + +.amber-text.text-darken-2 { + color: #ffa000 !important; } + +.amber.darken-3 { + background-color: #ff8f00 !important; } + +.amber-text.text-darken-3 { + color: #ff8f00 !important; } + +.amber.darken-4 { + background-color: #ff6f00 !important; } + +.amber-text.text-darken-4 { + color: #ff6f00 !important; } + +.amber.accent-1 { + background-color: #ffe57f !important; } + +.amber-text.text-accent-1 { + color: #ffe57f !important; } + +.amber.accent-2 { + background-color: #ffd740 !important; } + +.amber-text.text-accent-2 { + color: #ffd740 !important; } + +.amber.accent-3 { + background-color: #ffc400 !important; } + +.amber-text.text-accent-3 { + color: #ffc400 !important; } + +.amber.accent-4 { + background-color: #ffab00 !important; } + +.amber-text.text-accent-4 { + color: #ffab00 !important; } + +.orange.lighten-5 { + background-color: #fff3e0 !important; } + +.orange-text.text-lighten-5 { + color: #fff3e0 !important; } + +.orange.lighten-4 { + background-color: #ffe0b2 !important; } + +.orange-text.text-lighten-4 { + color: #ffe0b2 !important; } + +.orange.lighten-3 { + background-color: #ffcc80 !important; } + +.orange-text.text-lighten-3 { + color: #ffcc80 !important; } + +.orange.lighten-2 { + background-color: #ffb74d !important; } + +.orange-text.text-lighten-2 { + color: #ffb74d !important; } + +.orange.lighten-1 { + background-color: #ffa726 !important; } + +.orange-text.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.text-darken-1 { + color: #fb8c00 !important; } + +.orange.darken-2 { + background-color: #f57c00 !important; } + +.orange-text.text-darken-2 { + color: #f57c00 !important; } + +.orange.darken-3 { + background-color: #ef6c00 !important; } + +.orange-text.text-darken-3 { + color: #ef6c00 !important; } + +.orange.darken-4 { + background-color: #e65100 !important; } + +.orange-text.text-darken-4 { + color: #e65100 !important; } + +.orange.accent-1 { + background-color: #ffd180 !important; } + +.orange-text.text-accent-1 { + color: #ffd180 !important; } + +.orange.accent-2 { + background-color: #ffab40 !important; } + +.orange-text.text-accent-2 { + color: #ffab40 !important; } + +.orange.accent-3 { + background-color: #ff9100 !important; } + +.orange-text.text-accent-3 { + color: #ff9100 !important; } + +.orange.accent-4 { + background-color: #ff6d00 !important; } + +.orange-text.text-accent-4 { + color: #ff6d00 !important; } + +.deep-orange.lighten-5 { + background-color: #fbe9e7 !important; } + +.deep-orange-text.text-lighten-5 { + color: #fbe9e7 !important; } + +.deep-orange.lighten-4 { + background-color: #ffccbc !important; } + +.deep-orange-text.text-lighten-4 { + color: #ffccbc !important; } + +.deep-orange.lighten-3 { + background-color: #ffab91 !important; } + +.deep-orange-text.text-lighten-3 { + color: #ffab91 !important; } + +.deep-orange.lighten-2 { + background-color: #ff8a65 !important; } + +.deep-orange-text.text-lighten-2 { + color: #ff8a65 !important; } + +.deep-orange.lighten-1 { + background-color: #ff7043 !important; } + +.deep-orange-text.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.text-darken-1 { + color: #f4511e !important; } + +.deep-orange.darken-2 { + background-color: #e64a19 !important; } + +.deep-orange-text.text-darken-2 { + color: #e64a19 !important; } + +.deep-orange.darken-3 { + background-color: #d84315 !important; } + +.deep-orange-text.text-darken-3 { + color: #d84315 !important; } + +.deep-orange.darken-4 { + background-color: #bf360c !important; } + +.deep-orange-text.text-darken-4 { + color: #bf360c !important; } + +.deep-orange.accent-1 { + background-color: #ff9e80 !important; } + +.deep-orange-text.text-accent-1 { + color: #ff9e80 !important; } + +.deep-orange.accent-2 { + background-color: #ff6e40 !important; } + +.deep-orange-text.text-accent-2 { + color: #ff6e40 !important; } + +.deep-orange.accent-3 { + background-color: #ff3d00 !important; } + +.deep-orange-text.text-accent-3 { + color: #ff3d00 !important; } + +.deep-orange.accent-4 { + background-color: #dd2c00 !important; } + +.deep-orange-text.text-accent-4 { + color: #dd2c00 !important; } + +.brown.lighten-5 { + background-color: #efebe9 !important; } + +.brown-text.text-lighten-5 { + color: #efebe9 !important; } + +.brown.lighten-4 { + background-color: #d7ccc8 !important; } + +.brown-text.text-lighten-4 { + color: #d7ccc8 !important; } + +.brown.lighten-3 { + background-color: #bcaaa4 !important; } + +.brown-text.text-lighten-3 { + color: #bcaaa4 !important; } + +.brown.lighten-2 { + background-color: #a1887f !important; } + +.brown-text.text-lighten-2 { + color: #a1887f !important; } + +.brown.lighten-1 { + background-color: #8d6e63 !important; } + +.brown-text.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.text-darken-1 { + color: #6d4c41 !important; } + +.brown.darken-2 { + background-color: #5d4037 !important; } + +.brown-text.text-darken-2 { + color: #5d4037 !important; } + +.brown.darken-3 { + background-color: #4e342e !important; } + +.brown-text.text-darken-3 { + color: #4e342e !important; } + +.brown.darken-4 { + background-color: #3e2723 !important; } + +.brown-text.text-darken-4 { + color: #3e2723 !important; } + +.blue-grey.lighten-5 { + background-color: #eceff1 !important; } + +.blue-grey-text.text-lighten-5 { + color: #eceff1 !important; } + +.blue-grey.lighten-4 { + background-color: #cfd8dc !important; } + +.blue-grey-text.text-lighten-4 { + color: #cfd8dc !important; } + +.blue-grey.lighten-3 { + background-color: #b0bec5 !important; } + +.blue-grey-text.text-lighten-3 { + color: #b0bec5 !important; } + +.blue-grey.lighten-2 { + background-color: #90a4ae !important; } + +.blue-grey-text.text-lighten-2 { + color: #90a4ae !important; } + +.blue-grey.lighten-1 { + background-color: #78909c !important; } + +.blue-grey-text.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.text-darken-1 { + color: #546e7a !important; } + +.blue-grey.darken-2 { + background-color: #455a64 !important; } + +.blue-grey-text.text-darken-2 { + color: #455a64 !important; } + +.blue-grey.darken-3 { + background-color: #37474f !important; } + +.blue-grey-text.text-darken-3 { + color: #37474f !important; } + +.blue-grey.darken-4 { + background-color: #263238 !important; } + +.blue-grey-text.text-darken-4 { + color: #263238 !important; } + +.grey.lighten-5 { + background-color: #fafafa !important; } + +.grey-text.text-lighten-5 { + color: #fafafa !important; } + +.grey.lighten-4 { + background-color: #f5f5f5 !important; } + +.grey-text.text-lighten-4 { + color: #f5f5f5 !important; } + +.grey.lighten-3 { + background-color: #eeeeee !important; } + +.grey-text.text-lighten-3 { + color: #eeeeee !important; } + +.grey.lighten-2 { + background-color: #e0e0e0 !important; } + +.grey-text.text-lighten-2 { + color: #e0e0e0 !important; } + +.grey.lighten-1 { + background-color: #bdbdbd !important; } + +.grey-text.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.text-darken-1 { + color: #757575 !important; } + +.grey.darken-2 { + background-color: #616161 !important; } + +.grey-text.text-darken-2 { + color: #616161 !important; } + +.grey.darken-3 { + background-color: #424242 !important; } + +.grey-text.text-darken-3 { + color: #424242 !important; } + +.grey.darken-4 { + background-color: #212121 !important; } + +.grey-text.text-darken-4 { + color: #212121 !important; } + +.shades.black { + background-color: #000000 !important; } + +.shades-text.text-black { + color: #000000 !important; } + +.shades.white { + background-color: #FFFFFF !important; } + +.shades-text.text-white { + color: #FFFFFF !important; } + +.shades.transparent { + background-color: transparent !important; } + +.shades-text.text-transparent { + color: transparent !important; } + +.black { + background-color: #000000 !important; } + +.black-text { + color: #000000 !important; } + +.white { + background-color: #FFFFFF !important; } + +.white-text { + color: #FFFFFF !important; } + +.transparent { + background-color: transparent !important; } + +.transparent-text { + color: transparent !important; } + +/*** Colors ***/ +/*** Badges ***/ +/*** Buttons ***/ +/*** Cards ***/ +/*** Collapsible ***/ +/*** Dropdown ***/ +/*** Fonts ***/ +/*** Forms ***/ +/*** Global ***/ +/*** Navbar ***/ +/*** SideNav ***/ +/*** Photo Slider ***/ +/*** Tabs ***/ +/*** Tables ***/ +/*** Toasts ***/ +/*** Typography ***/ +/*** Collections ***/ +/* Progress Bar */ +/*! normalize.css v3.0.2 | 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, menu, 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-color: 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. + */ +/* 1 */ +html input[type="button"], 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; } + +html { + box-sizing: border-box; } + +*, *:before, *:after { + box-sizing: inherit; } + +ul { + list-style-type: none; } + +a { + color: #039be5; + text-decoration: none; + -webkit-tap-highlight-color: transparent; } + +.valign-wrapper { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; } + .valign-wrapper .valign { + display: block; } + +ul { + padding: 0; } + ul li { + list-style-type: none; } + +.clearfix { + clear: both; } + +.z-depth-0 { + box-shadow: none !important; } + +.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav { + 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 { + 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 { + 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 { + 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, .modal { + 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 { + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); } + +.hoverable:hover { + transition: box-shadow .25s; + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } + +.divider { + height: 1px; + overflow: hidden; + background-color: #e0e0e0; } + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid #ee6e73; } + +i { + line-height: inherit; } + i.left { + float: left; + margin-right: 15px; } + i.right { + float: right; + margin-left: 15px; } + i.tiny { + font-size: 1rem; } + i.small { + font-size: 2rem; } + i.medium { + font-size: 4rem; } + i.large { + font-size: 6rem; } + +img.responsive-img, video.responsive-video { + max-width: 100%; + height: auto; } + +.pagination li { + float: left; + font-size: 1.2rem; + padding: 0 10px; + line-height: 30px; + border-radius: 2px; + text-align: center; } + .pagination li a { + color: #444; } + .pagination li.active a { + color: #fff; } + .pagination li.active { + background-color: #ee6e73; } + .pagination li.disabled a { + cursor: default; + color: #999; } + .pagination li i { + font-size: 2rem; } +.pagination li.pages ul li { + display: inline-block; + float: none; } + +@media only screen and (max-width : 992px) { + .pagination { + width: 100%; } + .pagination li.prev, .pagination li.next { + width: 10%; } + .pagination li.pages { + width: 80%; + overflow: hidden; + white-space: nowrap; } } + +.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; + left: 50%; + bottom: 0; + min-width: 100%; + min-height: 100%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + transform: translateX(-50%); } + +.pin-top, .pin-bottom { + position: relative; } + +.pinned { + position: fixed !important; } + +/********************* + Transition Classes +**********************/ +ul.staggered-list li { + opacity: 0; } + +.fade-in { + opacity: 0; + transform-origin: 0 50%; } + +/********************* + Media Query Classes +**********************/ +@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 : 601px) { + .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 : 993px) { + .hide-on-large-only { + display: none !important; } } + +@media only screen and (min-width : 993px) { + .show-on-large { + display: initial !important; } } + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .show-on-medium { + display: initial !important; } } + +@media only screen and (max-width : 600px) { + .show-on-small { + display: initial !important; } } + +@media only screen and (min-width : 601px) { + .show-on-medium-and-up { + display: initial !important; } } + +@media only screen and (max-width : 992px) { + .show-on-medium-and-down { + display: initial !important; } } + +@media only screen and (max-width : 600px) { + .center-on-small-only { + text-align: center; } } + +footer.page-footer { + margin-top: 20px; + padding-top: 20px; + background-color: #ee6e73; } + footer.page-footer .footer-copyright { + overflow: hidden; + height: 50px; + line-height: 50px; + color: rgba(255, 255, 255, 0.8); + background-color: rgba(51, 51, 51, 0.08); } + +table, th, td { + border: none; } + +table { + width: 100%; + display: table; } + table.bordered > thead > tr, table.bordered > tbody > tr { + border-bottom: 1px solid #d0d0d0; } + table.striped > tbody > tr:nth-child(odd) { + background-color: #f2f2f2; } + table.striped > tbody > tr > td { + border-radius: 0px; } + table.hoverable > tbody > tr { + -webkit-transition: background-color .25s ease; + -moz-transition: background-color .25s ease; + -o-transition: background-color .25s ease; + -ms-transition: background-color .25s ease; + transition: background-color .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 #d0d0d0; } + +td, th { + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; } + +@media only screen and (max-width : 992px) { + table.responsive-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: block; + position: relative; + /* sort out borders */ } + table.responsive-table th, table.responsive-table td { + margin: 0; + vertical-align: top; } + table.responsive-table th { + text-align: left; } + table.responsive-table thead { + display: block; + float: left; } + table.responsive-table thead tr { + display: block; + padding: 0 10px 0 0; } + table.responsive-table thead tr th::before { + content: "\00a0"; } + table.responsive-table tbody { + display: block; + width: auto; + position: relative; + overflow-x: auto; + white-space: nowrap; } + table.responsive-table tbody tr { + display: inline-block; + vertical-align: top; } + table.responsive-table th { + display: block; + text-align: right; } + table.responsive-table td { + display: block; + min-height: 1.25em; + text-align: left; } + table.responsive-table tr { + padding: 0 10px; } + table.responsive-table thead { + border: 0; + border-right: 1px solid #d0d0d0; } + table.responsive-table.bordered th { + border-bottom: 0; + border-left: 0; } + table.responsive-table.bordered td { + border-left: 0; + border-right: 0; + border-bottom: 0; } + table.responsive-table.bordered tr { + border: 0; } + table.responsive-table.bordered tbody tr { + border-right: 1px solid #d0d0d0; } } + +.collection { + margin: 0.5rem 0 1rem 0; + border: 1px solid #e0e0e0; + border-radius: 2px; + overflow: hidden; + position: relative; } + .collection .collection-item { + background-color: #fff; + line-height: 1.5rem; + padding: 10px 20px; + margin: 0; + border-bottom: 1px solid #e0e0e0; } + .collection .collection-item.avatar { + min-height: 84px; + padding-left: 72px; + position: relative; } + .collection .collection-item.avatar .circle { + position: absolute; + width: 42px; + height: 42px; + overflow: hidden; + left: 15px; + display: inline-block; + vertical-align: middle; } + .collection .collection-item.avatar i.circle { + font-size: 18px; + line-height: 42px; + color: #fff; + background-color: #999; + text-align: center; } + .collection .collection-item.avatar .title { + font-size: 16px; } + .collection .collection-item.avatar p { + margin: 0; } + .collection .collection-item.avatar .secondary-content { + position: absolute; + top: 16px; + right: 16px; } + .collection .collection-item:last-child { + border-bottom: none; } + .collection .collection-item.active { + background-color: #26a69a; + color: #eafaf9; } + .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; + color: #26a69a; } + .collection a.collection-item:not(.active):hover { + background-color: #ddd; } + .collection.with-header .collection-header { + background-color: #fff; + border-bottom: 1px solid #e0e0e0; + padding: 10px 20px; } + .collection.with-header .collection-item { + padding-left: 30px; } + .collection.with-header .collection-item.avatar { + padding-left: 72px; } + +.secondary-content { + float: right; + color: #26a69a; } + +span.badge { + min-width: 3rem; + padding: 0 6px; + text-align: center; + font-size: 1rem; + line-height: inherit; + color: #757575; + position: absolute; + right: 15px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + span.badge.new { + font-weight: 300; + font-size: 0.8rem; + color: #fff; + background-color: #26a69a; + border-radius: 2px; } + span.badge.new:after { + content: " new"; } + +.video-container { + position: relative; + padding-bottom: 56.25%; + padding-top: 30px; + height: 0; + overflow: hidden; } + .video-container.no-controls { + padding-top: 0; } + .video-container iframe, .video-container object, .video-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +.progress { + position: relative; + height: 4px; + display: block; + width: 100%; + background-color: #acece6; + border-radius: 2px; + margin: 0.5rem 0 1rem 0; + overflow: hidden; } + .progress .determinate { + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + background-color: #26a69a; + -webkit-transition: width .3s linear; + -moz-transition: width .3s linear; + -o-transition: width .3s linear; + -ms-transition: width .3s linear; + transition: width .3s linear; } + .progress .indeterminate { + background-color: #26a69a; } + .progress .indeterminate:before { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -moz-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -ms-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -o-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } + .progress .indeterminate:after { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -moz-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -ms-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -o-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation-delay: 1.15s; + -moz-animation-delay: 1.15s; + -ms-animation-delay: 1.15s; + -o-animation-delay: 1.15s; + animation-delay: 1.15s; } + +@-webkit-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + + 60% { + left: 100%; + right: -90%; } + + 100% { + left: 100%; + right: -90%; } } + +@-moz-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + + 60% { + left: 100%; + right: -90%; } + + 100% { + left: 100%; + right: -90%; } } + +@keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + + 60% { + left: 100%; + right: -90%; } + + 100% { + left: 100%; + right: -90%; } } + +@-webkit-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + + 60% { + left: 107%; + right: -8%; } + + 100% { + left: 107%; + right: -8%; } } + +@-moz-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + + 60% { + left: 107%; + right: -8%; } + + 100% { + left: 107%; + right: -8%; } } + +@keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + + 60% { + left: 107%; + right: -8%; } + + 100% { + left: 107%; + right: -8%; } } + +/******************* + Utility Classes +*******************/ +.hide { + display: none !important; } + +.left-align { + text-align: left; } + +.right-align { + text-align: right; } + +.center, .center-align { + text-align: center; } + +.left { + float: left !important; } + +.right { + float: right !important; } + +.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; } + +.circle { + border-radius: 50%; } + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; } + +.truncate { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +.no-padding { + padding: 0 !important; } + +@font-face { + font-family: "Material-Design-Icons"; + src: url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"), url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"), url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"), url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"), url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg"); + font-weight: normal; + font-style: normal; } + +[class^="mdi-"], [class*="mdi-"] { + speak: none; + display: inline-block; + font-family: "Material-Design-Icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-rendering: auto; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); } + [class^="mdi-"]:before, [class*="mdi-"]:before { + display: inline-block; + speak: none; + text-decoration: inherit; } + [class^="mdi-"].pull-left, [class*="mdi-"].pull-left { + margin-right: .3em; } + [class^="mdi-"].pull-right, [class*="mdi-"].pull-right { + margin-left: .3em; } + [class^="mdi-"].mdi-lg:before, [class^="mdi-"].mdi-lg:after, [class*="mdi-"].mdi-lg:before, [class*="mdi-"].mdi-lg:after { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; } + [class^="mdi-"].mdi-2x:before, [class^="mdi-"].mdi-2x:after, [class*="mdi-"].mdi-2x:before, [class*="mdi-"].mdi-2x:after { + font-size: 2em; } + [class^="mdi-"].mdi-3x:before, [class^="mdi-"].mdi-3x:after, [class*="mdi-"].mdi-3x:before, [class*="mdi-"].mdi-3x:after { + font-size: 3em; } + [class^="mdi-"].mdi-4x:before, [class^="mdi-"].mdi-4x:after, [class*="mdi-"].mdi-4x:before, [class*="mdi-"].mdi-4x:after { + font-size: 4em; } + [class^="mdi-"].mdi-5x:before, [class^="mdi-"].mdi-5x:after, [class*="mdi-"].mdi-5x:before, [class*="mdi-"].mdi-5x:after { + font-size: 5em; } + +[class^="mdi-device-signal-cellular-"]:after, [class^="mdi-device-battery-"]:after, [class^="mdi-device-battery-charging-"]:after, [class^="mdi-device-signal-cellular-connected-no-internet-"]:after, [class^="mdi-device-signal-wifi-"]:after, [class^="mdi-device-signal-wifi-statusbar-not-connected"]:after, .mdi-device-network-wifi:after { + opacity: .3; + position: absolute; + left: 0; + top: 0; + z-index: 1; + display: inline-block; + speak: none; + text-decoration: inherit; } + +[class^="mdi-device-signal-cellular-"]:after { + content: "\e758"; } + +[class^="mdi-device-battery-"]:after { + content: "\e735"; } + +[class^="mdi-device-battery-charging-"]:after { + content: "\e733"; } + +[class^="mdi-device-signal-cellular-connected-no-internet-"]:after { + content: "\e75d"; } + +[class^="mdi-device-signal-wifi-"]:after, .mdi-device-network-wifi:after { + content: "\e765"; } + +[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after { + content: "\e8f7"; } + +.mdi-device-signal-cellular-off:after, .mdi-device-signal-cellular-null:after, .mdi-device-signal-cellular-no-sim:after, .mdi-device-signal-wifi-off:after, .mdi-device-signal-wifi-4-bar:after, .mdi-device-signal-cellular-4-bar:after, .mdi-device-battery-alert:after, .mdi-device-signal-cellular-connected-no-internet-4-bar:after, .mdi-device-battery-std:after, .mdi-device-battery-full .mdi-device-battery-unknown:after { + content: ""; } + +.mdi-fw { + width: 1.28571429em; + text-align: center; } + +.mdi-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; } + +.mdi-ul > li { + position: relative; } + +.mdi-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; } + +.mdi-li.mdi-lg { + left: -1.85714286em; } + +.mdi-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; } + +.mdi-spin { + -webkit-animation: mdi-spin 2s infinite linear; + animation: mdi-spin 2s infinite linear; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +.mdi-pulse { + -webkit-animation: mdi-spin 1s steps(8) infinite; + animation: mdi-spin 1s steps(8) infinite; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +@-webkit-keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } + +@keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } + +.mdi-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } + +.mdi-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } + +.mdi-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } + +.mdi-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.mdi-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + +:root .mdi-rotate-90, :root .mdi-rotate-180, :root .mdi-rotate-270, :root .mdi-flip-horizontal, :root .mdi-flip-vertical { + filter: none; } + +.mdi-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; } + +.mdi-stack-1x, .mdi-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; } + +.mdi-stack-1x { + line-height: inherit; } + +.mdi-stack-2x { + font-size: 2em; } + +.mdi-inverse { + color: #ffffff; } + +/* Start Icons */ +.mdi-action-3d-rotation:before { + content: "\e600"; } + +.mdi-action-accessibility:before { + content: "\e601"; } + +.mdi-action-account-balance-wallet:before { + content: "\e602"; } + +.mdi-action-account-balance: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-add:before { + content: "\e608"; } + +.mdi-action-alarm-off:before { + content: "\e609"; } + +.mdi-action-alarm-on:before { + content: "\e60a"; } + +.mdi-action-alarm: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-ind:before { + content: "\e610"; } + +.mdi-action-assignment-late:before { + content: "\e611"; } + +.mdi-action-assignment-return:before { + content: "\e612"; } + +.mdi-action-assignment-returned:before { + content: "\e613"; } + +.mdi-action-assignment-turned-in:before { + content: "\e614"; } + +.mdi-action-assignment:before { + content: "\e615"; } + +.mdi-action-autorenew:before { + content: "\e616"; } + +.mdi-action-backup:before { + content: "\e617"; } + +.mdi-action-book:before { + content: "\e618"; } + +.mdi-action-bookmark-outline:before { + content: "\e619"; } + +.mdi-action-bookmark:before { + content: "\e61a"; } + +.mdi-action-bug-report:before { + content: "\e61b"; } + +.mdi-action-cached:before { + content: "\e61c"; } + +.mdi-action-check-circle:before { + content: "\e61d"; } + +.mdi-action-class:before { + content: "\e61e"; } + +.mdi-action-credit-card:before { + content: "\e61f"; } + +.mdi-action-dashboard:before { + content: "\e620"; } + +.mdi-action-delete:before { + content: "\e621"; } + +.mdi-action-description:before { + content: "\e622"; } + +.mdi-action-dns:before { + content: "\e623"; } + +.mdi-action-done-all:before { + content: "\e624"; } + +.mdi-action-done:before { + content: "\e625"; } + +.mdi-action-event:before { + content: "\e626"; } + +.mdi-action-exit-to-app:before { + content: "\e627"; } + +.mdi-action-explore:before { + content: "\e628"; } + +.mdi-action-extension:before { + content: "\e629"; } + +.mdi-action-face-unlock:before { + content: "\e62a"; } + +.mdi-action-favorite-outline:before { + content: "\e62b"; } + +.mdi-action-favorite:before { + content: "\e62c"; } + +.mdi-action-find-in-page:before { + content: "\e62d"; } + +.mdi-action-find-replace:before { + content: "\e62e"; } + +.mdi-action-flip-to-back:before { + content: "\e62f"; } + +.mdi-action-flip-to-front:before { + content: "\e630"; } + +.mdi-action-get-app:before { + content: "\e631"; } + +.mdi-action-grade:before { + content: "\e632"; } + +.mdi-action-group-work:before { + content: "\e633"; } + +.mdi-action-help:before { + content: "\e634"; } + +.mdi-action-highlight-remove:before { + content: "\e635"; } + +.mdi-action-history:before { + content: "\e636"; } + +.mdi-action-home:before { + content: "\e637"; } + +.mdi-action-https:before { + content: "\e638"; } + +.mdi-action-info-outline:before { + content: "\e639"; } + +.mdi-action-info:before { + content: "\e63a"; } + +.mdi-action-input:before { + content: "\e63b"; } + +.mdi-action-invert-colors:before { + content: "\e63c"; } + +.mdi-action-label-outline:before { + content: "\e63d"; } + +.mdi-action-label:before { + content: "\e63e"; } + +.mdi-action-language:before { + content: "\e63f"; } + +.mdi-action-launch:before { + content: "\e640"; } + +.mdi-action-list:before { + content: "\e641"; } + +.mdi-action-lock-open:before { + content: "\e642"; } + +.mdi-action-lock-outline:before { + content: "\e643"; } + +.mdi-action-lock:before { + content: "\e644"; } + +.mdi-action-loyalty:before { + content: "\e645"; } + +.mdi-action-markunread-mailbox:before { + content: "\e646"; } + +.mdi-action-note-add:before { + content: "\e647"; } + +.mdi-action-open-in-browser:before { + content: "\e648"; } + +.mdi-action-open-in-new:before { + content: "\e649"; } + +.mdi-action-open-with:before { + content: "\e64a"; } + +.mdi-action-pageview:before { + content: "\e64b"; } + +.mdi-action-payment:before { + content: "\e64c"; } + +.mdi-action-perm-camera-mic:before { + content: "\e64d"; } + +.mdi-action-perm-contact-cal:before { + content: "\e64e"; } + +.mdi-action-perm-data-setting:before { + content: "\e64f"; } + +.mdi-action-perm-device-info:before { + content: "\e650"; } + +.mdi-action-perm-identity:before { + content: "\e651"; } + +.mdi-action-perm-media:before { + content: "\e652"; } + +.mdi-action-perm-phone-msg:before { + content: "\e653"; } + +.mdi-action-perm-scan-wifi:before { + content: "\e654"; } + +.mdi-action-picture-in-picture:before { + content: "\e655"; } + +.mdi-action-polymer:before { + content: "\e656"; } + +.mdi-action-print:before { + content: "\e657"; } + +.mdi-action-query-builder:before { + content: "\e658"; } + +.mdi-action-question-answer:before { + content: "\e659"; } + +.mdi-action-receipt:before { + content: "\e65a"; } + +.mdi-action-redeem:before { + content: "\e65b"; } + +.mdi-action-reorder:before { + content: "\e65c"; } + +.mdi-action-report-problem:before { + content: "\e65d"; } + +.mdi-action-restore:before { + content: "\e65e"; } + +.mdi-action-room:before { + content: "\e65f"; } + +.mdi-action-schedule:before { + content: "\e660"; } + +.mdi-action-search:before { + content: "\e661"; } + +.mdi-action-settings-applications:before { + content: "\e662"; } + +.mdi-action-settings-backup-restore:before { + content: "\e663"; } + +.mdi-action-settings-bluetooth:before { + content: "\e664"; } + +.mdi-action-settings-cell:before { + content: "\e665"; } + +.mdi-action-settings-display:before { + content: "\e666"; } + +.mdi-action-settings-ethernet:before { + content: "\e667"; } + +.mdi-action-settings-input-antenna:before { + content: "\e668"; } + +.mdi-action-settings-input-component:before { + content: "\e669"; } + +.mdi-action-settings-input-composite:before { + content: "\e66a"; } + +.mdi-action-settings-input-hdmi:before { + content: "\e66b"; } + +.mdi-action-settings-input-svideo:before { + content: "\e66c"; } + +.mdi-action-settings-overscan:before { + content: "\e66d"; } + +.mdi-action-settings-phone:before { + content: "\e66e"; } + +.mdi-action-settings-power:before { + content: "\e66f"; } + +.mdi-action-settings-remote:before { + content: "\e670"; } + +.mdi-action-settings-voice:before { + content: "\e671"; } + +.mdi-action-settings:before { + content: "\e672"; } + +.mdi-action-shop-two:before { + content: "\e673"; } + +.mdi-action-shop:before { + content: "\e674"; } + +.mdi-action-shopping-basket:before { + content: "\e675"; } + +.mdi-action-shopping-cart:before { + content: "\e676"; } + +.mdi-action-speaker-notes:before { + content: "\e677"; } + +.mdi-action-spellcheck:before { + content: "\e678"; } + +.mdi-action-star-rate:before { + content: "\e679"; } + +.mdi-action-stars:before { + content: "\e67a"; } + +.mdi-action-store:before { + content: "\e67b"; } + +.mdi-action-subject:before { + content: "\e67c"; } + +.mdi-action-supervisor-account:before { + content: "\e67d"; } + +.mdi-action-swap-horiz:before { + content: "\e67e"; } + +.mdi-action-swap-vert-circle:before { + content: "\e67f"; } + +.mdi-action-swap-vert:before { + content: "\e680"; } + +.mdi-action-system-update-tv:before { + content: "\e681"; } + +.mdi-action-tab-unselected:before { + content: "\e682"; } + +.mdi-action-tab:before { + content: "\e683"; } + +.mdi-action-theaters:before { + content: "\e684"; } + +.mdi-action-thumb-down:before { + content: "\e685"; } + +.mdi-action-thumb-up:before { + content: "\e686"; } + +.mdi-action-thumbs-up-down:before { + content: "\e687"; } + +.mdi-action-toc:before { + content: "\e688"; } + +.mdi-action-today:before { + content: "\e689"; } + +.mdi-action-track-changes:before { + content: "\e68a"; } + +.mdi-action-translate:before { + content: "\e68b"; } + +.mdi-action-trending-down:before { + content: "\e68c"; } + +.mdi-action-trending-neutral:before { + content: "\e68d"; } + +.mdi-action-trending-up:before { + content: "\e68e"; } + +.mdi-action-turned-in-not:before { + content: "\e68f"; } + +.mdi-action-turned-in:before { + content: "\e690"; } + +.mdi-action-verified-user:before { + content: "\e691"; } + +.mdi-action-view-agenda:before { + content: "\e692"; } + +.mdi-action-view-array:before { + content: "\e693"; } + +.mdi-action-view-carousel:before { + content: "\e694"; } + +.mdi-action-view-column:before { + content: "\e695"; } + +.mdi-action-view-day:before { + content: "\e696"; } + +.mdi-action-view-headline:before { + content: "\e697"; } + +.mdi-action-view-list:before { + content: "\e698"; } + +.mdi-action-view-module:before { + content: "\e699"; } + +.mdi-action-view-quilt:before { + content: "\e69a"; } + +.mdi-action-view-stream:before { + content: "\e69b"; } + +.mdi-action-view-week:before { + content: "\e69c"; } + +.mdi-action-visibility-off:before { + content: "\e69d"; } + +.mdi-action-visibility:before { + content: "\e69e"; } + +.mdi-action-wallet-giftcard:before { + content: "\e69f"; } + +.mdi-action-wallet-membership:before { + content: "\e6a0"; } + +.mdi-action-wallet-travel:before { + content: "\e6a1"; } + +.mdi-action-work:before { + content: "\e6a2"; } + +.mdi-alert-error:before { + content: "\e6a3"; } + +.mdi-alert-warning:before { + content: "\e6a4"; } + +.mdi-av-album:before { + content: "\e6a5"; } + +.mdi-av-closed-caption:before { + content: "\e6a6"; } + +.mdi-av-equalizer:before { + content: "\e6a7"; } + +.mdi-av-explicit:before { + content: "\e6a8"; } + +.mdi-av-fast-forward:before { + content: "\e6a9"; } + +.mdi-av-fast-rewind:before { + content: "\e6aa"; } + +.mdi-av-games:before { + content: "\e6ab"; } + +.mdi-av-hearing:before { + content: "\e6ac"; } + +.mdi-av-high-quality:before { + content: "\e6ad"; } + +.mdi-av-loop:before { + content: "\e6ae"; } + +.mdi-av-mic-none:before { + content: "\e6af"; } + +.mdi-av-mic-off:before { + content: "\e6b0"; } + +.mdi-av-mic:before { + content: "\e6b1"; } + +.mdi-av-movie:before { + content: "\e6b2"; } + +.mdi-av-my-library-add:before { + content: "\e6b3"; } + +.mdi-av-my-library-books:before { + content: "\e6b4"; } + +.mdi-av-my-library-music:before { + content: "\e6b5"; } + +.mdi-av-new-releases:before { + content: "\e6b6"; } + +.mdi-av-not-interested:before { + content: "\e6b7"; } + +.mdi-av-pause-circle-fill:before { + content: "\e6b8"; } + +.mdi-av-pause-circle-outline:before { + content: "\e6b9"; } + +.mdi-av-pause:before { + content: "\e6ba"; } + +.mdi-av-play-arrow:before { + content: "\e6bb"; } + +.mdi-av-play-circle-fill:before { + content: "\e6bc"; } + +.mdi-av-play-circle-outline:before { + content: "\e6bd"; } + +.mdi-av-play-shopping-bag:before { + content: "\e6be"; } + +.mdi-av-playlist-add:before { + content: "\e6bf"; } + +.mdi-av-queue-music:before { + content: "\e6c0"; } + +.mdi-av-queue:before { + content: "\e6c1"; } + +.mdi-av-radio:before { + content: "\e6c2"; } + +.mdi-av-recent-actors:before { + content: "\e6c3"; } + +.mdi-av-repeat-one:before { + content: "\e6c4"; } + +.mdi-av-repeat:before { + content: "\e6c5"; } + +.mdi-av-replay:before { + content: "\e6c6"; } + +.mdi-av-shuffle:before { + content: "\e6c7"; } + +.mdi-av-skip-next:before { + content: "\e6c8"; } + +.mdi-av-skip-previous:before { + content: "\e6c9"; } + +.mdi-av-snooze:before { + content: "\e6ca"; } + +.mdi-av-stop:before { + content: "\e6cb"; } + +.mdi-av-subtitles:before { + content: "\e6cc"; } + +.mdi-av-surround-sound:before { + content: "\e6cd"; } + +.mdi-av-timer:before { + content: "\e6ce"; } + +.mdi-av-video-collection:before { + content: "\e6cf"; } + +.mdi-av-videocam-off:before { + content: "\e6d0"; } + +.mdi-av-videocam:before { + content: "\e6d1"; } + +.mdi-av-volume-down:before { + content: "\e6d2"; } + +.mdi-av-volume-mute:before { + content: "\e6d3"; } + +.mdi-av-volume-off:before { + content: "\e6d4"; } + +.mdi-av-volume-up:before { + content: "\e6d5"; } + +.mdi-av-web:before { + content: "\e6d6"; } + +.mdi-communication-business:before { + content: "\e6d7"; } + +.mdi-communication-call-end:before { + content: "\e6d8"; } + +.mdi-communication-call-made:before { + content: "\e6d9"; } + +.mdi-communication-call-merge:before { + content: "\e6da"; } + +.mdi-communication-call-missed:before { + content: "\e6db"; } + +.mdi-communication-call-received:before { + content: "\e6dc"; } + +.mdi-communication-call-split:before { + content: "\e6dd"; } + +.mdi-communication-call:before { + content: "\e6de"; } + +.mdi-communication-chat:before { + content: "\e6df"; } + +.mdi-communication-clear-all:before { + content: "\e6e0"; } + +.mdi-communication-comment:before { + content: "\e6e1"; } + +.mdi-communication-contacts:before { + content: "\e6e2"; } + +.mdi-communication-dialer-sip:before { + content: "\e6e3"; } + +.mdi-communication-dialpad:before { + content: "\e6e4"; } + +.mdi-communication-dnd-on:before { + content: "\e6e5"; } + +.mdi-communication-email:before { + content: "\e6e6"; } + +.mdi-communication-forum:before { + content: "\e6e7"; } + +.mdi-communication-import-export:before { + content: "\e6e8"; } + +.mdi-communication-invert-colors-off:before { + content: "\e6e9"; } + +.mdi-communication-invert-colors-on:before { + content: "\e6ea"; } + +.mdi-communication-live-help:before { + content: "\e6eb"; } + +.mdi-communication-location-off:before { + content: "\e6ec"; } + +.mdi-communication-location-on:before { + content: "\e6ed"; } + +.mdi-communication-message:before { + content: "\e6ee"; } + +.mdi-communication-messenger:before { + content: "\e6ef"; } + +.mdi-communication-no-sim:before { + content: "\e6f0"; } + +.mdi-communication-phone:before { + content: "\e6f1"; } + +.mdi-communication-portable-wifi-off:before { + content: "\e6f2"; } + +.mdi-communication-quick-contacts-dialer:before { + content: "\e6f3"; } + +.mdi-communication-quick-contacts-mail:before { + content: "\e6f4"; } + +.mdi-communication-ring-volume:before { + content: "\e6f5"; } + +.mdi-communication-stay-current-landscape:before { + content: "\e6f6"; } + +.mdi-communication-stay-current-portrait:before { + content: "\e6f7"; } + +.mdi-communication-stay-primary-landscape:before { + content: "\e6f8"; } + +.mdi-communication-stay-primary-portrait:before { + content: "\e6f9"; } + +.mdi-communication-swap-calls:before { + content: "\e6fa"; } + +.mdi-communication-textsms:before { + content: "\e6fb"; } + +.mdi-communication-voicemail:before { + content: "\e6fc"; } + +.mdi-communication-vpn-key:before { + content: "\e6fd"; } + +.mdi-content-add-box:before { + content: "\e6fe"; } + +.mdi-content-add-circle-outline:before { + content: "\e6ff"; } + +.mdi-content-add-circle:before { + content: "\e700"; } + +.mdi-content-add:before { + content: "\e701"; } + +.mdi-content-archive:before { + content: "\e702"; } + +.mdi-content-backspace:before { + content: "\e703"; } + +.mdi-content-block:before { + content: "\e704"; } + +.mdi-content-clear:before { + content: "\e705"; } + +.mdi-content-content-copy:before { + content: "\e706"; } + +.mdi-content-content-cut:before { + content: "\e707"; } + +.mdi-content-content-paste:before { + content: "\e708"; } + +.mdi-content-create:before { + content: "\e709"; } + +.mdi-content-drafts:before { + content: "\e70a"; } + +.mdi-content-filter-list:before { + content: "\e70b"; } + +.mdi-content-flag:before { + content: "\e70c"; } + +.mdi-content-forward:before { + content: "\e70d"; } + +.mdi-content-gesture:before { + content: "\e70e"; } + +.mdi-content-inbox:before { + content: "\e70f"; } + +.mdi-content-link:before { + content: "\e710"; } + +.mdi-content-mail:before { + content: "\e711"; } + +.mdi-content-markunread:before { + content: "\e712"; } + +.mdi-content-redo:before { + content: "\e713"; } + +.mdi-content-remove-circle-outline:before { + content: "\e714"; } + +.mdi-content-remove-circle:before { + content: "\e715"; } + +.mdi-content-remove:before { + content: "\e716"; } + +.mdi-content-reply-all:before { + content: "\e717"; } + +.mdi-content-reply:before { + content: "\e718"; } + +.mdi-content-report:before { + content: "\e719"; } + +.mdi-content-save:before { + content: "\e71a"; } + +.mdi-content-select-all:before { + content: "\e71b"; } + +.mdi-content-send:before { + content: "\e71c"; } + +.mdi-content-sort:before { + content: "\e71d"; } + +.mdi-content-text-format:before { + content: "\e71e"; } + +.mdi-content-undo:before { + content: "\e71f"; } + +.mdi-editor-attach-file:before { + content: "\e776"; } + +.mdi-editor-attach-money:before { + content: "\e777"; } + +.mdi-editor-border-all:before { + content: "\e778"; } + +.mdi-editor-border-bottom:before { + content: "\e779"; } + +.mdi-editor-border-clear:before { + content: "\e77a"; } + +.mdi-editor-border-color:before { + content: "\e77b"; } + +.mdi-editor-border-horizontal:before { + content: "\e77c"; } + +.mdi-editor-border-inner:before { + content: "\e77d"; } + +.mdi-editor-border-left:before { + content: "\e77e"; } + +.mdi-editor-border-outer:before { + content: "\e77f"; } + +.mdi-editor-border-right:before { + content: "\e780"; } + +.mdi-editor-border-style:before { + content: "\e781"; } + +.mdi-editor-border-top:before { + content: "\e782"; } + +.mdi-editor-border-vertical:before { + content: "\e783"; } + +.mdi-editor-format-align-center:before { + content: "\e784"; } + +.mdi-editor-format-align-justify:before { + content: "\e785"; } + +.mdi-editor-format-align-left:before { + content: "\e786"; } + +.mdi-editor-format-align-right:before { + content: "\e787"; } + +.mdi-editor-format-bold:before { + content: "\e788"; } + +.mdi-editor-format-clear:before { + content: "\e789"; } + +.mdi-editor-format-color-fill:before { + content: "\e78a"; } + +.mdi-editor-format-color-reset:before { + content: "\e78b"; } + +.mdi-editor-format-color-text:before { + content: "\e78c"; } + +.mdi-editor-format-indent-decrease:before { + content: "\e78d"; } + +.mdi-editor-format-indent-increase:before { + content: "\e78e"; } + +.mdi-editor-format-italic:before { + content: "\e78f"; } + +.mdi-editor-format-line-spacing:before { + content: "\e790"; } + +.mdi-editor-format-list-bulleted:before { + content: "\e791"; } + +.mdi-editor-format-list-numbered:before { + content: "\e792"; } + +.mdi-editor-format-paint:before { + content: "\e793"; } + +.mdi-editor-format-quote:before { + content: "\e794"; } + +.mdi-editor-format-size:before { + content: "\e795"; } + +.mdi-editor-format-strikethrough:before { + content: "\e796"; } + +.mdi-editor-format-textdirection-l-to-r:before { + content: "\e797"; } + +.mdi-editor-format-textdirection-r-to-l:before { + content: "\e798"; } + +.mdi-editor-format-underline:before { + content: "\e799"; } + +.mdi-editor-functions:before { + content: "\e79a"; } + +.mdi-editor-insert-chart:before { + content: "\e79b"; } + +.mdi-editor-insert-comment:before { + content: "\e79c"; } + +.mdi-editor-insert-drive-file:before { + content: "\e79d"; } + +.mdi-editor-insert-emoticon:before { + content: "\e79e"; } + +.mdi-editor-insert-invitation:before { + content: "\e79f"; } + +.mdi-editor-insert-link:before { + content: "\e7a0"; } + +.mdi-editor-insert-photo:before { + content: "\e7a1"; } + +.mdi-editor-merge-type:before { + content: "\e7a2"; } + +.mdi-editor-mode-comment:before { + content: "\e7a3"; } + +.mdi-editor-mode-edit:before { + content: "\e7a4"; } + +.mdi-editor-publish:before { + content: "\e7a5"; } + +.mdi-editor-vertical-align-bottom:before { + content: "\e7a6"; } + +.mdi-editor-vertical-align-center:before { + content: "\e7a7"; } + +.mdi-editor-vertical-align-top:before { + content: "\e7a8"; } + +.mdi-editor-wrap-text:before { + content: "\e7a9"; } + +.mdi-file-attachment:before { + content: "\e7aa"; } + +.mdi-file-cloud-circle:before { + content: "\e7ab"; } + +.mdi-file-cloud-done:before { + content: "\e7ac"; } + +.mdi-file-cloud-download:before { + content: "\e7ad"; } + +.mdi-file-cloud-off:before { + content: "\e7ae"; } + +.mdi-file-cloud-queue:before { + content: "\e7af"; } + +.mdi-file-cloud-upload:before { + content: "\e7b0"; } + +.mdi-file-cloud:before { + content: "\e7b1"; } + +.mdi-file-file-download:before { + content: "\e7b2"; } + +.mdi-file-file-upload:before { + content: "\e7b3"; } + +.mdi-file-folder-open:before { + content: "\e7b4"; } + +.mdi-file-folder-shared:before { + content: "\e7b5"; } + +.mdi-file-folder:before { + content: "\e7b6"; } + +.mdi-device-access-alarm:before { + content: "\e720"; } + +.mdi-device-access-alarms:before { + content: "\e721"; } + +.mdi-device-access-time:before { + content: "\e722"; } + +.mdi-device-add-alarm:before { + content: "\e723"; } + +.mdi-device-airplanemode-off:before { + content: "\e724"; } + +.mdi-device-airplanemode-on:before { + content: "\e725"; } + +.mdi-device-battery-20:before { + content: "\e726"; } + +.mdi-device-battery-30:before { + content: "\e727"; } + +.mdi-device-battery-50:before { + content: "\e728"; } + +.mdi-device-battery-60:before { + content: "\e729"; } + +.mdi-device-battery-80:before { + content: "\e72a"; } + +.mdi-device-battery-90:before { + content: "\e72b"; } + +.mdi-device-battery-alert:before { + content: "\e72c"; } + +.mdi-device-battery-charging-20:before { + content: "\e72d"; } + +.mdi-device-battery-charging-30:before { + content: "\e72e"; } + +.mdi-device-battery-charging-50:before { + content: "\e72f"; } + +.mdi-device-battery-charging-60:before { + content: "\e730"; } + +.mdi-device-battery-charging-80:before { + content: "\e731"; } + +.mdi-device-battery-charging-90:before { + content: "\e732"; } + +.mdi-device-battery-charging-full:before { + content: "\e733"; } + +.mdi-device-battery-full:before { + content: "\e734"; } + +.mdi-device-battery-std:before { + content: "\e735"; } + +.mdi-device-battery-unknown:before { + content: "\e736"; } + +.mdi-device-bluetooth-connected:before { + content: "\e737"; } + +.mdi-device-bluetooth-disabled:before { + content: "\e738"; } + +.mdi-device-bluetooth-searching:before { + content: "\e739"; } + +.mdi-device-bluetooth:before { + content: "\e73a"; } + +.mdi-device-brightness-auto:before { + content: "\e73b"; } + +.mdi-device-brightness-high:before { + content: "\e73c"; } + +.mdi-device-brightness-low:before { + content: "\e73d"; } + +.mdi-device-brightness-medium:before { + content: "\e73e"; } + +.mdi-device-data-usage:before { + content: "\e73f"; } + +.mdi-device-developer-mode:before { + content: "\e740"; } + +.mdi-device-devices:before { + content: "\e741"; } + +.mdi-device-dvr:before { + content: "\e742"; } + +.mdi-device-gps-fixed:before { + content: "\e743"; } + +.mdi-device-gps-not-fixed:before { + content: "\e744"; } + +.mdi-device-gps-off:before { + content: "\e745"; } + +.mdi-device-location-disabled:before { + content: "\e746"; } + +.mdi-device-location-searching:before { + content: "\e747"; } + +.mdi-device-multitrack-audio:before { + content: "\e748"; } + +.mdi-device-network-cell:before { + content: "\e749"; } + +.mdi-device-network-wifi:before { + content: "\e74a"; } + +.mdi-device-nfc:before { + content: "\e74b"; } + +.mdi-device-now-wallpaper:before { + content: "\e74c"; } + +.mdi-device-now-widgets:before { + content: "\e74d"; } + +.mdi-device-screen-lock-landscape:before { + content: "\e74e"; } + +.mdi-device-screen-lock-portrait:before { + content: "\e74f"; } + +.mdi-device-screen-lock-rotation:before { + content: "\e750"; } + +.mdi-device-screen-rotation:before { + content: "\e751"; } + +.mdi-device-sd-storage:before { + content: "\e752"; } + +.mdi-device-settings-system-daydream:before { + content: "\e753"; } + +.mdi-device-signal-cellular-0-bar:before { + content: "\e754"; } + +.mdi-device-signal-cellular-1-bar:before { + content: "\e755"; } + +.mdi-device-signal-cellular-2-bar:before { + content: "\e756"; } + +.mdi-device-signal-cellular-3-bar:before { + content: "\e757"; } + +.mdi-device-signal-cellular-4-bar:before { + content: "\e758"; } + +.mdi-signal-wifi-statusbar-connected-no-internet-after:before { + content: "\e8f6"; } + +.mdi-device-signal-cellular-connected-no-internet-0-bar:before { + content: "\e759"; } + +.mdi-device-signal-cellular-connected-no-internet-1-bar:before { + content: "\e75a"; } + +.mdi-device-signal-cellular-connected-no-internet-2-bar:before { + content: "\e75b"; } + +.mdi-device-signal-cellular-connected-no-internet-3-bar:before { + content: "\e75c"; } + +.mdi-device-signal-cellular-connected-no-internet-4-bar:before { + content: "\e75d"; } + +.mdi-device-signal-cellular-no-sim:before { + content: "\e75e"; } + +.mdi-device-signal-cellular-null:before { + content: "\e75f"; } + +.mdi-device-signal-cellular-off:before { + content: "\e760"; } + +.mdi-device-signal-wifi-0-bar:before { + content: "\e761"; } + +.mdi-device-signal-wifi-1-bar:before { + content: "\e762"; } + +.mdi-device-signal-wifi-2-bar:before { + content: "\e763"; } + +.mdi-device-signal-wifi-3-bar:before { + content: "\e764"; } + +.mdi-device-signal-wifi-4-bar:before { + content: "\e765"; } + +.mdi-device-signal-wifi-off:before { + content: "\e766"; } + +.mdi-device-signal-wifi-statusbar-1-bar:before { + content: "\e767"; } + +.mdi-device-signal-wifi-statusbar-2-bar:before { + content: "\e768"; } + +.mdi-device-signal-wifi-statusbar-3-bar:before { + content: "\e769"; } + +.mdi-device-signal-wifi-statusbar-4-bar:before { + content: "\e76a"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-:before { + content: "\e76b"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet:before { + content: "\e76f"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before { + content: "\e76c"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before { + content: "\e76d"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before { + content: "\e76e"; } + +.mdi-signal-wifi-statusbar-not-connected-after:before { + content: "\e8f7"; } + +.mdi-device-signal-wifi-statusbar-not-connected:before { + content: "\e770"; } + +.mdi-device-signal-wifi-statusbar-null:before { + content: "\e771"; } + +.mdi-device-storage:before { + content: "\e772"; } + +.mdi-device-usb:before { + content: "\e773"; } + +.mdi-device-wifi-lock:before { + content: "\e774"; } + +.mdi-device-wifi-tethering:before { + content: "\e775"; } + +.mdi-hardware-cast-connected:before { + content: "\e7b7"; } + +.mdi-hardware-cast:before { + content: "\e7b8"; } + +.mdi-hardware-computer:before { + content: "\e7b9"; } + +.mdi-hardware-desktop-mac:before { + content: "\e7ba"; } + +.mdi-hardware-desktop-windows:before { + content: "\e7bb"; } + +.mdi-hardware-dock:before { + content: "\e7bc"; } + +.mdi-hardware-gamepad:before { + content: "\e7bd"; } + +.mdi-hardware-headset-mic:before { + content: "\e7be"; } + +.mdi-hardware-headset:before { + content: "\e7bf"; } + +.mdi-hardware-keyboard-alt:before { + content: "\e7c0"; } + +.mdi-hardware-keyboard-arrow-down:before { + content: "\e7c1"; } + +.mdi-hardware-keyboard-arrow-left:before { + content: "\e7c2"; } + +.mdi-hardware-keyboard-arrow-right:before { + content: "\e7c3"; } + +.mdi-hardware-keyboard-arrow-up:before { + content: "\e7c4"; } + +.mdi-hardware-keyboard-backspace:before { + content: "\e7c5"; } + +.mdi-hardware-keyboard-capslock:before { + content: "\e7c6"; } + +.mdi-hardware-keyboard-control:before { + content: "\e7c7"; } + +.mdi-hardware-keyboard-hide:before { + content: "\e7c8"; } + +.mdi-hardware-keyboard-return:before { + content: "\e7c9"; } + +.mdi-hardware-keyboard-tab:before { + content: "\e7ca"; } + +.mdi-hardware-keyboard-voice:before { + content: "\e7cb"; } + +.mdi-hardware-keyboard:before { + content: "\e7cc"; } + +.mdi-hardware-laptop-chromebook:before { + content: "\e7cd"; } + +.mdi-hardware-laptop-mac:before { + content: "\e7ce"; } + +.mdi-hardware-laptop-windows:before { + content: "\e7cf"; } + +.mdi-hardware-laptop:before { + content: "\e7d0"; } + +.mdi-hardware-memory:before { + content: "\e7d1"; } + +.mdi-hardware-mouse:before { + content: "\e7d2"; } + +.mdi-hardware-phone-android:before { + content: "\e7d3"; } + +.mdi-hardware-phone-iphone:before { + content: "\e7d4"; } + +.mdi-hardware-phonelink-off:before { + content: "\e7d5"; } + +.mdi-hardware-phonelink:before { + content: "\e7d6"; } + +.mdi-hardware-security:before { + content: "\e7d7"; } + +.mdi-hardware-sim-card:before { + content: "\e7d8"; } + +.mdi-hardware-smartphone:before { + content: "\e7d9"; } + +.mdi-hardware-speaker:before { + content: "\e7da"; } + +.mdi-hardware-tablet-android:before { + content: "\e7db"; } + +.mdi-hardware-tablet-mac:before { + content: "\e7dc"; } + +.mdi-hardware-tablet:before { + content: "\e7dd"; } + +.mdi-hardware-tv:before { + content: "\e7de"; } + +.mdi-hardware-watch:before { + content: "\e7df"; } + +.mdi-image-add-to-photos:before { + content: "\e7e0"; } + +.mdi-image-adjust:before { + content: "\e7e1"; } + +.mdi-image-assistant-photo:before { + content: "\e7e2"; } + +.mdi-image-audiotrack:before { + content: "\e7e3"; } + +.mdi-image-blur-circular:before { + content: "\e7e4"; } + +.mdi-image-blur-linear:before { + content: "\e7e5"; } + +.mdi-image-blur-off:before { + content: "\e7e6"; } + +.mdi-image-blur-on:before { + content: "\e7e7"; } + +.mdi-image-brightness-1:before { + content: "\e7e8"; } + +.mdi-image-brightness-2:before { + content: "\e7e9"; } + +.mdi-image-brightness-3:before { + content: "\e7ea"; } + +.mdi-image-brightness-4:before { + content: "\e7eb"; } + +.mdi-image-brightness-5:before { + content: "\e7ec"; } + +.mdi-image-brightness-6:before { + content: "\e7ed"; } + +.mdi-image-brightness-7:before { + content: "\e7ee"; } + +.mdi-image-brush:before { + content: "\e7ef"; } + +.mdi-image-camera-alt:before { + content: "\e7f0"; } + +.mdi-image-camera-front:before { + content: "\e7f1"; } + +.mdi-image-camera-rear:before { + content: "\e7f2"; } + +.mdi-image-camera-roll:before { + content: "\e7f3"; } + +.mdi-image-camera:before { + content: "\e7f4"; } + +.mdi-image-center-focus-strong:before { + content: "\e7f5"; } + +.mdi-image-center-focus-weak:before { + content: "\e7f6"; } + +.mdi-image-collections:before { + content: "\e7f7"; } + +.mdi-image-color-lens:before { + content: "\e7f8"; } + +.mdi-image-colorize:before { + content: "\e7f9"; } + +.mdi-image-compare:before { + content: "\e7fa"; } + +.mdi-image-control-point-duplicate:before { + content: "\e7fb"; } + +.mdi-image-control-point:before { + content: "\e7fc"; } + +.mdi-image-crop-3-2:before { + content: "\e7fd"; } + +.mdi-image-crop-5-4:before { + content: "\e7fe"; } + +.mdi-image-crop-7-5:before { + content: "\e7ff"; } + +.mdi-image-crop-16-9:before { + content: "\e800"; } + +.mdi-image-crop-din:before { + content: "\e801"; } + +.mdi-image-crop-free:before { + content: "\e802"; } + +.mdi-image-crop-landscape:before { + content: "\e803"; } + +.mdi-image-crop-original:before { + content: "\e804"; } + +.mdi-image-crop-portrait:before { + content: "\e805"; } + +.mdi-image-crop-square:before { + content: "\e806"; } + +.mdi-image-crop:before { + content: "\e807"; } + +.mdi-image-dehaze:before { + content: "\e808"; } + +.mdi-image-details:before { + content: "\e809"; } + +.mdi-image-edit:before { + content: "\e80a"; } + +.mdi-image-exposure-minus-1:before { + content: "\e80b"; } + +.mdi-image-exposure-minus-2:before { + content: "\e80c"; } + +.mdi-image-exposure-plus-1:before { + content: "\e80d"; } + +.mdi-image-exposure-plus-2:before { + content: "\e80e"; } + +.mdi-image-exposure-zero:before { + content: "\e80f"; } + +.mdi-image-exposure:before { + content: "\e810"; } + +.mdi-image-filter-1:before { + content: "\e811"; } + +.mdi-image-filter-2:before { + content: "\e812"; } + +.mdi-image-filter-3:before { + content: "\e813"; } + +.mdi-image-filter-4:before { + content: "\e814"; } + +.mdi-image-filter-5:before { + content: "\e815"; } + +.mdi-image-filter-6:before { + content: "\e816"; } + +.mdi-image-filter-7:before { + content: "\e817"; } + +.mdi-image-filter-8:before { + content: "\e818"; } + +.mdi-image-filter-9-plus:before { + content: "\e819"; } + +.mdi-image-filter-9:before { + content: "\e81a"; } + +.mdi-image-filter-b-and-w:before { + content: "\e81b"; } + +.mdi-image-filter-center-focus:before { + content: "\e81c"; } + +.mdi-image-filter-drama:before { + content: "\e81d"; } + +.mdi-image-filter-frames:before { + content: "\e81e"; } + +.mdi-image-filter-hdr:before { + content: "\e81f"; } + +.mdi-image-filter-none:before { + content: "\e820"; } + +.mdi-image-filter-tilt-shift:before { + content: "\e821"; } + +.mdi-image-filter-vintage:before { + content: "\e822"; } + +.mdi-image-filter:before { + content: "\e823"; } + +.mdi-image-flare:before { + content: "\e824"; } + +.mdi-image-flash-auto:before { + content: "\e825"; } + +.mdi-image-flash-off:before { + content: "\e826"; } + +.mdi-image-flash-on:before { + content: "\e827"; } + +.mdi-image-flip:before { + content: "\e828"; } + +.mdi-image-gradient:before { + content: "\e829"; } + +.mdi-image-grain:before { + content: "\e82a"; } + +.mdi-image-grid-off:before { + content: "\e82b"; } + +.mdi-image-grid-on:before { + content: "\e82c"; } + +.mdi-image-hdr-off:before { + content: "\e82d"; } + +.mdi-image-hdr-on:before { + content: "\e82e"; } + +.mdi-image-hdr-strong:before { + content: "\e82f"; } + +.mdi-image-hdr-weak:before { + content: "\e830"; } + +.mdi-image-healing:before { + content: "\e831"; } + +.mdi-image-image-aspect-ratio:before { + content: "\e832"; } + +.mdi-image-image:before { + content: "\e833"; } + +.mdi-image-iso:before { + content: "\e834"; } + +.mdi-image-landscape:before { + content: "\e835"; } + +.mdi-image-leak-add:before { + content: "\e836"; } + +.mdi-image-leak-remove:before { + content: "\e837"; } + +.mdi-image-lens:before { + content: "\e838"; } + +.mdi-image-looks-3:before { + content: "\e839"; } + +.mdi-image-looks-4:before { + content: "\e83a"; } + +.mdi-image-looks-5:before { + content: "\e83b"; } + +.mdi-image-looks-6:before { + content: "\e83c"; } + +.mdi-image-looks-one:before { + content: "\e83d"; } + +.mdi-image-looks-two:before { + content: "\e83e"; } + +.mdi-image-looks:before { + content: "\e83f"; } + +.mdi-image-loupe:before { + content: "\e840"; } + +.mdi-image-movie-creation:before { + content: "\e841"; } + +.mdi-image-nature-people:before { + content: "\e842"; } + +.mdi-image-nature:before { + content: "\e843"; } + +.mdi-image-navigate-before:before { + content: "\e844"; } + +.mdi-image-navigate-next:before { + content: "\e845"; } + +.mdi-image-palette:before { + content: "\e846"; } + +.mdi-image-panorama-fisheye:before { + content: "\e847"; } + +.mdi-image-panorama-horizontal:before { + content: "\e848"; } + +.mdi-image-panorama-vertical:before { + content: "\e849"; } + +.mdi-image-panorama-wide-angle:before { + content: "\e84a"; } + +.mdi-image-panorama:before { + content: "\e84b"; } + +.mdi-image-photo-album:before { + content: "\e84c"; } + +.mdi-image-photo-camera:before { + content: "\e84d"; } + +.mdi-image-photo-library:before { + content: "\e84e"; } + +.mdi-image-photo:before { + content: "\e84f"; } + +.mdi-image-portrait:before { + content: "\e850"; } + +.mdi-image-remove-red-eye:before { + content: "\e851"; } + +.mdi-image-rotate-left:before { + content: "\e852"; } + +.mdi-image-rotate-right:before { + content: "\e853"; } + +.mdi-image-slideshow:before { + content: "\e854"; } + +.mdi-image-straighten:before { + content: "\e855"; } + +.mdi-image-style:before { + content: "\e856"; } + +.mdi-image-switch-camera:before { + content: "\e857"; } + +.mdi-image-switch-video:before { + content: "\e858"; } + +.mdi-image-tag-faces:before { + content: "\e859"; } + +.mdi-image-texture:before { + content: "\e85a"; } + +.mdi-image-timelapse:before { + content: "\e85b"; } + +.mdi-image-timer-3:before { + content: "\e85c"; } + +.mdi-image-timer-10:before { + content: "\e85d"; } + +.mdi-image-timer-auto:before { + content: "\e85e"; } + +.mdi-image-timer-off:before { + content: "\e85f"; } + +.mdi-image-timer:before { + content: "\e860"; } + +.mdi-image-tonality:before { + content: "\e861"; } + +.mdi-image-transform:before { + content: "\e862"; } + +.mdi-image-tune:before { + content: "\e863"; } + +.mdi-image-wb-auto:before { + content: "\e864"; } + +.mdi-image-wb-cloudy:before { + content: "\e865"; } + +.mdi-image-wb-incandescent:before { + content: "\e866"; } + +.mdi-image-wb-irradescent:before { + content: "\e867"; } + +.mdi-image-wb-sunny:before { + content: "\e868"; } + +.mdi-maps-beenhere:before { + content: "\e869"; } + +.mdi-maps-directions-bike:before { + content: "\e86a"; } + +.mdi-maps-directions-bus:before { + content: "\e86b"; } + +.mdi-maps-directions-car:before { + content: "\e86c"; } + +.mdi-maps-directions-ferry:before { + content: "\e86d"; } + +.mdi-maps-directions-subway:before { + content: "\e86e"; } + +.mdi-maps-directions-train:before { + content: "\e86f"; } + +.mdi-maps-directions-transit:before { + content: "\e870"; } + +.mdi-maps-directions-walk:before { + content: "\e871"; } + +.mdi-maps-directions:before { + content: "\e872"; } + +.mdi-maps-flight:before { + content: "\e873"; } + +.mdi-maps-hotel:before { + content: "\e874"; } + +.mdi-maps-layers-clear:before { + content: "\e875"; } + +.mdi-maps-layers:before { + content: "\e876"; } + +.mdi-maps-local-airport:before { + content: "\e877"; } + +.mdi-maps-local-atm:before { + content: "\e878"; } + +.mdi-maps-local-attraction:before { + content: "\e879"; } + +.mdi-maps-local-bar:before { + content: "\e87a"; } + +.mdi-maps-local-cafe:before { + content: "\e87b"; } + +.mdi-maps-local-car-wash:before { + content: "\e87c"; } + +.mdi-maps-local-convenience-store:before { + content: "\e87d"; } + +.mdi-maps-local-drink:before { + content: "\e87e"; } + +.mdi-maps-local-florist:before { + content: "\e87f"; } + +.mdi-maps-local-gas-station:before { + content: "\e880"; } + +.mdi-maps-local-grocery-store:before { + content: "\e881"; } + +.mdi-maps-local-hospital:before { + content: "\e882"; } + +.mdi-maps-local-hotel:before { + content: "\e883"; } + +.mdi-maps-local-laundry-service:before { + content: "\e884"; } + +.mdi-maps-local-library:before { + content: "\e885"; } + +.mdi-maps-local-mall:before { + content: "\e886"; } + +.mdi-maps-local-movies:before { + content: "\e887"; } + +.mdi-maps-local-offer:before { + content: "\e888"; } + +.mdi-maps-local-parking:before { + content: "\e889"; } + +.mdi-maps-local-pharmacy:before { + content: "\e88a"; } + +.mdi-maps-local-phone:before { + content: "\e88b"; } + +.mdi-maps-local-pizza:before { + content: "\e88c"; } + +.mdi-maps-local-play:before { + content: "\e88d"; } + +.mdi-maps-local-post-office:before { + content: "\e88e"; } + +.mdi-maps-local-print-shop:before { + content: "\e88f"; } + +.mdi-maps-local-restaurant:before { + content: "\e890"; } + +.mdi-maps-local-see:before { + content: "\e891"; } + +.mdi-maps-local-shipping:before { + content: "\e892"; } + +.mdi-maps-local-taxi:before { + content: "\e893"; } + +.mdi-maps-location-history:before { + content: "\e894"; } + +.mdi-maps-map:before { + content: "\e895"; } + +.mdi-maps-my-location:before { + content: "\e896"; } + +.mdi-maps-navigation:before { + content: "\e897"; } + +.mdi-maps-pin-drop:before { + content: "\e898"; } + +.mdi-maps-place:before { + content: "\e899"; } + +.mdi-maps-rate-review:before { + content: "\e89a"; } + +.mdi-maps-restaurant-menu:before { + content: "\e89b"; } + +.mdi-maps-satellite:before { + content: "\e89c"; } + +.mdi-maps-store-mall-directory:before { + content: "\e89d"; } + +.mdi-maps-terrain:before { + content: "\e89e"; } + +.mdi-maps-traffic:before { + content: "\e89f"; } + +.mdi-navigation-apps:before { + content: "\e8a0"; } + +.mdi-navigation-arrow-back:before { + content: "\e8a1"; } + +.mdi-navigation-arrow-drop-down-circle:before { + content: "\e8a2"; } + +.mdi-navigation-arrow-drop-down:before { + content: "\e8a3"; } + +.mdi-navigation-arrow-drop-up:before { + content: "\e8a4"; } + +.mdi-navigation-arrow-forward:before { + content: "\e8a5"; } + +.mdi-navigation-cancel:before { + content: "\e8a6"; } + +.mdi-navigation-check:before { + content: "\e8a7"; } + +.mdi-navigation-chevron-left:before { + content: "\e8a8"; } + +.mdi-navigation-chevron-right:before { + content: "\e8a9"; } + +.mdi-navigation-close:before { + content: "\e8aa"; } + +.mdi-navigation-expand-less:before { + content: "\e8ab"; } + +.mdi-navigation-expand-more:before { + content: "\e8ac"; } + +.mdi-navigation-fullscreen-exit:before { + content: "\e8ad"; } + +.mdi-navigation-fullscreen:before { + content: "\e8ae"; } + +.mdi-navigation-menu:before { + content: "\e8af"; } + +.mdi-navigation-more-horiz:before { + content: "\e8b0"; } + +.mdi-navigation-more-vert:before { + content: "\e8b1"; } + +.mdi-navigation-refresh:before { + content: "\e8b2"; } + +.mdi-navigation-unfold-less:before { + content: "\e8b3"; } + +.mdi-navigation-unfold-more:before { + content: "\e8b4"; } + +.mdi-notification-adb:before { + content: "\e8b5"; } + +.mdi-notification-bluetooth-audio:before { + content: "\e8b6"; } + +.mdi-notification-disc-full:before { + content: "\e8b7"; } + +.mdi-notification-dnd-forwardslash:before { + content: "\e8b8"; } + +.mdi-notification-do-not-disturb:before { + content: "\e8b9"; } + +.mdi-notification-drive-eta:before { + content: "\e8ba"; } + +.mdi-notification-event-available:before { + content: "\e8bb"; } + +.mdi-notification-event-busy:before { + content: "\e8bc"; } + +.mdi-notification-event-note:before { + content: "\e8bd"; } + +.mdi-notification-folder-special:before { + content: "\e8be"; } + +.mdi-notification-mms:before { + content: "\e8bf"; } + +.mdi-notification-more:before { + content: "\e8c0"; } + +.mdi-notification-network-locked:before { + content: "\e8c1"; } + +.mdi-notification-phone-bluetooth-speaker:before { + content: "\e8c2"; } + +.mdi-notification-phone-forwarded:before { + content: "\e8c3"; } + +.mdi-notification-phone-in-talk:before { + content: "\e8c4"; } + +.mdi-notification-phone-locked:before { + content: "\e8c5"; } + +.mdi-notification-phone-missed:before { + content: "\e8c6"; } + +.mdi-notification-phone-paused:before { + content: "\e8c7"; } + +.mdi-notification-play-download:before { + content: "\e8c8"; } + +.mdi-notification-play-install:before { + content: "\e8c9"; } + +.mdi-notification-sd-card:before { + content: "\e8ca"; } + +.mdi-notification-sim-card-alert:before { + content: "\e8cb"; } + +.mdi-notification-sms-failed:before { + content: "\e8cc"; } + +.mdi-notification-sms:before { + content: "\e8cd"; } + +.mdi-notification-sync-disabled:before { + content: "\e8ce"; } + +.mdi-notification-sync-problem:before { + content: "\e8cf"; } + +.mdi-notification-sync:before { + content: "\e8d0"; } + +.mdi-notification-system-update:before { + content: "\e8d1"; } + +.mdi-notification-tap-and-play:before { + content: "\e8d2"; } + +.mdi-notification-time-to-leave:before { + content: "\e8d3"; } + +.mdi-notification-vibration:before { + content: "\e8d4"; } + +.mdi-notification-voice-chat:before { + content: "\e8d5"; } + +.mdi-notification-vpn-lock:before { + content: "\e8d6"; } + +.mdi-social-cake:before { + content: "\e8d7"; } + +.mdi-social-domain:before { + content: "\e8d8"; } + +.mdi-social-group-add:before { + content: "\e8d9"; } + +.mdi-social-group:before { + content: "\e8da"; } + +.mdi-social-location-city:before { + content: "\e8db"; } + +.mdi-social-mood:before { + content: "\e8dc"; } + +.mdi-social-notifications-none:before { + content: "\e8dd"; } + +.mdi-social-notifications-off:before { + content: "\e8de"; } + +.mdi-social-notifications-on:before { + content: "\e8df"; } + +.mdi-social-notifications-paused:before { + content: "\e8e0"; } + +.mdi-social-notifications:before { + content: "\e8e1"; } + +.mdi-social-pages:before { + content: "\e8e2"; } + +.mdi-social-party-mode:before { + content: "\e8e3"; } + +.mdi-social-people-outline:before { + content: "\e8e4"; } + +.mdi-social-people:before { + content: "\e8e5"; } + +.mdi-social-person-add:before { + content: "\e8e6"; } + +.mdi-social-person-outline:before { + content: "\e8e7"; } + +.mdi-social-person:before { + content: "\e8e8"; } + +.mdi-social-plus-one:before { + content: "\e8e9"; } + +.mdi-social-poll:before { + content: "\e8ea"; } + +.mdi-social-public:before { + content: "\e8eb"; } + +.mdi-social-school:before { + content: "\e8ec"; } + +.mdi-social-share:before { + content: "\e8ed"; } + +.mdi-social-whatshot:before { + content: "\e8ee"; } + +.mdi-toggle-check-box-outline-blank:before { + content: "\e8ef"; } + +.mdi-toggle-check-box:before { + content: "\e8f0"; } + +.mdi-toggle-radio-button-off:before { + content: "\e8f1"; } + +.mdi-toggle-radio-button-on:before { + content: "\e8f2"; } + +.mdi-toggle-star-half:before { + content: "\e8f3"; } + +.mdi-toggle-star-outline:before { + content: "\e8f4"; } + +.mdi-toggle-star:before { + content: "\e8f5"; } + +.container { + margin: 0 auto; + max-width: 1280px; + width: 90%; } + +@media only screen and (min-width : 601px) { + .container { + width: 85%; } } + +@media only screen and (min-width : 993px) { + .container { + width: 70%; } } + +.container .row { + margin-left: -0.75rem; + margin-right: -0.75rem; } + +.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 { + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 0.75rem; } + .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 : 601px) { + .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 : 993px) { + .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 a { + color: #fff; } + nav .nav-wrapper { + position: relative; + height: 100%; } + nav .nav-wrapper i { + display: block; + font-size: 2rem; } + @media only screen and (min-width : 993px) { + nav a.button-collapse { + display: none; } } + nav .button-collapse { + float: left; + position: relative; + z-index: 1; + height: 56px; } + nav .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; + white-space: nowrap; } + nav .brand-logo.center { + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); } + @media only screen and (max-width : 992px) { + nav .brand-logo { + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); } } + nav .brand-logo.right { + right: 0.5rem; + padding: 0; } + nav ul { + margin: 0; } + nav ul li { + -webkit-transition: background-color .3s; + -moz-transition: background-color .3s; + -o-transition: background-color .3s; + -ms-transition: background-color .3s; + transition: background-color .3s; + float: left; + padding: 0; } + 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: 0 15px; } + nav ul.left { + float: left; } + nav .input-field { + margin: 0; } + nav .input-field input { + height: 100%; + font-size: 1.2rem; + border: none; + padding-left: 2rem; } + nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { + border: none; + box-shadow: none; } + nav .input-field label { + top: 0; + left: 0; } + nav .input-field label i { + color: rgba(255, 255, 255, 0.7); + -webkit-transition: color .3s; + -moz-transition: color .3s; + -o-transition: color .3s; + -ms-transition: color .3s; + transition: color .3s; } + nav .input-field label.active i { + color: #fff; } + nav .input-field label.active { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); } + +.navbar-fixed { + position: relative; + height: 56px; + z-index: 998; } + .navbar-fixed nav { + position: fixed; } + +@media only screen and (min-width : 601px) { + nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { + height: 64px; + line-height: 64px; } + .navbar-fixed { + height: 64px; } } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Thin.woff2") format("woff2"), url("../font/roboto/Roboto-Thin.woff") format("woff"), url("../font/roboto/Roboto-Thin.ttf") format("truetype"); + font-weight: 200; } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Light.woff2") format("woff2"), url("../font/roboto/Roboto-Light.woff") format("woff"), url("../font/roboto/Roboto-Light.ttf") format("truetype"); + font-weight: 300; } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Regular.woff2") format("woff2"), url("../font/roboto/Roboto-Regular.woff") format("woff"), url("../font/roboto/Roboto-Regular.ttf") format("truetype"); + font-weight: 400; } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Medium.woff2") format("woff2"), url("../font/roboto/Roboto-Medium.woff") format("woff"), url("../font/roboto/Roboto-Medium.ttf") format("truetype"); + font-weight: 500; } + +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Bold.woff2") format("woff2"), url("../font/roboto/Roboto-Bold.woff") format("woff"), url("../font/roboto/Roboto-Bold.ttf") format("truetype"); + font-weight: 700; } + +a { + text-decoration: none; } + +html { + line-height: 1.5; + font-family: "Roboto", sans-serif; + font-weight: normal; + color: rgba(0, 0, 0, 0.87); } + @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; + line-height: 1.1; } + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + font-weight: inherit; } + +h1 { + font-size: 4.2rem; + line-height: 110%; + margin: 2.1rem 0 1.68rem 0; } + +h2 { + font-size: 3.56rem; + line-height: 110%; + margin: 1.78rem 0 1.424rem 0; } + +h3 { + font-size: 2.92rem; + line-height: 110%; + margin: 1.46rem 0 1.168rem 0; } + +h4 { + font-size: 2.28rem; + line-height: 110%; + margin: 1.14rem 0 0.912rem 0; } + +h5 { + font-size: 1.64rem; + line-height: 110%; + margin: 0.82rem 0 0.656rem 0; } + +h6 { + font-size: 1rem; + line-height: 110%; + margin: 0.5rem 0 0.4rem 0; } + +em { + font-style: italic; } + +strong { + font-weight: 500; } + +small { + font-size: 75%; } + +.light, footer.page-footer .footer-copyright { + font-weight: 300; } + +.thin { + font-weight: 200; } + +.flow-text { + font-weight: 300; } + @media only screen and (min-width: 360px) { + .flow-text { + font-size: 1.2rem; } } + @media only screen and (min-width: 390px) { + .flow-text { + font-size: 1.224rem; } } + @media only screen and (min-width: 420px) { + .flow-text { + font-size: 1.248rem; } } + @media only screen and (min-width: 450px) { + .flow-text { + font-size: 1.272rem; } } + @media only screen and (min-width: 480px) { + .flow-text { + font-size: 1.296rem; } } + @media only screen and (min-width: 510px) { + .flow-text { + font-size: 1.32rem; } } + @media only screen and (min-width: 540px) { + .flow-text { + font-size: 1.344rem; } } + @media only screen and (min-width: 570px) { + .flow-text { + font-size: 1.368rem; } } + @media only screen and (min-width: 600px) { + .flow-text { + font-size: 1.392rem; } } + @media only screen and (min-width: 630px) { + .flow-text { + font-size: 1.416rem; } } + @media only screen and (min-width: 660px) { + .flow-text { + font-size: 1.44rem; } } + @media only screen and (min-width: 690px) { + .flow-text { + font-size: 1.464rem; } } + @media only screen and (min-width: 720px) { + .flow-text { + font-size: 1.488rem; } } + @media only screen and (min-width: 750px) { + .flow-text { + font-size: 1.512rem; } } + @media only screen and (min-width: 780px) { + .flow-text { + font-size: 1.536rem; } } + @media only screen and (min-width: 810px) { + .flow-text { + font-size: 1.56rem; } } + @media only screen and (min-width: 840px) { + .flow-text { + font-size: 1.584rem; } } + @media only screen and (min-width: 870px) { + .flow-text { + font-size: 1.608rem; } } + @media only screen and (min-width: 900px) { + .flow-text { + font-size: 1.632rem; } } + @media only screen and (min-width: 930px) { + .flow-text { + font-size: 1.656rem; } } + @media only screen and (min-width: 960px) { + .flow-text { + font-size: 1.68rem; } } + @media only screen and (max-width: 360px) { + .flow-text { + font-size: 1.2rem; } } + +.card-panel { + transition: box-shadow .25s; + padding: 20px; + margin: 0.5rem 0 1rem 0; + border-radius: 2px; + background-color: #fff; } + +.card { + position: relative; + overflow: hidden; + margin: 0.5rem 0 1rem 0; + background-color: #fff; + transition: box-shadow .25s; + border-radius: 2px; } + .card .card-title { + color: #fff; + font-size: 24px; + font-weight: 300; } + .card .card-title.activator { + cursor: pointer; } + .card.small, .card.medium, .card.large { + position: relative; } + .card.small .card-image, .card.medium .card-image, .card.large .card-image { + overflow: hidden; } + .card.small .card-content, .card.medium .card-content, .card.large .card-content { + overflow: hidden; } + .card.small .card-action, .card.medium .card-action, .card.large .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; } + .card.small { + height: 300px; } + .card.small .card-image { + height: 150px; } + .card.small .card-content { + height: 150px; } + .card.medium { + height: 400px; } + .card.medium .card-image { + height: 250px; } + .card.medium .card-content { + height: 150px; } + .card.large { + height: 500px; } + .card.large .card-image { + height: 330px; } + .card.large .card-content { + height: 170px; } + .card .card-image { + position: relative; } + .card .card-image img { + border-radius: 2px 2px 0 0; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; } + .card .card-image .card-title { + position: absolute; + bottom: 0; + left: 0; + padding: 20px; } + .card .card-content { + padding: 20px; + border-radius: 0 0 2px 2px; } + .card .card-content p { + margin: 0; + color: inherit; } + .card .card-content .card-title { + line-height: 48px; } + .card .card-action { + border-top: 1px solid rgba(160, 160, 160, 0.2); + padding: 20px; } + .card .card-action a { + color: #ffab40; + margin-right: 20px; + -webkit-transition: color .3s ease; + -moz-transition: color .3s ease; + -o-transition: color .3s ease; + -ms-transition: color .3s ease; + transition: color .3s ease; + text-transform: uppercase; } + .card .card-action a:hover { + color: #ffd8a6; } + .card .card-reveal { + padding: 20px; + position: absolute; + background-color: #fff; + width: 100%; + overflow-y: auto; + top: 100%; + height: 100%; + z-index: 1; + display: none; } + .card .card-reveal .card-title { + cursor: pointer; + display: block; } + +#toast-container { + display: block; + position: fixed; + z-index: 1001; } + @media only screen and (max-width : 600px) { + #toast-container { + min-width: 100%; + bottom: 0%; } } + @media only screen and (min-width : 601px) and (max-width : 992px) { + #toast-container { + min-width: 30%; + left: 5%; + bottom: 7%; } } + @media only screen and (min-width : 993px) { + #toast-container { + min-width: 8%; + top: 10%; + right: 7%; } } + +.toast { + border-radius: 2px; + top: 0; + width: auto; + clear: both; + margin-top: 10px; + position: relative; + max-width: 100%; + height: 48px; + line-height: 48px; + background-color: #323232; + padding: 0 25px; + font-size: 1.1rem; + font-weight: 300; + color: #fff; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: space-between; + justify-content: space-between; } + .toast .btn, .toast .btn-large, .toast .btn-flat { + margin: 0; + margin-left: 3rem; } + .toast.rounded { + border-radius: 24px; } + @media only screen and (max-width : 600px) { + .toast { + width: 100%; + border-radius: 0; } } + @media only screen and (min-width : 601px) and (max-width : 992px) { + .toast { + float: left; } } + @media only screen and (min-width : 993px) { + .toast { + float: right; } } + +.tabs { + position: relative; + height: 48px; + background-color: #fff; + margin: 0 auto; + width: 100%; + white-space: nowrap; } + .tabs .tab { + display: block; + float: left; + text-align: center; + line-height: 48px; + height: 48px; + padding: 0 20px; + margin: 0; + text-transform: uppercase; + letter-spacing: .8px; + width: 15%; } + .tabs .tab a { + color: #ee6e73; + display: block; + width: 100%; + height: 100%; + -webkit-transition: color .28s ease; + -moz-transition: color .28s ease; + -o-transition: color .28s ease; + -ms-transition: color .28s ease; + transition: color .28s ease; } + .tabs .tab a:hover { + color: #f9c9cb; } + .tabs .tab.disabled a { + color: #f9c9cb; + cursor: default; } + .tabs .indicator { + position: absolute; + bottom: 0; + height: 2px; + background-color: #f6b2b5; + will-change: left, right; } + +.tabs .tab { + padding: 0; } + +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 2000; + background-color: transparent; + border-radius: 2px; + color: #fff; + min-height: 36px; + line-height: 1rem; + opacity: 0; + display: none; + position: absolute; + text-align: center; + overflow: hidden; + left: 0; + top: 0; + will-change: top, left; } + +.backdrop { + position: absolute; + opacity: 0; + display: none; + height: 7px; + width: 14px; + border-radius: 0 0 14px 14px; + 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%; + will-change: transform, opacity; } + +.btn, .btn-large, .btn-flat { + border: none; + border-radius: 2px; + display: inline-block; + height: 36px; + line-height: 36px; + outline: 0; + padding: 0 2rem; + text-transform: uppercase; + vertical-align: middle; + -webkit-tap-highlight-color: transparent; } + +.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 !important; + box-shadow: none; + color: #9F9F9F !important; + cursor: default; } + .btn.disabled *, .disabled.btn-large *, .btn-floating.disabled *, .btn-large.disabled *, .btn:disabled *, .btn-large:disabled *, .btn-large:disabled *, .btn-floating:disabled * { + pointer-events: none; } + .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: #fff; + background-color: #26a69a; + text-align: center; + letter-spacing: .5px; + -webkit-transition: .2s ease-out; + -moz-transition: .2s ease-out; + -o-transition: .2s ease-out; + -ms-transition: .2s ease-out; + transition: .2s ease-out; + cursor: pointer; } + .btn:hover, .btn-large:hover { + background-color: #2bbbad; } + +.btn-floating { + display: inline-block; + color: #fff; + position: relative; + overflow: hidden; + z-index: 1; + width: 37px; + height: 37px; + line-height: 37px; + padding: 0; + background-color: #26a69a; + border-radius: 50%; + transition: .3s; + cursor: pointer; + vertical-align: middle; } + .btn-floating i { + width: inherit; + display: inline-block; + text-align: center; + color: #fff; + font-size: 1.6rem; + line-height: 37px; } + .btn-floating:before { + border-radius: 0; } + .btn-floating.btn-large { + width: 55.5px; + height: 55.5px; } + .btn-floating.btn-large i { + line-height: 55.5px; } + +button.btn-floating { + border: none; } + +.fixed-action-btn { + position: fixed; + right: 23px; + bottom: 23px; + padding-top: 15px; + margin-bottom: 0; + z-index: 998; } + .fixed-action-btn ul { + left: 0; + right: 0; + text-align: center; + position: absolute; + bottom: 64px; + margin: 0; } + .fixed-action-btn ul li { + margin-bottom: 15px; } + .fixed-action-btn ul a.btn-floating { + opacity: 0; } + +.btn-flat { + box-shadow: none; + background-color: transparent; + color: #343434; + cursor: pointer; } + .btn-flat.disabled { + color: #b3b3b3; + cursor: default; } + +.btn-large { + height: 54px; + line-height: 56px; } + .btn-large i { + font-size: 1.6rem; } + +.btn-block { + display: block; } + +.dropdown-content { + background-color: #fff; + margin: 0; + display: none; + min-width: 100px; + max-height: 650px; + overflow-y: auto; + opacity: 0; + position: absolute; + z-index: 999; + will-change: width, height; } + .dropdown-content li { + clear: both; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + line-height: 1.5rem; + width: 100%; + text-align: left; + text-transform: none; } + .dropdown-content li:hover, .dropdown-content li.active { + background-color: #eee; } + .dropdown-content li > a, .dropdown-content li > span { + font-size: 1.2rem; + color: #26a69a; + display: block; + padding: 1rem 1rem; } + .dropdown-content li > a > i { + height: inherit; + line-height: inherit; } + +/*! + * Waves v0.6.0 + * 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; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + will-change: opacity, transform; + -webkit-transition: all .3s ease-out; + -moz-transition: all .3s ease-out; + -o-transition: all .3s ease-out; + -ms-transition: all .3s ease-out; + transition: all .3s ease-out; } + .waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.7s ease-out; + -moz-transition: all 0.7s ease-out; + -o-transition: all 0.7s ease-out; + -ms-transition: all 0.7s ease-out; + transition: all 0.7s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; } + .waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); } + .waves-effect.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, 0.7); } + .waves-effect.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, 0.7); } + .waves-effect.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, 0.7); } + .waves-effect.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.7); } + .waves-effect.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.7); } + .waves-effect.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.7); } + +.waves-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + -ms-transition: none !important; + transition: none !important; } + +.waves-circle { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); } + +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; } + .waves-input-wrapper .waves-button-input { + position: relative; + 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%; + -webkit-mask-image: none; } + +.waves-block { + display: block; } + +/* Firefox Bug: link not triggered */ +a.waves-effect .waves-ripple { + z-index: -1; } + +.modal { + display: none; + position: fixed; + left: 0; + right: 0; + background-color: #fafafa; + padding: 0; + max-height: 70%; + width: 55%; + margin: auto; + overflow-y: auto; + border-radius: 2px; + will-change: top, opacity; } + @media only screen and (max-width : 992px) { + .modal { + width: 80%; } } + .modal h1, .modal h2, .modal h3, .modal h4 { + margin-top: 0; } + .modal .modal-content { + padding: 24px; } + .modal .modal-close { + cursor: pointer; } + .modal .modal-footer { + border-radius: 0 0 2px 2px; + background-color: #fafafa; + padding: 4px 6px; + height: 56px; + width: 100%; } + .modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { + float: right; + margin: 6px 0; } + +.lean-overlay { + position: fixed; + z-index: 999; + top: -100px; + left: 0; + bottom: 0; + right: 0; + height: 125%; + width: 100%; + background: #000; + display: none; + will-change: opacity; } + +.modal.modal-fixed-footer { + padding: 0; + height: 70%; } + .modal.modal-fixed-footer .modal-content { + position: absolute; + height: calc(100% - 56px); + max-height: 100%; + width: 100%; + overflow-y: auto; } + .modal.modal-fixed-footer .modal-footer { + border-top: 1px solid rgba(0, 0, 0, 0.1); + position: absolute; + bottom: 0; } + +.modal.bottom-sheet { + top: auto; + bottom: -100%; + margin: 0; + width: 100%; + max-height: 45%; + border-radius: 0; + will-change: bottom, opacity; } + +.collapsible { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; + border-left: 1px solid #ddd; + margin: 0.5rem 0 1rem 0; } + +.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: 1rem; } + +.collapsible-body { + 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; } + +.side-nav .collapsible { + border: none; + box-shadow: none; } + .side-nav .collapsible li { + padding: 0; } +.side-nav .collapsible-header { + background-color: transparent; + border: none; + line-height: inherit; + height: inherit; + margin: 0 1rem; } + .side-nav .collapsible-header i { + line-height: inherit; } +.side-nav .collapsible-body { + border: 0; + background-color: #fff; } + .side-nav .collapsible-body li a { + margin: 0 1rem 0 2rem; } + +.collapsible.popout { + border: none; + box-shadow: none; } + .collapsible.popout > li { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + margin: 0 24px; + transition: margin .35s cubic-bezier(0.25, 0.46, 0.45, 0.94); } + .collapsible.popout > li.active { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + margin: 16px 0; } + +.materialboxed { + cursor: zoom-in; + position: relative; + -webkit-transition: opacity .4s; + -moz-transition: opacity .4s; + -o-transition: opacity .4s; + -ms-transition: opacity .4s; + transition: opacity .4s; } + .materialboxed:hover { + will-change: left, top, width, height; } + .materialboxed:hover:not(.active) { + opacity: .8; } + +.materialboxed.active { + cursor: zoom-out; } + +#materialbox-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #292929; + z-index: 999; + will-change: opacity; } + +.materialbox-caption { + position: fixed; + display: none; + color: #fff; + line-height: 50px; + bottom: 0; + width: 100%; + text-align: center; + padding: 0% 15%; + height: 50px; + z-index: 1000; + -webkit-font-smoothing: antialiased; } + +/* Remove Focus Boxes */ +select:focus { + outline: 1px solid #c9f3ef; } + +button:focus { + outline: none; + background-color: #2ab7a9; } + +label { + font-size: 0.8rem; + color: #9e9e9e; } + +/*************************** + Text Inputs + Textarea +****************************/ +::-webkit-input-placeholder { + color: #d1d1d1; } + +:-moz-placeholder { + /* Firefox 18- */ + color: #d1d1d1; } + +::-moz-placeholder { + /* Firefox 19+ */ + color: #d1d1d1; } + +:-ms-input-placeholder { + color: #d1d1d1; } + +input[type=text], input[type=password], input[type=email], input[type=url], input[type=time], input[type=date], input[type=datetime-local], input[type=tel], input[type=number], input[type=search], textarea.materialize-textarea { + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + border-radius: 0; + outline: none; + height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + box-shadow: none; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + transition: all .3s; } + input[type=text]:disabled, input[type=text][readonly="readonly"], input[type=password]:disabled, input[type=password][readonly="readonly"], input[type=email]:disabled, input[type=email][readonly="readonly"], input[type=url]:disabled, input[type=url][readonly="readonly"], input[type=time]:disabled, input[type=time][readonly="readonly"], input[type=date]:disabled, input[type=date][readonly="readonly"], input[type=datetime-local]:disabled, input[type=datetime-local][readonly="readonly"], input[type=tel]:disabled, input[type=tel][readonly="readonly"], input[type=number]:disabled, input[type=number][readonly="readonly"], input[type=search]:disabled, input[type=search][readonly="readonly"], textarea.materialize-textarea:disabled, textarea.materialize-textarea[readonly="readonly"] { + color: rgba(0, 0, 0, 0.26); + border-bottom: 1px dotted rgba(0, 0, 0, 0.26); } + input[type=text]:disabled + label, input[type=text][readonly="readonly"] + label, input[type=password]:disabled + label, input[type=password][readonly="readonly"] + label, input[type=email]:disabled + label, input[type=email][readonly="readonly"] + label, input[type=url]:disabled + label, input[type=url][readonly="readonly"] + label, input[type=time]:disabled + label, input[type=time][readonly="readonly"] + label, input[type=date]:disabled + label, input[type=date][readonly="readonly"] + label, input[type=datetime-local]:disabled + label, input[type=datetime-local][readonly="readonly"] + label, input[type=tel]:disabled + label, input[type=tel][readonly="readonly"] + label, input[type=number]:disabled + label, input[type=number][readonly="readonly"] + label, input[type=search]:disabled + label, input[type=search][readonly="readonly"] + label, textarea.materialize-textarea:disabled + label, textarea.materialize-textarea[readonly="readonly"] + label { + color: rgba(0, 0, 0, 0.26); } + input[type=text]:focus:not([readonly]), input[type=password]:focus:not([readonly]), input[type=email]:focus:not([readonly]), input[type=url]:focus:not([readonly]), input[type=time]:focus:not([readonly]), input[type=date]:focus:not([readonly]), input[type=datetime-local]:focus:not([readonly]), input[type=tel]:focus:not([readonly]), input[type=number]:focus:not([readonly]), input[type=search]:focus:not([readonly]), textarea.materialize-textarea:focus:not([readonly]) { + border-bottom: 1px solid #26a69a; + box-shadow: 0 1px 0 0 #26a69a; } + input[type=text]:focus:not([readonly]) + label, input[type=password]:focus:not([readonly]) + label, input[type=email]:focus:not([readonly]) + label, input[type=url]:focus:not([readonly]) + label, input[type=time]:focus:not([readonly]) + label, input[type=date]:focus:not([readonly]) + label, input[type=datetime-local]:focus:not([readonly]) + label, input[type=tel]:focus:not([readonly]) + label, input[type=number]:focus:not([readonly]) + label, input[type=search]:focus:not([readonly]) + label, textarea.materialize-textarea:focus:not([readonly]) + label { + color: #26a69a; } + input[type=text].valid, input[type=text]:focus.valid, input[type=password].valid, input[type=password]:focus.valid, input[type=email].valid, input[type=email]:focus.valid, input[type=url].valid, input[type=url]:focus.valid, input[type=time].valid, input[type=time]:focus.valid, input[type=date].valid, input[type=date]:focus.valid, input[type=datetime-local].valid, input[type=datetime-local]:focus.valid, input[type=tel].valid, input[type=tel]:focus.valid, input[type=number].valid, input[type=number]:focus.valid, input[type=search].valid, input[type=search]:focus.valid, textarea.materialize-textarea.valid, textarea.materialize-textarea:focus.valid { + border-bottom: 1px solid #4CAF50; + box-shadow: 0 1px 0 0 #4CAF50; } + input[type=text].valid + label:after, input[type=text]:focus.valid + label:after, input[type=password].valid + label:after, input[type=password]:focus.valid + label:after, input[type=email].valid + label:after, input[type=email]:focus.valid + label:after, input[type=url].valid + label:after, input[type=url]:focus.valid + label:after, input[type=time].valid + label:after, input[type=time]:focus.valid + label:after, input[type=date].valid + label:after, input[type=date]:focus.valid + label:after, input[type=datetime-local].valid + label:after, input[type=datetime-local]:focus.valid + label:after, input[type=tel].valid + label:after, input[type=tel]:focus.valid + label:after, input[type=number].valid + label:after, input[type=number]:focus.valid + label:after, input[type=search].valid + label:after, input[type=search]:focus.valid + label:after, textarea.materialize-textarea.valid + label:after, textarea.materialize-textarea:focus.valid + label:after { + content: attr(data-success); + color: #4CAF50; + opacity: 1; } + input[type=text].invalid, input[type=text]:focus.invalid, input[type=password].invalid, input[type=password]:focus.invalid, input[type=email].invalid, input[type=email]:focus.invalid, input[type=url].invalid, input[type=url]:focus.invalid, input[type=time].invalid, input[type=time]:focus.invalid, input[type=date].invalid, input[type=date]:focus.invalid, input[type=datetime-local].invalid, input[type=datetime-local]:focus.invalid, input[type=tel].invalid, input[type=tel]:focus.invalid, input[type=number].invalid, input[type=number]:focus.invalid, input[type=search].invalid, input[type=search]:focus.invalid, textarea.materialize-textarea.invalid, textarea.materialize-textarea:focus.invalid { + border-bottom: 1px solid #F44336; + box-shadow: 0 1px 0 0 #F44336; } + input[type=text].invalid + label:after, input[type=text]:focus.invalid + label:after, input[type=password].invalid + label:after, input[type=password]:focus.invalid + label:after, input[type=email].invalid + label:after, input[type=email]:focus.invalid + label:after, input[type=url].invalid + label:after, input[type=url]:focus.invalid + label:after, input[type=time].invalid + label:after, input[type=time]:focus.invalid + label:after, input[type=date].invalid + label:after, input[type=date]:focus.invalid + label:after, input[type=datetime-local].invalid + label:after, input[type=datetime-local]:focus.invalid + label:after, input[type=tel].invalid + label:after, input[type=tel]:focus.invalid + label:after, input[type=number].invalid + label:after, input[type=number]:focus.invalid + label:after, input[type=search].invalid + label:after, input[type=search]:focus.invalid + label:after, textarea.materialize-textarea.invalid + label:after, textarea.materialize-textarea:focus.invalid + label:after { + content: attr(data-error); + color: #F44336; + opacity: 1; } + input[type=text] + label:after, input[type=password] + label:after, input[type=email] + label:after, input[type=url] + label:after, input[type=time] + label:after, input[type=date] + label:after, input[type=datetime-local] + label:after, input[type=tel] + label:after, input[type=number] + label:after, input[type=search] + label:after, textarea.materialize-textarea + label:after { + display: block; + content: ""; + position: absolute; + top: 65px; + opacity: 0; + transition: .2s opacity ease-out, .2s color ease-out; } + +.input-field { + position: relative; + margin-top: 1rem; } + .input-field label { + color: #9e9e9e; + position: absolute; + top: 0.8rem; + left: 0.75rem; + font-size: 1rem; + cursor: text; + -webkit-transition: .2s ease-out; + -moz-transition: .2s ease-out; + -o-transition: .2s ease-out; + -ms-transition: .2s ease-out; + transition: .2s ease-out; } + .input-field label.active { + font-size: 0.8rem; + -webkit-transform: translateY(-140%); + -moz-transform: translateY(-140%); + -ms-transform: translateY(-140%); + -o-transform: translateY(-140%); + transform: translateY(-140%); } + .input-field .prefix { + position: absolute; + width: 3rem; + font-size: 2rem; + -webkit-transition: color .2s; + -moz-transition: color .2s; + -o-transition: color .2s; + -ms-transition: color .2s; + transition: color .2s; } + .input-field .prefix.active { + color: #26a69a; } + .input-field .prefix ~ input, .input-field .prefix ~ textarea { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); } + .input-field .prefix ~ textarea { + padding-top: .8rem; } + .input-field .prefix ~ label { + margin-left: 3rem; } + @media only screen and (max-width : 992px) { + .input-field .prefix ~ input { + width: 86%; + width: calc(100% - 3rem); } } + @media only screen and (max-width : 600px) { + .input-field .prefix ~ input { + width: 80%; + width: calc(100% - 3rem); } } + +.input-field input[type=search] { + display: block; + line-height: inherit; + padding-left: 4rem; + width: calc(100% - 4rem); } + .input-field input[type=search]:focus { + background-color: #fff; + border: 0; + box-shadow: none; + color: #444; } + .input-field input[type=search]:focus + label i, .input-field input[type=search]:focus ~ .mdi-navigation-close { + color: #444; } + .input-field input[type=search] + label { + left: 1rem; } + .input-field input[type=search] ~ .mdi-navigation-close { + position: absolute; + top: 0; + right: 1rem; + color: transparent; + cursor: pointer; + font-size: 2rem; + transition: .3s color; } + +textarea { + width: 100%; + height: 3rem; + background-color: transparent; } + textarea.materialize-textarea { + overflow-y: hidden; + /* prevents scroll bar flash */ + padding: 1.6rem 0; + /* prevents text jump on Enter keypress */ + resize: none; + min-height: 3rem; } + +.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 Radio Buttons */ +[type="radio"]:not(:checked), [type="radio"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; } + +[type="radio"]:not(:checked) + label, [type="radio"]:checked + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-transition: .28s ease; + -moz-transition: .28s ease; + -o-transition: .28s ease; + -ms-transition: .28s ease; + transition: .28s ease; + -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: 0; + top: 0; + margin: 4px; + width: 16px; + height: 16px; + z-index: 0; + -webkit-transition: .28s ease; + -moz-transition: .28s ease; + -o-transition: .28s ease; + -ms-transition: .28s ease; + transition: .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 #26a69a; + background-color: #26a69a; + 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); } + +/* Radio With gap */ +[type="radio"].with-gap:checked + label:before { + border-radius: 50%; + border: 2px solid #26a69a; } + +[type="radio"].with-gap:checked + label:after { + border-radius: 50%; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; + -webkit-transform: scale(.5); + -moz-transform: scale(.5); + -ms-transform: scale(.5); + -o-transform: scale(.5); + transform: scale(.5); } + +/* Disabled Radio With gap */ +[type="radio"].with-gap:disabled:checked + label:before { + border: 2px solid rgba(0, 0, 0, 0.26); } + +[type="radio"].with-gap:disabled:checked + label:after { + border: none; + background-color: rgba(0, 0, 0, 0.26); } + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + label:before, [type="radio"]:disabled:checked + label:before { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled + label { + color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled:not(:checked) + label:before { + border-color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled:checked + label:after { + background-color: rgba(0, 0, 0, 0.26); + border-color: #BDBDBD; } + +/*************** + Checkboxes +***************/ +/* CUSTOM CSS CHECKBOXES */ +form p { + margin-bottom: 10px; + text-align: left; } + +form p:last-child { + margin-bottom: 0; } + +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), [type="checkbox"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; } + +[type="checkbox"] { + /* checkbox aspect */ } + [type="checkbox"] + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -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="checkbox"] + label:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid #5a5a5a; + border-radius: 1px; + margin-top: 2px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + -ms-transition: 0.2s; + transition: 0.2s; } + [type="checkbox"]:not(:checked):disabled + label:before { + border: none; + background-color: rgba(0, 0, 0, 0.26); } + +[type="checkbox"]:checked + label:before { + top: -4px; + left: -3px; + width: 12px; + height: 22px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #26a69a; + border-bottom: 2px solid #26a69a; + -webkit-transform: rotate(40deg); + -moz-transform: rotate(40deg); + -ms-transform: rotate(40deg); + -o-transform: rotate(40deg); + transform: rotate(40deg); + -webkit-backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"]:checked:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + border-bottom: 2px solid rgba(0, 0, 0, 0.26); } + +/* Indeterminate checkbox */ +[type="checkbox"]:indeterminate + label:before { + left: -10px; + top: -11px; + width: 10px; + height: 22px; + border-top: none; + border-left: none; + border-right: 2px solid #26a69a; + border-bottom: none; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"]:indeterminate:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + background-color: transparent; } + +[type="checkbox"].filled-in + label:after { + border-radius: 2px; } +[type="checkbox"].filled-in + label:before, [type="checkbox"].filled-in + label:after { + content: ''; + left: 0; + position: absolute; + /* .1s delay is for check animation */ + transition: border .25s, background-color .25s, width .2s .1s, height .2s .1s, top .2s .1s, left .2s .1s; + z-index: 1; } +[type="checkbox"].filled-in:not(:checked) + label:before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 20% 40%; + transform-origin: 100% 100%; } +[type="checkbox"].filled-in:not(:checked) + label:after { + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid #5a5a5a; + top: 0px; + z-index: 0; } +[type="checkbox"].filled-in:checked + label:before { + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #fff; + border-bottom: 2px solid #fff; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"].filled-in:checked + label:after { + top: 0px; + width: 20px; + height: 20px; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; } +[type="checkbox"].filled-in:disabled:not(:checked) + label:before { + background-color: transparent; + border: 2px solid transparent; } +[type="checkbox"].filled-in:disabled:not(:checked) + label:after { + border-color: transparent; + background-color: #BDBDBD; } +[type="checkbox"].filled-in:disabled:checked + label:before { + background-color: transparent; } +[type="checkbox"].filled-in:disabled:checked + label:after { + background-color: #BDBDBD; + border-color: #BDBDBD; } + +/*************** + Switch +***************/ +.switch, .switch * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -ms-user-select: none; } + +.switch label { + cursor: pointer; } + +.switch label input[type=checkbox] { + opacity: 0; + width: 0; + height: 0; } + +.switch label input[type=checkbox]:checked + .lever { + background-color: #84c7c1; } + +.switch label input[type=checkbox]:checked + .lever:after { + background-color: #26a69a; } + +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 40px; + height: 15px; + background-color: #818181; + border-radius: 15px; + margin-right: 10px; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; } + +.switch label .lever:after { + content: ""; + position: absolute; + display: inline-block; + width: 21px; + height: 21px; + background-color: #F1F1F1; + border-radius: 21px; + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); + left: -5px; + top: -3px; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; } + +input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1); } + +input[type=checkbox]:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08); } + +.switch label input[type=checkbox]:checked + .lever:after { + left: 24px; } + +.switch input[type=checkbox][disabled] + .lever { + cursor: default; } + +.switch label input[type=checkbox][disabled] + .lever:after, .switch label input[type=checkbox][disabled]:checked + .lever:after { + background-color: #BDBDBD; } + +/*************** + Select Field +***************/ +.select-label { + position: absolute; } + +.select-wrapper { + position: relative; } + .select-wrapper input.select-dropdown { + position: relative; + cursor: pointer; + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + outline: none; + height: 3rem; + line-height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + display: block; } + .select-wrapper span.caret { + color: initial; + position: absolute; + right: 0; + top: 16px; + font-size: 10px; } + .select-wrapper span.caret.disabled { + color: rgba(0, 0, 0, 0.26); } + .select-wrapper + label { + position: absolute; + top: -14px; + font-size: 0.8rem; } + +select { + display: none; } + +select.browser-default { + display: block; } + +select:disabled { + color: rgba(0, 0, 0, 0.3); } + +.select-wrapper input.select-dropdown:disabled { + color: rgba(0, 0, 0, 0.3); + cursor: default; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -ms-user-select: none; + /* IE10+ */ + border-bottom: 1px solid rgba(0, 0, 0, 0.3); } + +.select-wrapper i { + color: rgba(0, 0, 0, 0.3); } + +.select-dropdown li.disabled { + color: rgba(0, 0, 0, 0.3); + background-color: transparent; } + +/********************* + File Input +**********************/ +.file-field { + position: relative; } + .file-field .file-path-wrapper { + overflow: hidden; + padding-left: 10px; } + .file-field input.file-path { + width: 100%; } + .file-field .btn, .file-field .btn-large { + float: left; + height: 3rem; + line-height: 3rem; } + .file-field span { + cursor: pointer; } + .file-field input[type=file] { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: 100%; + margin: 0; + padding: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); } + +/*************** + 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: #26a69a; + 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: #26a69a; + font-size: 0; + -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: #26a69a; + 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; } + +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: #26a69a; + 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: #26a69a; } + +input[type=range]:focus::-ms-fill-lower { + background: #888; } + +input[type=range]:focus::-ms-fill-upper { + background: #ccc; } + +/*************************** + Text Inputs + Textarea +****************************/ +select { + background-color: rgba(255, 255, 255, 0.9); + width: 100%; + padding: 5px; + border: 1px solid #f2f2f2; + border-radius: 2px; + height: 3rem; } + +/*************** + Nav List +***************/ +.table-of-contents.fixed { + position: fixed; } +.table-of-contents li { + padding: 2px 0; } +.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; } + .table-of-contents a:hover { + color: #a8a8a8; + padding-left: 19px; + border-left: 1px solid #ea4a4f; } + .table-of-contents a.active { + font-weight: 500; + padding-left: 18px; + border-left: 2px solid #ea4a4f; } + +.side-nav { + position: fixed; + width: 240px; + left: -105%; + top: 0; + margin: 0; + height: 100%; + height: calc(100% + 60px); + height: -moz-calc(100%); + padding-bottom: 60px; + background-color: #fff; + z-index: 999; + overflow-y: auto; + will-change: left; } + .side-nav.right-aligned { + will-change: right; + right: -105%; + left: auto; } + .side-nav .collapsible { + margin: 0; } + .side-nav li { + float: none; + padding: 0 15px; } + .side-nav li:hover, .side-nav li.active { + background-color: #ddd; } + .side-nav a { + color: #444; + display: block; + font-size: 1rem; + height: 64px; + line-height: 64px; + padding: 0 15px; } + +.drag-target { + height: 100%; + width: 10px; + position: fixed; + top: 0; + z-index: 998; } + +.side-nav.fixed a { + display: block; + padding: 0 15px; + color: #444; } + +.side-nav.fixed { + left: 0; + position: fixed; } + .side-nav.fixed.right-aligned { + right: 0; + left: auto; } + +@media only screen and (max-width : 992px) { + .side-nav.fixed { + left: -105%; } + .side-nav.fixed.right-aligned { + right: -105%; + left: auto; } } + +.side-nav .collapsible-body li.active, .side-nav.fixed .collapsible-body li.active { + background-color: #ee6e73; } + .side-nav .collapsible-body li.active a, .side-nav.fixed .collapsible-body li.active a { + color: #fff; } + +#sidenav-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + height: 120vh; + background-color: rgba(0, 0, 0, 0.5); + z-index: 997; + 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, .spinner-blue-only { + border-color: #4285f4; } + +.spinner-red, .spinner-red-only { + border-color: #db4437; } + +.spinner-yellow, .spinner-yellow-only { + border-color: #f4b400; } + +.spinner-green, .spinner-green-only { + 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; } + +.active .spinner-layer.spinner-blue-only, .active .spinner-layer.spinner-red-only, .active .spinner-layer.spinner-yellow-only, .active .spinner-layer.spinner-green-only { + /* durations: 4 * ARCTIME */ + opacity: 1; + -webkit-animation: fill-unfill-rotate 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; } + +@-webkit-keyframes fill-unfill-rotate { + /* 0.5 * ARCSIZE */ + /* 1 * ARCSIZE */ + /* 1.5 * ARCSIZE */ + /* 2 * ARCSIZE */ + /* 2.5 * ARCSIZE */ + /* 3 * ARCSIZE */ + /* 3.5 * ARCSIZE */ + /* 4 * ARCSIZE */ + 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 { + /* 0.5 * ARCSIZE */ + /* 1 * ARCSIZE */ + /* 1.5 * ARCSIZE */ + /* 2 * ARCSIZE */ + /* 2.5 * ARCSIZE */ + /* 3 * ARCSIZE */ + /* 3.5 * ARCSIZE */ + /* 4 * ARCSIZE */ + 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; } } + +/** + * 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; + 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%; + 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; } } + +.slider { + position: relative; + height: 400px; + width: 100%; } + .slider.fullscreen { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; } + .slider.fullscreen ul.slides { + height: 100%; } + .slider.fullscreen ul.indicators { + z-index: 2; + bottom: 30px; } + .slider .slides { + background-color: #9e9e9e; + margin: 0; + height: 400px; } + .slider .slides li { + opacity: 0; + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: inherit; + overflow: hidden; } + .slider .slides li img { + height: 100%; + width: 100%; + background-size: cover; + background-position: center; } + .slider .slides li .caption { + color: #fff; + position: absolute; + top: 15%; + left: 15%; + width: 70%; + opacity: 0; } + .slider .slides li .caption p { + color: #e0e0e0; } + .slider .slides li.active { + z-index: 2; } + .slider .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; } + .slider .indicators .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 16px; + width: 16px; + margin: 0 12px; + background-color: #e0e0e0; + -webkit-transition: background-color .3s; + -moz-transition: background-color .3s; + -o-transition: background-color .3s; + -ms-transition: background-color .3s; + transition: background-color .3s; + border-radius: 50%; } + .slider .indicators .indicator-item.active { + background-color: #4CAF50; } + +/* ========================================================================== + $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; + 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: 0; + margin-left: .25em; + margin-right: .25em; } + +.picker__select--month.browser-default { + display: inline; + background-color: #FFFFFF; + width: 40%; } + +.picker__select--year.browser-default { + display: inline; + background-color: #FFFFFF; + width: 25%; } + +.picker__select--month:focus, .picker__select--year:focus { + border-color: rgba(0, 0, 0, 0.05); } + +/** + * 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--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 { + display: none; + padding: .75rem 0; + color: #fff; } + +.picker__day--outfocus:hover { + cursor: pointer; + color: #dddddd; + font-weight: 500; } + +.picker__day--highlighted:hover, .picker--focused .picker__day--highlighted { + cursor: pointer; } + +.picker__day--selected, .picker__day--selected:hover, .picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(.75); + -moz-transform: scale(.75); + -ms-transform: scale(.75); + -o-transform: scale(.75); + transform: scale(.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; + display: flex; + align-items: center; + justify-content: space-between; } + +.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: rgba(0, 0, 0, 0.05); + 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__nav--prev:hover, .picker__nav--next:hover { + cursor: pointer; + color: #000000; + background: #a1ded8; } + +.picker__weekday-display { + background-color: #1f897f; + 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: rgba(255, 255, 255, 0.4); } + +.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__day.picker__day--today { + color: #26a69a; } + +.picker__day.picker__day--today.picker__day--selected { + color: #fff; } + +.picker__weekday { + font-size: .9rem; } + +.picker__day--selected, .picker__day--selected:hover, .picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(.9); + -moz-transform: scale(.9); + -ms-transform: scale(.9); + -o-transform: scale(.9); + transform: scale(.9); + background-color: #26a69a; + color: #ffffff; } + .picker__day--selected.picker__day--outfocus, .picker__day--selected:hover.picker__day--outfocus, .picker--focused .picker__day--selected.picker__day--outfocus { + background-color: #a1ded8; } + +.picker__footer { + text-align: right; + padding: 5px 10px; } + +.picker__close, .picker__today { + font-size: 1.1rem; + padding: 0 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; } + +button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { + background-color: #a1ded8; } + +/* ========================================================================== + $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/css/materialize.min.css b/css/materialize.min.css new file mode 100644 index 0000000..214c67f --- /dev/null +++ b/css/materialize.min.css @@ -0,0 +1,16 @@ +/*! + * Materialize v0.97.0 (http://materializecss.com) + * Copyright 2014-2015 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.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.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.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.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.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.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.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.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#aa00ff !important}.purple-text.text-accent-4{color:#aa00ff !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.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.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.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.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.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.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.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.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.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.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.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.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.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.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.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.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.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.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.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.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ffff00 !important}.yellow-text.text-accent-2{color:#ffff00 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.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.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.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.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.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.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.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.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.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.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eeeeee !important}.grey-text.text-lighten-3{color:#eeeeee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.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.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.shades.black{background-color:#000000 !important}.shades-text.text-black{color:#000000 !important}.shades.white{background-color:#FFFFFF !important}.shades-text.text-white{color:#FFFFFF !important}.shades.transparent{background-color:transparent !important}.shades-text.text-transparent{color:transparent !important}.black{background-color:#000000 !important}.black-text{color:#000000 !important}.white{background-color:#FFFFFF !important}.white-text{color:#FFFFFF !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}/*! normalize.css v3.0.2 | 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,menu,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-color: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}html input[type="button"],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}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ul{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.valign-wrapper .valign{display:block}ul{padding:0}ul li{list-style-type:none}.clearfix{clear:both}.z-depth-0{box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,.collapsible,.side-nav{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{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{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{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,.modal{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{box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22)}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{float:left;font-size:1.2rem;padding:0 10px;line-height:30px;border-radius:2px;text-align:center}.pagination li a{color:#444}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width : 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.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;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;transform-origin:0 50%}@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 : 601px){.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 : 993px){.hide-on-large-only{display:none !important;}}@media only screen and (min-width : 993px){.show-on-large{display:initial !important;}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:initial !important;}}@media only screen and (max-width : 600px){.show-on-small{display:initial !important;}}@media only screen and (min-width : 601px){.show-on-medium-and-up{display:initial !important;}}@media only screen and (max-width : 992px){.show-on-medium-and-down{display:initial !important;}}@media only screen and (max-width : 600px){.center-on-small-only{text-align:center;}}footer.page-footer{margin-top:20px;padding-top:20px;background-color:#ee6e73}footer.page-footer .footer-copyright{overflow:hidden;height:50px;line-height:50px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table}table.bordered>thead>tr,table.bordered>tbody>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0px}table.hoverable>tbody>tr{-webkit-transition:background-color .25s ease;-moz-transition:background-color .25s ease;-o-transition:background-color .25s ease;-ms-transition:background-color .25s ease;transition:background-color .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 #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width : 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:0.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.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;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}span.badge{min-width:3rem;padding:0 6px;text-align:center;font-size:1rem;line-height:inherit;color:#757575;position:absolute;right:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}.video-container{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.video-container.no-controls{padding-top:0}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:0.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;background-color:inherit;top:0;left:0;bottom:0;background-color:#26a69a;-webkit-transition:width .3s linear;-moz-transition:width .3s linear;-o-transition:width .3s linear;-ms-transition:width .3s linear;transition:width .3s linear}.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-moz-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-ms-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-o-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-moz-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-ms-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-o-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;-moz-animation-delay:1.15s;-ms-animation-delay:1.15s;-o-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-moz-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@-moz-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.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}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}@font-face{font-family:"Material-Design-Icons";src:url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"),url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"),url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"),url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"),url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg");font-weight:normal;font-style:normal;}[class^="mdi-"],[class*="mdi-"]{speak:none;display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;font-variant:normal;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}[class^="mdi-"]:before,[class*="mdi-"]:before{display:inline-block;speak:none;text-decoration:inherit}[class^="mdi-"].pull-left,[class*="mdi-"].pull-left{margin-right:.3em}[class^="mdi-"].pull-right,[class*="mdi-"].pull-right{margin-left:.3em}[class^="mdi-"].mdi-lg:before,[class^="mdi-"].mdi-lg:after,[class*="mdi-"].mdi-lg:before,[class*="mdi-"].mdi-lg:after{font-size:1.33333333em;line-height:0.75em;vertical-align:-15%}[class^="mdi-"].mdi-2x:before,[class^="mdi-"].mdi-2x:after,[class*="mdi-"].mdi-2x:before,[class*="mdi-"].mdi-2x:after{font-size:2em}[class^="mdi-"].mdi-3x:before,[class^="mdi-"].mdi-3x:after,[class*="mdi-"].mdi-3x:before,[class*="mdi-"].mdi-3x:after{font-size:3em}[class^="mdi-"].mdi-4x:before,[class^="mdi-"].mdi-4x:after,[class*="mdi-"].mdi-4x:before,[class*="mdi-"].mdi-4x:after{font-size:4em}[class^="mdi-"].mdi-5x:before,[class^="mdi-"].mdi-5x:after,[class*="mdi-"].mdi-5x:before,[class*="mdi-"].mdi-5x:after{font-size:5em}[class^="mdi-device-signal-cellular-"]:after,[class^="mdi-device-battery-"]:after,[class^="mdi-device-battery-charging-"]:after,[class^="mdi-device-signal-cellular-connected-no-internet-"]:after,[class^="mdi-device-signal-wifi-"]:after,[class^="mdi-device-signal-wifi-statusbar-not-connected"]:after,.mdi-device-network-wifi:after{opacity:.3;position:absolute;left:0;top:0;z-index:1;display:inline-block;speak:none;text-decoration:inherit}[class^="mdi-device-signal-cellular-"]:after{content:"\e758"}[class^="mdi-device-battery-"]:after{content:"\e735"}[class^="mdi-device-battery-charging-"]:after{content:"\e733"}[class^="mdi-device-signal-cellular-connected-no-internet-"]:after{content:"\e75d"}[class^="mdi-device-signal-wifi-"]:after,.mdi-device-network-wifi:after{content:"\e765"}[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after{content:"\e8f7"}.mdi-device-signal-cellular-off:after,.mdi-device-signal-cellular-null:after,.mdi-device-signal-cellular-no-sim:after,.mdi-device-signal-wifi-off:after,.mdi-device-signal-wifi-4-bar:after,.mdi-device-signal-cellular-4-bar:after,.mdi-device-battery-alert:after,.mdi-device-signal-cellular-connected-no-internet-4-bar:after,.mdi-device-battery-std:after,.mdi-device-battery-full .mdi-device-battery-unknown:after{content:""}.mdi-fw{width:1.28571429em;text-align:center}.mdi-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.mdi-ul>li{position:relative}.mdi-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:0.14285714em;text-align:center}.mdi-li.mdi-lg{left:-1.85714286em}.mdi-border{padding:.2em .25em .15em;border:solid 0.08em #eeeeee;border-radius:.1em}.mdi-spin{-webkit-animation:mdi-spin 2s infinite linear;animation:mdi-spin 2s infinite linear;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%}.mdi-pulse{-webkit-animation:mdi-spin 1s steps(8) infinite;animation:mdi-spin 1s steps(8) infinite;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%}@-webkit-keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.mdi-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.mdi-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.mdi-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.mdi-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.mdi-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .mdi-rotate-90,:root .mdi-rotate-180,:root .mdi-rotate-270,:root .mdi-flip-horizontal,:root .mdi-flip-vertical{filter:none}.mdi-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.mdi-stack-1x,.mdi-stack-2x{position:absolute;left:0;width:100%;text-align:center}.mdi-stack-1x{line-height:inherit}.mdi-stack-2x{font-size:2em}.mdi-inverse{color:#ffffff}.mdi-action-3d-rotation:before{content:"\e600"}.mdi-action-accessibility:before{content:"\e601"}.mdi-action-account-balance-wallet:before{content:"\e602"}.mdi-action-account-balance: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-add:before{content:"\e608"}.mdi-action-alarm-off:before{content:"\e609"}.mdi-action-alarm-on:before{content:"\e60a"}.mdi-action-alarm: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-ind:before{content:"\e610"}.mdi-action-assignment-late:before{content:"\e611"}.mdi-action-assignment-return:before{content:"\e612"}.mdi-action-assignment-returned:before{content:"\e613"}.mdi-action-assignment-turned-in:before{content:"\e614"}.mdi-action-assignment:before{content:"\e615"}.mdi-action-autorenew:before{content:"\e616"}.mdi-action-backup:before{content:"\e617"}.mdi-action-book:before{content:"\e618"}.mdi-action-bookmark-outline:before{content:"\e619"}.mdi-action-bookmark:before{content:"\e61a"}.mdi-action-bug-report:before{content:"\e61b"}.mdi-action-cached:before{content:"\e61c"}.mdi-action-check-circle:before{content:"\e61d"}.mdi-action-class:before{content:"\e61e"}.mdi-action-credit-card:before{content:"\e61f"}.mdi-action-dashboard:before{content:"\e620"}.mdi-action-delete:before{content:"\e621"}.mdi-action-description:before{content:"\e622"}.mdi-action-dns:before{content:"\e623"}.mdi-action-done-all:before{content:"\e624"}.mdi-action-done:before{content:"\e625"}.mdi-action-event:before{content:"\e626"}.mdi-action-exit-to-app:before{content:"\e627"}.mdi-action-explore:before{content:"\e628"}.mdi-action-extension:before{content:"\e629"}.mdi-action-face-unlock:before{content:"\e62a"}.mdi-action-favorite-outline:before{content:"\e62b"}.mdi-action-favorite:before{content:"\e62c"}.mdi-action-find-in-page:before{content:"\e62d"}.mdi-action-find-replace:before{content:"\e62e"}.mdi-action-flip-to-back:before{content:"\e62f"}.mdi-action-flip-to-front:before{content:"\e630"}.mdi-action-get-app:before{content:"\e631"}.mdi-action-grade:before{content:"\e632"}.mdi-action-group-work:before{content:"\e633"}.mdi-action-help:before{content:"\e634"}.mdi-action-highlight-remove:before{content:"\e635"}.mdi-action-history:before{content:"\e636"}.mdi-action-home:before{content:"\e637"}.mdi-action-https:before{content:"\e638"}.mdi-action-info-outline:before{content:"\e639"}.mdi-action-info:before{content:"\e63a"}.mdi-action-input:before{content:"\e63b"}.mdi-action-invert-colors:before{content:"\e63c"}.mdi-action-label-outline:before{content:"\e63d"}.mdi-action-label:before{content:"\e63e"}.mdi-action-language:before{content:"\e63f"}.mdi-action-launch:before{content:"\e640"}.mdi-action-list:before{content:"\e641"}.mdi-action-lock-open:before{content:"\e642"}.mdi-action-lock-outline:before{content:"\e643"}.mdi-action-lock:before{content:"\e644"}.mdi-action-loyalty:before{content:"\e645"}.mdi-action-markunread-mailbox:before{content:"\e646"}.mdi-action-note-add:before{content:"\e647"}.mdi-action-open-in-browser:before{content:"\e648"}.mdi-action-open-in-new:before{content:"\e649"}.mdi-action-open-with:before{content:"\e64a"}.mdi-action-pageview:before{content:"\e64b"}.mdi-action-payment:before{content:"\e64c"}.mdi-action-perm-camera-mic:before{content:"\e64d"}.mdi-action-perm-contact-cal:before{content:"\e64e"}.mdi-action-perm-data-setting:before{content:"\e64f"}.mdi-action-perm-device-info:before{content:"\e650"}.mdi-action-perm-identity:before{content:"\e651"}.mdi-action-perm-media:before{content:"\e652"}.mdi-action-perm-phone-msg:before{content:"\e653"}.mdi-action-perm-scan-wifi:before{content:"\e654"}.mdi-action-picture-in-picture:before{content:"\e655"}.mdi-action-polymer:before{content:"\e656"}.mdi-action-print:before{content:"\e657"}.mdi-action-query-builder:before{content:"\e658"}.mdi-action-question-answer:before{content:"\e659"}.mdi-action-receipt:before{content:"\e65a"}.mdi-action-redeem:before{content:"\e65b"}.mdi-action-reorder:before{content:"\e65c"}.mdi-action-report-problem:before{content:"\e65d"}.mdi-action-restore:before{content:"\e65e"}.mdi-action-room:before{content:"\e65f"}.mdi-action-schedule:before{content:"\e660"}.mdi-action-search:before{content:"\e661"}.mdi-action-settings-applications:before{content:"\e662"}.mdi-action-settings-backup-restore:before{content:"\e663"}.mdi-action-settings-bluetooth:before{content:"\e664"}.mdi-action-settings-cell:before{content:"\e665"}.mdi-action-settings-display:before{content:"\e666"}.mdi-action-settings-ethernet:before{content:"\e667"}.mdi-action-settings-input-antenna:before{content:"\e668"}.mdi-action-settings-input-component:before{content:"\e669"}.mdi-action-settings-input-composite:before{content:"\e66a"}.mdi-action-settings-input-hdmi:before{content:"\e66b"}.mdi-action-settings-input-svideo:before{content:"\e66c"}.mdi-action-settings-overscan:before{content:"\e66d"}.mdi-action-settings-phone:before{content:"\e66e"}.mdi-action-settings-power:before{content:"\e66f"}.mdi-action-settings-remote:before{content:"\e670"}.mdi-action-settings-voice:before{content:"\e671"}.mdi-action-settings:before{content:"\e672"}.mdi-action-shop-two:before{content:"\e673"}.mdi-action-shop:before{content:"\e674"}.mdi-action-shopping-basket:before{content:"\e675"}.mdi-action-shopping-cart:before{content:"\e676"}.mdi-action-speaker-notes:before{content:"\e677"}.mdi-action-spellcheck:before{content:"\e678"}.mdi-action-star-rate:before{content:"\e679"}.mdi-action-stars:before{content:"\e67a"}.mdi-action-store:before{content:"\e67b"}.mdi-action-subject:before{content:"\e67c"}.mdi-action-supervisor-account:before{content:"\e67d"}.mdi-action-swap-horiz:before{content:"\e67e"}.mdi-action-swap-vert-circle:before{content:"\e67f"}.mdi-action-swap-vert:before{content:"\e680"}.mdi-action-system-update-tv:before{content:"\e681"}.mdi-action-tab-unselected:before{content:"\e682"}.mdi-action-tab:before{content:"\e683"}.mdi-action-theaters:before{content:"\e684"}.mdi-action-thumb-down:before{content:"\e685"}.mdi-action-thumb-up:before{content:"\e686"}.mdi-action-thumbs-up-down:before{content:"\e687"}.mdi-action-toc:before{content:"\e688"}.mdi-action-today:before{content:"\e689"}.mdi-action-track-changes:before{content:"\e68a"}.mdi-action-translate:before{content:"\e68b"}.mdi-action-trending-down:before{content:"\e68c"}.mdi-action-trending-neutral:before{content:"\e68d"}.mdi-action-trending-up:before{content:"\e68e"}.mdi-action-turned-in-not:before{content:"\e68f"}.mdi-action-turned-in:before{content:"\e690"}.mdi-action-verified-user:before{content:"\e691"}.mdi-action-view-agenda:before{content:"\e692"}.mdi-action-view-array:before{content:"\e693"}.mdi-action-view-carousel:before{content:"\e694"}.mdi-action-view-column:before{content:"\e695"}.mdi-action-view-day:before{content:"\e696"}.mdi-action-view-headline:before{content:"\e697"}.mdi-action-view-list:before{content:"\e698"}.mdi-action-view-module:before{content:"\e699"}.mdi-action-view-quilt:before{content:"\e69a"}.mdi-action-view-stream:before{content:"\e69b"}.mdi-action-view-week:before{content:"\e69c"}.mdi-action-visibility-off:before{content:"\e69d"}.mdi-action-visibility:before{content:"\e69e"}.mdi-action-wallet-giftcard:before{content:"\e69f"}.mdi-action-wallet-membership:before{content:"\e6a0"}.mdi-action-wallet-travel:before{content:"\e6a1"}.mdi-action-work:before{content:"\e6a2"}.mdi-alert-error:before{content:"\e6a3"}.mdi-alert-warning:before{content:"\e6a4"}.mdi-av-album:before{content:"\e6a5"}.mdi-av-closed-caption:before{content:"\e6a6"}.mdi-av-equalizer:before{content:"\e6a7"}.mdi-av-explicit:before{content:"\e6a8"}.mdi-av-fast-forward:before{content:"\e6a9"}.mdi-av-fast-rewind:before{content:"\e6aa"}.mdi-av-games:before{content:"\e6ab"}.mdi-av-hearing:before{content:"\e6ac"}.mdi-av-high-quality:before{content:"\e6ad"}.mdi-av-loop:before{content:"\e6ae"}.mdi-av-mic-none:before{content:"\e6af"}.mdi-av-mic-off:before{content:"\e6b0"}.mdi-av-mic:before{content:"\e6b1"}.mdi-av-movie:before{content:"\e6b2"}.mdi-av-my-library-add:before{content:"\e6b3"}.mdi-av-my-library-books:before{content:"\e6b4"}.mdi-av-my-library-music:before{content:"\e6b5"}.mdi-av-new-releases:before{content:"\e6b6"}.mdi-av-not-interested:before{content:"\e6b7"}.mdi-av-pause-circle-fill:before{content:"\e6b8"}.mdi-av-pause-circle-outline:before{content:"\e6b9"}.mdi-av-pause:before{content:"\e6ba"}.mdi-av-play-arrow:before{content:"\e6bb"}.mdi-av-play-circle-fill:before{content:"\e6bc"}.mdi-av-play-circle-outline:before{content:"\e6bd"}.mdi-av-play-shopping-bag:before{content:"\e6be"}.mdi-av-playlist-add:before{content:"\e6bf"}.mdi-av-queue-music:before{content:"\e6c0"}.mdi-av-queue:before{content:"\e6c1"}.mdi-av-radio:before{content:"\e6c2"}.mdi-av-recent-actors:before{content:"\e6c3"}.mdi-av-repeat-one:before{content:"\e6c4"}.mdi-av-repeat:before{content:"\e6c5"}.mdi-av-replay:before{content:"\e6c6"}.mdi-av-shuffle:before{content:"\e6c7"}.mdi-av-skip-next:before{content:"\e6c8"}.mdi-av-skip-previous:before{content:"\e6c9"}.mdi-av-snooze:before{content:"\e6ca"}.mdi-av-stop:before{content:"\e6cb"}.mdi-av-subtitles:before{content:"\e6cc"}.mdi-av-surround-sound:before{content:"\e6cd"}.mdi-av-timer:before{content:"\e6ce"}.mdi-av-video-collection:before{content:"\e6cf"}.mdi-av-videocam-off:before{content:"\e6d0"}.mdi-av-videocam:before{content:"\e6d1"}.mdi-av-volume-down:before{content:"\e6d2"}.mdi-av-volume-mute:before{content:"\e6d3"}.mdi-av-volume-off:before{content:"\e6d4"}.mdi-av-volume-up:before{content:"\e6d5"}.mdi-av-web:before{content:"\e6d6"}.mdi-communication-business:before{content:"\e6d7"}.mdi-communication-call-end:before{content:"\e6d8"}.mdi-communication-call-made:before{content:"\e6d9"}.mdi-communication-call-merge:before{content:"\e6da"}.mdi-communication-call-missed:before{content:"\e6db"}.mdi-communication-call-received:before{content:"\e6dc"}.mdi-communication-call-split:before{content:"\e6dd"}.mdi-communication-call:before{content:"\e6de"}.mdi-communication-chat:before{content:"\e6df"}.mdi-communication-clear-all:before{content:"\e6e0"}.mdi-communication-comment:before{content:"\e6e1"}.mdi-communication-contacts:before{content:"\e6e2"}.mdi-communication-dialer-sip:before{content:"\e6e3"}.mdi-communication-dialpad:before{content:"\e6e4"}.mdi-communication-dnd-on:before{content:"\e6e5"}.mdi-communication-email:before{content:"\e6e6"}.mdi-communication-forum:before{content:"\e6e7"}.mdi-communication-import-export:before{content:"\e6e8"}.mdi-communication-invert-colors-off:before{content:"\e6e9"}.mdi-communication-invert-colors-on:before{content:"\e6ea"}.mdi-communication-live-help:before{content:"\e6eb"}.mdi-communication-location-off:before{content:"\e6ec"}.mdi-communication-location-on:before{content:"\e6ed"}.mdi-communication-message:before{content:"\e6ee"}.mdi-communication-messenger:before{content:"\e6ef"}.mdi-communication-no-sim:before{content:"\e6f0"}.mdi-communication-phone:before{content:"\e6f1"}.mdi-communication-portable-wifi-off:before{content:"\e6f2"}.mdi-communication-quick-contacts-dialer:before{content:"\e6f3"}.mdi-communication-quick-contacts-mail:before{content:"\e6f4"}.mdi-communication-ring-volume:before{content:"\e6f5"}.mdi-communication-stay-current-landscape:before{content:"\e6f6"}.mdi-communication-stay-current-portrait:before{content:"\e6f7"}.mdi-communication-stay-primary-landscape:before{content:"\e6f8"}.mdi-communication-stay-primary-portrait:before{content:"\e6f9"}.mdi-communication-swap-calls:before{content:"\e6fa"}.mdi-communication-textsms:before{content:"\e6fb"}.mdi-communication-voicemail:before{content:"\e6fc"}.mdi-communication-vpn-key:before{content:"\e6fd"}.mdi-content-add-box:before{content:"\e6fe"}.mdi-content-add-circle-outline:before{content:"\e6ff"}.mdi-content-add-circle:before{content:"\e700"}.mdi-content-add:before{content:"\e701"}.mdi-content-archive:before{content:"\e702"}.mdi-content-backspace:before{content:"\e703"}.mdi-content-block:before{content:"\e704"}.mdi-content-clear:before{content:"\e705"}.mdi-content-content-copy:before{content:"\e706"}.mdi-content-content-cut:before{content:"\e707"}.mdi-content-content-paste:before{content:"\e708"}.mdi-content-create:before{content:"\e709"}.mdi-content-drafts:before{content:"\e70a"}.mdi-content-filter-list:before{content:"\e70b"}.mdi-content-flag:before{content:"\e70c"}.mdi-content-forward:before{content:"\e70d"}.mdi-content-gesture:before{content:"\e70e"}.mdi-content-inbox:before{content:"\e70f"}.mdi-content-link:before{content:"\e710"}.mdi-content-mail:before{content:"\e711"}.mdi-content-markunread:before{content:"\e712"}.mdi-content-redo:before{content:"\e713"}.mdi-content-remove-circle-outline:before{content:"\e714"}.mdi-content-remove-circle:before{content:"\e715"}.mdi-content-remove:before{content:"\e716"}.mdi-content-reply-all:before{content:"\e717"}.mdi-content-reply:before{content:"\e718"}.mdi-content-report:before{content:"\e719"}.mdi-content-save:before{content:"\e71a"}.mdi-content-select-all:before{content:"\e71b"}.mdi-content-send:before{content:"\e71c"}.mdi-content-sort:before{content:"\e71d"}.mdi-content-text-format:before{content:"\e71e"}.mdi-content-undo:before{content:"\e71f"}.mdi-editor-attach-file:before{content:"\e776"}.mdi-editor-attach-money:before{content:"\e777"}.mdi-editor-border-all:before{content:"\e778"}.mdi-editor-border-bottom:before{content:"\e779"}.mdi-editor-border-clear:before{content:"\e77a"}.mdi-editor-border-color:before{content:"\e77b"}.mdi-editor-border-horizontal:before{content:"\e77c"}.mdi-editor-border-inner:before{content:"\e77d"}.mdi-editor-border-left:before{content:"\e77e"}.mdi-editor-border-outer:before{content:"\e77f"}.mdi-editor-border-right:before{content:"\e780"}.mdi-editor-border-style:before{content:"\e781"}.mdi-editor-border-top:before{content:"\e782"}.mdi-editor-border-vertical:before{content:"\e783"}.mdi-editor-format-align-center:before{content:"\e784"}.mdi-editor-format-align-justify:before{content:"\e785"}.mdi-editor-format-align-left:before{content:"\e786"}.mdi-editor-format-align-right:before{content:"\e787"}.mdi-editor-format-bold:before{content:"\e788"}.mdi-editor-format-clear:before{content:"\e789"}.mdi-editor-format-color-fill:before{content:"\e78a"}.mdi-editor-format-color-reset:before{content:"\e78b"}.mdi-editor-format-color-text:before{content:"\e78c"}.mdi-editor-format-indent-decrease:before{content:"\e78d"}.mdi-editor-format-indent-increase:before{content:"\e78e"}.mdi-editor-format-italic:before{content:"\e78f"}.mdi-editor-format-line-spacing:before{content:"\e790"}.mdi-editor-format-list-bulleted:before{content:"\e791"}.mdi-editor-format-list-numbered:before{content:"\e792"}.mdi-editor-format-paint:before{content:"\e793"}.mdi-editor-format-quote:before{content:"\e794"}.mdi-editor-format-size:before{content:"\e795"}.mdi-editor-format-strikethrough:before{content:"\e796"}.mdi-editor-format-textdirection-l-to-r:before{content:"\e797"}.mdi-editor-format-textdirection-r-to-l:before{content:"\e798"}.mdi-editor-format-underline:before{content:"\e799"}.mdi-editor-functions:before{content:"\e79a"}.mdi-editor-insert-chart:before{content:"\e79b"}.mdi-editor-insert-comment:before{content:"\e79c"}.mdi-editor-insert-drive-file:before{content:"\e79d"}.mdi-editor-insert-emoticon:before{content:"\e79e"}.mdi-editor-insert-invitation:before{content:"\e79f"}.mdi-editor-insert-link:before{content:"\e7a0"}.mdi-editor-insert-photo:before{content:"\e7a1"}.mdi-editor-merge-type:before{content:"\e7a2"}.mdi-editor-mode-comment:before{content:"\e7a3"}.mdi-editor-mode-edit:before{content:"\e7a4"}.mdi-editor-publish:before{content:"\e7a5"}.mdi-editor-vertical-align-bottom:before{content:"\e7a6"}.mdi-editor-vertical-align-center:before{content:"\e7a7"}.mdi-editor-vertical-align-top:before{content:"\e7a8"}.mdi-editor-wrap-text:before{content:"\e7a9"}.mdi-file-attachment:before{content:"\e7aa"}.mdi-file-cloud-circle:before{content:"\e7ab"}.mdi-file-cloud-done:before{content:"\e7ac"}.mdi-file-cloud-download:before{content:"\e7ad"}.mdi-file-cloud-off:before{content:"\e7ae"}.mdi-file-cloud-queue:before{content:"\e7af"}.mdi-file-cloud-upload:before{content:"\e7b0"}.mdi-file-cloud:before{content:"\e7b1"}.mdi-file-file-download:before{content:"\e7b2"}.mdi-file-file-upload:before{content:"\e7b3"}.mdi-file-folder-open:before{content:"\e7b4"}.mdi-file-folder-shared:before{content:"\e7b5"}.mdi-file-folder:before{content:"\e7b6"}.mdi-device-access-alarm:before{content:"\e720"}.mdi-device-access-alarms:before{content:"\e721"}.mdi-device-access-time:before{content:"\e722"}.mdi-device-add-alarm:before{content:"\e723"}.mdi-device-airplanemode-off:before{content:"\e724"}.mdi-device-airplanemode-on:before{content:"\e725"}.mdi-device-battery-20:before{content:"\e726"}.mdi-device-battery-30:before{content:"\e727"}.mdi-device-battery-50:before{content:"\e728"}.mdi-device-battery-60:before{content:"\e729"}.mdi-device-battery-80:before{content:"\e72a"}.mdi-device-battery-90:before{content:"\e72b"}.mdi-device-battery-alert:before{content:"\e72c"}.mdi-device-battery-charging-20:before{content:"\e72d"}.mdi-device-battery-charging-30:before{content:"\e72e"}.mdi-device-battery-charging-50:before{content:"\e72f"}.mdi-device-battery-charging-60:before{content:"\e730"}.mdi-device-battery-charging-80:before{content:"\e731"}.mdi-device-battery-charging-90:before{content:"\e732"}.mdi-device-battery-charging-full:before{content:"\e733"}.mdi-device-battery-full:before{content:"\e734"}.mdi-device-battery-std:before{content:"\e735"}.mdi-device-battery-unknown:before{content:"\e736"}.mdi-device-bluetooth-connected:before{content:"\e737"}.mdi-device-bluetooth-disabled:before{content:"\e738"}.mdi-device-bluetooth-searching:before{content:"\e739"}.mdi-device-bluetooth:before{content:"\e73a"}.mdi-device-brightness-auto:before{content:"\e73b"}.mdi-device-brightness-high:before{content:"\e73c"}.mdi-device-brightness-low:before{content:"\e73d"}.mdi-device-brightness-medium:before{content:"\e73e"}.mdi-device-data-usage:before{content:"\e73f"}.mdi-device-developer-mode:before{content:"\e740"}.mdi-device-devices:before{content:"\e741"}.mdi-device-dvr:before{content:"\e742"}.mdi-device-gps-fixed:before{content:"\e743"}.mdi-device-gps-not-fixed:before{content:"\e744"}.mdi-device-gps-off:before{content:"\e745"}.mdi-device-location-disabled:before{content:"\e746"}.mdi-device-location-searching:before{content:"\e747"}.mdi-device-multitrack-audio:before{content:"\e748"}.mdi-device-network-cell:before{content:"\e749"}.mdi-device-network-wifi:before{content:"\e74a"}.mdi-device-nfc:before{content:"\e74b"}.mdi-device-now-wallpaper:before{content:"\e74c"}.mdi-device-now-widgets:before{content:"\e74d"}.mdi-device-screen-lock-landscape:before{content:"\e74e"}.mdi-device-screen-lock-portrait:before{content:"\e74f"}.mdi-device-screen-lock-rotation:before{content:"\e750"}.mdi-device-screen-rotation:before{content:"\e751"}.mdi-device-sd-storage:before{content:"\e752"}.mdi-device-settings-system-daydream:before{content:"\e753"}.mdi-device-signal-cellular-0-bar:before{content:"\e754"}.mdi-device-signal-cellular-1-bar:before{content:"\e755"}.mdi-device-signal-cellular-2-bar:before{content:"\e756"}.mdi-device-signal-cellular-3-bar:before{content:"\e757"}.mdi-device-signal-cellular-4-bar:before{content:"\e758"}.mdi-signal-wifi-statusbar-connected-no-internet-after:before{content:"\e8f6"}.mdi-device-signal-cellular-connected-no-internet-0-bar:before{content:"\e759"}.mdi-device-signal-cellular-connected-no-internet-1-bar:before{content:"\e75a"}.mdi-device-signal-cellular-connected-no-internet-2-bar:before{content:"\e75b"}.mdi-device-signal-cellular-connected-no-internet-3-bar:before{content:"\e75c"}.mdi-device-signal-cellular-connected-no-internet-4-bar:before{content:"\e75d"}.mdi-device-signal-cellular-no-sim:before{content:"\e75e"}.mdi-device-signal-cellular-null:before{content:"\e75f"}.mdi-device-signal-cellular-off:before{content:"\e760"}.mdi-device-signal-wifi-0-bar:before{content:"\e761"}.mdi-device-signal-wifi-1-bar:before{content:"\e762"}.mdi-device-signal-wifi-2-bar:before{content:"\e763"}.mdi-device-signal-wifi-3-bar:before{content:"\e764"}.mdi-device-signal-wifi-4-bar:before{content:"\e765"}.mdi-device-signal-wifi-off:before{content:"\e766"}.mdi-device-signal-wifi-statusbar-1-bar:before{content:"\e767"}.mdi-device-signal-wifi-statusbar-2-bar:before{content:"\e768"}.mdi-device-signal-wifi-statusbar-3-bar:before{content:"\e769"}.mdi-device-signal-wifi-statusbar-4-bar:before{content:"\e76a"}.mdi-device-signal-wifi-statusbar-connected-no-internet-:before{content:"\e76b"}.mdi-device-signal-wifi-statusbar-connected-no-internet:before{content:"\e76f"}.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before{content:"\e76c"}.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before{content:"\e76d"}.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before{content:"\e76e"}.mdi-signal-wifi-statusbar-not-connected-after:before{content:"\e8f7"}.mdi-device-signal-wifi-statusbar-not-connected:before{content:"\e770"}.mdi-device-signal-wifi-statusbar-null:before{content:"\e771"}.mdi-device-storage:before{content:"\e772"}.mdi-device-usb:before{content:"\e773"}.mdi-device-wifi-lock:before{content:"\e774"}.mdi-device-wifi-tethering:before{content:"\e775"}.mdi-hardware-cast-connected:before{content:"\e7b7"}.mdi-hardware-cast:before{content:"\e7b8"}.mdi-hardware-computer:before{content:"\e7b9"}.mdi-hardware-desktop-mac:before{content:"\e7ba"}.mdi-hardware-desktop-windows:before{content:"\e7bb"}.mdi-hardware-dock:before{content:"\e7bc"}.mdi-hardware-gamepad:before{content:"\e7bd"}.mdi-hardware-headset-mic:before{content:"\e7be"}.mdi-hardware-headset:before{content:"\e7bf"}.mdi-hardware-keyboard-alt:before{content:"\e7c0"}.mdi-hardware-keyboard-arrow-down:before{content:"\e7c1"}.mdi-hardware-keyboard-arrow-left:before{content:"\e7c2"}.mdi-hardware-keyboard-arrow-right:before{content:"\e7c3"}.mdi-hardware-keyboard-arrow-up:before{content:"\e7c4"}.mdi-hardware-keyboard-backspace:before{content:"\e7c5"}.mdi-hardware-keyboard-capslock:before{content:"\e7c6"}.mdi-hardware-keyboard-control:before{content:"\e7c7"}.mdi-hardware-keyboard-hide:before{content:"\e7c8"}.mdi-hardware-keyboard-return:before{content:"\e7c9"}.mdi-hardware-keyboard-tab:before{content:"\e7ca"}.mdi-hardware-keyboard-voice:before{content:"\e7cb"}.mdi-hardware-keyboard:before{content:"\e7cc"}.mdi-hardware-laptop-chromebook:before{content:"\e7cd"}.mdi-hardware-laptop-mac:before{content:"\e7ce"}.mdi-hardware-laptop-windows:before{content:"\e7cf"}.mdi-hardware-laptop:before{content:"\e7d0"}.mdi-hardware-memory:before{content:"\e7d1"}.mdi-hardware-mouse:before{content:"\e7d2"}.mdi-hardware-phone-android:before{content:"\e7d3"}.mdi-hardware-phone-iphone:before{content:"\e7d4"}.mdi-hardware-phonelink-off:before{content:"\e7d5"}.mdi-hardware-phonelink:before{content:"\e7d6"}.mdi-hardware-security:before{content:"\e7d7"}.mdi-hardware-sim-card:before{content:"\e7d8"}.mdi-hardware-smartphone:before{content:"\e7d9"}.mdi-hardware-speaker:before{content:"\e7da"}.mdi-hardware-tablet-android:before{content:"\e7db"}.mdi-hardware-tablet-mac:before{content:"\e7dc"}.mdi-hardware-tablet:before{content:"\e7dd"}.mdi-hardware-tv:before{content:"\e7de"}.mdi-hardware-watch:before{content:"\e7df"}.mdi-image-add-to-photos:before{content:"\e7e0"}.mdi-image-adjust:before{content:"\e7e1"}.mdi-image-assistant-photo:before{content:"\e7e2"}.mdi-image-audiotrack:before{content:"\e7e3"}.mdi-image-blur-circular:before{content:"\e7e4"}.mdi-image-blur-linear:before{content:"\e7e5"}.mdi-image-blur-off:before{content:"\e7e6"}.mdi-image-blur-on:before{content:"\e7e7"}.mdi-image-brightness-1:before{content:"\e7e8"}.mdi-image-brightness-2:before{content:"\e7e9"}.mdi-image-brightness-3:before{content:"\e7ea"}.mdi-image-brightness-4:before{content:"\e7eb"}.mdi-image-brightness-5:before{content:"\e7ec"}.mdi-image-brightness-6:before{content:"\e7ed"}.mdi-image-brightness-7:before{content:"\e7ee"}.mdi-image-brush:before{content:"\e7ef"}.mdi-image-camera-alt:before{content:"\e7f0"}.mdi-image-camera-front:before{content:"\e7f1"}.mdi-image-camera-rear:before{content:"\e7f2"}.mdi-image-camera-roll:before{content:"\e7f3"}.mdi-image-camera:before{content:"\e7f4"}.mdi-image-center-focus-strong:before{content:"\e7f5"}.mdi-image-center-focus-weak:before{content:"\e7f6"}.mdi-image-collections:before{content:"\e7f7"}.mdi-image-color-lens:before{content:"\e7f8"}.mdi-image-colorize:before{content:"\e7f9"}.mdi-image-compare:before{content:"\e7fa"}.mdi-image-control-point-duplicate:before{content:"\e7fb"}.mdi-image-control-point:before{content:"\e7fc"}.mdi-image-crop-3-2:before{content:"\e7fd"}.mdi-image-crop-5-4:before{content:"\e7fe"}.mdi-image-crop-7-5:before{content:"\e7ff"}.mdi-image-crop-16-9:before{content:"\e800"}.mdi-image-crop-din:before{content:"\e801"}.mdi-image-crop-free:before{content:"\e802"}.mdi-image-crop-landscape:before{content:"\e803"}.mdi-image-crop-original:before{content:"\e804"}.mdi-image-crop-portrait:before{content:"\e805"}.mdi-image-crop-square:before{content:"\e806"}.mdi-image-crop:before{content:"\e807"}.mdi-image-dehaze:before{content:"\e808"}.mdi-image-details:before{content:"\e809"}.mdi-image-edit:before{content:"\e80a"}.mdi-image-exposure-minus-1:before{content:"\e80b"}.mdi-image-exposure-minus-2:before{content:"\e80c"}.mdi-image-exposure-plus-1:before{content:"\e80d"}.mdi-image-exposure-plus-2:before{content:"\e80e"}.mdi-image-exposure-zero:before{content:"\e80f"}.mdi-image-exposure:before{content:"\e810"}.mdi-image-filter-1:before{content:"\e811"}.mdi-image-filter-2:before{content:"\e812"}.mdi-image-filter-3:before{content:"\e813"}.mdi-image-filter-4:before{content:"\e814"}.mdi-image-filter-5:before{content:"\e815"}.mdi-image-filter-6:before{content:"\e816"}.mdi-image-filter-7:before{content:"\e817"}.mdi-image-filter-8:before{content:"\e818"}.mdi-image-filter-9-plus:before{content:"\e819"}.mdi-image-filter-9:before{content:"\e81a"}.mdi-image-filter-b-and-w:before{content:"\e81b"}.mdi-image-filter-center-focus:before{content:"\e81c"}.mdi-image-filter-drama:before{content:"\e81d"}.mdi-image-filter-frames:before{content:"\e81e"}.mdi-image-filter-hdr:before{content:"\e81f"}.mdi-image-filter-none:before{content:"\e820"}.mdi-image-filter-tilt-shift:before{content:"\e821"}.mdi-image-filter-vintage:before{content:"\e822"}.mdi-image-filter:before{content:"\e823"}.mdi-image-flare:before{content:"\e824"}.mdi-image-flash-auto:before{content:"\e825"}.mdi-image-flash-off:before{content:"\e826"}.mdi-image-flash-on:before{content:"\e827"}.mdi-image-flip:before{content:"\e828"}.mdi-image-gradient:before{content:"\e829"}.mdi-image-grain:before{content:"\e82a"}.mdi-image-grid-off:before{content:"\e82b"}.mdi-image-grid-on:before{content:"\e82c"}.mdi-image-hdr-off:before{content:"\e82d"}.mdi-image-hdr-on:before{content:"\e82e"}.mdi-image-hdr-strong:before{content:"\e82f"}.mdi-image-hdr-weak:before{content:"\e830"}.mdi-image-healing:before{content:"\e831"}.mdi-image-image-aspect-ratio:before{content:"\e832"}.mdi-image-image:before{content:"\e833"}.mdi-image-iso:before{content:"\e834"}.mdi-image-landscape:before{content:"\e835"}.mdi-image-leak-add:before{content:"\e836"}.mdi-image-leak-remove:before{content:"\e837"}.mdi-image-lens:before{content:"\e838"}.mdi-image-looks-3:before{content:"\e839"}.mdi-image-looks-4:before{content:"\e83a"}.mdi-image-looks-5:before{content:"\e83b"}.mdi-image-looks-6:before{content:"\e83c"}.mdi-image-looks-one:before{content:"\e83d"}.mdi-image-looks-two:before{content:"\e83e"}.mdi-image-looks:before{content:"\e83f"}.mdi-image-loupe:before{content:"\e840"}.mdi-image-movie-creation:before{content:"\e841"}.mdi-image-nature-people:before{content:"\e842"}.mdi-image-nature:before{content:"\e843"}.mdi-image-navigate-before:before{content:"\e844"}.mdi-image-navigate-next:before{content:"\e845"}.mdi-image-palette:before{content:"\e846"}.mdi-image-panorama-fisheye:before{content:"\e847"}.mdi-image-panorama-horizontal:before{content:"\e848"}.mdi-image-panorama-vertical:before{content:"\e849"}.mdi-image-panorama-wide-angle:before{content:"\e84a"}.mdi-image-panorama:before{content:"\e84b"}.mdi-image-photo-album:before{content:"\e84c"}.mdi-image-photo-camera:before{content:"\e84d"}.mdi-image-photo-library:before{content:"\e84e"}.mdi-image-photo:before{content:"\e84f"}.mdi-image-portrait:before{content:"\e850"}.mdi-image-remove-red-eye:before{content:"\e851"}.mdi-image-rotate-left:before{content:"\e852"}.mdi-image-rotate-right:before{content:"\e853"}.mdi-image-slideshow:before{content:"\e854"}.mdi-image-straighten:before{content:"\e855"}.mdi-image-style:before{content:"\e856"}.mdi-image-switch-camera:before{content:"\e857"}.mdi-image-switch-video:before{content:"\e858"}.mdi-image-tag-faces:before{content:"\e859"}.mdi-image-texture:before{content:"\e85a"}.mdi-image-timelapse:before{content:"\e85b"}.mdi-image-timer-3:before{content:"\e85c"}.mdi-image-timer-10:before{content:"\e85d"}.mdi-image-timer-auto:before{content:"\e85e"}.mdi-image-timer-off:before{content:"\e85f"}.mdi-image-timer:before{content:"\e860"}.mdi-image-tonality:before{content:"\e861"}.mdi-image-transform:before{content:"\e862"}.mdi-image-tune:before{content:"\e863"}.mdi-image-wb-auto:before{content:"\e864"}.mdi-image-wb-cloudy:before{content:"\e865"}.mdi-image-wb-incandescent:before{content:"\e866"}.mdi-image-wb-irradescent:before{content:"\e867"}.mdi-image-wb-sunny:before{content:"\e868"}.mdi-maps-beenhere:before{content:"\e869"}.mdi-maps-directions-bike:before{content:"\e86a"}.mdi-maps-directions-bus:before{content:"\e86b"}.mdi-maps-directions-car:before{content:"\e86c"}.mdi-maps-directions-ferry:before{content:"\e86d"}.mdi-maps-directions-subway:before{content:"\e86e"}.mdi-maps-directions-train:before{content:"\e86f"}.mdi-maps-directions-transit:before{content:"\e870"}.mdi-maps-directions-walk:before{content:"\e871"}.mdi-maps-directions:before{content:"\e872"}.mdi-maps-flight:before{content:"\e873"}.mdi-maps-hotel:before{content:"\e874"}.mdi-maps-layers-clear:before{content:"\e875"}.mdi-maps-layers:before{content:"\e876"}.mdi-maps-local-airport:before{content:"\e877"}.mdi-maps-local-atm:before{content:"\e878"}.mdi-maps-local-attraction:before{content:"\e879"}.mdi-maps-local-bar:before{content:"\e87a"}.mdi-maps-local-cafe:before{content:"\e87b"}.mdi-maps-local-car-wash:before{content:"\e87c"}.mdi-maps-local-convenience-store:before{content:"\e87d"}.mdi-maps-local-drink:before{content:"\e87e"}.mdi-maps-local-florist:before{content:"\e87f"}.mdi-maps-local-gas-station:before{content:"\e880"}.mdi-maps-local-grocery-store:before{content:"\e881"}.mdi-maps-local-hospital:before{content:"\e882"}.mdi-maps-local-hotel:before{content:"\e883"}.mdi-maps-local-laundry-service:before{content:"\e884"}.mdi-maps-local-library:before{content:"\e885"}.mdi-maps-local-mall:before{content:"\e886"}.mdi-maps-local-movies:before{content:"\e887"}.mdi-maps-local-offer:before{content:"\e888"}.mdi-maps-local-parking:before{content:"\e889"}.mdi-maps-local-pharmacy:before{content:"\e88a"}.mdi-maps-local-phone:before{content:"\e88b"}.mdi-maps-local-pizza:before{content:"\e88c"}.mdi-maps-local-play:before{content:"\e88d"}.mdi-maps-local-post-office:before{content:"\e88e"}.mdi-maps-local-print-shop:before{content:"\e88f"}.mdi-maps-local-restaurant:before{content:"\e890"}.mdi-maps-local-see:before{content:"\e891"}.mdi-maps-local-shipping:before{content:"\e892"}.mdi-maps-local-taxi:before{content:"\e893"}.mdi-maps-location-history:before{content:"\e894"}.mdi-maps-map:before{content:"\e895"}.mdi-maps-my-location:before{content:"\e896"}.mdi-maps-navigation:before{content:"\e897"}.mdi-maps-pin-drop:before{content:"\e898"}.mdi-maps-place:before{content:"\e899"}.mdi-maps-rate-review:before{content:"\e89a"}.mdi-maps-restaurant-menu:before{content:"\e89b"}.mdi-maps-satellite:before{content:"\e89c"}.mdi-maps-store-mall-directory:before{content:"\e89d"}.mdi-maps-terrain:before{content:"\e89e"}.mdi-maps-traffic:before{content:"\e89f"}.mdi-navigation-apps:before{content:"\e8a0"}.mdi-navigation-arrow-back:before{content:"\e8a1"}.mdi-navigation-arrow-drop-down-circle:before{content:"\e8a2"}.mdi-navigation-arrow-drop-down:before{content:"\e8a3"}.mdi-navigation-arrow-drop-up:before{content:"\e8a4"}.mdi-navigation-arrow-forward:before{content:"\e8a5"}.mdi-navigation-cancel:before{content:"\e8a6"}.mdi-navigation-check:before{content:"\e8a7"}.mdi-navigation-chevron-left:before{content:"\e8a8"}.mdi-navigation-chevron-right:before{content:"\e8a9"}.mdi-navigation-close:before{content:"\e8aa"}.mdi-navigation-expand-less:before{content:"\e8ab"}.mdi-navigation-expand-more:before{content:"\e8ac"}.mdi-navigation-fullscreen-exit:before{content:"\e8ad"}.mdi-navigation-fullscreen:before{content:"\e8ae"}.mdi-navigation-menu:before{content:"\e8af"}.mdi-navigation-more-horiz:before{content:"\e8b0"}.mdi-navigation-more-vert:before{content:"\e8b1"}.mdi-navigation-refresh:before{content:"\e8b2"}.mdi-navigation-unfold-less:before{content:"\e8b3"}.mdi-navigation-unfold-more:before{content:"\e8b4"}.mdi-notification-adb:before{content:"\e8b5"}.mdi-notification-bluetooth-audio:before{content:"\e8b6"}.mdi-notification-disc-full:before{content:"\e8b7"}.mdi-notification-dnd-forwardslash:before{content:"\e8b8"}.mdi-notification-do-not-disturb:before{content:"\e8b9"}.mdi-notification-drive-eta:before{content:"\e8ba"}.mdi-notification-event-available:before{content:"\e8bb"}.mdi-notification-event-busy:before{content:"\e8bc"}.mdi-notification-event-note:before{content:"\e8bd"}.mdi-notification-folder-special:before{content:"\e8be"}.mdi-notification-mms:before{content:"\e8bf"}.mdi-notification-more:before{content:"\e8c0"}.mdi-notification-network-locked:before{content:"\e8c1"}.mdi-notification-phone-bluetooth-speaker:before{content:"\e8c2"}.mdi-notification-phone-forwarded:before{content:"\e8c3"}.mdi-notification-phone-in-talk:before{content:"\e8c4"}.mdi-notification-phone-locked:before{content:"\e8c5"}.mdi-notification-phone-missed:before{content:"\e8c6"}.mdi-notification-phone-paused:before{content:"\e8c7"}.mdi-notification-play-download:before{content:"\e8c8"}.mdi-notification-play-install:before{content:"\e8c9"}.mdi-notification-sd-card:before{content:"\e8ca"}.mdi-notification-sim-card-alert:before{content:"\e8cb"}.mdi-notification-sms-failed:before{content:"\e8cc"}.mdi-notification-sms:before{content:"\e8cd"}.mdi-notification-sync-disabled:before{content:"\e8ce"}.mdi-notification-sync-problem:before{content:"\e8cf"}.mdi-notification-sync:before{content:"\e8d0"}.mdi-notification-system-update:before{content:"\e8d1"}.mdi-notification-tap-and-play:before{content:"\e8d2"}.mdi-notification-time-to-leave:before{content:"\e8d3"}.mdi-notification-vibration:before{content:"\e8d4"}.mdi-notification-voice-chat:before{content:"\e8d5"}.mdi-notification-vpn-lock:before{content:"\e8d6"}.mdi-social-cake:before{content:"\e8d7"}.mdi-social-domain:before{content:"\e8d8"}.mdi-social-group-add:before{content:"\e8d9"}.mdi-social-group:before{content:"\e8da"}.mdi-social-location-city:before{content:"\e8db"}.mdi-social-mood:before{content:"\e8dc"}.mdi-social-notifications-none:before{content:"\e8dd"}.mdi-social-notifications-off:before{content:"\e8de"}.mdi-social-notifications-on:before{content:"\e8df"}.mdi-social-notifications-paused:before{content:"\e8e0"}.mdi-social-notifications:before{content:"\e8e1"}.mdi-social-pages:before{content:"\e8e2"}.mdi-social-party-mode:before{content:"\e8e3"}.mdi-social-people-outline:before{content:"\e8e4"}.mdi-social-people:before{content:"\e8e5"}.mdi-social-person-add:before{content:"\e8e6"}.mdi-social-person-outline:before{content:"\e8e7"}.mdi-social-person:before{content:"\e8e8"}.mdi-social-plus-one:before{content:"\e8e9"}.mdi-social-poll:before{content:"\e8ea"}.mdi-social-public:before{content:"\e8eb"}.mdi-social-school:before{content:"\e8ec"}.mdi-social-share:before{content:"\e8ed"}.mdi-social-whatshot:before{content:"\e8ee"}.mdi-toggle-check-box-outline-blank:before{content:"\e8ef"}.mdi-toggle-check-box:before{content:"\e8f0"}.mdi-toggle-radio-button-off:before{content:"\e8f1"}.mdi-toggle-radio-button-on:before{content:"\e8f2"}.mdi-toggle-star-half:before{content:"\e8f3"}.mdi-toggle-star-outline:before{content:"\e8f4"}.mdi-toggle-star:before{content:"\e8f5"}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width : 601px){.container{width:85%}}@media only screen and (min-width : 993px){.container{width:70%}}.container .row{margin-left:-0.75rem;margin-right:-0.75rem}.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{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0.75rem}.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 : 601px){.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 : 993px){.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 a{color:#fff}nav .nav-wrapper{position:relative;height:100%}nav .nav-wrapper i{display:block;font-size:2rem}@media only screen and (min-width : 993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px}nav .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;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width : 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);}}nav .brand-logo.right{right:0.5rem;padding:0}nav ul{margin:0}nav ul li{-webkit-transition:background-color .3s;-moz-transition:background-color .3s;-o-transition:background-color .3s;-ms-transition:background-color .3s;transition:background-color .3s;float:left;padding:0}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:0 15px}nav ul.left{float:left}nav .input-field{margin:0}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);-webkit-transition:color .3s;-moz-transition:color .3s;-o-transition:color .3s;-ms-transition:color .3s;transition:color .3s}nav .input-field label.active i{color:#fff}nav .input-field label.active{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}.navbar-fixed{position:relative;height:56px;z-index:998}.navbar-fixed nav{position:fixed}@media only screen and (min-width : 601px){nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Thin.woff2") format("woff2"),url("../font/roboto/Roboto-Thin.woff") format("woff"),url("../font/roboto/Roboto-Thin.ttf") format("truetype");font-weight:200;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Light.woff2") format("woff2"),url("../font/roboto/Roboto-Light.woff") format("woff"),url("../font/roboto/Roboto-Light.ttf") format("truetype");font-weight:300;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Regular.woff2") format("woff2"),url("../font/roboto/Roboto-Regular.woff") format("woff"),url("../font/roboto/Roboto-Regular.ttf") format("truetype");font-weight:400;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Medium.woff2") format("woff2"),url("../font/roboto/Roboto-Medium.woff") format("woff"),url("../font/roboto/Roboto-Medium.ttf") format("truetype");font-weight:500;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Bold.woff2") format("woff2"),url("../font/roboto/Roboto-Bold.woff") format("woff"),url("../font/roboto/Roboto-Bold.ttf") format("truetype");font-weight:700;}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@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;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 0.912rem 0}h5{font-size:1.64rem;line-height:110%;margin:0.82rem 0 0.656rem 0}h6{font-size:1rem;line-height:110%;margin:0.5rem 0 0.4rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,footer.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem;}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem;}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem;}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem;}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem;}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem;}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem;}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem;}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem;}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem;}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem;}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem;}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem;}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem;}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem;}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem;}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem;}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem;}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem;}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem;}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem;}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem;}}.card-panel{transition:box-shadow .25s;padding:20px;margin:0.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;overflow:hidden;margin:0.5rem 0 1rem 0;background-color:#fff;transition:box-shadow .25s;border-radius:2px}.card .card-title{color:#fff;font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{overflow:hidden}.card.small .card-content,.card.medium .card-content,.card.large .card-content{overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.small .card-image{height:150px}.card.small .card-content{height:150px}.card.medium{height:400px}.card.medium .card-image{height:250px}.card.medium .card-content{height:150px}.card.large{height:500px}.card.large .card-image{height:330px}.card.large .card-content{height:170px}.card .card-image{position:relative}.card .card-image img{border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{position:absolute;bottom:0;left:0;padding:20px}.card .card-content{padding:20px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{line-height:48px}.card .card-action{border-top:1px solid rgba(160,160,160,0.2);padding:20px}.card .card-action a{color:#ffab40;margin-right:20px;-webkit-transition:color .3s ease;-moz-transition:color .3s ease;-o-transition:color .3s ease;-ms-transition:color .3s ease;transition:color .3s ease;text-transform:uppercase}.card .card-action a:hover{color:#ffd8a6}.card .card-reveal{padding:20px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;top:100%;height:100%;z-index:1;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:1001}@media only screen and (max-width : 600px){#toast-container{min-width:100%;bottom:0%;}}@media only screen and (min-width : 601px) and (max-width : 992px){#toast-container{min-width:30%;left:5%;bottom:7%;}}@media only screen and (min-width : 993px){#toast-container{min-width:8%;top:10%;right:7%;}}.toast{border-radius:2px;top:0;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:48px;line-height:48px;background-color:#323232;padding:0 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.toast .btn,.toast .btn-large,.toast .btn-flat{margin:0;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width : 600px){.toast{width:100%;border-radius:0;}}@media only screen and (min-width : 601px) and (max-width : 992px){.toast{float:left;}}@media only screen and (min-width : 993px){.toast{float:right;}}.tabs{position:relative;height:48px;background-color:#fff;margin:0 auto;width:100%;white-space:nowrap}.tabs .tab{display:block;float:left;text-align:center;line-height:48px;height:48px;padding:0 20px;margin:0;text-transform:uppercase;letter-spacing:.8px;width:15%}.tabs .tab a{color:#ee6e73;display:block;width:100%;height:100%;-webkit-transition:color .28s ease;-moz-transition:color .28s ease;-o-transition:color .28s ease;-ms-transition:color .28s ease;transition:color .28s ease}.tabs .tab a:hover{color:#f9c9cb}.tabs .tab.disabled a{color:#f9c9cb;cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}.tabs .tab{padding:0}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:1rem;opacity:0;display:none;position:absolute;text-align:center;overflow:hidden;left:0;top:0;will-change:top, left}.backdrop{position:absolute;opacity:0;display:none;height:7px;width:14px;border-radius:0 0 14px 14px;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%;will-change:transform, opacity}.btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;outline:0;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.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 !important;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled *,.disabled.btn-large *,.btn-floating.disabled *,.btn-large.disabled *,.btn:disabled *,.btn-large:disabled *,.btn-large:disabled *,.btn-floating:disabled *{pointer-events:none}.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:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:37px;height:37px;line-height:37px;padding:0;background-color:#26a69a;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:37px}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:55.5px;height:55.5px}.btn-floating.btn-large i{line-height:55.5px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.btn-flat.disabled{color:#b3b3b3;cursor:default}.btn-large{height:54px;line-height:56px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width, height}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li:hover,.dropdown-content li.active{background-color:#eee}.dropdown-content li>a,.dropdown-content li>span{font-size:1.2rem;color:#26a69a;display:block;padding:1rem 1rem}.dropdown-content li>a>i{height:inherit;line-height:inherit}/*! + * Waves v0.6.0 + * 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;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;will-change:opacity, transform;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);-webkit-transition:all 0.7s ease-out;-moz-transition:all 0.7s ease-out;-o-transition:all 0.7s ease-out;-ms-transition:all 0.7s ease-out;transition:all 0.7s ease-out;-webkit-transition-property:-webkit-transform, opacity;-moz-transition-property:-moz-transform, opacity;-o-transition-property:-o-transform, opacity;transition-property:transform, opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;-ms-transition:none !important;transition:none !important}.waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, white 100%, black 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;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%;-webkit-mask-image:none}.waves-block{display:block}a.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}@media only screen and (max-width : 992px){.modal{width:80%;}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-flat{float:right;margin:6px 0}.lean-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:0.5rem 0 1rem 0}.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:1rem}.collapsible-body{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}.side-nav .collapsible{border:none;box-shadow:none}.side-nav .collapsible li{padding:0}.side-nav .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;margin:0 1rem}.side-nav .collapsible-header i{line-height:inherit}.side-nav .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a{margin:0 1rem 0 2rem}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;transition:margin .35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.materialboxed{cursor:zoom-in;position:relative;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s;transition:opacity .4s}.materialboxed:hover{will-change:left, top, width, height}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#292929;z-index:999;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:0.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input[type=text],input[type=password],input[type=email],input[type=url],input[type=time],input[type=date],input[type=datetime-local],input[type=tel],input[type=number],input[type=search],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;box-shadow:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;transition:all .3s}input[type=text]:disabled,input[type=text][readonly="readonly"],input[type=password]:disabled,input[type=password][readonly="readonly"],input[type=email]:disabled,input[type=email][readonly="readonly"],input[type=url]:disabled,input[type=url][readonly="readonly"],input[type=time]:disabled,input[type=time][readonly="readonly"],input[type=date]:disabled,input[type=date][readonly="readonly"],input[type=datetime-local]:disabled,input[type=datetime-local][readonly="readonly"],input[type=tel]:disabled,input[type=tel][readonly="readonly"],input[type=number]:disabled,input[type=number][readonly="readonly"],input[type=search]:disabled,input[type=search][readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.26);border-bottom:1px dotted rgba(0,0,0,0.26)}input[type=text]:disabled+label,input[type=text][readonly="readonly"]+label,input[type=password]:disabled+label,input[type=password][readonly="readonly"]+label,input[type=email]:disabled+label,input[type=email][readonly="readonly"]+label,input[type=url]:disabled+label,input[type=url][readonly="readonly"]+label,input[type=time]:disabled+label,input[type=time][readonly="readonly"]+label,input[type=date]:disabled+label,input[type=date][readonly="readonly"]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly="readonly"]+label,input[type=tel]:disabled+label,input[type=tel][readonly="readonly"]+label,input[type=number]:disabled+label,input[type=number][readonly="readonly"]+label,input[type=search]:disabled+label,input[type=search][readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.26)}input[type=text]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=url]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=search]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}input[type=text]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input[type=text].valid,input[type=text]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4CAF50;opacity:1}input[type=text].invalid,input[type=text]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #F44336;box-shadow:0 1px 0 0 #F44336}input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#F44336;opacity:1}input[type=text]+label:after,input[type=password]+label:after,input[type=email]+label:after,input[type=url]+label:after,input[type=time]+label:after,input[type=date]+label:after,input[type=datetime-local]+label:after,input[type=tel]+label:after,input[type=number]+label:after,input[type=search]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:65px;opacity:0;transition:.2s opacity ease-out,.2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field label{color:#9e9e9e;position:absolute;top:0.8rem;left:0.75rem;font-size:1rem;cursor:text;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out}.input-field label.active{font-size:0.8rem;-webkit-transform:translateY(-140%);-moz-transform:translateY(-140%);-ms-transform:translateY(-140%);-o-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix ~ input,.input-field .prefix ~ textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ textarea{padding-top:.8rem}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width : 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width : 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus ~ .mdi-navigation-close{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search] ~ .mdi-navigation-close{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:1.6rem 0;resize:none;min-height:3rem}.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;visibility:hidden}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease;-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:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.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 #26a69a;background-color:#26a69a;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"].with-gap:checked+label:before{border-radius:50%;border:2px solid #26a69a}[type="radio"].with-gap:checked+label:after{border-radius:50%;border:2px solid #26a69a;background-color:#26a69a;z-index:0;-webkit-transform:scale(.5);-moz-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}[type="radio"].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,0.26)}[type="radio"].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:transparent;border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled+label{color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:checked+label:after{background-color:rgba(0,0,0,0.26);border-color:#BDBDBD}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;left:-9999px;visibility:hidden}[type="checkbox"]{}[type="checkbox"]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="checkbox"]+label:before{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;-webkit-transition:0.2s;-moz-transition:0.2s;-o-transition:0.2s;-ms-transition:0.2s;transition:0.2s}[type="checkbox"]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,0.26)}[type="checkbox"]:checked+label:before{top:-4px;left:-3px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);border-bottom:2px solid rgba(0,0,0,0.26)}[type="checkbox"]:indeterminate+label:before{left:-10px;top:-11px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);background-color:transparent}[type="checkbox"].filled-in+label:after{border-radius:2px}[type="checkbox"].filled-in+label:before,[type="checkbox"].filled-in+label:after{content:'';left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+label:after{top:0px;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type="checkbox"].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}[type="checkbox"].filled-in:disabled:checked+label:before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,0.4);left:-5px;top:-3px;transition:left 0.3s ease,background .3s ease,box-shadow 0.1s ease}input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(38,166,154,0.1)}input[type=checkbox]:not(:disabled) ~ .lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(0,0,0,0.08)}.switch label input[type=checkbox]:checked+.lever:after{left:24px}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:16px;font-size:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,0.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:0.8rem}select{display:none}select.browser-default{display:block}select:disabled{color:rgba(0,0,0,0.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,0.3)}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled{color:rgba(0,0,0,0.3);background-color:transparent}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.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:#26a69a;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:#26a69a;font-size:0;-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:#26a69a;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}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:#26a69a;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:#26a69a}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.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}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ea4a4f}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ea4a4f}.side-nav{position:fixed;width:240px;left:-105%;top:0;margin:0;height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:left}.side-nav.right-aligned{will-change:right;right:-105%;left:auto}.side-nav .collapsible{margin:0}.side-nav li{float:none;padding:0 15px}.side-nav li:hover,.side-nav li.active{background-color:#ddd}.side-nav a{color:#444;display:block;font-size:1rem;height:64px;line-height:64px;padding:0 15px}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed a{display:block;padding:0 15px;color:#444}.side-nav.fixed{left:0;position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width : 992px){.side-nav.fixed{left:-105%}.side-nav.fixed.right-aligned{right:-105%;left:auto}}.side-nav .collapsible-body li.active,.side-nav.fixed .collapsible-body li.active{background-color:#ee6e73}.side-nav .collapsible-body li.active a,.side-nav.fixed .collapsible-body li.active a{color:#fff}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;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,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{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}.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 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}@-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;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%;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}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;-webkit-transition:background-color .3s;-moz-transition:background-color .3s;-o-transition:background-color .3s;-ms-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.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;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:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#FFFFFF;width:40%}.picker__select--year.browser-default{display:inline;background-color:#FFFFFF;width:25%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,0.05)}.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--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{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(.75);-moz-transform:scale(.75);-ms-transform:scale(.75);-o-transform:scale(.75);transform:scale(.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;display:flex;align-items:center;justify-content:space-between}.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:rgba(0,0,0,0.05);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__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;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:rgba(255,255,255,0.4)}.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__day.picker__day--today{color:#26a69a}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9);background-color:#26a69a;color:#ffffff}.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus,.picker--focused .picker__day--selected.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 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}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.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}} \ No newline at end of file diff --git a/css/prism.css b/css/prism.css new file mode 100644 index 0000000..584cc8e --- /dev/null +++ b/css/prism.css @@ -0,0 +1,133 @@ +/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+scss+bash */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; +/* text-shadow: 0 1px white;*/ + font-family: 'Inconsolata', Monaco, Consolas, 'Andale Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.4; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important { + font-weight: bold; +} + +.token.entity { + cursor: help; +} + diff --git a/font/material-design-icons/LICENSE.txt b/font/material-design-icons/LICENSE.txt new file mode 100755 index 0000000..542f653 --- /dev/null +++ b/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/font/material-design-icons/Material-Design-Icons.eot b/font/material-design-icons/Material-Design-Icons.eot new file mode 100644 index 0000000..d9c296e Binary files /dev/null and b/font/material-design-icons/Material-Design-Icons.eot differ diff --git a/font/material-design-icons/Material-Design-Icons.svg b/font/material-design-icons/Material-Design-Icons.svg new file mode 100644 index 0000000..def1e9b --- /dev/null +++ b/font/material-design-icons/Material-Design-Icons.svg @@ -0,0 +1,769 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/font/material-design-icons/Material-Design-Icons.ttf b/font/material-design-icons/Material-Design-Icons.ttf new file mode 100644 index 0000000..e12f0cc Binary files /dev/null and b/font/material-design-icons/Material-Design-Icons.ttf differ diff --git a/font/material-design-icons/Material-Design-Icons.woff b/font/material-design-icons/Material-Design-Icons.woff new file mode 100644 index 0000000..201581f Binary files /dev/null and b/font/material-design-icons/Material-Design-Icons.woff differ diff --git a/font/material-design-icons/Material-Design-Icons.woff2 b/font/material-design-icons/Material-Design-Icons.woff2 new file mode 100755 index 0000000..5efd1b9 Binary files /dev/null and b/font/material-design-icons/Material-Design-Icons.woff2 differ diff --git a/font/roboto/Roboto-Bold.ttf b/font/roboto/Roboto-Bold.ttf new file mode 100644 index 0000000..68822ca Binary files /dev/null and b/font/roboto/Roboto-Bold.ttf differ diff --git a/font/roboto/Roboto-Bold.woff b/font/roboto/Roboto-Bold.woff new file mode 100755 index 0000000..1f75afd Binary files /dev/null and b/font/roboto/Roboto-Bold.woff differ diff --git a/font/roboto/Roboto-Bold.woff2 b/font/roboto/Roboto-Bold.woff2 new file mode 100755 index 0000000..350d1c3 Binary files /dev/null and b/font/roboto/Roboto-Bold.woff2 differ diff --git a/font/roboto/Roboto-Light.ttf b/font/roboto/Roboto-Light.ttf new file mode 100644 index 0000000..aa45340 Binary files /dev/null and b/font/roboto/Roboto-Light.ttf differ diff --git a/font/roboto/Roboto-Light.woff b/font/roboto/Roboto-Light.woff new file mode 100755 index 0000000..3480c6c Binary files /dev/null and b/font/roboto/Roboto-Light.woff differ diff --git a/font/roboto/Roboto-Light.woff2 b/font/roboto/Roboto-Light.woff2 new file mode 100755 index 0000000..9a4d98c Binary files /dev/null and b/font/roboto/Roboto-Light.woff2 differ diff --git a/font/roboto/Roboto-Medium.ttf b/font/roboto/Roboto-Medium.ttf new file mode 100644 index 0000000..a3c1a1f Binary files /dev/null and b/font/roboto/Roboto-Medium.ttf differ diff --git a/font/roboto/Roboto-Medium.woff b/font/roboto/Roboto-Medium.woff new file mode 100755 index 0000000..1186773 Binary files /dev/null and b/font/roboto/Roboto-Medium.woff differ diff --git a/font/roboto/Roboto-Medium.woff2 b/font/roboto/Roboto-Medium.woff2 new file mode 100755 index 0000000..d10a592 Binary files /dev/null and b/font/roboto/Roboto-Medium.woff2 differ diff --git a/font/roboto/Roboto-Regular.ttf b/font/roboto/Roboto-Regular.ttf new file mode 100644 index 0000000..0e58508 Binary files /dev/null and b/font/roboto/Roboto-Regular.ttf differ diff --git a/font/roboto/Roboto-Regular.woff b/font/roboto/Roboto-Regular.woff new file mode 100755 index 0000000..f823258 Binary files /dev/null and b/font/roboto/Roboto-Regular.woff differ diff --git a/font/roboto/Roboto-Regular.woff2 b/font/roboto/Roboto-Regular.woff2 new file mode 100755 index 0000000..b7082ef Binary files /dev/null and b/font/roboto/Roboto-Regular.woff2 differ diff --git a/font/roboto/Roboto-Thin.ttf b/font/roboto/Roboto-Thin.ttf new file mode 100644 index 0000000..8779333 Binary files /dev/null and b/font/roboto/Roboto-Thin.ttf differ diff --git a/font/roboto/Roboto-Thin.woff b/font/roboto/Roboto-Thin.woff new file mode 100755 index 0000000..2a98c1e Binary files /dev/null and b/font/roboto/Roboto-Thin.woff differ diff --git a/font/roboto/Roboto-Thin.woff2 b/font/roboto/Roboto-Thin.woff2 new file mode 100755 index 0000000..a38025a Binary files /dev/null and b/font/roboto/Roboto-Thin.woff2 differ diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 0000000..533ed9d Binary files /dev/null and b/img/logo.png differ diff --git a/img/logo_small.png b/img/logo_small.png new file mode 100644 index 0000000..f0691a8 Binary files /dev/null and b/img/logo_small.png differ diff --git a/js/animation.js b/js/animation.js new file mode 100644 index 0000000..d194de7 --- /dev/null +++ b/js/animation.js @@ -0,0 +1,9 @@ + // Custom Easing + jQuery.extend( jQuery.easing, + { + easeInOutMaterial: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return c/4*((t-=2)*t*t + 2) + b; + } + }); + diff --git a/js/buttons.js b/js/buttons.js new file mode 100644 index 0000000..2657bdf --- /dev/null +++ b/js/buttons.js @@ -0,0 +1,61 @@ +(function ($) { + $(document).ready(function() { + + // jQuery reverse + $.fn.reverse = [].reverse; + + $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn', function(e) { + var $this = $(this); + openFABMenu($this); + + }); + + $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn', function(e) { + var $this = $(this); + closeFABMenu($this); + }); + + }); + + $.fn.extend({ + openFAB: function() { + var $this = $(this); + openFABMenu($this); + }, + closeFAB: function() { + closeFABMenu($this); + } + }); + + + var openFABMenu = function (btn) { + $this = btn; + if ($this.hasClass('active') === false) { + $this.addClass('active'); + $this.find('ul .btn-floating').velocity( + { scaleY: ".4", scaleX: ".4", translateY: "40px"}, + { duration: 0 }); + + var time = 0; + $this.find('ul .btn-floating').reverse().each(function () { + $(this).velocity( + { opacity: "1", scaleX: "1", scaleY: "1", translateY: "0"}, + { duration: 80, delay: time }); + time += 40; + }); + } + }; + + var closeFABMenu = function (btn) { + $this = btn; + $this.removeClass('active'); + var time = 0; + $this.find('ul .btn-floating').velocity("stop", true); + $this.find('ul .btn-floating').velocity( + { opacity: "0", scaleX: ".4", scaleY: ".4", translateY: "40px"}, + { duration: 80 } + ); + }; + + +}( jQuery )); diff --git a/js/cards.js b/js/cards.js new file mode 100644 index 0000000..cb10fc5 --- /dev/null +++ b/js/cards.js @@ -0,0 +1,27 @@ +(function ($) { + $(document).ready(function() { + + $(document).on('click.card', '.card', function (e) { + if ($(this).find('.card-reveal').length) { + if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) { + // Make Reveal animate down and display none + $(this).find('.card-reveal').velocity( + {translateY: 0}, { + duration: 225, + queue: false, + easing: 'easeInOutQuad', + complete: function() { $(this).css({ display: 'none'}); } + } + ); + } + else if ($(e.target).is($('.card .activator')) || + $(e.target).is($('.card .activator i')) ) { + $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'}); + } + } + + + }); + + }); +}( jQuery )); \ No newline at end of file diff --git a/js/character_counter.js b/js/character_counter.js new file mode 100644 index 0000000..dfda543 --- /dev/null +++ b/js/character_counter.js @@ -0,0 +1,59 @@ +(function ($) { + + $.fn.characterCounter = function(){ + return this.each(function(){ + + var itHasLengthAttribute = $(this).attr('length') !== undefined; + + if(itHasLengthAttribute){ + $(this).on('input', updateCounter); + $(this).on('focus', updateCounter); + $(this).on('blur', removeCounterElement); + + addCounterElement($(this)); + } + + }); + }; + + function updateCounter(){ + var maxLength = +$(this).attr('length'), + actualLength = +$(this).val().length, + isValidLength = actualLength <= maxLength; + + $(this).parent().find('span[class="character-counter"]') + .html( actualLength + '/' + maxLength); + + addInputStyle(isValidLength, $(this)); + } + + function addCounterElement($input){ + var $counterElement = $('') + .addClass('character-counter') + .css('float','right') + .css('font-size','12px') + .css('height', 1); + + $input.parent().append($counterElement); + } + + function removeCounterElement(){ + $(this).parent().find('span[class="character-counter"]').html(''); + } + + function addInputStyle(isValidLength, $input){ + var inputHasInvalidClass = $input.hasClass('invalid'); + if (isValidLength && inputHasInvalidClass) { + $input.removeClass('invalid'); + } + else if(!isValidLength && !inputHasInvalidClass){ + $input.removeClass('valid'); + $input.addClass('invalid'); + } + } + + $(document).ready(function(){ + $('input, textarea').characterCounter(); + }); + +}( jQuery )); diff --git a/js/collapsible.js b/js/collapsible.js new file mode 100644 index 0000000..45a897e --- /dev/null +++ b/js/collapsible.js @@ -0,0 +1,139 @@ +(function ($) { + $.fn.collapsible = function(options) { + var defaults = { + accordion: undefined + }; + + options = $.extend(defaults, options); + + + return this.each(function() { + + var $this = $(this); + + var $panel_headers = $(this).find('> li > .collapsible-header'); + + var collapsible_type = $this.data("collapsible"); + + // Turn off any existing event handlers + $this.off('click.collapse', '.collapsible-header'); + $panel_headers.off('click.collapse'); + + + /**************** + Helper Functions + ****************/ + + // Accordion Open + function accordionOpen(object) { + $panel_headers = $this.find('> li > .collapsible-header'); + if (object.hasClass('active')) { + object.parent().addClass('active'); + } + else { + object.parent().removeClass('active'); + } + if (object.parent().hasClass('active')){ + object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + else{ + object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + + $panel_headers.not(object).removeClass('active').parent().removeClass('active'); + $panel_headers.not(object).parent().children('.collapsible-body').stop(true,false).slideUp( + { + duration: 350, + easing: "easeOutQuart", + queue: false, + complete: + function() { + $(this).css('height', ''); + } + }); + } + + // Expandable Open + function expandableOpen(object) { + if (object.hasClass('active')) { + object.parent().addClass('active'); + } + else { + object.parent().removeClass('active'); + } + if (object.parent().hasClass('active')){ + object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + else{ + object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + } + + /** + * Check if object is children of panel header + * @param {Object} object Jquery object + * @return {Boolean} true if it is children + */ + function isChildrenOfPanelHeader(object) { + + var panelHeader = getPanelHeader(object); + + return panelHeader.length > 0; + } + + /** + * Get panel header from a children element + * @param {Object} object Jquery object + * @return {Object} panel header object + */ + function getPanelHeader(object) { + + return object.closest('li > .collapsible-header'); + } + + /***** End Helper Functions *****/ + + + + if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion + // Add click handler to only direct collapsible header children + $panel_headers = $this.find('> li > .collapsible-header'); + $panel_headers.on('click.collapse', function (e) { + var element = $(e.target); + + if (isChildrenOfPanelHeader(element)) { + element = getPanelHeader(element); + } + + element.toggleClass('active'); + accordionOpen(element); + }); + // Open first active + accordionOpen($panel_headers.filter('.active').first()); + } + else { // Handle Expandables + $panel_headers.each(function () { + // Add click handler to only direct collapsible header children + $(this).on('click.collapse', function (e) { + var element = $(e.target); + if (isChildrenOfPanelHeader(element)) { + element = getPanelHeader(element); + } + element.toggleClass('active'); + expandableOpen(element); + }); + // Open any bodies that have the active class + if ($(this).hasClass('active')) { + expandableOpen($(this)); + } + + }); + } + + }); + }; + + $(document).ready(function(){ + $('.collapsible').collapsible(); + }); +}( jQuery )); \ No newline at end of file diff --git a/js/date_picker/picker.date.js b/js/date_picker/picker.date.js new file mode 100644 index 0000000..fb264d0 --- /dev/null +++ b/js/date_picker/picker.date.js @@ -0,0 +1,1430 @@ +/*! + * Date picker for pickadate.js v3.5.0 + * 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._ + + + +/** + * 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 ) { + + var isInfiniteValue, + calendar = this + + // If there’s no value, use the type as the value. + value = value === undefined ? type : value + + + // If it’s infinity, update the value. + if ( value == -Infinity || value == Infinity ) { + isInfiniteValue = value + } + + // If it’s an object, use the native date object. + else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) { + value = value.obj + } + + // If it’s an array, convert it into a date and make sure + // that it’s a valid date – otherwise default to today. + else if ( $.isArray( value ) ) { + value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] ) + value = _.isDate( value ) ? value : calendar.create().obj + } + + // If it’s a number or date object, make a normalized date. + else if ( _.isInteger( value ) || _.isDate( value ) ) { + value = calendar.normalize( new Date( value ), options ) + } + + // If it’s a literal true or any other case, set it to now. + else /*if ( value === true )*/ { + value = calendar.now( type, value, options ) + } + + // Return the compiled object. + return { + year: isInfiniteValue || value.getFullYear(), + month: isInfiniteValue || value.getMonth(), + date: isInfiniteValue || value.getDate(), + day: isInfiniteValue || value.getDay(), + obj: isInfiniteValue || value, + pick: isInfiniteValue || 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 ) { + value = new Date() + if ( options && options.rel ) { + value.setDate( value.getDate() + options.rel ) + } + return this.normalize( value, options ) +} + + +/** + * 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 + + +/** + * Normalize a date by setting the hours to midnight. + */ +DatePicker.prototype.normalize = function( value/*, options*/ ) { + value.setHours( 0, 0, 0, 0 ) + return value +} + + +/** + * Measure the range of dates. + */ +DatePicker.prototype.measure = function( type, value/*, 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 ) ) { + value = calendar.now( type, value, { rel: value } ) + } + + 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 + + // Materialize modified + })( ( 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. + //Materialize modified + createMonthLabel = function(override) { + + var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull + + // Materialize modified + if (override == "short_months") { + monthsCollection = settings.monthsShort; + } + + // If there are months to select, add a dropdown menu. + if ( settings.selectMonths && override == undefined) { + + 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 + ' browser-default', + ( isOpen ? '' : 'disabled' ) + ' ' + + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + + 'title="' + settings.labelMonthSelect + '"' + ) + } + + // Materialize modified + if (override == "short_months") + if (selectedObject != null) + return _.node( 'div', monthsCollection[ selectedObject.month ] ); + else 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. + // Materialize modified + 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 + } + + if ( settings.selectYears && override == undefined ) { + 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 + ' browser-default', + ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + + 'title="' + settings.labelYearSelect + '"' + ) + } + } + + // Materialize modified + if (override == "raw") + return _.node( 'div', focusedYear ) + + // Otherwise just return the year focused + return _.node( 'div', focusedYear, settings.klass.year ) + } //createYearLabel + + + // Materialize modified + 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. +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 ? createMonthLabel() + createYearLabel() : 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 isSelected = selectedObject && selectedObject.pick == targetDate.pick, + isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick, + isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick, + formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] ) + + return [ + _.node( + 'div', + targetDate.date, + (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 ( nowObject.pick == targetDate.pick ) { + 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', + label: formattedDate, + selected: isSelected && calendar.$node.val() === formattedDate ? 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, "btn-flat picker__clear", + '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 modified + 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/js/date_picker/picker.js b/js/date_picker/picker.js new file mode 100644 index 0000000..88a1aec --- /dev/null +++ b/js/date_picker/picker.js @@ -0,0 +1,1123 @@ +/*! + * pickadate.js v3.5.0, 2014/04/13 + * 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' + }) + } + + + /** + * 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, select, textarea, button, 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 ) + } + + // 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 as specified in the settings. + if ( SETTINGS.container ) $( SETTINGS.container ).append( P._hidden ) + else $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 + + +})); + + diff --git a/js/dropdown.js b/js/dropdown.js new file mode 100644 index 0000000..6a8b8d1 --- /dev/null +++ b/js/dropdown.js @@ -0,0 +1,178 @@ +(function ($) { + + // Add posibility to scroll to selected option + // usefull for select for example + $.fn.scrollTo = function(elem) { + $(this).scrollTop($(this).scrollTop() - $(this).offset().top + $(elem).offset().top); + return this; + }; + + $.fn.dropdown = function (option) { + var defaults = { + inDuration: 300, + outDuration: 225, + constrain_width: true, // Constrains width of dropdown to the activator + hover: false, + gutter: 0, // Spacing from edge + belowOrigin: false + }; + + this.each(function(){ + var origin = $(this); + var options = $.extend({}, defaults, option); + + // Dropdown menu + var activates = $("#"+ origin.attr('data-activates')); + + function updateOptions() { + if (origin.data('induration') !== undefined) + options.inDuration = origin.data('inDuration'); + if (origin.data('outduration') !== undefined) + options.outDuration = origin.data('outDuration'); + if (origin.data('constrainwidth') !== undefined) + options.constrain_width = origin.data('constrainwidth'); + if (origin.data('hover') !== undefined) + options.hover = origin.data('hover'); + if (origin.data('gutter') !== undefined) + options.gutter = origin.data('gutter'); + if (origin.data('beloworigin') !== undefined) + options.belowOrigin = origin.data('beloworigin'); + } + + updateOptions(); + + // Attach dropdown to its activator + origin.after(activates); + + /* + Helper function to position and resize dropdown. + Used in hover and click handler. + */ + function placeDropdown() { + // Check html data attributes + updateOptions(); + + // Set Dropdown state + activates.addClass('active'); + + // Constrain width + if (options.constrain_width === true) { + activates.css('width', origin.outerWidth()); + } + var offset = 0; + if (options.belowOrigin === true) { + offset = origin.height(); + } + + // Handle edge alignment + var offsetLeft = origin.offset().left; + var width_difference = 0; + var gutter_spacing = options.gutter; + + + if (offsetLeft + activates.innerWidth() > $(window).width()) { + width_difference = origin.innerWidth() - activates.innerWidth(); + gutter_spacing = gutter_spacing * -1; + } + + // Position dropdown + activates.css({ + position: 'absolute', + top: origin.position().top + offset, + left: origin.position().left + width_difference + gutter_spacing + }); + + + + // Show dropdown + activates.stop(true, true).css('opacity', 0) + .slideDown({ + queue: false, + duration: options.inDuration, + easing: 'easeOutCubic', + complete: function() { + $(this).css('height', ''); + } + }) + .animate( {opacity: 1}, {queue: false, duration: options.inDuration, easing: 'easeOutSine'}); + } + + function hideDropdown() { + activates.fadeOut(options.outDuration); + activates.removeClass('active'); + } + + // Hover + if (options.hover) { + var open = false; + origin.unbind('click.' + origin.attr('id')); + // Hover handler to show dropdown + origin.on('mouseenter', function(e){ // Mouse over + if (open === false) { + placeDropdown(); + open = true; + } + }); + origin.on('mouseleave', function(e){ + // If hover on origin then to something other than dropdown content, then close + var toEl = e.toElement || e.relatedTarget; // added browser compatibility for target element + if(!$(toEl).closest('.dropdown-content').is(activates)) { + activates.stop(true, true); + hideDropdown(); + open = false; + } + }); + + activates.on('mouseleave', function(e){ // Mouse out + var toEl = e.toElement || e.relatedTarget; + if(!$(toEl).closest('.dropdown-button').is(origin)) { + activates.stop(true, true); + hideDropdown(); + open = false; + } + }); + + // Click + } else { + + // Click handler to show dropdown + origin.unbind('click.' + origin.attr('id')); + origin.bind('click.'+origin.attr('id'), function(e){ + + if ( origin[0] == e.currentTarget && ($(e.target).closest('.dropdown-content').length === 0) ) { + e.preventDefault(); // Prevents button click from moving window + placeDropdown(); + + } + // If origin is clicked and menu is open, close menu + else { + if (origin.hasClass('active')) { + hideDropdown(); + $(document).unbind('click.' + activates.attr('id')); + } + } + // If menu open, add click close handler to document + if (activates.hasClass('active')) { + $(document).bind('click.'+ activates.attr('id'), function (e) { + if (!activates.is(e.target) && !origin.is(e.target) && (!origin.find(e.target).length > 0) ) { + hideDropdown(); + $(document).unbind('click.' + activates.attr('id')); + } + }); + } + }); + + } // End else + + // Listen to open and close event - useful for select component + origin.on('open', placeDropdown); + origin.on('close', hideDropdown); + + + }); + }; // End dropdown plugin + + $(document).ready(function(){ + $('.dropdown-button').dropdown(); + }); +}( jQuery )); diff --git a/js/forms.js b/js/forms.js new file mode 100644 index 0000000..19e8e73 --- /dev/null +++ b/js/forms.js @@ -0,0 +1,454 @@ +(function ($) { + $(document).ready(function() { + + // Function to update labels of text fields + Materialize.updateTextFields = function() { + var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; + $(input_selector).each(function(index, element) { + if ($(element).val().length > 0 || $(this).attr('placeholder') !== undefined || $(element)[0].validity.badInput === true) { + $(this).siblings('label, i').addClass('active'); + } + else { + $(this).siblings('label, i').removeClass('active'); + } + }); + }; + + // Text based inputs + var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; + + // Handle HTML5 autofocus + $('input[autofocus]').siblings('label, i').addClass('active'); + + // Add active if form auto complete + $(document).on('change', input_selector, function () { + if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) { + $(this).siblings('label, i').addClass('active'); + } + validate_field($(this)); + }); + + // Add active if input element has been pre-populated on document ready + $(document).ready(function() { + Materialize.updateTextFields(); + }); + + // HTML DOM FORM RESET handling + $(document).on('reset', function(e) { + var formReset = $(e.target); + if (formReset.is('form')) { + formReset.find(input_selector).removeClass('valid').removeClass('invalid'); + formReset.find(input_selector).each(function () { + if ($(this).attr('value') === '') { + $(this).siblings('label, i').removeClass('active'); + } + }); + + // Reset select + formReset.find('select.initialized').each(function () { + var reset_text = formReset.find('option[selected]').text(); + formReset.siblings('input.select-dropdown').val(reset_text); + }); + } + }); + + // Add active when element has focus + $(document).on('focus', input_selector, function () { + $(this).siblings('label, i').addClass('active'); + }); + + $(document).on('blur', input_selector, function () { + var $inputElement = $(this); + if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) { + $inputElement.siblings('label, i').removeClass('active'); + } + validate_field($inputElement); + }); + + validate_field = function(object) { + var hasLength = object.attr('length') !== undefined; + var lenAttr = parseInt(object.attr('length')); + var len = object.val().length; + + if (object.val().length === 0 && object[0].validity.badInput === false) { + if (object.hasClass('validate')) { + object.removeClass('valid'); + object.removeClass('invalid'); + } + } + else { + if (object.hasClass('validate')) { + // Check for character counter attributes + if ((object.is(':valid') && hasLength && (len < lenAttr)) || (object.is(':valid') && !hasLength)) { + object.removeClass('invalid'); + object.addClass('valid'); + } + else { + object.removeClass('valid'); + object.addClass('invalid'); + } + } + } + }; + + + // Textarea Auto Resize + var hiddenDiv = $('.hiddendiv').first(); + if (!hiddenDiv.length) { + hiddenDiv = $('
'); + $('body').append(hiddenDiv); + } + var text_area_selector = '.materialize-textarea'; + + function textareaAutoResize($textarea) { + // Set font properties of hiddenDiv + + var fontFamily = $textarea.css('font-family'); + var fontSize = $textarea.css('font-size'); + + if (fontSize) { hiddenDiv.css('font-size', fontSize); } + if (fontFamily) { hiddenDiv.css('font-family', fontFamily); } + + if ($textarea.attr('wrap') === "off") { + hiddenDiv.css('overflow-wrap', "normal") + .css('white-space', "pre"); + } + + + + + hiddenDiv.text($textarea.val() + '\n'); + var content = hiddenDiv.html().replace(/\n/g, '
'); + hiddenDiv.html(content); + + + // When textarea is hidden, width goes crazy. + // Approximate with half of window size + + if ($textarea.is(':visible')) { + hiddenDiv.css('width', $textarea.width()); + } + else { + hiddenDiv.css('width', $(window).width()/2); + } + + $textarea.css('height', hiddenDiv.height()); + } + + $(text_area_selector).each(function () { + var $textarea = $(this); + if ($textarea.val().length) { + textareaAutoResize($textarea); + } + }); + + $('body').on('keyup keydown', text_area_selector, function () { + textareaAutoResize($(this)); + }); + + + // File Input Path + $('.file-field').each(function() { + var path_input = $(this).find('input.file-path'); + $(this).find('input[type="file"]').change(function () { + path_input.val($(this)[0].files[0].name); + path_input.trigger('change'); + }); + }); + + + + /**************** + * Range Input * + ****************/ + + var range_type = 'input[type=range]'; + var range_mousedown = false; + var left; + + $(range_type).each(function () { + var thumb = $(''); + $(this).after(thumb); + }); + + var range_wrapper = '.range-field'; + $(document).on('change', range_type, function(e) { + var thumb = $(this).siblings('.thumb'); + thumb.find('.value').html($(this).val()); + }); + + $(document).on('mousedown touchstart', range_type, function(e) { + var thumb = $(this).siblings('.thumb'); + + // If thumb indicator does not exist yet, create it + if (thumb.length <= 0) { + thumb = $(''); + $(this).append(thumb); + } + + // Set indicator value + thumb.find('.value').html($(this).val()); + + range_mousedown = true; + $(this).addClass('active'); + + if (!thumb.hasClass('active')) { + thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); + } + + if(e.pageX === undefined || e.pageX === null){//mobile + left = e.originalEvent.touches[0].pageX - $(this).offset().left; + } + else{ // desktop + 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).val()); + + + }); + + $(document).on('mouseup touchend', range_wrapper, function() { + range_mousedown = false; + $(this).removeClass('active'); + }); + + $(document).on('mousemove touchmove', range_wrapper, function(e) { + var thumb = $(this).children('.thumb'); + var left; + if (range_mousedown) { + if (!thumb.hasClass('active')) { + thumb.velocity({ height: '30px', width: '30px', top: '-20px', marginLeft: '-15px'}, { duration: 300, easing: 'easeOutExpo' }); + } + if (e.pageX === undefined || e.pageX === null) { //mobile + left = e.originalEvent.touches[0].pageX - $(this).offset().left; + } + else{ // desktop + 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); + + } + + }); + + $(document).on('mouseout touchleave', range_wrapper, 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'); + } + }); + + }); // End of $(document).ready + + + + + // Select Plugin + $.fn.material_select = function (callback) { + $(this).each(function(){ + $select = $(this); + + if ( $select.hasClass('browser-default')) { + return; // Continue to next (return false breaks out of entire loop) + } + + // Tear down structure if Select needs to be rebuilt + var lastID = $select.data('select-id'); + if (lastID) { + $select.parent().find('i').remove(); + $select.parent().find('input').remove(); + + $select.unwrap(); + $('ul#select-options-'+lastID).remove(); + } + + // If destroying the select, remove the selelct-id and reset it to it's uninitialized state. + if(callback === 'destroy') { + $select.data('select-id', null).removeClass('initialized'); + return; + } + + var uniqueID = Materialize.guid(); + $select.data('select-id', uniqueID); + var wrapper = $('
'); + wrapper.addClass($select.attr('class')); + var options = $(''); + var selectOptions = $select.children('option'); + + var label; + if ($select.find('option:selected') !== undefined) { + label = $select.find('option:selected'); + } + else { + label = options.first(); + } + + + // Create Dropdown structure + selectOptions.each(function () { + // Add disabled attr if disabled + options.append($('
  • ' + $(this).html() + '
  • ')); + }); + + + options.find('li').each(function (i) { + var $curr_select = $select; + $(this).click(function () { + // Check if option element is disabled + if (!$(this).hasClass('disabled')) { + $curr_select.find('option').eq(i).prop('selected', true); + // Trigger onchange() event + $curr_select.trigger('change'); + $curr_select.siblings('input.select-dropdown').val($(this).text()); + if (typeof callback !== 'undefined') callback(); + } + }); + + }); + + // Wrap Elements + $select.wrap(wrapper); + // Add Select Display Element + var dropdownIcon = $(''); + if ( $select.is(':disabled') ) + dropdownIcon.addClass('disabled'); + + var $newSelect = $(''); + $select.before($newSelect); + $newSelect.before(dropdownIcon); + + $('body').append(options); + // Check if section element is disabled + if (!$select.is(':disabled')) { + $newSelect.dropdown({"hover": false}); + } + + // Copy tabindex + if ($select.attr('tabindex')) { + $($newSelect[0]).attr('tabindex', $select.attr('tabindex')); + } + + $select.addClass('initialized'); + + $newSelect.on('focus', function(){ + $(this).trigger('open'); + label = $(this).val(); + selectedOption = options.find('li').filter(function() { + return $(this).text().toLowerCase() === label.toLowerCase(); + })[0]; + activateOption(options, selectedOption); + }); + + $newSelect.on('blur', function(){ + $(this).trigger('close'); + }); + + // Make option as selected and scroll to selected position + activateOption = function(collection, newOption) { + collection.find('li.active').removeClass('active'); + $(newOption).addClass('active'); + collection.scrollTo(newOption); + }; + + // Allow user to search by typing + // this array is cleared after 1 second + filterQuery = []; + + onKeyDown = function(event){ + // TAB - switch to another input + if(event.which == 9){ + $newSelect.trigger('close'); + return; + } + + // ARROW DOWN WHEN SELECT IS CLOSED - open select options + if(event.which == 40 && !options.is(":visible")){ + $newSelect.trigger('open'); + return; + } + + // ENTER WHEN SELECT IS CLOSED - submit form + if(event.which == 13 && !options.is(":visible")){ + return; + } + + event.preventDefault(); + + // CASE WHEN USER TYPE LETTERS + letter = String.fromCharCode(event.which).toLowerCase(); + var nonLetters = [9,13,27,38,40]; + if (letter && (nonLetters.indexOf(event.which) === -1)){ + filterQuery.push(letter); + + string = filterQuery.join(""); + + newOption = options.find('li').filter(function() { + return $(this).text().toLowerCase().indexOf(string) === 0; + })[0]; + + if(newOption){ + activateOption(options, newOption); + } + } + + // ENTER - select option and close when select options are opened + if(event.which == 13){ + activeOption = options.find('li.active:not(.disabled)')[0]; + if(activeOption){ + $(activeOption).trigger('click'); + $newSelect.trigger('close'); + } + } + + // ARROW DOWN - move to next not disabled option + if(event.which == 40){ + newOption = options.find('li.active').next('li:not(.disabled)')[0]; + if(newOption){ + activateOption(options, newOption); + } + } + + // ESC - close options + if(event.which == 27){ + $newSelect.trigger('close'); + } + + // ARROW UP - move to previous not disabled option + if(event.which == 38){ + newOption = options.find('li.active').prev('li:not(.disabled)')[0]; + if(newOption){ + activateOption(options, newOption); + } + } + + // Automaticaly clean filter query so user can search again by starting letters + setTimeout(function(){ filterQuery = []; }, 1000); + }; + + $newSelect.on('keydown', onKeyDown); + }); + }; + +}( jQuery )); diff --git a/js/global.js b/js/global.js new file mode 100644 index 0000000..6f403ee --- /dev/null +++ b/js/global.js @@ -0,0 +1,36 @@ +Materialize = {}; + +// Unique ID +Materialize.guid = (function() { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + } + return function() { + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + + s4() + '-' + s4() + s4() + s4(); + }; +})(); + +Materialize.elementOrParentIsFixed = function(element) { + var $element = $(element); + var $checkElements = $element.add($element.parents()); + var isFixed = false; + $checkElements.each(function(){ + if ($(this).css("position") === "fixed") { + isFixed = true; + return false; + } + }); + return isFixed; +}; + +// Velocity has conflicts when loaded with jQuery, this will check for it +var Vel; +if ($) { + Vel = $.Velocity; +} +else { + Vel = Velocity; +} diff --git a/js/hammer.min.js b/js/hammer.min.js new file mode 100644 index 0000000..6c232c8 --- /dev/null +++ b/js/hammer.min.js @@ -0,0 +1 @@ +!function(a,b,c,d){"use strict";function k(a,b,c){return setTimeout(q(a,c),b)}function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}function m(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 x(a){return a.trim().split(/\s+/g)}function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h1&&!c.firstMultiple?c.firstMultiple=gb(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=hb(d);b.timeStamp=j(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=lb(h,i),b.distance=kb(h,i),eb(c,b),b.offsetDirection=jb(b.deltaX,b.deltaY),b.scale=g?nb(g.pointers,d):1,b.rotation=g?mb(g.pointers,d):0,fb(c,b);var k=a.element;v(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===O||f.eventType===Q)&&(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 fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeStamp;if(b.eventType!=R&&(e>N||c.velocity===d)){var k=c.deltaX-b.deltaX,l=c.deltaY-b.deltaY,m=ib(e,k,l);g=m.x,h=m.y,f=i(m.x)>i(m.y)?m.x:m.y,j=jb(k,l),a.lastInterval=b}else f=c.velocity,g=c.velocityX,h=c.velocityY,j=c.direction;b.velocity=f,b.velocityX=g,b.velocityY=h,b.direction=j}function gb(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:h(c/b),y:h(d/b)}}function ib(a,b,c){return{x:b/a||0,y:c/a||0}}function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,ab.apply(this,arguments)}function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(this,arguments)}function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)&&(c=A(c.concat(d),"identifier",!0)),[c,d]}function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=z(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return v(a.target,i)}),b===O)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Q|R)&&(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 xb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},yb="touchstart",zb="touchstart touchmove touchend touchcancel";p(Ab,ab,{handler:function(a){var b=xb[a.type];if(b===O&&(this.started=!0),this.started){var c=Bb.call(this,a,b);b&(Q|R)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}});var Cb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},Db="touchstart touchmove touchend touchcancel";p(Eb,ab,{handler:function(a){var b=Cb[a.type],c=Fb.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}),p(Gb,ab,{handler:function(a,b,c){var d=c.pointerType==J,e=c.pointerType==L;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Q|R)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Hb=B(f.style,"touchAction"),Ib=Hb!==d,Jb="compute",Kb="auto",Lb="manipulation",Mb="none",Nb="pan-x",Ob="pan-y";Pb.prototype={set:function(a){a==Jb&&(a=this.compute()),Ib&&(this.manager.element.style[Hb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return m(this.manager.recognizers,function(b){r(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),Qb(a.join(" "))},preventDefaults:function(a){if(!Ib){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return b.preventDefault(),void 0;var d=this.actions,e=w(d,Mb),f=w(d,Ob),g=w(d,Nb);return e||f&&c&X||g&&c&Y?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var Rb=1,Sb=2,Tb=4,Ub=8,Vb=Ub,Wb=16,Xb=32;Yb.prototype={defaults:{},set:function(a){return n(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(l(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_b(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return l(a,"dropRecognizeWith",this)?this:(a=_b(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(l(a,"requireFailure",this))return this;var b=this.requireFail;return a=_b(a,this),-1===y(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(l(a,"dropRequireFailure",this))return this;a=_b(a,this);var b=y(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 d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}var b=this,c=this.state;Ub>c&&d(!0),d(),c>=Ub&&d(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):(this.state=Xb,void 0)},canEmit:function(){for(var a=0;af?T:U,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?S:0>g?V:W,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return ac.prototype.attrTest.call(this,a)&&(this.state&Sb||!(this.state&Sb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),p(cc,ac,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&Sb)},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)}}}),p(dc,Yb,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Kb]},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&(Q|R)&&!e)this.reset();else if(a.eventType&O)this.reset(),this._timer=k(function(){this.state=Vb,this.tryEmit()},b.time,this);else if(a.eventType&Q)return Vb;return Xb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===Vb&&(a&&a.eventType&Q?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=j(),this.manager.emit(this.options.event,this._input)))}}),p(ec,ac,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&Sb)}}),p(fc,ac,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:X|Y,pointers:1},getTouchAction:function(){return bc.prototype.getTouchAction.call(this)},attrTest:function(a){var c,b=this.options.direction;return b&(X|Y)?c=a.velocity:b&X?c=a.velocityX:b&Y&&(c=a.velocityY),this._super.attrTest.call(this,a)&&b&a.direction&&a.distance>this.options.threshold&&i(c)>this.options.velocity&&a.eventType&Q},emit:function(a){var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),p(gc,Yb,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Lb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance= 0 || $(this).hasClass('black')) { + $(this).css('color', 'rgba(255,255,255,.9'); + } + }); + }); + + + // Floating-Fixed table of contents + if ($('nav').length) { + $('.toc-wrapper').pushpin({ top: $('nav').height() }); + } + else if ($('#index-banner').length) { + $('.toc-wrapper').pushpin({ top: $('#index-banner').height() }); + } + else { + $('.toc-wrapper').pushpin({ top: 0 }); + } + + + + // BuySellAds Detection + var $bsa = $(".buysellads"), + $timesToCheck = 3; + function checkForChanges() { + if (!$bsa.find('#carbonads').length) { + $timesToCheck -= 1; + if ($timesToCheck >= 0) { + setTimeout(checkForChanges, 500); + } + else { + var donateAd = $(''); + + $bsa.append(donateAd); + } + } + + } + checkForChanges(); + + + // Github Latest Commit + if ($('.github-commit').length) { // Checks if widget div exists (Index only) + $.ajax({ + url: "https://api.github.com/repos/dogfalo/materialize/commits/master", + dataType: "json", + success: function (data) { + var sha = data.sha, + date = jQuery.timeago(data.commit.author.date); + if (window_width < 1120) { + sha = sha.substring(0,7); + } + $('.github-commit').find('.date').html(date); + $('.github-commit').find('.sha').html(sha).attr('href', data.html_url); + } + }); + } + + // Toggle Flow Text + var toggleFlowTextButton = $('#flow-toggle'); + toggleFlowTextButton.click( function(){ + $('#flow-text-demo').children('p').each(function(){ + $(this).toggleClass('flow-text'); + }); + }); + +// Toggle Containers on page + var toggleContainersButton = $('#container-toggle-button'); + toggleContainersButton.click(function(){ + $('body .browser-window .container, .had-container').each(function(){ + $(this).toggleClass('had-container'); + $(this).toggleClass('container'); + if ($(this).hasClass('container')) { + toggleContainersButton.text("Turn off Containers"); + } + else { + toggleContainersButton.text("Turn on Containers"); + } + }); + }); + + // Detect touch screen and enable scrollbar if necessary + function is_touch_device() { + try { + document.createEvent("TouchEvent"); + return true; + } catch (e) { + return false; + } + } + if (is_touch_device()) { + $('#nav-mobile').css({ overflow: 'auto'}); + } + + // Set checkbox on forms.html to indeterminate + var indeterminateCheckbox = document.getElementById('indeterminate-checkbox'); + if (indeterminateCheckbox !== null) + indeterminateCheckbox.indeterminate = true; + + + // Plugin initialization + $('.slider').slider({full_width: true}); + $('.parallax').parallax(); + $('.modal-trigger').leanModal(); + $('.scrollspy').scrollSpy(); + $('.button-collapse').sideNav({'edge': 'left'}); + $('.datepicker').pickadate({selectYears: 20}); + $('select').not('.disabled').material_select(); + + + }); // end of document ready +})(jQuery); // end of jQuery name space diff --git a/js/jquery.easing.1.3.js b/js/jquery.easing.1.3.js new file mode 100644 index 0000000..2e67998 --- /dev/null +++ b/js/jquery.easing.1.3.js @@ -0,0 +1,205 @@ +/* + * 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. + * + */ \ No newline at end of file diff --git a/js/jquery.hammer.js b/js/jquery.hammer.js new file mode 100755 index 0000000..e444b5c --- /dev/null +++ b/js/jquery.hammer.js @@ -0,0 +1,33 @@ +(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); +})); diff --git a/js/jquery.timeago.min.js b/js/jquery.timeago.min.js new file mode 100644 index 0000000..102a56c --- /dev/null +++ b/js/jquery.timeago.min.js @@ -0,0 +1 @@ +!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(t){function e(){var e=a(this),o=r.settings;return isNaN(e.datetime)||(0==o.cutoff||Math.abs(n(e.datetime))0)||r.isTime(e)&&e.attr("title")||e.attr("title",a)}return e.data("timeago")}function i(t){return r.inWords(n(t))}function n(t){return(new Date).getTime()-t.getTime()}t.timeago=function(e){return i(e instanceof Date?e:"string"==typeof e?t.timeago.parse(e):"number"==typeof e?new Date(e):t.timeago.datetime(e))};var r=t.timeago;t.extend(t.timeago,{settings:{refreshMillis:6e4,allowPast:!0,allowFuture:!1,localeTitle:!1,cutoff:0,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",inPast:"any moment now",seconds:"less than a minute",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years",wordSeparator:" ",numbers:[]}},inWords:function(e){function a(a,n){var r=t.isFunction(a)?a(n,e):a,o=i.numbers&&i.numbers[n]||n;return r.replace(/%d/i,o)}if(!this.settings.allowPast&&!this.settings.allowFuture)throw"timeago allowPast and allowFuture settings can not both be set to false.";var i=this.settings.strings,n=i.prefixAgo,r=i.suffixAgo;if(this.settings.allowFuture&&0>e&&(n=i.prefixFromNow,r=i.suffixFromNow),!this.settings.allowPast&&e>=0)return this.settings.strings.inPast;var o=Math.abs(e)/1e3,s=o/60,u=s/60,m=u/24,l=m/365,d=45>o&&a(i.seconds,Math.round(o))||90>o&&a(i.minute,1)||45>s&&a(i.minutes,Math.round(s))||90>s&&a(i.hour,1)||24>u&&a(i.hours,Math.round(u))||42>u&&a(i.day,1)||30>m&&a(i.days,Math.round(m))||45>m&&a(i.month,1)||365>m&&a(i.months,Math.round(m/30))||1.5>l&&a(i.year,1)||a(i.years,Math.round(l)),f=i.wordSeparator||"";return void 0===i.wordSeparator&&(f=" "),t.trim([n,d,r].join(f))},parse:function(e){var a=t.trim(e);return a=a.replace(/\.\d+/,""),a=a.replace(/-/,"/").replace(/-/,"/"),a=a.replace(/T/," ").replace(/Z/," UTC"),a=a.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"),a=a.replace(/([\+\-]\d\d)$/," $100"),new Date(a)},datetime:function(e){var a=t(e).attr(r.isTime(e)?"datetime":"title");return r.parse(a)},isTime:function(e){return"time"===t(e).get(0).tagName.toLowerCase()}});var o={init:function(){var a=t.proxy(e,this);a();var i=r.settings;i.refreshMillis>0&&(this._timeagoInterval=setInterval(a,i.refreshMillis))},update:function(a){var i=r.parse(a);t(this).data("timeago",{datetime:i}),r.settings.localeTitle&&t(this).attr("title",i.toLocaleString()),e.apply(this)},updateFromDOM:function(){t(this).data("timeago",{datetime:r.parse(t(this).attr(r.isTime(this)?"datetime":"title"))}),e.apply(this)},dispose:function(){this._timeagoInterval&&(window.clearInterval(this._timeagoInterval),this._timeagoInterval=null)}};t.fn.timeago=function(t,e){var a=t?o[t]:o.init;if(!a)throw new Error("Unknown function name '"+t+"' for timeago");return this.each(function(){a.call(this,e)}),this},document.createElement("abbr"),document.createElement("time")}); \ No newline at end of file diff --git a/js/leanModal.js b/js/leanModal.js new file mode 100644 index 0000000..99a771e --- /dev/null +++ b/js/leanModal.js @@ -0,0 +1,178 @@ +(function($) { + var _stack = 0, + _lastID = 0, + _generateID = function() { + _lastID++; + return 'materialize-lean-overlay-' + _lastID; + }; + + $.fn.extend({ + openModal: function(options) { + + $('body').css('overflow', 'hidden'); + + var defaults = { + opacity: 0.5, + in_duration: 350, + out_duration: 250, + ready: undefined, + complete: undefined, + dismissible: true, + starting_top: '4%' + }, + overlayID = _generateID(), + $modal = $(this), + $overlay = $('
    '), + lStack = (++_stack); + + // Store a reference of the overlay + $overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2); + $modal.data('overlay-id', overlayID).css('z-index', 1000 + lStack * 2 + 1); + + $("body").append($overlay); + + // Override defaults + options = $.extend(defaults, options); + + if (options.dismissible) { + $overlay.click(function() { + $modal.closeModal(options); + }); + // Return on ESC + $(document).on('keyup.leanModal' + overlayID, function(e) { + if (e.keyCode === 27) { // ESC key + $modal.closeModal(options); + } + }); + } + + $modal.find(".modal-close").on('click.close', function(e) { + $modal.closeModal(options); + }); + + $overlay.css({ display : "block", opacity : 0 }); + + $modal.css({ + display : "block", + opacity: 0 + }); + + $overlay.velocity({opacity: options.opacity}, {duration: options.in_duration, queue: false, ease: "easeOutCubic"}); + $modal.data('associated-overlay', $overlay[0]); + + // Define Bottom Sheet animation + if ($modal.hasClass('bottom-sheet')) { + $modal.velocity({bottom: "0", opacity: 1}, { + duration: options.in_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + if (typeof(options.ready) === "function") { + options.ready(); + } + } + }); + } + else { + $.Velocity.hook($modal, "scaleX", 0.7); + $modal.css({ top: options.starting_top }); + $modal.velocity({top: "10%", opacity: 1, scaleX: '1'}, { + duration: options.in_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + if (typeof(options.ready) === "function") { + options.ready(); + } + } + }); + } + + + } + }); + + $.fn.extend({ + closeModal: function(options) { + var defaults = { + out_duration: 250, + complete: undefined + }, + $modal = $(this), + overlayID = $modal.data('overlay-id'), + $overlay = $('#' + overlayID); + + options = $.extend(defaults, options); + + // Disable scrolling + $('body').css('overflow', ''); + + $modal.find('.modal-close').off('click.close'); + $(document).off('keyup.leanModal' + overlayID); + + $overlay.velocity( { opacity: 0}, {duration: options.out_duration, queue: false, ease: "easeOutQuart"}); + + + // Define Bottom Sheet animation + if ($modal.hasClass('bottom-sheet')) { + $modal.velocity({bottom: "-100%", opacity: 0}, { + duration: options.out_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + $overlay.css({display:"none"}); + + // Call complete callback + if (typeof(options.complete) === "function") { + options.complete(); + } + $overlay.remove(); + _stack--; + } + }); + } + else { + $modal.velocity( + { top: options.starting_top, opacity: 0, scaleX: 0.7}, { + duration: options.out_duration, + complete: + function() { + + $(this).css('display', 'none'); + // Call complete callback + if (typeof(options.complete) === "function") { + options.complete(); + } + $overlay.remove(); + _stack--; + } + } + ); + } + } + }); + + $.fn.extend({ + leanModal: function(option) { + return this.each(function() { + + var defaults = { + starting_top: '4%' + }, + // Override defaults + options = $.extend(defaults, option); + + // Close Handlers + $(this).click(function(e) { + options.starting_top = ($(this).offset().top - $(window).scrollTop()) /1.15; + var modal_id = $(this).attr("href") || '#' + $(this).data('target'); + $(modal_id).openModal(options); + e.preventDefault(); + }); // done set on click + }); // done return + } + }); +})(jQuery); diff --git a/js/materialbox.js b/js/materialbox.js new file mode 100644 index 0000000..d86e1ab --- /dev/null +++ b/js/materialbox.js @@ -0,0 +1,249 @@ +(function ($) { + + $.fn.materialbox = function () { + + return this.each(function() { + + if ($(this).hasClass('initialized')) { + return; + } + + $(this).addClass('initialized'); + + var overlayActive = false; + var doneAnimating = true; + var inDuration = 275; + var outDuration = 200; + var origin = $(this); + var placeholder = $('
    ').addClass('material-placeholder'); + var originalWidth = 0; + var originalHeight = 0; + origin.wrap(placeholder); + + + origin.on('click', function(){ + var placeholder = origin.parent('.material-placeholder'); + var windowWidth = window.innerWidth; + var windowHeight = window.innerHeight; + var originalWidth = origin.width(); + var originalHeight = origin.height(); + + + // If already modal, return to original + if (doneAnimating === false) { + returnToOriginal(); + return false; + } + else if (overlayActive && doneAnimating===true) { + returnToOriginal(); + return false; + } + + + // Set states + doneAnimating = false; + origin.addClass('active'); + overlayActive = true; + + // Set positioning for placeholder + + placeholder.css({ + width: placeholder[0].getBoundingClientRect().width, + height: placeholder[0].getBoundingClientRect().height, + position: 'relative', + top: 0, + left: 0 + }); + + + + // Set css on origin + origin.css({position: 'absolute', 'z-index': 1000}) + .data('width', originalWidth) + .data('height', originalHeight); + + // Add overlay + var overlay = $('
    ') + .css({ + opacity: 0 + }) + .click(function(){ + if (doneAnimating === true) + returnToOriginal(); + }); + // Animate Overlay + $('body').append(overlay); + overlay.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'} + ); + + + // Add and animate caption if it exists + if (origin.data('caption') !== "") { + var $photo_caption = $('
    '); + $photo_caption.text(origin.data('caption')); + $('body').append($photo_caption); + $photo_caption.css({ "display": "inline" }); + $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'}); + } + + + + // 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; + } + + // Animate image + set z-index + if(origin.hasClass('responsive-img')) { + origin.velocity({'max-width': newWidth, 'width': originalWidth}, {duration: 0, queue: false, + complete: function(){ + origin.css({left: 0, top: 0}) + .velocity( + { + height: newHeight, + width: newWidth, + left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, + top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 + }, + { + duration: inDuration, + queue: false, + easing: 'easeOutQuad', + complete: function(){doneAnimating = true;} + } + ); + } // End Complete + }); // End Velocity + } + else { + origin.css('left', 0) + .css('top', 0) + .velocity( + { + height: newHeight, + width: newWidth, + left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, + top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 + }, + { + duration: inDuration, + queue: false, + easing: 'easeOutQuad', + complete: function(){doneAnimating = true;} + } + ); // End Velocity + } + + }); // End origin on click + + + // Return on scroll + $(window).scroll(function() { + if (overlayActive ) { + returnToOriginal(); + } + }); + + // Return on ESC + $(document).keyup(function(e) { + + if (e.keyCode === 27 && doneAnimating === true) { // ESC key + if (overlayActive) { + returnToOriginal(); + } + } + }); + + + // This function returns the modaled image to the original spot + function returnToOriginal() { + + doneAnimating = false; + + var placeholder = origin.parent('.material-placeholder'); + var windowWidth = window.innerWidth; + var windowHeight = window.innerHeight; + var originalWidth = origin.data('width'); + var originalHeight = origin.data('height'); + + origin.velocity("stop", true); + $('#materialbox-overlay').velocity("stop", true); + $('.materialbox-caption').velocity("stop", true); + + + $('#materialbox-overlay').velocity({opacity: 0}, { + duration: outDuration, // Delay prevents animation overlapping + queue: false, easing: 'easeOutQuad', + complete: function(){ + // Remove Overlay + overlayActive = false; + $(this).remove(); + } + }); + + // Resize Image + origin.velocity( + { + width: originalWidth, + height: originalHeight, + left: 0, + top: 0 + }, + { + duration: outDuration, + queue: false, easing: 'easeOutQuad' + } + ); + + // Remove Caption + reset css settings on image + $('.materialbox-caption').velocity({opacity: 0}, { + duration: outDuration, // Delay prevents animation overlapping + queue: false, easing: 'easeOutQuad', + complete: function(){ + placeholder.css({ + height: '', + width: '', + position: '', + top: '', + left: '' + }); + + origin.css({ + height: '', + top: '', + left: '', + width: '', + 'max-width': '', + position: '', + 'z-index': '' + }); + + // Remove class + origin.removeClass('active'); + doneAnimating = true; + $(this).remove(); + } + }); + + } + }); +}; + +$(document).ready(function(){ + $('.materialboxed').materialbox(); +}); + +}( jQuery )); diff --git a/js/materialize.js b/js/materialize.js new file mode 100644 index 0000000..f19998a --- /dev/null +++ b/js/materialize.js @@ -0,0 +1,6159 @@ +/*! + * Materialize v0.97.0 (http://materializecss.com) + * Copyright 2014-2015 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +/* + * 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. + * + */; // Custom Easing + jQuery.extend( jQuery.easing, + { + easeInOutMaterial: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return c/4*((t-=2)*t*t + 2) + b; + } + }); + +;/*! VelocityJS.org (1.2.2). (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){var t=(new Date).getTime(),r=v.State.calls.length;r>1e4&&(v.State.calls=n(v.State.calls));for(var o=0;r>o;o++)if(v.State.calls[o]){var s=v.State.calls[o],l=s[0],u=s[2],f=s[3],d=!!f,m=null;f||(f=v.State.calls[o][3]=t-16);for(var y=Math.min((t-f)/u.duration,1),h=0,b=l.length;b>h;h++){var S=l[h],w=S.element;if(i(w)){var V=!1;if(u.display!==a&&null!==u.display&&"none"!==u.display){if("flex"===u.display){var C=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];$.each(C,function(e,t){x.setPropertyValue(w,"display",t)})}x.setPropertyValue(w,"display",u.display)}u.visibility!==a&&"hidden"!==u.visibility&&x.setPropertyValue(w,"visibility",u.visibility);for(var T in S)if("element"!==T){var k=S[T],A,F=g.isString(k.easing)?v.Easings[k.easing]:k.easing;if(1===y)A=k.endValue;else{var E=k.endValue-k.startValue;if(A=k.startValue+E*F(y,u,E),!d&&A===k.currentValue)continue}if(k.currentValue=A,"tween"===T)m=A;else{if(x.Hooks.registered[T]){var j=x.Hooks.getRoot(T),H=i(w).rootPropertyValueCache[j];H&&(k.rootPropertyValue=H)}var N=x.setPropertyValue(w,T,k.currentValue+(0===parseFloat(A)?"":k.unitType),k.rootPropertyValue,k.scrollData);x.Hooks.registered[T]&&(i(w).rootPropertyValueCache[j]=x.Normalizations.registered[j]?x.Normalizations.registered[j]("extract",null,N[1]):N[1]),"transform"===N[0]&&(V=!0)}}u.mobileHA&&i(w).transformCache.translate3d===a&&(i(w).transformCache.translate3d="(0px, 0px, 0px)",V=!0),V&&x.flushTransformCache(w)}}u.display!==a&&"none"!==u.display&&(v.State.calls[o][2].display=!1),u.visibility!==a&&"hidden"!==u.visibility&&(v.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],y,Math.max(0,f+u.duration-t),f,m),1===y&&p(o)}}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),i(p)&&o.loop===!0&&!t&&($.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),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:2,patch:2},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":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"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),"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)}if(!/^[\d-]/.test(l))if(i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(g){l=0}else l=e.getAttribute(r);else l=s(e,x.Names.prefixCheck(r)[0]);return 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 l?T.promise||null:f}function n(){function e(e){function p(e,t){var r=a,i=a,s=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])?s=e[1]:(g.isString(e[1])&&!x.RegEx.isHex.test(e[1])||g.isArray(e[1]))&&(i=t?e[1]:u(e[1],o.duration),e[2]!==a&&(s=e[2]))):r=e,t||(i=i||o.easing),g.isFunction(r)&&(r=r.call(n,w,P)),g.isFunction(s)&&(s=s.call(n,w,P)),[r||0,i,s]}function f(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 d(){var e={myParent:n.parentNode||r.body,position:x.getPropertyValue(n,"position"),fontSize:x.getPropertyValue(n,"fontSize")},a=e.position===N.lastPosition&&e.myParent===N.lastParent,o=e.fontSize===N.lastFontSize;N.lastParent=e.myParent,N.lastPosition=e.position,N.lastFontSize=e.fontSize;var s=100,l={};if(o&&a)l.emToPx=N.lastEmToPx,l.percentToPxWidth=N.lastPercentToPxWidth,l.percentToPxHeight=N.lastPercentToPxHeight;else{var u=i(n).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=N.lastPercentToPxWidth=(parseFloat(x.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=N.lastPercentToPxHeight=(parseFloat(x.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=N.lastEmToPx=(parseFloat(x.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===N.remToPx&&(N.remToPx=parseFloat(x.getPropertyValue(r.body,"fontSize"))||16),null===N.vwToPx&&(N.vwToPx=parseFloat(t.innerWidth)/100,N.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=N.remToPx,l.vwToPx=N.vwToPx,l.vhToPx=N.vhToPx,v.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),n),l}if(o.begin&&0===w)try{o.begin.call(m,m)}catch(y){setTimeout(function(){throw y},1)}if("scroll"===k){var S=/^x$/i.test(o.axis)?"Left":"Top",V=parseFloat(o.offset)||0,C,A,F;o.container?g.isWrapped(o.container)||g.isNode(o.container)?(o.container=o.container[0]||o.container,C=o.container["scroll"+S],F=C+$(n).position()[S.toLowerCase()]+V):o.container=null:(C=v.State.scrollAnchor[v.State["scrollProperty"+S]],A=v.State.scrollAnchor[v.State["scrollProperty"+("Left"===S?"Top":"Left")]],F=$(n).offset()[S.toLowerCase()]+V),s={scroll:{rootPropertyValue:!1,startValue:C,currentValue:C,endValue:F,unitType:"",easing:o.easing,scrollData:{container:o.container,direction:S,alternateValue:A}},element:n},v.debug&&console.log("tweensContainer (scroll): ",s.scroll,n)}else if("reverse"===k){if(!i(n).tweensContainer)return void $.dequeue(n,o.queue);"none"===i(n).opts.display&&(i(n).opts.display="auto"),"hidden"===i(n).opts.visibility&&(i(n).opts.visibility="visible"),i(n).opts.loop=!1,i(n).opts.begin=null,i(n).opts.complete=null,b.easing||delete o.easing,b.duration||delete o.duration,o=$.extend({},i(n).opts,o);var E=$.extend(!0,{},i(n).tweensContainer);for(var j in E)if("element"!==j){var H=E[j].startValue;E[j].startValue=E[j].currentValue=E[j].endValue,E[j].endValue=H,g.isEmptyObject(b)||(E[j].easing=o.easing),v.debug&&console.log("reverse tweensContainer ("+j+"): "+JSON.stringify(E[j]),n)}s=E}else if("start"===k){var E;i(n).tweensContainer&&i(n).isAnimating===!0&&(E=i(n).tweensContainer),$.each(h,function(e,t){if(RegExp("^"+x.Lists.colors.join("$|^")+"$").test(e)){var r=p(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;cO;O++){var z={delay:F.delay,progress:F.progress};O===R-1&&(z.display=F.display,z.visibility=F.visibility,z.complete=F.complete),S(m,"reverse",z)}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)});;!function(a,b,c,d){"use strict";function k(a,b,c){return setTimeout(q(a,c),b)}function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}function m(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 x(a){return a.trim().split(/\s+/g)}function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h1&&!c.firstMultiple?c.firstMultiple=gb(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=hb(d);b.timeStamp=j(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=lb(h,i),b.distance=kb(h,i),eb(c,b),b.offsetDirection=jb(b.deltaX,b.deltaY),b.scale=g?nb(g.pointers,d):1,b.rotation=g?mb(g.pointers,d):0,fb(c,b);var k=a.element;v(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===O||f.eventType===Q)&&(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 fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeStamp;if(b.eventType!=R&&(e>N||c.velocity===d)){var k=c.deltaX-b.deltaX,l=c.deltaY-b.deltaY,m=ib(e,k,l);g=m.x,h=m.y,f=i(m.x)>i(m.y)?m.x:m.y,j=jb(k,l),a.lastInterval=b}else f=c.velocity,g=c.velocityX,h=c.velocityY,j=c.direction;b.velocity=f,b.velocityX=g,b.velocityY=h,b.direction=j}function gb(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:h(c/b),y:h(d/b)}}function ib(a,b,c){return{x:b/a||0,y:c/a||0}}function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,ab.apply(this,arguments)}function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(this,arguments)}function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)&&(c=A(c.concat(d),"identifier",!0)),[c,d]}function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=z(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return v(a.target,i)}),b===O)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Q|R)&&(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 xb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},yb="touchstart",zb="touchstart touchmove touchend touchcancel";p(Ab,ab,{handler:function(a){var b=xb[a.type];if(b===O&&(this.started=!0),this.started){var c=Bb.call(this,a,b);b&(Q|R)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}});var Cb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},Db="touchstart touchmove touchend touchcancel";p(Eb,ab,{handler:function(a){var b=Cb[a.type],c=Fb.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}),p(Gb,ab,{handler:function(a,b,c){var d=c.pointerType==J,e=c.pointerType==L;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Q|R)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Hb=B(f.style,"touchAction"),Ib=Hb!==d,Jb="compute",Kb="auto",Lb="manipulation",Mb="none",Nb="pan-x",Ob="pan-y";Pb.prototype={set:function(a){a==Jb&&(a=this.compute()),Ib&&(this.manager.element.style[Hb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return m(this.manager.recognizers,function(b){r(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),Qb(a.join(" "))},preventDefaults:function(a){if(!Ib){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return b.preventDefault(),void 0;var d=this.actions,e=w(d,Mb),f=w(d,Ob),g=w(d,Nb);return e||f&&c&X||g&&c&Y?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var Rb=1,Sb=2,Tb=4,Ub=8,Vb=Ub,Wb=16,Xb=32;Yb.prototype={defaults:{},set:function(a){return n(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(l(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_b(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return l(a,"dropRecognizeWith",this)?this:(a=_b(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(l(a,"requireFailure",this))return this;var b=this.requireFail;return a=_b(a,this),-1===y(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(l(a,"dropRequireFailure",this))return this;a=_b(a,this);var b=y(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 d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}var b=this,c=this.state;Ub>c&&d(!0),d(),c>=Ub&&d(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):(this.state=Xb,void 0)},canEmit:function(){for(var a=0;af?T:U,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?S:0>g?V:W,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return ac.prototype.attrTest.call(this,a)&&(this.state&Sb||!(this.state&Sb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),p(cc,ac,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&Sb)},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)}}}),p(dc,Yb,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Kb]},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&(Q|R)&&!e)this.reset();else if(a.eventType&O)this.reset(),this._timer=k(function(){this.state=Vb,this.tryEmit()},b.time,this);else if(a.eventType&Q)return Vb;return Xb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===Vb&&(a&&a.eventType&Q?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=j(),this.manager.emit(this.options.event,this._input)))}}),p(ec,ac,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&Sb)}}),p(fc,ac,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:X|Y,pointers:1},getTouchAction:function(){return bc.prototype.getTouchAction.call(this)},attrTest:function(a){var c,b=this.options.direction;return b&(X|Y)?c=a.velocity:b&X?c=a.velocityX:b&Y&&(c=a.velocityY),this._super.attrTest.call(this,a)&&b&a.direction&&a.distance>this.options.threshold&&i(c)>this.options.velocity&&a.eventType&Q},emit:function(a){var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),p(gc,Yb,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Lb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance li > .collapsible-header'); + + var collapsible_type = $this.data("collapsible"); + + // Turn off any existing event handlers + $this.off('click.collapse', '.collapsible-header'); + $panel_headers.off('click.collapse'); + + + /**************** + Helper Functions + ****************/ + + // Accordion Open + function accordionOpen(object) { + $panel_headers = $this.find('> li > .collapsible-header'); + if (object.hasClass('active')) { + object.parent().addClass('active'); + } + else { + object.parent().removeClass('active'); + } + if (object.parent().hasClass('active')){ + object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + else{ + object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + + $panel_headers.not(object).removeClass('active').parent().removeClass('active'); + $panel_headers.not(object).parent().children('.collapsible-body').stop(true,false).slideUp( + { + duration: 350, + easing: "easeOutQuart", + queue: false, + complete: + function() { + $(this).css('height', ''); + } + }); + } + + // Expandable Open + function expandableOpen(object) { + if (object.hasClass('active')) { + object.parent().addClass('active'); + } + else { + object.parent().removeClass('active'); + } + if (object.parent().hasClass('active')){ + object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + else{ + object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); + } + } + + /** + * Check if object is children of panel header + * @param {Object} object Jquery object + * @return {Boolean} true if it is children + */ + function isChildrenOfPanelHeader(object) { + + var panelHeader = getPanelHeader(object); + + return panelHeader.length > 0; + } + + /** + * Get panel header from a children element + * @param {Object} object Jquery object + * @return {Object} panel header object + */ + function getPanelHeader(object) { + + return object.closest('li > .collapsible-header'); + } + + /***** End Helper Functions *****/ + + + + if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion + // Add click handler to only direct collapsible header children + $panel_headers = $this.find('> li > .collapsible-header'); + $panel_headers.on('click.collapse', function (e) { + var element = $(e.target); + + if (isChildrenOfPanelHeader(element)) { + element = getPanelHeader(element); + } + + element.toggleClass('active'); + accordionOpen(element); + }); + // Open first active + accordionOpen($panel_headers.filter('.active').first()); + } + else { // Handle Expandables + $panel_headers.each(function () { + // Add click handler to only direct collapsible header children + $(this).on('click.collapse', function (e) { + var element = $(e.target); + if (isChildrenOfPanelHeader(element)) { + element = getPanelHeader(element); + } + element.toggleClass('active'); + expandableOpen(element); + }); + // Open any bodies that have the active class + if ($(this).hasClass('active')) { + expandableOpen($(this)); + } + + }); + } + + }); + }; + + $(document).ready(function(){ + $('.collapsible').collapsible(); + }); +}( jQuery ));;(function ($) { + + // Add posibility to scroll to selected option + // usefull for select for example + $.fn.scrollTo = function(elem) { + $(this).scrollTop($(this).scrollTop() - $(this).offset().top + $(elem).offset().top); + return this; + }; + + $.fn.dropdown = function (option) { + var defaults = { + inDuration: 300, + outDuration: 225, + constrain_width: true, // Constrains width of dropdown to the activator + hover: false, + gutter: 0, // Spacing from edge + belowOrigin: false + }; + + this.each(function(){ + var origin = $(this); + var options = $.extend({}, defaults, option); + + // Dropdown menu + var activates = $("#"+ origin.attr('data-activates')); + + function updateOptions() { + if (origin.data('induration') !== undefined) + options.inDuration = origin.data('inDuration'); + if (origin.data('outduration') !== undefined) + options.outDuration = origin.data('outDuration'); + if (origin.data('constrainwidth') !== undefined) + options.constrain_width = origin.data('constrainwidth'); + if (origin.data('hover') !== undefined) + options.hover = origin.data('hover'); + if (origin.data('gutter') !== undefined) + options.gutter = origin.data('gutter'); + if (origin.data('beloworigin') !== undefined) + options.belowOrigin = origin.data('beloworigin'); + } + + updateOptions(); + + // Attach dropdown to its activator + origin.after(activates); + + /* + Helper function to position and resize dropdown. + Used in hover and click handler. + */ + function placeDropdown() { + // Check html data attributes + updateOptions(); + + // Set Dropdown state + activates.addClass('active'); + + // Constrain width + if (options.constrain_width === true) { + activates.css('width', origin.outerWidth()); + } + var offset = 0; + if (options.belowOrigin === true) { + offset = origin.height(); + } + + // Handle edge alignment + var offsetLeft = origin.offset().left; + var width_difference = 0; + var gutter_spacing = options.gutter; + + + if (offsetLeft + activates.innerWidth() > $(window).width()) { + width_difference = origin.innerWidth() - activates.innerWidth(); + gutter_spacing = gutter_spacing * -1; + } + + // Position dropdown + activates.css({ + position: 'absolute', + top: origin.position().top + offset, + left: origin.position().left + width_difference + gutter_spacing + }); + + + + // Show dropdown + activates.stop(true, true).css('opacity', 0) + .slideDown({ + queue: false, + duration: options.inDuration, + easing: 'easeOutCubic', + complete: function() { + $(this).css('height', ''); + } + }) + .animate( {opacity: 1}, {queue: false, duration: options.inDuration, easing: 'easeOutSine'}); + } + + function hideDropdown() { + activates.fadeOut(options.outDuration); + activates.removeClass('active'); + } + + // Hover + if (options.hover) { + var open = false; + origin.unbind('click.' + origin.attr('id')); + // Hover handler to show dropdown + origin.on('mouseenter', function(e){ // Mouse over + if (open === false) { + placeDropdown(); + open = true; + } + }); + origin.on('mouseleave', function(e){ + // If hover on origin then to something other than dropdown content, then close + var toEl = e.toElement || e.relatedTarget; // added browser compatibility for target element + if(!$(toEl).closest('.dropdown-content').is(activates)) { + activates.stop(true, true); + hideDropdown(); + open = false; + } + }); + + activates.on('mouseleave', function(e){ // Mouse out + var toEl = e.toElement || e.relatedTarget; + if(!$(toEl).closest('.dropdown-button').is(origin)) { + activates.stop(true, true); + hideDropdown(); + open = false; + } + }); + + // Click + } else { + + // Click handler to show dropdown + origin.unbind('click.' + origin.attr('id')); + origin.bind('click.'+origin.attr('id'), function(e){ + + if ( origin[0] == e.currentTarget && ($(e.target).closest('.dropdown-content').length === 0) ) { + e.preventDefault(); // Prevents button click from moving window + placeDropdown(); + + } + // If origin is clicked and menu is open, close menu + else { + if (origin.hasClass('active')) { + hideDropdown(); + $(document).unbind('click.' + activates.attr('id')); + } + } + // If menu open, add click close handler to document + if (activates.hasClass('active')) { + $(document).bind('click.'+ activates.attr('id'), function (e) { + if (!activates.is(e.target) && !origin.is(e.target) && (!origin.find(e.target).length > 0) ) { + hideDropdown(); + $(document).unbind('click.' + activates.attr('id')); + } + }); + } + }); + + } // End else + + // Listen to open and close event - useful for select component + origin.on('open', placeDropdown); + origin.on('close', hideDropdown); + + + }); + }; // End dropdown plugin + + $(document).ready(function(){ + $('.dropdown-button').dropdown(); + }); +}( jQuery )); +;(function($) { + var _stack = 0, + _lastID = 0, + _generateID = function() { + _lastID++; + return 'materialize-lean-overlay-' + _lastID; + }; + + $.fn.extend({ + openModal: function(options) { + + $('body').css('overflow', 'hidden'); + + var defaults = { + opacity: 0.5, + in_duration: 350, + out_duration: 250, + ready: undefined, + complete: undefined, + dismissible: true, + starting_top: '4%' + }, + overlayID = _generateID(), + $modal = $(this), + $overlay = $('
    '), + lStack = (++_stack); + + // Store a reference of the overlay + $overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2); + $modal.data('overlay-id', overlayID).css('z-index', 1000 + lStack * 2 + 1); + + $("body").append($overlay); + + // Override defaults + options = $.extend(defaults, options); + + if (options.dismissible) { + $overlay.click(function() { + $modal.closeModal(options); + }); + // Return on ESC + $(document).on('keyup.leanModal' + overlayID, function(e) { + if (e.keyCode === 27) { // ESC key + $modal.closeModal(options); + } + }); + } + + $modal.find(".modal-close").on('click.close', function(e) { + $modal.closeModal(options); + }); + + $overlay.css({ display : "block", opacity : 0 }); + + $modal.css({ + display : "block", + opacity: 0 + }); + + $overlay.velocity({opacity: options.opacity}, {duration: options.in_duration, queue: false, ease: "easeOutCubic"}); + $modal.data('associated-overlay', $overlay[0]); + + // Define Bottom Sheet animation + if ($modal.hasClass('bottom-sheet')) { + $modal.velocity({bottom: "0", opacity: 1}, { + duration: options.in_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + if (typeof(options.ready) === "function") { + options.ready(); + } + } + }); + } + else { + $.Velocity.hook($modal, "scaleX", 0.7); + $modal.css({ top: options.starting_top }); + $modal.velocity({top: "10%", opacity: 1, scaleX: '1'}, { + duration: options.in_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + if (typeof(options.ready) === "function") { + options.ready(); + } + } + }); + } + + + } + }); + + $.fn.extend({ + closeModal: function(options) { + var defaults = { + out_duration: 250, + complete: undefined + }, + $modal = $(this), + overlayID = $modal.data('overlay-id'), + $overlay = $('#' + overlayID); + + options = $.extend(defaults, options); + + // Disable scrolling + $('body').css('overflow', ''); + + $modal.find('.modal-close').off('click.close'); + $(document).off('keyup.leanModal' + overlayID); + + $overlay.velocity( { opacity: 0}, {duration: options.out_duration, queue: false, ease: "easeOutQuart"}); + + + // Define Bottom Sheet animation + if ($modal.hasClass('bottom-sheet')) { + $modal.velocity({bottom: "-100%", opacity: 0}, { + duration: options.out_duration, + queue: false, + ease: "easeOutCubic", + // Handle modal ready callback + complete: function() { + $overlay.css({display:"none"}); + + // Call complete callback + if (typeof(options.complete) === "function") { + options.complete(); + } + $overlay.remove(); + _stack--; + } + }); + } + else { + $modal.velocity( + { top: options.starting_top, opacity: 0, scaleX: 0.7}, { + duration: options.out_duration, + complete: + function() { + + $(this).css('display', 'none'); + // Call complete callback + if (typeof(options.complete) === "function") { + options.complete(); + } + $overlay.remove(); + _stack--; + } + } + ); + } + } + }); + + $.fn.extend({ + leanModal: function(option) { + return this.each(function() { + + var defaults = { + starting_top: '4%' + }, + // Override defaults + options = $.extend(defaults, option); + + // Close Handlers + $(this).click(function(e) { + options.starting_top = ($(this).offset().top - $(window).scrollTop()) /1.15; + var modal_id = $(this).attr("href") || '#' + $(this).data('target'); + $(modal_id).openModal(options); + e.preventDefault(); + }); // done set on click + }); // done return + } + }); +})(jQuery); +;(function ($) { + + $.fn.materialbox = function () { + + return this.each(function() { + + if ($(this).hasClass('initialized')) { + return; + } + + $(this).addClass('initialized'); + + var overlayActive = false; + var doneAnimating = true; + var inDuration = 275; + var outDuration = 200; + var origin = $(this); + var placeholder = $('
    ').addClass('material-placeholder'); + var originalWidth = 0; + var originalHeight = 0; + origin.wrap(placeholder); + + + origin.on('click', function(){ + var placeholder = origin.parent('.material-placeholder'); + var windowWidth = window.innerWidth; + var windowHeight = window.innerHeight; + var originalWidth = origin.width(); + var originalHeight = origin.height(); + + + // If already modal, return to original + if (doneAnimating === false) { + returnToOriginal(); + return false; + } + else if (overlayActive && doneAnimating===true) { + returnToOriginal(); + return false; + } + + + // Set states + doneAnimating = false; + origin.addClass('active'); + overlayActive = true; + + // Set positioning for placeholder + + placeholder.css({ + width: placeholder[0].getBoundingClientRect().width, + height: placeholder[0].getBoundingClientRect().height, + position: 'relative', + top: 0, + left: 0 + }); + + + + // Set css on origin + origin.css({position: 'absolute', 'z-index': 1000}) + .data('width', originalWidth) + .data('height', originalHeight); + + // Add overlay + var overlay = $('
    ') + .css({ + opacity: 0 + }) + .click(function(){ + if (doneAnimating === true) + returnToOriginal(); + }); + // Animate Overlay + $('body').append(overlay); + overlay.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'} + ); + + + // Add and animate caption if it exists + if (origin.data('caption') !== "") { + var $photo_caption = $('
    '); + $photo_caption.text(origin.data('caption')); + $('body').append($photo_caption); + $photo_caption.css({ "display": "inline" }); + $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'}); + } + + + + // 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; + } + + // Animate image + set z-index + if(origin.hasClass('responsive-img')) { + origin.velocity({'max-width': newWidth, 'width': originalWidth}, {duration: 0, queue: false, + complete: function(){ + origin.css({left: 0, top: 0}) + .velocity( + { + height: newHeight, + width: newWidth, + left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, + top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 + }, + { + duration: inDuration, + queue: false, + easing: 'easeOutQuad', + complete: function(){doneAnimating = true;} + } + ); + } // End Complete + }); // End Velocity + } + else { + origin.css('left', 0) + .css('top', 0) + .velocity( + { + height: newHeight, + width: newWidth, + left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, + top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 + }, + { + duration: inDuration, + queue: false, + easing: 'easeOutQuad', + complete: function(){doneAnimating = true;} + } + ); // End Velocity + } + + }); // End origin on click + + + // Return on scroll + $(window).scroll(function() { + if (overlayActive ) { + returnToOriginal(); + } + }); + + // Return on ESC + $(document).keyup(function(e) { + + if (e.keyCode === 27 && doneAnimating === true) { // ESC key + if (overlayActive) { + returnToOriginal(); + } + } + }); + + + // This function returns the modaled image to the original spot + function returnToOriginal() { + + doneAnimating = false; + + var placeholder = origin.parent('.material-placeholder'); + var windowWidth = window.innerWidth; + var windowHeight = window.innerHeight; + var originalWidth = origin.data('width'); + var originalHeight = origin.data('height'); + + origin.velocity("stop", true); + $('#materialbox-overlay').velocity("stop", true); + $('.materialbox-caption').velocity("stop", true); + + + $('#materialbox-overlay').velocity({opacity: 0}, { + duration: outDuration, // Delay prevents animation overlapping + queue: false, easing: 'easeOutQuad', + complete: function(){ + // Remove Overlay + overlayActive = false; + $(this).remove(); + } + }); + + // Resize Image + origin.velocity( + { + width: originalWidth, + height: originalHeight, + left: 0, + top: 0 + }, + { + duration: outDuration, + queue: false, easing: 'easeOutQuad' + } + ); + + // Remove Caption + reset css settings on image + $('.materialbox-caption').velocity({opacity: 0}, { + duration: outDuration, // Delay prevents animation overlapping + queue: false, easing: 'easeOutQuad', + complete: function(){ + placeholder.css({ + height: '', + width: '', + position: '', + top: '', + left: '' + }); + + origin.css({ + height: '', + top: '', + left: '', + width: '', + 'max-width': '', + position: '', + 'z-index': '' + }); + + // Remove class + origin.removeClass('active'); + doneAnimating = true; + $(this).remove(); + } + }); + + } + }); +}; + +$(document).ready(function(){ + $('.materialboxed').materialbox(); +}); + +}( 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) { + var container_height; + if (window_width < 601) { + container_height = ($this.height() > 0) ? $this.height() : $this.children("img").height(); + } + else { + container_height = ($this.height() > 0) ? $this.height() : 500; + } + var $img = $this.children("img").first(); + var img_height = $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 = Math.round((parallax_dist * percentScrolled)); + + if (initial) { + $img.css('display', 'block'); + } + if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) { + $img.css('transform', "translate3D(-50%," + parallax + "px, 0)"); + } + + } + + // Wait for image load + $this.children("img").one("load", function() { + updateParallax(true); + }).each(function() { + if(this.complete) $(this).load(); + }); + + $(window).scroll(function() { + window_width = $(window).width(); + updateParallax(false); + }); + + $(window).resize(function() { + window_width = $(window).width(); + updateParallax(false); + }); + + }); + + }; +}( jQuery ));;(function ($) { + + var methods = { + init : 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), + 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'), + $tabs_width = $this.width(), + $tab_width = $this.find('li').first().outerWidth(), + $index = 0; + + // If the location.hash matches one of the links, use that as the active tab. + $active = $($links.filter('[href="'+location.hash+'"]')); + + // If no match is found, use the first link or any with class 'active' as the initial active tab. + if ($active.length === 0) { + $active = $(this).find('li.tab a.active').first(); + } + if ($active.length === 0) { + $active = $(this).find('li.tab a').first(); + } + + $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){ + if ($(this).parent().hasClass('disabled')) { + e.preventDefault(); + return; + } + + $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: 90}); + + } + 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: 90}); + } + + // Prevent the anchor's default click action + e.preventDefault(); + }); + }); + + }, + select_tab : function( id ) { + this.find('a[href="#' + id + '"]').trigger('click'); + } + }; + + $.fn.tabs = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); + } + }; + + $(document).ready(function(){ + $('ul.tabs').tabs(); + }); +}( jQuery )); +;(function ($) { + $.fn.tooltip = function (options) { + var timeout = null, + counter = null, + started = false, + counterInterval = null, + margin = 5; + + // Defaults + var defaults = { + delay: 350 + }; + options = $.extend(defaults, options); + + //Remove previously created html + $('.material-tooltip').remove(); + + return this.each(function(){ + var origin = $(this); + + // Create Text span + var tooltip_text = $('').text(origin.attr('data-tooltip')); + + // Create tooltip + var newTooltip = $('
    '); + newTooltip.addClass('material-tooltip').append(tooltip_text); + newTooltip.appendTo($('body')); + + var backdrop = $('
    ').addClass('backdrop'); + backdrop.appendTo(newTooltip); + backdrop.css({ top: 0, left:0 }); + + + //Destroy previously binded events + $(this).off('mouseenter mouseleave'); + // Mouse In + $(this).on({ + mouseenter: function(e) { + var tooltip_delay = origin.data("delay"); + tooltip_delay = (tooltip_delay === undefined || tooltip_delay === '') ? options.delay : tooltip_delay; + counter = 0; + counterInterval = setInterval(function(){ + counter += 10; + if (counter >= tooltip_delay && started === false) { + started = true; + newTooltip.css({ display: 'block', left: '0px', top: '0px' }); + + // Set Tooltip text + newTooltip.children('span').text(origin.attr('data-tooltip')); + + // Tooltip positioning + var originWidth = origin.outerWidth(); + var originHeight = origin.outerHeight(); + var tooltipPosition = origin.attr('data-position'); + var tooltipHeight = newTooltip.outerHeight(); + var tooltipWidth = newTooltip.outerWidth(); + var tooltipVerticalMovement = '0px'; + var tooltipHorizontalMovement = '0px'; + var scale_factor = 8; + + if (tooltipPosition === "top") { + // Top Position + newTooltip.css({ + top: origin.offset().top - tooltipHeight - margin, + left: origin.offset().left + originWidth/2 - tooltipWidth/2 + }); + tooltipVerticalMovement = '-10px'; + backdrop.css({ + borderRadius: '14px 14px 0 0', + transformOrigin: '50% 90%', + marginTop: tooltipHeight, + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + + }); + } + // Left Position + else if (tooltipPosition === "left") { + newTooltip.css({ + top: origin.offset().top + originHeight/2 - tooltipHeight/2, + left: origin.offset().left - tooltipWidth - margin + }); + tooltipHorizontalMovement = '-10px'; + backdrop.css({ + width: '14px', + height: '14px', + borderRadius: '14px 0 0 14px', + transformOrigin: '95% 50%', + marginTop: tooltipHeight/2, + marginLeft: tooltipWidth + }); + } + // Right Position + else if (tooltipPosition === "right") { + newTooltip.css({ + top: origin.offset().top + originHeight/2 - tooltipHeight/2, + left: origin.offset().left + originWidth + margin + }); + tooltipHorizontalMovement = '+10px'; + backdrop.css({ + width: '14px', + height: '14px', + borderRadius: '0 14px 14px 0', + transformOrigin: '5% 50%', + marginTop: tooltipHeight/2, + marginLeft: '0px' + }); + } + else { + // Bottom Position + newTooltip.css({ + top: origin.offset().top + origin.outerHeight() + margin, + left: origin.offset().left + originWidth/2 - tooltipWidth/2 + }); + tooltipVerticalMovement = '+10px'; + backdrop.css({ + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + }); + } + + // Calculate Scale to fill + scale_factor = tooltipWidth / 8; + if (scale_factor < 8) { + scale_factor = 8; + } + if (tooltipPosition === "right" || tooltipPosition === "left") { + scale_factor = tooltipWidth / 10; + if (scale_factor < 6) + scale_factor = 6; + } + + newTooltip.velocity({ opacity: 1, marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 350, queue: false }); + backdrop.css({ display: 'block' }) + .velocity({opacity:1},{duration: 55, delay: 0, queue: false}) + .velocity({scale: scale_factor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'}); + + } + }, 10); // End Interval + + // Mouse Out + }, + mouseleave: function(){ + // Reset State + clearInterval(counterInterval); + counter = 0; + + // Animate back + newTooltip.velocity({ + opacity: 0, marginTop: 0, marginLeft: 0}, { 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;} + }); + } + }); + }); + }; + + $(document).ready(function(){ + $('.tooltipped').tooltip(); + }); +}( jQuery )); +;/*! + * Waves v0.6.4 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ + +;(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: 750, + + show: function(e, element) { + + // Disable right click + if (e.button === 2) { + return false; + } + + var el = element || 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); + var relativeX = (e.pageX - pos.left); + var scale = 'scale('+((el.clientWidth / 100) * 10)+')'; + + // Support for touch devices + if ('touches' in e) { + relativeY = (e.touches[0].pageY - pos.top); + relativeX = (e.touches[0].pageX - pos.left); + } + + // Attach data to element + ripple.setAttribute('data-hold', Date.now()); + ripple.setAttribute('data-scale', scale); + ripple.setAttribute('data-x', relativeX); + ripple.setAttribute('data-y', relativeY); + + // Set ripple position + var rippleStyle = { + 'top': relativeY+'px', + 'left': relativeX+'px' + }; + + ripple.className = ripple.className + ' 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'; + + rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + + ripple.setAttribute('style', convertStyle(rippleStyle)); + }, + + hide: function(e) { + TouchHandler.touchup(e); + + var el = this; + var width = el.clientWidth * 1.4; + + // Get first ripple + var ripple = null; + var ripples = el.getElementsByClassName('waves-ripple'); + if (ripples.length > 0) { + ripple = ripples[ripples.length - 1]; + } else { + 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 = 350 - 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) { + continue; + } + + // 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'); + + if (!elementStyle) { + elementStyle = ''; + } + + wrapper.setAttribute('style', elementStyle); + + el.className = 'waves-button-input'; + el.removeAttribute('style'); + + // Put element as child + parent.replaceChild(wrapper, el); + wrapper.appendChild(el); + } + } + } + }; + + + /** + * Disable mousedown event for 500ms during and after touch + */ + var TouchHandler = { + /* uses an integer rather than bool so there's no issues with + * needing to clear timeouts if another touch event occurred + * within the 500ms. Cannot mouseup between touchstart and + * touchend, nor in the 500ms after touchend. */ + touches: 0, + allowEvent: function(e) { + var allow = true; + + if (e.type === 'touchstart') { + TouchHandler.touches += 1; //push + } else if (e.type === 'touchend' || e.type === 'touchcancel') { + setTimeout(function() { + if (TouchHandler.touches > 0) { + TouchHandler.touches -= 1; //pop after 500ms + } + }, 500); + } else if (e.type === 'mousedown' && TouchHandler.touches > 0) { + allow = false; + } + + return allow; + }, + touchup: function(e) { + TouchHandler.allowEvent(e); + } + }; + + + /** + * Delegated click handler for .waves-effect element. + * returns null when .waves-effect element not in "click tree" + */ + function getWavesEffectElement(e) { + if (TouchHandler.allowEvent(e) === false) { + return null; + } + + var element = null; + var target = e.target || e.srcElement; + + while (target.parentElement !== null) { + if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) { + element = target; + break; + } else if (target.classList.contains('waves-effect')) { + element = target; + break; + } + target = target.parentElement; + } + + return element; + } + + /** + * Bubble the click and show effect if .waves-effect elem was found + */ + function showEffect(e) { + var element = getWavesEffectElement(e); + + if (element !== null) { + Effect.show(e, element); + + if ('ontouchstart' in window) { + element.addEventListener('touchend', Effect.hide, false); + element.addEventListener('touchcancel', Effect.hide, false); + } + + element.addEventListener('mouseup', Effect.hide, false); + element.addEventListener('mouseleave', Effect.hide, false); + } + } + + Waves.displayEffect = function(options) { + options = options || {}; + + if ('duration' in options) { + Effect.duration = options.duration; + } + + //Wrap input inside tag + Effect.wrapInput($$('.waves-effect')); + + if ('ontouchstart' in window) { + document.body.addEventListener('touchstart', showEffect, false); + } + + document.body.addEventListener('mousedown', showEffect, false); + }; + + /** + * Attach Waves to an input element (or any element which doesn't + * bubble mouseup/mousedown events). + * Intended to be used with dynamically loaded forms/inputs, or + * where the user doesn't want a delegated click handler. + */ + Waves.attach = function(element) { + //FUTURE: automatically add waves classes and allow users + // to specify them with an options param? Eg. light/classic/button + if (element.tagName.toLowerCase() === 'input') { + Effect.wrapInput([element]); + element = element.parentElement; + } + + if ('ontouchstart' in window) { + element.addEventListener('touchstart', showEffect, false); + } + + element.addEventListener('mousedown', showEffect, false); + }; + + window.Waves = Waves; + + document.addEventListener('DOMContentLoaded', function() { + Waves.displayEffect(); + }, false); + +})(window); +;Materialize.toast = function (message, displayLength, className, completeCallback) { + className = className || ""; + + var container = document.getElementById('toast-container'); + + // Create toast container if it does not exist + if (container === null) { + // create notification container + container = document.createElement('div'); + container.id = 'toast-container'; + document.body.appendChild(container); + } + + // Select and append toast + var newToast = createToast(message); + + // only append toast if message is not undefined + if(message){ + container.appendChild(newToast); + } + + newToast.style.top = '35px'; + newToast.style.opacity = 0; + + // Animate toast in + Vel(newToast, { "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.parentNode === null) + window.clearInterval(counterInterval); + + // If toast is not being dragged, decrease its time remaining + if (!newToast.classList.contains('panning')) { + timeLeft -= 20; + } + + if (timeLeft <= 0) { + // Animate toast out + Vel(newToast, {"opacity": 0, marginTop: '-40px'}, { duration: 375, + easing: 'easeOutExpo', + queue: false, + complete: function(){ + // Call the optional callback + if(typeof(completeCallback) === "function") + completeCallback(); + // Remove toast after it times out + this[0].parentNode.removeChild(this[0]); + } + }); + window.clearInterval(counterInterval); + } + }, 20); + + + + function createToast(html) { + + // Create toast + var toast = document.createElement('div'); + toast.classList.add('toast'); + if (className) { + var classes = className.split(' '); + + for (var i = 0, count = classes.length; i < count; i++) { + toast.classList.add(classes[i]); + } + } + toast.innerHTML = html; + + // Bind hammer + var hammerHandler = new Hammer(toast, {prevent_default: false}); + hammerHandler.on('pan', function(e) { + var deltaX = e.deltaX; + var activationDistance = 80; + + // Change toast state + if (!toast.classList.contains('panning')){ + toast.classList.add('panning'); + } + + var opacityPercent = 1-Math.abs(deltaX / activationDistance); + if (opacityPercent < 0) + opacityPercent = 0; + + Vel(toast, {left: deltaX, opacity: opacityPercent }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + }); + + hammerHandler.on('panend', function(e) { + var deltaX = e.deltaX; + var activationDistance = 80; + + // If toast dragged past activation point + if (Math.abs(deltaX) > activationDistance) { + Vel(toast, {marginTop: '-40px'}, { duration: 375, + easing: 'easeOutExpo', + queue: false, + complete: function(){ + if(typeof(completeCallback) === "function") { + completeCallback(); + } + toast.parentNode.removeChild(toast); + } + }); + + } else { + toast.classList.remove('panning'); + // Put toast back into original position + Vel(toast, { left: 0, opacity: 1 }, { duration: 300, + easing: 'easeOutExpo', + queue: false + }); + + } + }); + + return toast; + } +}; +;(function ($) { + + var methods = { + init : function(options) { + var defaults = { + menuWidth: 240, + edge: 'left', + closeOnClick: false + }; + options = $.extend(defaults, options); + + $(this).each(function(){ + var $this = $(this); + var menu_id = $("#"+ $this.attr('data-activates')); + + // Set to width + if (options.menuWidth != 240) { + menu_id.css('width', options.menuWidth); + } + + // Add Touch Area + $('body').append($('
    ')); + + if (options.edge == 'left') { + menu_id.css('left', -1 * (options.menuWidth + 10)); + $('.drag-target').css({'left': 0}); // Add Touch Area + } + else { + menu_id.addClass('right-aligned') // Change text-alignment to right + .css('right', -1 * (options.menuWidth + 10)) + .css('left', ''); + $('.drag-target').css({'right': 0}); // Add Touch Area + } + + // If fixed sidenav, bring menu out + if (menu_id.hasClass('fixed')) { + if (window.innerWidth > 992) { + menu_id.css('left', 0); + } + } + + // Window resize to reset on large screens fixed + if (menu_id.hasClass('fixed')) { + $(window).resize( function() { + if (window.innerWidth > 992) { + // Close menu if window is resized bigger than 992 and user has fixed sidenav + if ($('#sidenav-overlay').css('opacity') !== 0 && menuOut) { + removeMenu(true); + } + else { + menu_id.removeAttr('style'); + menu_id.css('width', options.menuWidth); + } + } + else if (menuOut === false){ + if (options.edge === 'left') + menu_id.css('left', -1 * (options.menuWidth + 10)); + else + menu_id.css('right', -1 * (options.menuWidth + 10)); + } + + }); + } + + // if closeOnClick, then add close event for all a tags in side sideNav + if (options.closeOnClick === true) { + menu_id.on("click.itemclick", "a:not(.collapsible-header)", function(){ + removeMenu(); + }); + } + + function removeMenu(restoreNav) { + panning = false; + menuOut = false; + + // Reenable scrolling + $('body').css('overflow', ''); + + $('#sidenav-overlay').velocity({opacity: 0}, {duration: 200, queue: false, easing: 'easeOutQuad', + complete: function() { + $(this).remove(); + } }); + if (options.edge === 'left') { + // Reset phantom div + $('.drag-target').css({width: '', right: '', left: '0'}); + menu_id.velocity( + {left: -1 * (options.menuWidth + 10)}, + { duration: 200, + queue: false, + easing: 'easeOutCubic', + complete: function() { + if (restoreNav === true) { + // Restore Fixed sidenav + menu_id.removeAttr('style'); + menu_id.css('width', options.menuWidth); + } + } + + }); + } + else { + // Reset phantom div + $('.drag-target').css({width: '', right: '0', left: ''}); + menu_id.velocity( + {right: -1 * (options.menuWidth + 10)}, + { duration: 200, + queue: false, + easing: 'easeOutCubic', + complete: function() { + if (restoreNav === true) { + // Restore Fixed sidenav + menu_id.removeAttr('style'); + menu_id.css('width', options.menuWidth); + } + } + }); + } + } + + + + // Touch Event + var panning = false; + var menuOut = false; + + $('.drag-target').on('click', function(){ + removeMenu(); + }); + + $('.drag-target').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; + var velocityX = e.gesture.velocityX; + + // Disable Scrolling + $('body').css('overflow', 'hidden'); + + // If overlay does not exist, create one and if it is clicked, close menu + if ($('#sidenav-overlay').length === 0) { + var overlay = $('
    '); + overlay.css('opacity', 0).click( function(){ + removeMenu(); + }); + $('body').append(overlay); + } + + // Keep within boundaries + if (options.edge === 'left') { + if (x > options.menuWidth) { x = options.menuWidth; } + else if (x < 0) { x = 0; } + } + + if (options.edge === 'left') { + // Left Direction + if (x < (options.menuWidth / 2)) { menuOut = false; } + // Right Direction + else if (x >= (options.menuWidth / 2)) { menuOut = true; } + + menu_id.css('left', (x - options.menuWidth)); + } + else { + // Left Direction + if (x < (window.innerWidth - options.menuWidth / 2)) { + menuOut = true; + } + // Right Direction + else if (x >= (window.innerWidth - options.menuWidth / 2)) { + menuOut = false; + } + var rightPos = -1 *(x - options.menuWidth / 2); + if (rightPos > 0) { + rightPos = 0; + } + + menu_id.css('right', rightPos); + } + + + + + // Percentage overlay + var overlayPerc; + if (options.edge === 'left') { + overlayPerc = x / options.menuWidth; + $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + } + else { + overlayPerc = Math.abs((x - window.innerWidth) / options.menuWidth); + $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + } + } + + }).bind('panend', function(e) { + + if (e.gesture.pointerType == "touch") { + var velocityX = e.gesture.velocityX; + panning = false; + if (options.edge === 'left') { + // If velocityX <= 0.3 then the user is flinging the menu closed so ignore menuOut + if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) { + menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + $('.drag-target').css({width: '50%', right: 0, left: ''}); + } + else if (!menuOut || velocityX > 0.3) { + // Enable Scrolling + $('body').css('overflow', ''); + // Slide menu closed + menu_id.velocity({left: -1 * (options.menuWidth + 10)}, {duration: 200, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', + complete: function () { + $(this).remove(); + }}); + $('.drag-target').css({width: '10px', right: '', left: 0}); + } + } + else { + if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) { + menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + $('.drag-target').css({width: '50%', right: '', left: 0}); + } + else if (!menuOut || velocityX < -0.3) { + // Enable Scrolling + $('body').css('overflow', ''); + // Slide menu closed + menu_id.velocity({right: -1 * (options.menuWidth + 10)}, {duration: 200, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', + complete: function () { + $(this).remove(); + }}); + $('.drag-target').css({width: '10px', right: 0, left: ''}); + } + } + + } + }); + + $this.click(function() { + if (menuOut === true) { + menuOut = false; + panning = false; + removeMenu(); + } + else { + + // Disable Scrolling + $('body').css('overflow', 'hidden'); + + if (options.edge === 'left') { + $('.drag-target').css({width: '50%', right: 0, left: ''}); + menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + else { + $('.drag-target').css({width: '50%', right: '', left: 0}); + menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + menu_id.css('left',''); + } + + var overlay = $('
    '); + overlay.css('opacity', 0) + .click(function(){ + menuOut = false; + panning = false; + removeMenu(); + overlay.velocity({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $(this).remove(); + } }); + + }); + $('body').append(overlay); + overlay.velocity({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function () { + menuOut = true; + panning = false; + } + }); + } + + return false; + }); + }); + + + }, + show : function() { + this.trigger('click'); + }, + hide : function() { + $('#sidenav-overlay').trigger('click'); + } + }; + + + $.fn.sideNav = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.sideNav' ); + } + }; // Plugin end +}( 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 - 200 allows elements near bottom of page to scroll + + $('html, body').animate({ scrollTop: offset - 200 }, {duration: 400, queue: false, 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'); + }); + if (visible[0]) { // Check if empty + $('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 ($) { + $(document).ready(function() { + + // Function to update labels of text fields + Materialize.updateTextFields = function() { + var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; + $(input_selector).each(function(index, element) { + if ($(element).val().length > 0 || $(this).attr('placeholder') !== undefined || $(element)[0].validity.badInput === true) { + $(this).siblings('label, i').addClass('active'); + } + else { + $(this).siblings('label, i').removeClass('active'); + } + }); + }; + + // Text based inputs + var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; + + // Handle HTML5 autofocus + $('input[autofocus]').siblings('label, i').addClass('active'); + + // Add active if form auto complete + $(document).on('change', input_selector, function () { + if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) { + $(this).siblings('label, i').addClass('active'); + } + validate_field($(this)); + }); + + // Add active if input element has been pre-populated on document ready + $(document).ready(function() { + Materialize.updateTextFields(); + }); + + // HTML DOM FORM RESET handling + $(document).on('reset', function(e) { + var formReset = $(e.target); + if (formReset.is('form')) { + formReset.find(input_selector).removeClass('valid').removeClass('invalid'); + formReset.find(input_selector).each(function () { + if ($(this).attr('value') === '') { + $(this).siblings('label, i').removeClass('active'); + } + }); + + // Reset select + formReset.find('select.initialized').each(function () { + var reset_text = formReset.find('option[selected]').text(); + formReset.siblings('input.select-dropdown').val(reset_text); + }); + } + }); + + // Add active when element has focus + $(document).on('focus', input_selector, function () { + $(this).siblings('label, i').addClass('active'); + }); + + $(document).on('blur', input_selector, function () { + var $inputElement = $(this); + if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) { + $inputElement.siblings('label, i').removeClass('active'); + } + validate_field($inputElement); + }); + + validate_field = function(object) { + var hasLength = object.attr('length') !== undefined; + var lenAttr = parseInt(object.attr('length')); + var len = object.val().length; + + if (object.val().length === 0 && object[0].validity.badInput === false) { + if (object.hasClass('validate')) { + object.removeClass('valid'); + object.removeClass('invalid'); + } + } + else { + if (object.hasClass('validate')) { + // Check for character counter attributes + if ((object.is(':valid') && hasLength && (len < lenAttr)) || (object.is(':valid') && !hasLength)) { + object.removeClass('invalid'); + object.addClass('valid'); + } + else { + object.removeClass('valid'); + object.addClass('invalid'); + } + } + } + }; + + + // Textarea Auto Resize + var hiddenDiv = $('.hiddendiv').first(); + if (!hiddenDiv.length) { + hiddenDiv = $('
    '); + $('body').append(hiddenDiv); + } + var text_area_selector = '.materialize-textarea'; + + function textareaAutoResize($textarea) { + // Set font properties of hiddenDiv + + var fontFamily = $textarea.css('font-family'); + var fontSize = $textarea.css('font-size'); + + if (fontSize) { hiddenDiv.css('font-size', fontSize); } + if (fontFamily) { hiddenDiv.css('font-family', fontFamily); } + + if ($textarea.attr('wrap') === "off") { + hiddenDiv.css('overflow-wrap', "normal") + .css('white-space', "pre"); + } + + + + + hiddenDiv.text($textarea.val() + '\n'); + var content = hiddenDiv.html().replace(/\n/g, '
    '); + hiddenDiv.html(content); + + + // When textarea is hidden, width goes crazy. + // Approximate with half of window size + + if ($textarea.is(':visible')) { + hiddenDiv.css('width', $textarea.width()); + } + else { + hiddenDiv.css('width', $(window).width()/2); + } + + $textarea.css('height', hiddenDiv.height()); + } + + $(text_area_selector).each(function () { + var $textarea = $(this); + if ($textarea.val().length) { + textareaAutoResize($textarea); + } + }); + + $('body').on('keyup keydown', text_area_selector, function () { + textareaAutoResize($(this)); + }); + + + // File Input Path + $('.file-field').each(function() { + var path_input = $(this).find('input.file-path'); + $(this).find('input[type="file"]').change(function () { + path_input.val($(this)[0].files[0].name); + path_input.trigger('change'); + }); + }); + + + + /**************** + * Range Input * + ****************/ + + var range_type = 'input[type=range]'; + var range_mousedown = false; + var left; + + $(range_type).each(function () { + var thumb = $(''); + $(this).after(thumb); + }); + + var range_wrapper = '.range-field'; + $(document).on('change', range_type, function(e) { + var thumb = $(this).siblings('.thumb'); + thumb.find('.value').html($(this).val()); + }); + + $(document).on('mousedown touchstart', range_type, function(e) { + var thumb = $(this).siblings('.thumb'); + + // If thumb indicator does not exist yet, create it + if (thumb.length <= 0) { + thumb = $(''); + $(this).append(thumb); + } + + // Set indicator value + thumb.find('.value').html($(this).val()); + + range_mousedown = true; + $(this).addClass('active'); + + if (!thumb.hasClass('active')) { + thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); + } + + if(e.pageX === undefined || e.pageX === null){//mobile + left = e.originalEvent.touches[0].pageX - $(this).offset().left; + } + else{ // desktop + 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).val()); + + + }); + + $(document).on('mouseup touchend', range_wrapper, function() { + range_mousedown = false; + $(this).removeClass('active'); + }); + + $(document).on('mousemove touchmove', range_wrapper, function(e) { + var thumb = $(this).children('.thumb'); + var left; + if (range_mousedown) { + if (!thumb.hasClass('active')) { + thumb.velocity({ height: '30px', width: '30px', top: '-20px', marginLeft: '-15px'}, { duration: 300, easing: 'easeOutExpo' }); + } + if (e.pageX === undefined || e.pageX === null) { //mobile + left = e.originalEvent.touches[0].pageX - $(this).offset().left; + } + else{ // desktop + 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); + + } + + }); + + $(document).on('mouseout touchleave', range_wrapper, 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'); + } + }); + + }); // End of $(document).ready + + + + + // Select Plugin + $.fn.material_select = function (callback) { + $(this).each(function(){ + $select = $(this); + + if ( $select.hasClass('browser-default')) { + return; // Continue to next (return false breaks out of entire loop) + } + + // Tear down structure if Select needs to be rebuilt + var lastID = $select.data('select-id'); + if (lastID) { + $select.parent().find('i').remove(); + $select.parent().find('input').remove(); + + $select.unwrap(); + $('ul#select-options-'+lastID).remove(); + } + + // If destroying the select, remove the selelct-id and reset it to it's uninitialized state. + if(callback === 'destroy') { + $select.data('select-id', null).removeClass('initialized'); + return; + } + + var uniqueID = Materialize.guid(); + $select.data('select-id', uniqueID); + var wrapper = $('
    '); + wrapper.addClass($select.attr('class')); + var options = $(''); + var selectOptions = $select.children('option'); + + var label; + if ($select.find('option:selected') !== undefined) { + label = $select.find('option:selected'); + } + else { + label = options.first(); + } + + + // Create Dropdown structure + selectOptions.each(function () { + // Add disabled attr if disabled + options.append($('
  • ' + $(this).html() + '
  • ')); + }); + + + options.find('li').each(function (i) { + var $curr_select = $select; + $(this).click(function () { + // Check if option element is disabled + if (!$(this).hasClass('disabled')) { + $curr_select.find('option').eq(i).prop('selected', true); + // Trigger onchange() event + $curr_select.trigger('change'); + $curr_select.siblings('input.select-dropdown').val($(this).text()); + if (typeof callback !== 'undefined') callback(); + } + }); + + }); + + // Wrap Elements + $select.wrap(wrapper); + // Add Select Display Element + var dropdownIcon = $(''); + if ( $select.is(':disabled') ) + dropdownIcon.addClass('disabled'); + + var $newSelect = $(''); + $select.before($newSelect); + $newSelect.before(dropdownIcon); + + $('body').append(options); + // Check if section element is disabled + if (!$select.is(':disabled')) { + $newSelect.dropdown({"hover": false}); + } + + // Copy tabindex + if ($select.attr('tabindex')) { + $($newSelect[0]).attr('tabindex', $select.attr('tabindex')); + } + + $select.addClass('initialized'); + + $newSelect.on('focus', function(){ + $(this).trigger('open'); + label = $(this).val(); + selectedOption = options.find('li').filter(function() { + return $(this).text().toLowerCase() === label.toLowerCase(); + })[0]; + activateOption(options, selectedOption); + }); + + $newSelect.on('blur', function(){ + $(this).trigger('close'); + }); + + // Make option as selected and scroll to selected position + activateOption = function(collection, newOption) { + collection.find('li.active').removeClass('active'); + $(newOption).addClass('active'); + collection.scrollTo(newOption); + }; + + // Allow user to search by typing + // this array is cleared after 1 second + filterQuery = []; + + onKeyDown = function(event){ + // TAB - switch to another input + if(event.which == 9){ + $newSelect.trigger('close'); + return; + } + + // ARROW DOWN WHEN SELECT IS CLOSED - open select options + if(event.which == 40 && !options.is(":visible")){ + $newSelect.trigger('open'); + return; + } + + // ENTER WHEN SELECT IS CLOSED - submit form + if(event.which == 13 && !options.is(":visible")){ + return; + } + + event.preventDefault(); + + // CASE WHEN USER TYPE LETTERS + letter = String.fromCharCode(event.which).toLowerCase(); + var nonLetters = [9,13,27,38,40]; + if (letter && (nonLetters.indexOf(event.which) === -1)){ + filterQuery.push(letter); + + string = filterQuery.join(""); + + newOption = options.find('li').filter(function() { + return $(this).text().toLowerCase().indexOf(string) === 0; + })[0]; + + if(newOption){ + activateOption(options, newOption); + } + } + + // ENTER - select option and close when select options are opened + if(event.which == 13){ + activeOption = options.find('li.active:not(.disabled)')[0]; + if(activeOption){ + $(activeOption).trigger('click'); + $newSelect.trigger('close'); + } + } + + // ARROW DOWN - move to next not disabled option + if(event.which == 40){ + newOption = options.find('li.active').next('li:not(.disabled)')[0]; + if(newOption){ + activateOption(options, newOption); + } + } + + // ESC - close options + if(event.which == 27){ + $newSelect.trigger('close'); + } + + // ARROW UP - move to previous not disabled option + if(event.which == 38){ + newOption = options.find('li.active').prev('li:not(.disabled)')[0]; + if(newOption){ + activateOption(options, newOption); + } + } + + // Automaticaly clean filter query so user can search again by starting letters + setTimeout(function(){ filterQuery = []; }, 1000); + }; + + $newSelect.on('keydown', onKeyDown); + }); + }; + +}( jQuery )); +;(function ($) { + + var methods = { + + init : function(options) { + var defaults = { + indicators: true, + height: 400, + transition: 500, + interval: 6000 + }; + options = $.extend(defaults, options); + + return this.each(function() { + + // For each slider, we want to keep track of + // which slide is active and its associated content + var $this = $(this); + var $slider = $this.find('ul.slides').first(); + var $slides = $slider.find('li'); + var $active_index = $slider.find('.active').index(); + var $active; + if ($active_index != -1) { $active = $slides.eq($active_index); } + + // Transitions the caption depending on alignment + function captionTransition(caption, duration) { + if (caption.hasClass("center-align")) { + caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false}); + } + else if (caption.hasClass("right-align")) { + caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false}); + } + else if (caption.hasClass("left-align")) { + caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false}); + } + } + + // This function will transition the slide to any index of the next slide + function moveToSlide(index) { + if (index >= $slides.length) index = 0; + else if (index < 0) index = $slides.length -1; + + $active_index = $slider.find('.active').index(); + + // Only do if index changes + if ($active_index != index) { + $active = $slides.eq($active_index); + $caption = $active.find('.caption'); + + $active.removeClass('active'); + $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad', + complete: function() { + $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false}); + } }); + captionTransition($caption, options.transition); + + + // Update indicators + if (options.indicators) { + $indicators.eq($active_index).removeClass('active'); + } + + $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); + $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'}); + $slides.eq(index).addClass('active'); + + + // Update indicators + if (options.indicators) { + $indicators.eq(index).addClass('active'); + } + } + } + + // Set height of slider + // If fullscreen, do nothing + if (!$this.hasClass('fullscreen')) { + if (options.indicators) { + // Add height if indicators are present + $this.height(options.height + 40); + } + else { + $this.height(options.height); + } + $slider.height(options.height); + } + + + // Set initial positions of captions + $slides.find('.caption').each(function () { + captionTransition($(this), 0); + }); + + // Move img src into background-image + $slides.find('img').each(function () { + $(this).css('background-image', 'url(' + $(this).attr('src') + ')' ); + $(this).attr('src', 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='); + }); + + // dynamically add indicators + if (options.indicators) { + var $indicators = $('
      '); + $slides.each(function( index ) { + var $indicator = $('
    • '); + + // Handle clicks on indicators + $indicator.click(function () { + var $parent = $slider.parent(); + var curr_index = $parent.find($(this)).index(); + moveToSlide(curr_index); + + // reset interval + clearInterval($interval); + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + if ($slides.length == $active_index + 1) $active_index = 0; // loop to start + else $active_index += 1; + + moveToSlide($active_index); + + }, options.transition + options.interval + ); + }); + $indicators.append($indicator); + }); + $this.append($indicators); + $indicators = $this.find('ul.indicators').find('li.indicator-item'); + } + + if ($active) { + $active.show(); + } + else { + $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); + + $active_index = 0; + $active = $slides.eq($active_index); + + // Update indicators + if (options.indicators) { + $indicators.eq($active_index).addClass('active'); + } + } + + // Adjust height to current slide + $active.find('img').each(function() { + $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); + }); + + // auto scroll + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + moveToSlide($active_index + 1); + + }, options.transition + options.interval + ); + + + // HammerJS, Swipe navigation + + // Touch Event + var panning = false; + var swipeLeft = false; + var swipeRight = false; + + $this.hammer({ + prevent_default: false + }).bind('pan', function(e) { + if (e.gesture.pointerType === "touch") { + + // reset interval + clearInterval($interval); + + var direction = e.gesture.direction; + var x = e.gesture.deltaX; + var velocityX = e.gesture.velocityX; + + $curr_slide = $slider.find('.active'); + $curr_slide.velocity({ translateX: x + }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + // Swipe Left + if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) { + swipeRight = true; + } + // Swipe Right + else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) { + swipeLeft = true; + } + + // Make Slide Behind active slide visible + var next_slide; + if (swipeLeft) { + next_slide = $curr_slide.next(); + if (next_slide.length === 0) { + next_slide = $slides.first(); + } + next_slide.velocity({ opacity: 1 + }, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + if (swipeRight) { + next_slide = $curr_slide.prev(); + if (next_slide.length === 0) { + next_slide = $slides.last(); + } + next_slide.velocity({ opacity: 1 + }, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + + + } + + }).bind('panend', function(e) { + if (e.gesture.pointerType === "touch") { + + $curr_slide = $slider.find('.active'); + panning = false; + curr_index = $slider.find('.active').index(); + + if (!swipeRight && !swipeLeft) { + // Return to original spot + $curr_slide.velocity({ translateX: 0 + }, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + else if (swipeLeft) { + moveToSlide(curr_index + 1); + $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); + } }); + } + else if (swipeRight) { + moveToSlide(curr_index - 1); + $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); + } }); + } + swipeLeft = false; + swipeRight = false; + + // Restart interval + clearInterval($interval); + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + if ($slides.length == $active_index + 1) $active_index = 0; // loop to start + else $active_index += 1; + + moveToSlide($active_index); + + }, options.transition + options.interval + ); + } + }); + + $this.on('sliderPause', function() { + clearInterval($interval); + }); + + $this.on('sliderStart', function() { + clearInterval($interval); + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + if ($slides.length == $active_index + 1) $active_index = 0; // loop to start + else $active_index += 1; + + moveToSlide($active_index); + + }, options.transition + options.interval + ); + }); + + }); + + + + }, + pause : function() { + $(this).trigger('sliderPause'); + }, + start : function() { + $(this).trigger('sliderStart'); + } + }; + + + $.fn.slider = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); + } + }; // Plugin end +}( jQuery ));;(function ($) { + $(document).ready(function() { + + $(document).on('click.card', '.card', function (e) { + if ($(this).find('.card-reveal').length) { + if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) { + // Make Reveal animate down and display none + $(this).find('.card-reveal').velocity( + {translateY: 0}, { + duration: 225, + queue: false, + easing: 'easeInOutQuad', + complete: function() { $(this).css({ display: 'none'}); } + } + ); + } + else if ($(e.target).is($('.card .activator')) || + $(e.target).is($('.card .activator i')) ) { + $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'}); + } + } + + + }); + + }); +}( jQuery ));;(function ($) { + $(document).ready(function() { + + $.fn.pushpin = function (options) { + + var defaults = { + top: 0, + bottom: Infinity, + offset: 0 + } + options = $.extend(defaults, options); + + $index = 0; + return this.each(function() { + var $uniqueId = Materialize.guid(), + $this = $(this), + $original_offset = $(this).offset().top; + + function removePinClasses(object) { + object.removeClass('pin-top'); + object.removeClass('pinned'); + object.removeClass('pin-bottom'); + } + + function updateElements(objects, scrolled) { + objects.each(function () { + // Add position fixed (because its between top and bottom) + if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) { + removePinClasses($(this)); + $(this).css('top', options.offset); + $(this).addClass('pinned'); + } + + // Add pin-top (when scrolled position is above top) + if (scrolled < options.top && !$(this).hasClass('pin-top')) { + removePinClasses($(this)); + $(this).css('top', 0); + $(this).addClass('pin-top'); + } + + // Add pin-bottom (when scrolled position is below bottom) + if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) { + removePinClasses($(this)); + $(this).addClass('pin-bottom'); + $(this).css('top', options.bottom - $original_offset); + } + }); + } + + updateElements($this, $(window).scrollTop()); + $(window).on('scroll.' + $uniqueId, function () { + var $scrolled = $(window).scrollTop() + options.offset; + updateElements($this, $scrolled); + }); + + }); + + }; + + + }); +}( jQuery ));;(function ($) { + $(document).ready(function() { + + // jQuery reverse + $.fn.reverse = [].reverse; + + $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn', function(e) { + var $this = $(this); + openFABMenu($this); + + }); + + $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn', function(e) { + var $this = $(this); + closeFABMenu($this); + }); + + }); + + $.fn.extend({ + openFAB: function() { + var $this = $(this); + openFABMenu($this); + }, + closeFAB: function() { + closeFABMenu($this); + } + }); + + + var openFABMenu = function (btn) { + $this = btn; + if ($this.hasClass('active') === false) { + $this.addClass('active'); + $this.find('ul .btn-floating').velocity( + { scaleY: ".4", scaleX: ".4", translateY: "40px"}, + { duration: 0 }); + + var time = 0; + $this.find('ul .btn-floating').reverse().each(function () { + $(this).velocity( + { opacity: "1", scaleX: "1", scaleY: "1", translateY: "0"}, + { duration: 80, delay: time }); + time += 40; + }); + } + }; + + var closeFABMenu = function (btn) { + $this = btn; + $this.removeClass('active'); + var time = 0; + $this.find('ul .btn-floating').velocity("stop", true); + $this.find('ul .btn-floating').velocity( + { opacity: "0", scaleX: ".4", scaleY: ".4", translateY: "40px"}, + { duration: 80 } + ); + }; + + +}( jQuery )); +;(function ($) { + // Image transition function + Materialize.fadeInImage = function(selector){ + var element = $(selector); + element.css({opacity: 0}); + $(element).velocity({opacity: 1}, { + duration: 650, + queue: false, + easing: 'easeOutSine' + }); + $(element).velocity({opacity: 1}, { + duration: 1300, + queue: false, + easing: 'swing', + step: function(now, fx) { + fx.start = 100; + var grayscale_setting = now/100; + var brightness_setting = 150 - (100 - now)/1.75; + + if (brightness_setting < 100) { + brightness_setting = 100; + } + if (now >= 0) { + $(this).css({ + "-webkit-filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)", + "filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)" + }); + } + } + }); + }; + + // Horizontal staggered list + Materialize.showStaggeredList = function(selector) { + var time = 0; + $(selector).find('li').velocity( + { translateX: "-100px"}, + { duration: 0 }); + + $(selector).find('li').each(function() { + $(this).velocity( + { opacity: "1", translateX: "0"}, + { duration: 800, delay: time, easing: [60, 10] }); + time += 120; + }); + }; + + + $(document).ready(function() { + // Hardcoded .staggered-list scrollFire + // var staggeredListOptions = []; + // $('ul.staggered-list').each(function (i) { + + // var label = 'scrollFire-' + i; + // $(this).addClass(label); + // staggeredListOptions.push( + // {selector: 'ul.staggered-list.' + label, + // offset: 200, + // callback: 'showStaggeredList("ul.staggered-list.' + label + '")'}); + // }); + // scrollFire(staggeredListOptions); + + // HammerJS, Swipe navigation + + // Touch Event + var swipeLeft = false; + var swipeRight = false; + + + // Dismissible Collections + $('.dismissable').each(function() { + $(this).hammer({ + prevent_default: false + }).bind('pan', function(e) { + if (e.gesture.pointerType === "touch") { + var $this = $(this); + var direction = e.gesture.direction; + var x = e.gesture.deltaX; + var velocityX = e.gesture.velocityX; + + $this.velocity({ translateX: x + }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + // Swipe Left + if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.75)) { + swipeLeft = true; + } + + // Swipe Right + if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.75)) { + swipeRight = true; + } + } + }).bind('panend', function(e) { + // Reset if collection is moved back into original position + if (Math.abs(e.gesture.deltaX) < ($(this).innerWidth() / 2)) { + swipeRight = false; + swipeLeft = false; + } + + if (e.gesture.pointerType === "touch") { + var $this = $(this); + if (swipeLeft || swipeRight) { + var fullWidth; + if (swipeLeft) { fullWidth = $this.innerWidth(); } + else { fullWidth = -1 * $this.innerWidth(); } + + $this.velocity({ translateX: fullWidth, + }, {duration: 100, queue: false, easing: 'easeOutQuad', complete: + function() { + $this.css('border', 'none'); + $this.velocity({ height: 0, padding: 0, + }, {duration: 200, queue: false, easing: 'easeOutQuad', complete: + function() { $this.remove(); } + }); + } + }); + } + else { + $this.velocity({ translateX: 0, + }, {duration: 100, queue: false, easing: 'easeOutQuad'}); + } + swipeLeft = false; + swipeRight = false; + } + }); + + }); + + + // time = 0 + // // Vertical Staggered list + // $('ul.staggered-list.vertical li').velocity( + // { translateY: "100px"}, + // { duration: 0 }); + + // $('ul.staggered-list.vertical li').each(function() { + // $(this).velocity( + // { opacity: "1", translateY: "0"}, + // { duration: 800, delay: time, easing: [60, 25] }); + // time += 120; + // }); + + // // Fade in and Scale + // $('.fade-in.scale').velocity( + // { scaleX: .4, scaleY: .4, translateX: -600}, + // { duration: 0}); + // $('.fade-in').each(function() { + // $(this).velocity( + // { opacity: "1", scaleX: 1, scaleY: 1, translateX: 0}, + // { duration: 800, easing: [60, 10] }); + // }); + }); +}( jQuery )); +;(function($) { + + // Input: Array of JSON objects {selector, offset, callback} + + Materialize.scrollFire = function(options) { + + var didScroll = false; + + window.addEventListener("scroll", function() { + didScroll = true; + }); + + // Rate limit to 100ms + setInterval(function() { + if(didScroll) { + didScroll = false; + + var windowScroll = window.pageYOffset + window.innerHeight; + + for (var i = 0 ; i < options.length; i++) { + // Get options from each line + var value = options[i]; + var selector = value.selector, + offset = value.offset, + callback = value.callback; + + var currentElement = document.querySelector(selector); + if ( currentElement !== null) { + var elementOffset = currentElement.getBoundingClientRect().top + document.body.scrollTop; + + if (windowScroll > (elementOffset + offset)) { + if (value.done !== true) { + var callbackFunc = new Function(callback); + callbackFunc(); + value.done = true; + } + } + } + } + } + }, 100); + }; + +})(jQuery);;/*! + * pickadate.js v3.5.0, 2014/04/13 + * 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' + }) + } + + + /** + * 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, select, textarea, button, 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 ) + } + + // 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 as specified in the settings. + if ( SETTINGS.container ) $( SETTINGS.container ).append( P._hidden ) + else $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.0 + * 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._ + + + +/** + * 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 ) { + + var isInfiniteValue, + calendar = this + + // If there’s no value, use the type as the value. + value = value === undefined ? type : value + + + // If it’s infinity, update the value. + if ( value == -Infinity || value == Infinity ) { + isInfiniteValue = value + } + + // If it’s an object, use the native date object. + else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) { + value = value.obj + } + + // If it’s an array, convert it into a date and make sure + // that it’s a valid date – otherwise default to today. + else if ( $.isArray( value ) ) { + value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] ) + value = _.isDate( value ) ? value : calendar.create().obj + } + + // If it’s a number or date object, make a normalized date. + else if ( _.isInteger( value ) || _.isDate( value ) ) { + value = calendar.normalize( new Date( value ), options ) + } + + // If it’s a literal true or any other case, set it to now. + else /*if ( value === true )*/ { + value = calendar.now( type, value, options ) + } + + // Return the compiled object. + return { + year: isInfiniteValue || value.getFullYear(), + month: isInfiniteValue || value.getMonth(), + date: isInfiniteValue || value.getDate(), + day: isInfiniteValue || value.getDay(), + obj: isInfiniteValue || value, + pick: isInfiniteValue || 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 ) { + value = new Date() + if ( options && options.rel ) { + value.setDate( value.getDate() + options.rel ) + } + return this.normalize( value, options ) +} + + +/** + * 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 + + +/** + * Normalize a date by setting the hours to midnight. + */ +DatePicker.prototype.normalize = function( value/*, options*/ ) { + value.setHours( 0, 0, 0, 0 ) + return value +} + + +/** + * Measure the range of dates. + */ +DatePicker.prototype.measure = function( type, value/*, 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 ) ) { + value = calendar.now( type, value, { rel: value } ) + } + + 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 + + // Materialize modified + })( ( 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. + //Materialize modified + createMonthLabel = function(override) { + + var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull + + // Materialize modified + if (override == "short_months") { + monthsCollection = settings.monthsShort; + } + + // If there are months to select, add a dropdown menu. + if ( settings.selectMonths && override == undefined) { + + 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 + ' browser-default', + ( isOpen ? '' : 'disabled' ) + ' ' + + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + + 'title="' + settings.labelMonthSelect + '"' + ) + } + + // Materialize modified + if (override == "short_months") + if (selectedObject != null) + return _.node( 'div', monthsCollection[ selectedObject.month ] ); + else 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. + // Materialize modified + 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 + } + + if ( settings.selectYears && override == undefined ) { + 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 + ' browser-default', + ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + + 'title="' + settings.labelYearSelect + '"' + ) + } + } + + // Materialize modified + if (override == "raw") + return _.node( 'div', focusedYear ) + + // Otherwise just return the year focused + return _.node( 'div', focusedYear, settings.klass.year ) + } //createYearLabel + + + // Materialize modified + 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. +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 ? createMonthLabel() + createYearLabel() : 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 isSelected = selectedObject && selectedObject.pick == targetDate.pick, + isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick, + isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick, + formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] ) + + return [ + _.node( + 'div', + targetDate.date, + (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 ( nowObject.pick == targetDate.pick ) { + 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', + label: formattedDate, + selected: isSelected && calendar.$node.val() === formattedDate ? 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, "btn-flat picker__clear", + '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 modified + 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 ) + + +})); + + +;(function ($) { + + $.fn.characterCounter = function(){ + return this.each(function(){ + + var itHasLengthAttribute = $(this).attr('length') !== undefined; + + if(itHasLengthAttribute){ + $(this).on('input', updateCounter); + $(this).on('focus', updateCounter); + $(this).on('blur', removeCounterElement); + + addCounterElement($(this)); + } + + }); + }; + + function updateCounter(){ + var maxLength = +$(this).attr('length'), + actualLength = +$(this).val().length, + isValidLength = actualLength <= maxLength; + + $(this).parent().find('span[class="character-counter"]') + .html( actualLength + '/' + maxLength); + + addInputStyle(isValidLength, $(this)); + } + + function addCounterElement($input){ + var $counterElement = $('') + .addClass('character-counter') + .css('float','right') + .css('font-size','12px') + .css('height', 1); + + $input.parent().append($counterElement); + } + + function removeCounterElement(){ + $(this).parent().find('span[class="character-counter"]').html(''); + } + + function addInputStyle(isValidLength, $input){ + var inputHasInvalidClass = $input.hasClass('invalid'); + if (isValidLength && inputHasInvalidClass) { + $input.removeClass('invalid'); + } + else if(!isValidLength && !inputHasInvalidClass){ + $input.removeClass('valid'); + $input.addClass('invalid'); + } + } + + $(document).ready(function(){ + $('input, textarea').characterCounter(); + }); + +}( jQuery )); diff --git a/js/materialize.min.js b/js/materialize.min.js new file mode 100644 index 0000000..cc3c33f --- /dev/null +++ b/js/materialize.min.js @@ -0,0 +1,9 @@ +/*! + * Materialize v0.97.0 (http://materializecss.com) + * Copyright 2014-2015 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +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}}),jQuery.extend(jQuery.easing,{easeInOutMaterial:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:d/4*((b-=2)*b*b+2)+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){var b=(new Date).getTime(),c=t.State.calls.length;c>1e4&&(t.State.calls=e(t.State.calls));for(var f=0;c>f;f++)if(t.State.calls[f]){var h=t.State.calls[f],i=h[0],j=h[2],n=h[3],o=!!n,q=null;n||(n=t.State.calls[f][3]=b-16);for(var r=Math.min((b-n)/j.duration,1),s=0,u=i.length;u>s;s++){var w=i[s],y=w.element;if(g(y)){var z=!1;if(j.display!==d&&null!==j.display&&"none"!==j.display){if("flex"===j.display){var A=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];m.each(A,function(a,b){v.setPropertyValue(y,"display",b)})}v.setPropertyValue(y,"display",j.display)}j.visibility!==d&&"hidden"!==j.visibility&&v.setPropertyValue(y,"visibility",j.visibility);for(var B in w)if("element"!==B){var C,D=w[B],E=p.isString(D.easing)?t.Easings[D.easing]:D.easing;if(1===r)C=D.endValue;else{var F=D.endValue-D.startValue;if(C=D.startValue+F*E(r,j,F),!o&&C===D.currentValue)continue}if(D.currentValue=C,"tween"===B)q=C;else{if(v.Hooks.registered[B]){var G=v.Hooks.getRoot(B),H=g(y).rootPropertyValueCache[G];H&&(D.rootPropertyValue=H)}var I=v.setPropertyValue(y,B,D.currentValue+(0===parseFloat(C)?"":D.unitType),D.rootPropertyValue,D.scrollData);v.Hooks.registered[B]&&(g(y).rootPropertyValueCache[G]=v.Normalizations.registered[G]?v.Normalizations.registered[G]("extract",null,I[1]):I[1]),"transform"===I[0]&&(z=!0)}}j.mobileHA&&g(y).transformCache.translate3d===d&&(g(y).transformCache.translate3d="(0px, 0px, 0px)",z=!0),z&&v.flushTransformCache(y)}}j.display!==d&&"none"!==j.display&&(t.State.calls[f][2].display=!1),j.visibility!==d&&"hidden"!==j.visibility&&(t.State.calls[f][2].visibility=!1),j.progress&&j.progress.call(h[1],h[1],r,Math.max(0,n+j.duration-b),n,q),1===r&&l(f)}}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),g(l)&&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),/^backgroundPosition/.test(a)&&100===parseFloat(b.endValue)&&"%"===b.unitType&&(b.endValue=0,b.startValue=100)}),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:2,patch:2},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":/^(table)$/i.test(b)?"table":/^(tbody)$/i.test(b)?"table-row-group":"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),"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)}if(!/^[\d-]/.test(i))if(g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c))if(/^(height|width)$/i.test(c))try{i=a.getBBox()[c]}catch(p){i=0}else i=a.getAttribute(c);else i=h(a,v.Names.prefixCheck(c)[0]);return 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 h?B.promise||null:i}function e(){function a(){function a(a,b){var c=d,e=d,g=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])?g=a[1]:(p.isString(a[1])&&!v.RegEx.isHex.test(a[1])||p.isArray(a[1]))&&(e=b?a[1]:j(a[1],h.duration),a[2]!==d&&(g=a[2]))):c=a,b||(e=e||h.easing),p.isFunction(c)&&(c=c.call(f,y,x)),p.isFunction(g)&&(g=g.call(f,y,x)),[c||0,e,g]}function l(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 n(){var a={myParent:f.parentNode||c.body,position:v.getPropertyValue(f,"position"),fontSize:v.getPropertyValue(f,"fontSize")},d=a.position===I.lastPosition&&a.myParent===I.lastParent,e=a.fontSize===I.lastFontSize;I.lastParent=a.myParent,I.lastPosition=a.position,I.lastFontSize=a.fontSize;var h=100,i={};if(e&&d)i.emToPx=I.lastEmToPx,i.percentToPxWidth=I.lastPercentToPxWidth,i.percentToPxHeight=I.lastPercentToPxHeight;else{var j=g(f).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,h+"%")}),t.CSS.setPropertyValue(j,"paddingLeft",h+"em"),i.percentToPxWidth=I.lastPercentToPxWidth=(parseFloat(v.getPropertyValue(j,"width",null,!0))||1)/h,i.percentToPxHeight=I.lastPercentToPxHeight=(parseFloat(v.getPropertyValue(j,"height",null,!0))||1)/h,i.emToPx=I.lastEmToPx=(parseFloat(v.getPropertyValue(j,"paddingLeft"))||1)/h,a.myParent.removeChild(j)}return null===I.remToPx&&(I.remToPx=parseFloat(v.getPropertyValue(c.body,"fontSize"))||16),null===I.vwToPx&&(I.vwToPx=parseFloat(b.innerWidth)/100,I.vhToPx=parseFloat(b.innerHeight)/100),i.remToPx=I.remToPx,i.vwToPx=I.vwToPx,i.vhToPx=I.vhToPx,t.debug>=1&&console.log("Unit ratios: "+JSON.stringify(i),f),i}if(h.begin&&0===y)try{h.begin.call(o,o)}catch(r){setTimeout(function(){throw r},1)}if("scroll"===C){var u,w,z,A=/^x$/i.test(h.axis)?"Left":"Top",D=parseFloat(h.offset)||0;h.container?p.isWrapped(h.container)||p.isNode(h.container)?(h.container=h.container[0]||h.container,u=h.container["scroll"+A],z=u+m(f).position()[A.toLowerCase()]+D):h.container=null:(u=t.State.scrollAnchor[t.State["scrollProperty"+A]],w=t.State.scrollAnchor[t.State["scrollProperty"+("Left"===A?"Top":"Left")]],z=m(f).offset()[A.toLowerCase()]+D),i={scroll:{rootPropertyValue:!1,startValue:u,currentValue:u,endValue:z,unitType:"",easing:h.easing,scrollData:{container:h.container,direction:A,alternateValue:w}},element:f},t.debug&&console.log("tweensContainer (scroll): ",i.scroll,f)}else if("reverse"===C){if(!g(f).tweensContainer)return void m.dequeue(f,h.queue);"none"===g(f).opts.display&&(g(f).opts.display="auto"),"hidden"===g(f).opts.visibility&&(g(f).opts.visibility="visible"),g(f).opts.loop=!1,g(f).opts.begin=null,g(f).opts.complete=null,s.easing||delete h.easing,s.duration||delete h.duration,h=m.extend({},g(f).opts,h);var E=m.extend(!0,{},g(f).tweensContainer);for(var F in E)if("element"!==F){var G=E[F].startValue;E[F].startValue=E[F].currentValue=E[F].endValue,E[F].endValue=G,p.isEmptyObject(s)||(E[F].easing=h.easing),t.debug&&console.log("reverse tweensContainer ("+F+"): "+JSON.stringify(E[F]),f)}i=E}else if("start"===C){var E;g(f).tweensContainer&&g(f).isAnimating===!0&&(E=g(f).tweensContainer),m.each(q,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;lL;L++){var M={delay:E.delay,progress:E.progress};L===K-1&&(M.display=E.display,M.visibility=E.visibility,M.complete=E.complete),w(o,"reverse",M)}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=na(),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===ya||f.eventType===Aa)&&(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!=Ba&&(i>xa||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=ma(l.x)>ma(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:la(c/b),y:la(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Ca:ma(a)>=ma(b)?a>0?Da:Ea:b>0?Fa:Ga}function I(a,b,c){c||(c=Ka);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=Ka);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],La)-J(a[1],a[0],La)}function L(a,b){return I(b[0],b[1],La)/I(a[0],a[1],La)}function M(){this.evEl=Na,this.evWin=Oa,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Ra,this.evWin=Sa,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ua,this.evWin=Va,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Aa|Ba)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xa,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(ya|za)&&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===ya)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Aa|Ba)&&(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 Ta={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Ua="touchstart",Va="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Ta[a.type];if(b===ya&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Aa|Ba)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}});var Wa={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Xa="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wa[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==ta,e=c.pointerType==va;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Aa|Ba)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Ya=v(ja.style,"touchAction"),Za=Ya!==d,$a="compute",_a="auto",ab="manipulation",bb="none",cb="pan-x",db="pan-y";T.prototype={set:function(a){a==$a&&(a=this.compute()),Za&&(this.manager.element.style[Ya]=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(!Za){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bb),f=q(d,db),g=q(d,cb);return e||f&&c&Ha||g&&c&Ia?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var eb=1,fb=2,gb=4,hb=8,ib=hb,jb=16,kb=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;hb>d&&b(!0),b(),d>=hb&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kb)},canEmit:function(){for(var a=0;af?Da:Ea,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ca:0>g?Fa:Ga,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&fb||!(this.state&fb)&&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[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fb)},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(aa,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_a]},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&(Aa|Ba)&&!f)this.reset();else if(a.eventType&ya)this.reset(),this._timer=e(function(){this.state=ib,this.tryEmit()},b.time,this);else if(a.eventType&Aa)return ib;return kb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ib&&(a&&a.eventType&Aa?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=na(),this.manager.emit(this.options.event,this._input)))}}),j(ba,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fb)}}),j(ca,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Ha|Ia,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Ha|Ia)?b=a.velocity:c&Ha?b=a.velocityX:c&Ia&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&ma(b)>this.options.velocity&&a.eventType&Aa},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(da,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ab]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance li > .collapsible-header"),b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}),h.not(b).removeClass("active").parent().removeClass("active"),h.not(b).parent().children(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}})}function d(b){b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}})}function e(a){var b=f(a);return b.length>0}function f(a){return a.closest("li > .collapsible-header")}var g=a(this),h=a(this).find("> li > .collapsible-header"),i=g.data("collapsible");g.off("click.collapse",".collapsible-header"),h.off("click.collapse"),b.accordion||"accordion"===i||void 0===i?(h=g.find("> li > .collapsible-header"),h.on("click.collapse",function(b){var d=a(b.target);e(d)&&(d=f(d)),d.toggleClass("active"),c(d)}),c(h.filter(".active").first())):h.each(function(){a(this).on("click.collapse",function(b){var c=a(b.target);e(c)&&(c=f(c)),c.toggleClass("active"),d(c)}),a(this).hasClass("active")&&d(a(this))})})},a(document).ready(function(){a(".collapsible").collapsible()})}(jQuery),function(a){a.fn.scrollTo=function(b){return a(this).scrollTop(a(this).scrollTop()-a(this).offset().top+a(b).offset().top),this},a.fn.dropdown=function(b){var c={inDuration:300,outDuration:225,constrain_width:!0,hover:!1,gutter:0,belowOrigin:!1};this.each(function(){function d(){void 0!==g.data("induration")&&(h.inDuration=g.data("inDuration")),void 0!==g.data("outduration")&&(h.outDuration=g.data("outDuration")),void 0!==g.data("constrainwidth")&&(h.constrain_width=g.data("constrainwidth")),void 0!==g.data("hover")&&(h.hover=g.data("hover")),void 0!==g.data("gutter")&&(h.gutter=g.data("gutter")),void 0!==g.data("beloworigin")&&(h.belowOrigin=g.data("beloworigin"))}function e(){d(),i.addClass("active"),h.constrain_width===!0&&i.css("width",g.outerWidth());var b=0;h.belowOrigin===!0&&(b=g.height());var c=g.offset().left,e=0,f=h.gutter;c+i.innerWidth()>a(window).width()&&(e=g.innerWidth()-i.innerWidth(),f=-1*f),i.css({position:"absolute",top:g.position().top+b,left:g.position().left+e+f}),i.stop(!0,!0).css("opacity",0).slideDown({queue:!1,duration:h.inDuration,easing:"easeOutCubic",complete:function(){a(this).css("height","")}}).animate({opacity:1},{queue:!1,duration:h.inDuration,easing:"easeOutSine"})}function f(){i.fadeOut(h.outDuration),i.removeClass("active")}var g=a(this),h=a.extend({},c,b),i=a("#"+g.attr("data-activates"));if(d(),g.after(i),h.hover){var j=!1;g.unbind("click."+g.attr("id")),g.on("mouseenter",function(){j===!1&&(e(),j=!0)}),g.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-content").is(i)||(i.stop(!0,!0),f(),j=!1)}),i.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-button").is(g)||(i.stop(!0,!0),f(),j=!1)})}else g.unbind("click."+g.attr("id")),g.bind("click."+g.attr("id"),function(b){g[0]==b.currentTarget&&0===a(b.target).closest(".dropdown-content").length?(b.preventDefault(),e()):g.hasClass("active")&&(f(),a(document).unbind("click."+i.attr("id"))),i.hasClass("active")&&a(document).bind("click."+i.attr("id"),function(b){!i.is(b.target)&&!g.is(b.target)&&!g.find(b.target).length>0&&(f(),a(document).unbind("click."+i.attr("id")))})});g.on("open",e),g.on("close",f)})},a(document).ready(function(){a(".dropdown-button").dropdown()})}(jQuery),function(a){var b=0,c=0,d=function(){return c++,"materialize-lean-overlay-"+c};a.fn.extend({openModal:function(c){a("body").css("overflow","hidden");var e={opacity:.5,in_duration:350,out_duration:250,ready:void 0,complete:void 0,dismissible:!0,starting_top:"4%"},f=d(),g=a(this),h=a('
      '),i=++b;h.attr("id",f).css("z-index",1e3+2*i),g.data("overlay-id",f).css("z-index",1e3+2*i+1),a("body").append(h),c=a.extend(e,c),c.dismissible&&(h.click(function(){g.closeModal(c)}),a(document).on("keyup.leanModal"+f,function(a){27===a.keyCode&&g.closeModal(c)})),g.find(".modal-close").on("click.close",function(){g.closeModal(c)}),h.css({display:"block",opacity:0}),g.css({display:"block",opacity:0}),h.velocity({opacity:c.opacity},{duration:c.in_duration,queue:!1,ease:"easeOutCubic"}),g.data("associated-overlay",h[0]),g.hasClass("bottom-sheet")?g.velocity({bottom:"0",opacity:1},{duration:c.in_duration,queue:!1,ease:"easeOutCubic",complete:function(){"function"==typeof c.ready&&c.ready()}}):(a.Velocity.hook(g,"scaleX",.7),g.css({top:c.starting_top}),g.velocity({top:"10%",opacity:1,scaleX:"1"},{duration:c.in_duration,queue:!1,ease:"easeOutCubic",complete:function(){"function"==typeof c.ready&&c.ready()}}))}}),a.fn.extend({closeModal:function(c){var d={out_duration:250,complete:void 0},e=a(this),f=e.data("overlay-id"),g=a("#"+f);c=a.extend(d,c),a("body").css("overflow",""),e.find(".modal-close").off("click.close"),a(document).off("keyup.leanModal"+f),g.velocity({opacity:0},{duration:c.out_duration,queue:!1,ease:"easeOutQuart"}),e.hasClass("bottom-sheet")?e.velocity({bottom:"-100%",opacity:0},{duration:c.out_duration,queue:!1,ease:"easeOutCubic",complete:function(){g.css({display:"none"}),"function"==typeof c.complete&&c.complete(),g.remove(),b--}}):e.velocity({top:c.starting_top,opacity:0,scaleX:.7},{duration:c.out_duration,complete:function(){a(this).css("display","none"),"function"==typeof c.complete&&c.complete(),g.remove(),b--}})}}),a.fn.extend({leanModal:function(b){return this.each(function(){var c={starting_top:"4%"},d=a.extend(c,b);a(this).click(function(b){d.starting_top=(a(this).offset().top-a(window).scrollTop())/1.15;var c=a(this).attr("href")||"#"+a(this).data("target");a(c).openModal(d),b.preventDefault()})})}})}(jQuery),function(a){a.fn.materialbox=function(){return this.each(function(){function b(){d=!1;var b=g.parent(".material-placeholder"),e=(window.innerWidth,window.innerHeight,g.data("width")),h=g.data("height");g.velocity("stop",!0),a("#materialbox-overlay").velocity("stop",!0),a(".materialbox-caption").velocity("stop",!0),a("#materialbox-overlay").velocity({opacity:0},{duration:f,queue:!1,easing:"easeOutQuad",complete:function(){ +c=!1,a(this).remove()}}),g.velocity({width:e,height:h,left:0,top:0},{duration:f,queue:!1,easing:"easeOutQuad"}),a(".materialbox-caption").velocity({opacity:0},{duration:f,queue:!1,easing:"easeOutQuad",complete:function(){b.css({height:"",width:"",position:"",top:"",left:""}),g.css({height:"",top:"",left:"",width:"","max-width":"",position:"","z-index":""}),g.removeClass("active"),d=!0,a(this).remove()}})}if(!a(this).hasClass("initialized")){a(this).addClass("initialized");var c=!1,d=!0,e=275,f=200,g=a(this),h=a("
      ").addClass("material-placeholder");g.wrap(h),g.on("click",function(){var f=g.parent(".material-placeholder"),h=window.innerWidth,i=window.innerHeight,j=g.width(),k=g.height();if(d===!1)return b(),!1;if(c&&d===!0)return b(),!1;d=!1,g.addClass("active"),c=!0,f.css({width:f[0].getBoundingClientRect().width,height:f[0].getBoundingClientRect().height,position:"relative",top:0,left:0}),g.css({position:"absolute","z-index":1e3}).data("width",j).data("height",k);var l=a('
      ').css({opacity:0}).click(function(){d===!0&&b()});if(a("body").append(l),l.velocity({opacity:1},{duration:e,queue:!1,easing:"easeOutQuad"}),""!==g.data("caption")){var m=a('
      ');m.text(g.data("caption")),a("body").append(m),m.css({display:"inline"}),m.velocity({opacity:1},{duration:e,queue:!1,easing:"easeOutQuad"})}var n=0,o=j/h,p=k/i,q=0,r=0;o>p?(n=k/j,q=.9*h,r=.9*h*n):(n=j/k,q=.9*i*n,r=.9*i),g.hasClass("responsive-img")?g.velocity({"max-width":q,width:j},{duration:0,queue:!1,complete:function(){g.css({left:0,top:0}).velocity({height:r,width:q,left:a(document).scrollLeft()+h/2-g.parent(".material-placeholder").offset().left-q/2,top:a(document).scrollTop()+i/2-g.parent(".material-placeholder").offset().top-r/2},{duration:e,queue:!1,easing:"easeOutQuad",complete:function(){d=!0}})}}):g.css("left",0).css("top",0).velocity({height:r,width:q,left:a(document).scrollLeft()+h/2-g.parent(".material-placeholder").offset().left-q/2,top:a(document).scrollTop()+i/2-g.parent(".material-placeholder").offset().top-r/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&&d===!0&&c&&b()})}})},a(document).ready(function(){a(".materialboxed").materialbox()})}(jQuery),function(a){a.fn.parallax=function(){var b=a(window).width();return this.each(function(){function c(c){var e;e=601>b?d.height()>0?d.height():d.children("img").height():d.height()>0?d.height():500;var f=d.children("img").first(),g=f.height(),h=g-e,i=d.offset().top+e,j=d.offset().top,k=a(window).scrollTop(),l=window.innerHeight,m=k+l,n=(m-j)/(e+l),o=Math.round(h*n);c&&f.css("display","block"),i>k&&k+l>j&&f.css("transform","translate3D(-50%,"+o+"px, 0)")}var d=a(this);d.addClass("parallax"),d.children("img").one("load",function(){c(!0)}).each(function(){this.complete&&a(this).load()}),a(window).scroll(function(){b=a(window).width(),c(!1)}),a(window).resize(function(){b=a(window).width(),c(!1)})})}}(jQuery),function(a){var b={init: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===d.length&&(d=a(this).find("li.tab a.active").first()),0===d.length&&(d=a(this).find("li.tab a").first()),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){if(a(this).parent().hasClass("disabled"))return void c.preventDefault();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:90})):(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:90})),c.preventDefault()})})},select_tab:function(a){this.find('a[href="#'+a+'"]').trigger("click")}};a.fn.tabs=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tooltip"):b.init.apply(this,arguments)},a(document).ready(function(){a("ul.tabs").tabs()})}(jQuery),function(a){a.fn.tooltip=function(b){var c=null,d=!1,e=null,f=5,g={delay:350};return b=a.extend(g,b),a(".material-tooltip").remove(),this.each(function(){var g=a(this),h=a("").text(g.attr("data-tooltip")),i=a("
      ");i.addClass("material-tooltip").append(h),i.appendTo(a("body"));var j=a("
      ").addClass("backdrop");j.appendTo(i),j.css({top:0,left:0}),a(this).off("mouseenter mouseleave"),a(this).on({mouseenter:function(){var a=g.data("delay");a=void 0===a||""===a?b.delay:a,c=0,e=setInterval(function(){if(c+=10,c>=a&&d===!1){d=!0,i.css({display:"block",left:"0px",top:"0px"}),i.children("span").text(g.attr("data-tooltip"));var b=g.outerWidth(),e=g.outerHeight(),h=g.attr("data-position"),k=i.outerHeight(),l=i.outerWidth(),m="0px",n="0px",o=8;"top"===h?(i.css({top:g.offset().top-k-f,left:g.offset().left+b/2-l/2}),m="-10px",j.css({borderRadius:"14px 14px 0 0",transformOrigin:"50% 90%",marginTop:k,marginLeft:l/2-j.width()/2})):"left"===h?(i.css({top:g.offset().top+e/2-k/2,left:g.offset().left-l-f}),n="-10px",j.css({width:"14px",height:"14px",borderRadius:"14px 0 0 14px",transformOrigin:"95% 50%",marginTop:k/2,marginLeft:l})):"right"===h?(i.css({top:g.offset().top+e/2-k/2,left:g.offset().left+b+f}),n="+10px",j.css({width:"14px",height:"14px",borderRadius:"0 14px 14px 0",transformOrigin:"5% 50%",marginTop:k/2,marginLeft:"0px"})):(i.css({top:g.offset().top+g.outerHeight()+f,left:g.offset().left+b/2-l/2}),m="+10px",j.css({marginLeft:l/2-j.width()/2})),o=l/8,8>o&&(o=8),("right"===h||"left"===h)&&(o=l/10,6>o&&(o=6)),i.velocity({opacity:1,marginTop:m,marginLeft:n},{duration:350,queue:!1}),j.css({display:"block"}).velocity({opacity:1},{duration:55,delay:0,queue:!1}).velocity({scale:o},{duration:300,delay:0,queue:!1,easing:"easeInOutQuad"})}},10)},mouseleave:function(){clearInterval(e),c=0,i.velocity({opacity:0,marginTop:0,marginLeft:0},{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"),d=!1}})}})})},a(document).ready(function(){a(".tooltipped").tooltip()})}(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}function f(a){if(k.allowEvent(a)===!1)return null;for(var b=null,c=a.target||a.srcElement;null!==c.parentElement;){if(!(c instanceof SVGElement||-1===c.className.indexOf("waves-effect"))){b=c;break}if(c.classList.contains("waves-effect")){b=c;break}c=c.parentElement}return b}function g(b){var c=f(b);null!==c&&(j.show(b,c),"ontouchstart"in a&&(c.addEventListener("touchend",j.hide,!1),c.addEventListener("touchcancel",j.hide,!1)),c.addEventListener("mouseup",j.hide,!1),c.addEventListener("mouseleave",j.hide,!1))}var h=h||{},i=document.querySelectorAll.bind(document),j={duration:750,show:function(a,b){if(2===a.button)return!1;var c=b||this,f=document.createElement("div");f.className="waves-ripple",c.appendChild(f);var g=d(c),h=a.pageY-g.top,i=a.pageX-g.left,k="scale("+c.clientWidth/100*10+")";"touches"in a&&(h=a.touches[0].pageY-g.top,i=a.touches[0].pageX-g.left),f.setAttribute("data-hold",Date.now()),f.setAttribute("data-scale",k),f.setAttribute("data-x",i),f.setAttribute("data-y",h);var l={top:h+"px",left:i+"px"};f.className=f.className+" waves-notransition",f.setAttribute("style",e(l)),f.className=f.className.replace("waves-notransition",""),l["-webkit-transform"]=k,l["-moz-transform"]=k,l["-ms-transform"]=k,l["-o-transform"]=k,l.transform=k,l.opacity="1",l["-webkit-transition-duration"]=j.duration+"ms",l["-moz-transition-duration"]=j.duration+"ms",l["-o-transition-duration"]=j.duration+"ms",l["transition-duration"]=j.duration+"ms",l["-webkit-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-moz-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-o-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",f.setAttribute("style",e(l))},hide:function(a){k.touchup(a);var b=this,c=(1.4*b.clientWidth,null),d=b.getElementsByClassName("waves-ripple");if(!(d.length>0))return!1;c=d[d.length-1];var f=c.getAttribute("data-x"),g=c.getAttribute("data-y"),h=c.getAttribute("data-scale"),i=Date.now()-Number(c.getAttribute("data-hold")),l=350-i;0>l&&(l=0),setTimeout(function(){var a={top:g+"px",left:f+"px",opacity:"0","-webkit-transition-duration":j.duration+"ms","-moz-transition-duration":j.duration+"ms","-o-transition-duration":j.duration+"ms","transition-duration":j.duration+"ms","-webkit-transform":h,"-moz-transform":h,"-ms-transform":h,"-o-transform":h,transform:h};c.setAttribute("style",e(a)),setTimeout(function(){try{b.removeChild(c)}catch(a){return!1}},j.duration)},l)},wrapInput:function(a){for(var b=0;b0&&(k.touches-=1)},500):"mousedown"===a.type&&k.touches>0&&(b=!1),b},touchup:function(a){k.allowEvent(a)}};h.displayEffect=function(b){b=b||{},"duration"in b&&(j.duration=b.duration),j.wrapInput(i(".waves-effect")),"ontouchstart"in a&&document.body.addEventListener("touchstart",g,!1),document.body.addEventListener("mousedown",g,!1)},h.attach=function(b){"input"===b.tagName.toLowerCase()&&(j.wrapInput([b]),b=b.parentElement),"ontouchstart"in a&&b.addEventListener("touchstart",g,!1),b.addEventListener("mousedown",g,!1)},a.Waves=h,document.addEventListener("DOMContentLoaded",function(){h.displayEffect()},!1)}(window),Materialize.toast=function(a,b,c,d){function e(a){var b=document.createElement("div");if(b.classList.add("toast"),c)for(var e=c.split(" "),f=0,g=e.length;g>f;f++)b.classList.add(e[f]);b.innerHTML=a;var h=new Hammer(b,{prevent_default:!1});return h.on("pan",function(a){var c=a.deltaX,d=80;b.classList.contains("panning")||b.classList.add("panning");var e=1-Math.abs(c/d);0>e&&(e=0),Vel(b,{left:c,opacity:e},{duration:50,queue:!1,easing:"easeOutQuad"})}),h.on("panend",function(a){var c=a.deltaX,e=80;Math.abs(c)>e?Vel(b,{marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),b.parentNode.removeChild(b)}}):(b.classList.remove("panning"),Vel(b,{left:0,opacity:1},{duration:300,easing:"easeOutExpo",queue:!1}))}),b}c=c||"";var f=document.getElementById("toast-container");null===f&&(f=document.createElement("div"),f.id="toast-container",document.body.appendChild(f));var g=e(a);a&&f.appendChild(g),g.style.top="35px",g.style.opacity=0,Vel(g,{top:"0px",opacity:1},{duration:300,easing:"easeOutCubic",queue:!1});var h=b,i=setInterval(function(){null===g.parentNode&&window.clearInterval(i),g.classList.contains("panning")||(h-=20),0>=h&&(Vel(g,{opacity:0,marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),this[0].parentNode.removeChild(this[0])}}),window.clearInterval(i))},20)},function(a){var b={init:function(b){var c={menuWidth:240,edge:"left",closeOnClick:!1};b=a.extend(c,b),a(this).each(function(){function c(c){f=!1,g=!1,a("body").css("overflow",""),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),"left"===b.edge?(a(".drag-target").css({width:"",right:"",left:"0"}),e.velocity({left:-1*(b.menuWidth+10)},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}})):(a(".drag-target").css({width:"",right:"0",left:""}),e.velocity({right:-1*(b.menuWidth+10)},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}}))}var d=a(this),e=a("#"+d.attr("data-activates"));240!=b.menuWidth&&e.css("width",b.menuWidth),a("body").append(a('
      ')),"left"==b.edge?(e.css("left",-1*(b.menuWidth+10)),a(".drag-target").css({left:0})):(e.addClass("right-aligned").css("right",-1*(b.menuWidth+10)).css("left",""),a(".drag-target").css({right:0})),e.hasClass("fixed")&&window.innerWidth>992&&e.css("left",0),e.hasClass("fixed")&&a(window).resize(function(){window.innerWidth>992?0!==a("#sidenav-overlay").css("opacity")&&g?c(!0):(e.removeAttr("style"),e.css("width",b.menuWidth)):g===!1&&("left"===b.edge?e.css("left",-1*(b.menuWidth+10)):e.css("right",-1*(b.menuWidth+10)))}),b.closeOnClick===!0&&e.on("click.itemclick","a:not(.collapsible-header)",function(){c()});var f=!1,g=!1;a(".drag-target").on("click",function(){c()}),a(".drag-target").hammer({prevent_default:!1}).bind("pan",function(d){if("touch"==d.gesture.pointerType){{var f=(d.gesture.direction,d.gesture.center.x);d.gesture.center.y,d.gesture.velocityX}if(a("body").css("overflow","hidden"),0===a("#sidenav-overlay").length){var h=a('
      ');h.css("opacity",0).click(function(){c()}),a("body").append(h)}if("left"===b.edge&&(f>b.menuWidth?f=b.menuWidth:0>f&&(f=0)),"left"===b.edge)f=b.menuWidth/2&&(g=!0),e.css("left",f-b.menuWidth);else{f=window.innerWidth-b.menuWidth/2&&(g=!1);var i=-1*(f-b.menuWidth/2);i>0&&(i=0),e.css("right",i)}var j;"left"===b.edge?(j=f/b.menuWidth,a("#sidenav-overlay").velocity({opacity:j},{duration:50,queue:!1,easing:"easeOutQuad"})):(j=Math.abs((f-window.innerWidth)/b.menuWidth),a("#sidenav-overlay").velocity({opacity:j},{duration:50,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(c){if("touch"==c.gesture.pointerType){var d=c.gesture.velocityX;f=!1,"left"===b.edge?g&&.3>=d||-.5>d?(e.velocity({left:0},{duration:300,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),a(".drag-target").css({width:"50%",right:0,left:""})):(!g||d>.3)&&(a("body").css("overflow",""),e.velocity({left:-1*(b.menuWidth+10)},{duration:200,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),a(".drag-target").css({width:"10px",right:"",left:0})):g&&d>=-.3||d>.5?(e.velocity({right:0},{duration:300,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),a(".drag-target").css({width:"50%",right:"",left:0})):(!g||-.3>d)&&(a("body").css("overflow",""),e.velocity({right:-1*(b.menuWidth+10)},{duration:200,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),a(".drag-target").css({width:"10px",right:0,left:""}))}}),d.click(function(){if(g===!0)g=!1,f=!1,c();else{a("body").css("overflow","hidden"),"left"===b.edge?(a(".drag-target").css({width:"50%",right:0,left:""}),e.velocity({left:0},{duration:300,queue:!1,easing:"easeOutQuad"})):(a(".drag-target").css({width:"50%",right:"",left:0}),e.velocity({right:0},{duration:300,queue:!1,easing:"easeOutQuad"}),e.css("left",""));var d=a('
      ');d.css("opacity",0).click(function(){g=!1,f=!1,c(),d.velocity({opacity:0},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}})}),a("body").append(d),d.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){g=!0,f=!1}})}return!1})})},show:function(){this.trigger("click")},hide:function(){a("#sidenav-overlay").trigger("click")}};a.fn.sideNav=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.sideNav"):b.init.apply(this,arguments)}}(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("html, body").animate({scrollTop:c-200},{duration:400,queue:!1,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")");d.html(f),b.is(":visible")?d.css("width",b.width()):d.css("width",a(window).width()/2),b.css("height",d.height())}Materialize.updateTextFields=function(){var b="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a(b).each(function(b,c){a(c).val().length>0||void 0!==a(this).attr("placeholder")||a(c)[0].validity.badInput===!0?a(this).siblings("label, i").addClass("active"):a(this).siblings("label, i").removeClass("active")})};var c="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a("input[autofocus]").siblings("label, i").addClass("active"),a(document).on("change",c,function(){(0!==a(this).val().length||void 0!==a(this).attr("placeholder"))&&a(this).siblings("label, i").addClass("active"),validate_field(a(this))}),a(document).ready(function(){Materialize.updateTextFields()}),a(document).on("reset",function(b){var d=a(b.target);d.is("form")&&(d.find(c).removeClass("valid").removeClass("invalid"),d.find(c).each(function(){""===a(this).attr("value")&&a(this).siblings("label, i").removeClass("active")}),d.find("select.initialized").each(function(){var a=d.find("option[selected]").text();d.siblings("input.select-dropdown").val(a)}))}),a(document).on("focus",c,function(){a(this).siblings("label, i").addClass("active")}),a(document).on("blur",c,function(){var b=a(this);0===b.val().length&&b[0].validity.badInput!==!0&&void 0===b.attr("placeholder")&&b.siblings("label, i").removeClass("active"),validate_field(b)}),validate_field=function(a){var b=void 0!==a.attr("length"),c=parseInt(a.attr("length")),d=a.val().length;0===a.val().length&&a[0].validity.badInput===!1?a.hasClass("validate")&&(a.removeClass("valid"),a.removeClass("invalid")):a.hasClass("validate")&&(a.is(":valid")&&b&&c>d||a.is(":valid")&&!b?(a.removeClass("invalid"),a.addClass("valid")):(a.removeClass("valid"),a.addClass("invalid")))};var d=a(".hiddendiv").first();d.length||(d=a('
      '),a("body").append(d));var e=".materialize-textarea";a(e).each(function(){var c=a(this);c.val().length&&b(c)}),a("body").on("keyup keydown",e,function(){b(a(this))}),a(".file-field").each(function(){var b=a(this).find("input.file-path");a(this).find('input[type="file"]').change(function(){b.val(a(this)[0].files[0].name),b.trigger("change")})});var f,g="input[type=range]",h=!1;a(g).each(function(){var b=a('');a(this).after(b)});var i=".range-field";a(document).on("change",g,function(){var b=a(this).siblings(".thumb");b.find(".value").html(a(this).val())}),a(document).on("mousedown touchstart",g,function(b){var c=a(this).siblings(".thumb");c.length<=0&&(c=a(''),a(this).append(c)),c.find(".value").html(a(this).val()),h=!0,a(this).addClass("active"),c.hasClass("active")||c.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),f=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left;var d=a(this).outerWidth();0>f?f=0:f>d&&(f=d),c.addClass("active").css("left",f),c.find(".value").html(a(this).val())}),a(document).on("mouseup touchend",i,function(){h=!1,a(this).removeClass("active")}),a(document).on("mousemove touchmove",i,function(b){var c,d=a(this).children(".thumb");if(h){d.hasClass("active")||d.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),c=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left;var e=a(this).outerWidth();0>c?c=0:c>e&&(c=e),d.addClass("active").css("left",c)}}),a(document).on("mouseout touchleave",i,function(){if(!h){var b=a(this).children(".thumb");b.hasClass("active")&&b.velocity({height:"0",width:"0",top:"10px",marginLeft:"-6px"},{duration:100}),b.removeClass("active")}})}),a.fn.material_select=function(b){a(this).each(function(){if($select=a(this),!$select.hasClass("browser-default")){var c=$select.data("select-id");if(c&&($select.parent().find("i").remove(),$select.parent().find("input").remove(),$select.unwrap(),a("ul#select-options-"+c).remove()),"destroy"===b)return void $select.data("select-id",null).removeClass("initialized");var d=Materialize.guid();$select.data("select-id",d);var e=a('
      ');e.addClass($select.attr("class"));var f,g=a(''),h=$select.children("option");f=void 0!==$select.find("option:selected")?$select.find("option:selected"):g.first(),h.each(function(){g.append(a('
    • '+a(this).html()+"
    • "))}),g.find("li").each(function(c){var d=$select;a(this).click(function(){a(this).hasClass("disabled")||(d.find("option").eq(c).prop("selected",!0),d.trigger("change"),d.siblings("input.select-dropdown").val(a(this).text()),"undefined"!=typeof b&&b())})}),$select.wrap(e);var i=a('');$select.is(":disabled")&&i.addClass("disabled");var j=a('');$select.before(j),j.before(i),a("body").append(g),$select.is(":disabled")||j.dropdown({hover:!1}),$select.attr("tabindex")&&a(j[0]).attr("tabindex",$select.attr("tabindex")),$select.addClass("initialized"),j.on("focus",function(){a(this).trigger("open"),f=a(this).val(),selectedOption=g.find("li").filter(function(){return a(this).text().toLowerCase()===f.toLowerCase()})[0],activateOption(g,selectedOption)}),j.on("blur",function(){a(this).trigger("close")}),activateOption=function(b,c){b.find("li.active").removeClass("active"),a(c).addClass("active"),b.scrollTo(c)},filterQuery=[],onKeyDown=function(b){if(9==b.which)return void j.trigger("close");if(40==b.which&&!g.is(":visible"))return void j.trigger("open");if(13!=b.which||g.is(":visible")){b.preventDefault(),letter=String.fromCharCode(b.which).toLowerCase();var c=[9,13,27,38,40];letter&&-1===c.indexOf(b.which)&&(filterQuery.push(letter),string=filterQuery.join(""),newOption=g.find("li").filter(function(){return 0===a(this).text().toLowerCase().indexOf(string)})[0],newOption&&activateOption(g,newOption)),13==b.which&&(activeOption=g.find("li.active:not(.disabled)")[0],activeOption&&(a(activeOption).trigger("click"),j.trigger("close"))),40==b.which&&(newOption=g.find("li.active").next("li:not(.disabled)")[0],newOption&&activateOption(g,newOption)),27==b.which&&j.trigger("close"),38==b.which&&(newOption=g.find("li.active").prev("li:not(.disabled)")[0],newOption&&activateOption(g,newOption)),setTimeout(function(){filterQuery=[]},1e3)}},j.on("keydown",onKeyDown)}})}}(jQuery),function(a){var b={init:function(b){var c={indicators:!0,height:400,transition:500,interval:6e3};return b=a.extend(c,b),this.each(function(){function c(a,b){a.hasClass("center-align")?a.velocity({opacity:0,translateY:-100},{duration:b,queue:!1}):a.hasClass("right-align")?a.velocity({opacity:0,translateX:100},{duration:b,queue:!1}):a.hasClass("left-align")&&a.velocity({opacity:0,translateX:-100},{duration:b,queue:!1})}function d(a){a>=h.length?a=0:0>a&&(a=h.length-1),i=g.find(".active").index(),i!=a&&(e=h.eq(i),$caption=e.find(".caption"),e.removeClass("active"),e.velocity({opacity:0},{duration:b.transition,queue:!1,easing:"easeOutQuad",complete:function(){h.not(".active").velocity({opacity:0,translateX:0,translateY:0},{duration:0,queue:!1})}}),c($caption,b.transition),b.indicators&&j.eq(i).removeClass("active"),h.eq(a).velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),h.eq(a).find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,delay:b.transition,queue:!1,easing:"easeOutQuad"}),h.eq(a).addClass("active"),b.indicators&&j.eq(a).addClass("active"))}var e,f=a(this),g=f.find("ul.slides").first(),h=g.find("li"),i=g.find(".active").index();if(-1!=i&&(e=h.eq(i)),f.hasClass("fullscreen")||(f.height(b.indicators?b.height+40:b.height),g.height(b.height)),h.find(".caption").each(function(){c(a(this),0)}),h.find("img").each(function(){a(this).css("background-image","url("+a(this).attr("src")+")"),a(this).attr("src","data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==")}),b.indicators){var j=a('
        ');h.each(function(){var c=a('
      • ');c.click(function(){var c=g.parent(),e=c.find(a(this)).index();d(e),clearInterval($interval),$interval=setInterval(function(){i=g.find(".active").index(),h.length==i+1?i=0:i+=1,d(i)},b.transition+b.interval)}),j.append(c)}),f.append(j),j=f.find("ul.indicators").find("li.indicator-item")}e?e.show():(h.first().addClass("active").velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),i=0,e=h.eq(i),b.indicators&&j.eq(i).addClass("active")),e.find("img").each(function(){e.find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,queue:!1,easing:"easeOutQuad"})}),$interval=setInterval(function(){i=g.find(".active").index(),d(i+1)},b.transition+b.interval);var k=!1,l=!1,m=!1;f.hammer({prevent_default:!1}).bind("pan",function(a){if("touch"===a.gesture.pointerType){clearInterval($interval);var b=a.gesture.direction,c=a.gesture.deltaX,d=a.gesture.velocityX;$curr_slide=g.find(".active"),$curr_slide.velocity({translateX:c},{duration:50,queue:!1,easing:"easeOutQuad"}),4===b&&(c>f.innerWidth()/2||-.65>d)?m=!0:2===b&&(c<-1*f.innerWidth()/2||d>.65)&&(l=!0);var e;l&&(e=$curr_slide.next(),0===e.length&&(e=h.first()),e.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"})),m&&(e=$curr_slide.prev(),0===e.length&&(e=h.last()),e.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(a){"touch"===a.gesture.pointerType&&($curr_slide=g.find(".active"),k=!1,curr_index=g.find(".active").index(),m||l?l?(d(curr_index+1),$curr_slide.velocity({translateX:-1*f.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})):m&&(d(curr_index-1),$curr_slide.velocity({translateX:f.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})):$curr_slide.velocity({translateX:0},{duration:300,queue:!1,easing:"easeOutQuad"}),l=!1,m=!1,clearInterval($interval),$interval=setInterval(function(){i=g.find(".active").index(),h.length==i+1?i=0:i+=1,d(i)},b.transition+b.interval))}),f.on("sliderPause",function(){clearInterval($interval)}),f.on("sliderStart",function(){clearInterval($interval),$interval=setInterval(function(){i=g.find(".active").index(),h.length==i+1?i=0:i+=1,d(i)},b.transition+b.interval)})})},pause:function(){a(this).trigger("sliderPause")},start:function(){a(this).trigger("sliderStart")}};a.fn.slider=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tooltip"):b.init.apply(this,arguments)}}(jQuery),function(a){a(document).ready(function(){a(document).on("click.card",".card",function(b){a(this).find(".card-reveal").length&&(a(b.target).is(a(".card-reveal .card-title"))||a(b.target).is(a(".card-reveal .card-title i"))?a(this).find(".card-reveal").velocity({translateY:0},{duration:225,queue:!1,easing:"easeInOutQuad",complete:function(){a(this).css({display:"none"})}}):(a(b.target).is(a(".card .activator"))||a(b.target).is(a(".card .activator i")))&&a(this).find(".card-reveal").css({display:"block"}).velocity("stop",!1).velocity({translateY:"-100%"},{duration:300,queue:!1,easing:"easeInOutQuad"}))})})}(jQuery), +function(a){a(document).ready(function(){a.fn.pushpin=function(b){var c={top:0,bottom:1/0,offset:0};return b=a.extend(c,b),$index=0,this.each(function(){function c(a){a.removeClass("pin-top"),a.removeClass("pinned"),a.removeClass("pin-bottom")}function d(d,e){d.each(function(){b.top<=e&&b.bottom>=e&&!a(this).hasClass("pinned")&&(c(a(this)),a(this).css("top",b.offset),a(this).addClass("pinned")),eb.bottom&&!a(this).hasClass("pin-bottom")&&(c(a(this)),a(this).addClass("pin-bottom"),a(this).css("top",b.bottom-g))})}var e=Materialize.guid(),f=a(this),g=a(this).offset().top;d(f,a(window).scrollTop()),a(window).on("scroll."+e,function(){var c=a(window).scrollTop()+b.offset;d(f,c)})})}})}(jQuery),function(a){a(document).ready(function(){a.fn.reverse=[].reverse,a(document).on("mouseenter.fixedActionBtn",".fixed-action-btn",function(){var c=a(this);b(c)}),a(document).on("mouseleave.fixedActionBtn",".fixed-action-btn",function(){var b=a(this);c(b)})}),a.fn.extend({openFAB:function(){var c=a(this);b(c)},closeFAB:function(){c($this)}});var b=function(b){if($this=b,$this.hasClass("active")===!1){$this.addClass("active"),$this.find("ul .btn-floating").velocity({scaleY:".4",scaleX:".4",translateY:"40px"},{duration:0});var c=0;$this.find("ul .btn-floating").reverse().each(function(){a(this).velocity({opacity:"1",scaleX:"1",scaleY:"1",translateY:"0"},{duration:80,delay:c}),c+=40})}},c=function(a){$this=a,$this.removeClass("active");$this.find("ul .btn-floating").velocity("stop",!0),$this.find("ul .btn-floating").velocity({opacity:"0",scaleX:".4",scaleY:".4",translateY:"40px"},{duration:80})}}(jQuery),function(a){Materialize.fadeInImage=function(b){var c=a(b);c.css({opacity:0}),a(c).velocity({opacity:1},{duration:650,queue:!1,easing:"easeOutSine"}),a(c).velocity({opacity:1},{duration:1300,queue:!1,easing:"swing",step:function(b,c){c.start=100;var d=b/100,e=150-(100-b)/1.75;100>e&&(e=100),b>=0&&a(this).css({"-webkit-filter":"grayscale("+d+")brightness("+e+"%)",filter:"grayscale("+d+")brightness("+e+"%)"})}})},Materialize.showStaggeredList=function(b){var c=0;a(b).find("li").velocity({translateX:"-100px"},{duration:0}),a(b).find("li").each(function(){a(this).velocity({opacity:"1",translateX:"0"},{duration:800,delay:c,easing:[60,10]}),c+=120})},a(document).ready(function(){var b=!1,c=!1;a(".dismissable").each(function(){a(this).hammer({prevent_default:!1}).bind("pan",function(d){if("touch"===d.gesture.pointerType){var e=a(this),f=d.gesture.direction,g=d.gesture.deltaX,h=d.gesture.velocityX;e.velocity({translateX:g},{duration:50,queue:!1,easing:"easeOutQuad"}),4===f&&(g>e.innerWidth()/2||-.75>h)&&(b=!0),2===f&&(g<-1*e.innerWidth()/2||h>.75)&&(c=!0)}}).bind("panend",function(d){if(Math.abs(d.gesture.deltaX)j+g&&e.done!==!0){var k=new Function(h);k(),e.done=!0}}}}},100)}}(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"})}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, select, textarea, button, option")||(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):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):""}),u.container?a(u.container).append(y._hidden):w.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;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._;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){var e,g=this;return c=void 0===c?a:c,c==-(1/0)||c==1/0?e=c:b.isPlainObject(c)&&f.isInteger(c.pick)?c=c.obj:b.isArray(c)?(c=new Date(c[0],c[1],c[2]),c=f.isDate(c)?c:g.create().obj):c=f.isInteger(c)||f.isDate(c)?g.normalize(new Date(c),d):g.now(a,c,d),{year:e||c.getFullYear(),month:e||c.getMonth(),date:e||c.getDate(),day:e||c.getDay(),obj:e||c,pick:e||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(a,b,c){return b=new Date,c&&c.rel&&b.setDate(b.getDate()+c.rel),this.normalize(b,c)},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view;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();new Date(f,g,h).getMonth()!==g;)h-=1;c=[f,g,h]}return c},c.prototype.normalize=function(a){return a.setHours(0,0,0,0),a},c.prototype.measure=function(a,b){var c=this;return b?"string"==typeof b?b=c.parse(a,b):f.isInteger(b)&&(b=c.now(a,b,{rel:b})):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;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);j.disabled(c)&&(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);)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,i=g.select,j=g.highlight,k=g.view,l=g.disable,m=g.min,n=g.max,o=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)),p=function(a){return f.node("div"," ",c.klass["nav"+(a?"Next":"Prev")]+(a&&k.year>=n.year&&k.month>=n.month||!a&&k.year<=m.year&&k.month<=m.month?" "+c.klass.navDisabled:""),"data-nav="+(a||-1)+" "+f.ariaAttr({role:"button",controls:b.$node[0].id+"_table"})+' title="'+(a?c.labelMonthNext:c.labelMonthPrev)+'"')},q=function(d){var e=c.showMonthsShort?c.monthsShort:c.monthsFull;return"short_months"==d&&(e=c.monthsShort),c.selectMonths&&void 0==d?f.node("select",f.group({min:0,max:11,i:1,node:"option",item:function(a){return[e[a],0,"value="+a+(k.month==a?" selected":"")+(k.year==m.year&&an.month?" disabled":"")]}}),c.klass.selectMonth+" browser-default",(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelMonthSelect+'"'):"short_months"==d?null!=i?f.node("div",e[i.month]):f.node("div",e[k.month]):f.node("div",e[k.month],c.klass.month)},r=function(d){var e=k.year,g=c.selectYears===!0?5:~~(c.selectYears/2);if(g){var h=m.year,i=n.year,j=e-g,l=e+g;if(h>j&&(l+=h-j,j=h),l>i){var o=j-h,p=l-i;j-=o>p?p:o,l=i}if(c.selectYears&&void 0==d)return f.node("select",f.group({min:j,max:l,i:1,node:"option",item:function(a){return[a,0,"value="+a+(e==a?" selected":"")]}}),c.klass.selectYear+" browser-default",(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!=i?f.node("div",i.date):f.node("div",h.date)},createWeekdayLabel=function(){var a;a=null!=i?i.day:h.day;var b=c.weekdaysFull[a];return b},f.node("div",f.node("div",createWeekdayLabel(),"picker__weekday-display")+f.node("div",q("short_months"),c.klass.month_display)+f.node("div",createDayLabel(),c.klass.day_display)+f.node("div",r("raw"),c.klass.year_display),c.klass.date_display)+f.node("div",f.node("div",(c.selectYears?q()+r():q()+r())+p()+p(1),c.klass.header)+f.node("table",o+f.node("tbody",f.group({min:0,max:e-1,i:1,node:"tr",item:function(a){var e=c.firstDay&&0===b.create([k.year,k.month,1]).day?-7:0;return[f.group({min:d*a-k.day+e+1,max:function(){return this.min+d-1},i:1,node:"td",item:function(a){a=b.create([k.year,k.month,a+(c.firstDay?1:0)]);var d=i&&i.pick==a.pick,e=j&&j.pick==a.pick,g=l&&b.disabled(a)||a.pickn.pick,o=f.trigger(b.formats.toString,b,[c.format,a]);return[f.node("div",a.date,function(b){return b.push(k.month==a.month?c.klass.infocus:c.klass.outfocus),h.pick==a.pick&&b.push(c.klass.now),d&&b.push(c.klass.selected),e&&b.push(c.klass.highlighted),g&&b.push(c.klass.disabled),b.join(" ")}([c.klass.day]),"data-pick="+a.pick+" "+f.ariaAttr({role:"gridcell",label:o,selected:d&&b.$node.val()===o?!0:null,activedescendant:e?!0:null,disabled:g?!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.clear,"btn-flat picker__clear","type=button data-clear=1"+(a?"":" 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)}),function(a){function b(){var b=+a(this).attr("length"),c=+a(this).val().length,d=b>=c;a(this).parent().find('span[class="character-counter"]').html(c+"/"+b),e(d,a(this))}function c(b){var c=a("").addClass("character-counter").css("float","right").css("font-size","12px").css("height",1);b.parent().append(c)}function d(){a(this).parent().find('span[class="character-counter"]').html("")}function e(a,b){var c=b.hasClass("invalid");a&&c?b.removeClass("invalid"):a||c||(b.removeClass("valid"),b.addClass("invalid"))}a.fn.characterCounter=function(){return this.each(function(){var e=void 0!==a(this).attr("length");e&&(a(this).on("input",b),a(this).on("focus",b),a(this).on("blur",d),c(a(this)))})},a(document).ready(function(){a("input, textarea").characterCounter()})}(jQuery); \ No newline at end of file diff --git a/js/parallax.js b/js/parallax.js new file mode 100644 index 0000000..841d7ac --- /dev/null +++ b/js/parallax.js @@ -0,0 +1,58 @@ +(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) { + var container_height; + if (window_width < 601) { + container_height = ($this.height() > 0) ? $this.height() : $this.children("img").height(); + } + else { + container_height = ($this.height() > 0) ? $this.height() : 500; + } + var $img = $this.children("img").first(); + var img_height = $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 = Math.round((parallax_dist * percentScrolled)); + + if (initial) { + $img.css('display', 'block'); + } + if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) { + $img.css('transform', "translate3D(-50%," + parallax + "px, 0)"); + } + + } + + // Wait for image load + $this.children("img").one("load", function() { + updateParallax(true); + }).each(function() { + if(this.complete) $(this).load(); + }); + + $(window).scroll(function() { + window_width = $(window).width(); + updateParallax(false); + }); + + $(window).resize(function() { + window_width = $(window).width(); + updateParallax(false); + }); + + }); + + }; +}( jQuery )); \ No newline at end of file diff --git a/js/prism.js b/js/prism.js new file mode 100644 index 0000000..da77df9 --- /dev/null +++ b/js/prism.js @@ -0,0 +1,8 @@ +/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+scss+bash */ +self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{};var Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(d instanceof a)){g.lastIndex=0;var m=g.exec(d);if(m){c&&(f=m[1].length);var y=m.index-1+f,m=m[0].slice(f),v=m.length,k=y+v,b=d.slice(0,y+1),w=d.slice(k+1),O=[p,1];b&&O.push(b);var N=new a(l,u?t.tokenize(m,u):m,h);O.push(N),w&&O.push(w),Array.prototype.splice.apply(r,O)}}}}}return r},hooks:{all:{},add:function(e,n){var a=t.hooks.all;a[e]=a[e]||[],a[e].push(n)},run:function(e,n){var a=t.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(n)}}},n=t.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(n.stringify=function(e,a,r){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(function(t){return n.stringify(t,a,e)}).join("");var i={type:e.type,content:n.stringify(e.content,a,r),tag:"span",classes:["token",e.type],attributes:{},language:a,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}t.hooks.run("wrap",i);var s="";for(var o in i.attributes)s+=o+'="'+(i.attributes[o]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'" '+s+">"+i.content+""},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),a=n.language,r=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(r,t.languages[a])))),self.close()},!1),self.Prism):self.Prism;var a=document.getElementsByTagName("script");return a=a[a.length-1],a&&(t.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism);; +Prism.languages.markup={comment://g,prolog:/<\?.+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\&#?[\da-z]{1,8};/gi},Prism.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))});; +Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/gi,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,punctuation:/[\{\};:]/g,"function":/[-a-z0-9]+(?=\()/gi},Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/[\w\W]*?<\/style>/gi,inside:{tag:{pattern:/|<\/style>/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css},alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').+?\1/gi,inside:{"attr-name":{pattern:/^\s*style/gi,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/gi,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag));; +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//g,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*?(\r?\n|$)/g,lookbehind:!0}],string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/gi,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/gi,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};; +Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|-?Infinity)\b/g,"function":/(?!\d)[a-z0-9_$]+(?=\()/gi}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/gi,inside:{tag:{pattern:/|<\/script>/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript},alias:"language-javascript"}});; +Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g,lookbehind:!0},atrule:/@[\w-]+(?=\s+(\(|\{|;))/gi,url:/([-a-z]+-)*url(?=\()/gi,selector:/([^@;\{\}\(\)]?([^@;\{\}\(\)]|&|\#\{\$[-_\w]+\})+)(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/gm}),Prism.languages.insertBefore("scss","atrule",{keyword:/@(if|else if|else|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)|(?=@for\s+\$[-_\w]+\s)+from/i}),Prism.languages.insertBefore("scss","property",{variable:/((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i}),Prism.languages.insertBefore("scss","ignore",{placeholder:/%[-_\w]+/i,statement:/\B!(default|optional)\b/gi,"boolean":/\b(true|false)\b/g,"null":/\b(null)\b/g,operator:/\s+([-+]{1,2}|={1,2}|!=|\|?\||\?|\*|\/|\%)\s+/g});; +Prism.languages.bash=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])(#.*?(\r?\n|$))/g,lookbehind:!0},string:{pattern:/("|')(\\?[\s\S])*?\1/g,inside:{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^\}]+\})/g}},keyword:/\b(if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)\b/g}),Prism.languages.insertBefore("bash","keyword",{property:/\$([a-zA-Z0-9_#\?\-\*!@]+|\{[^}]+\})/g}),Prism.languages.insertBefore("bash","comment",{important:/(^#!\s*\/bin\/bash)|(^#!\s*\/bin\/sh)/g});; diff --git a/js/pushpin.js b/js/pushpin.js new file mode 100644 index 0000000..6071c82 --- /dev/null +++ b/js/pushpin.js @@ -0,0 +1,62 @@ +(function ($) { + $(document).ready(function() { + + $.fn.pushpin = function (options) { + + var defaults = { + top: 0, + bottom: Infinity, + offset: 0 + } + options = $.extend(defaults, options); + + $index = 0; + return this.each(function() { + var $uniqueId = Materialize.guid(), + $this = $(this), + $original_offset = $(this).offset().top; + + function removePinClasses(object) { + object.removeClass('pin-top'); + object.removeClass('pinned'); + object.removeClass('pin-bottom'); + } + + function updateElements(objects, scrolled) { + objects.each(function () { + // Add position fixed (because its between top and bottom) + if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) { + removePinClasses($(this)); + $(this).css('top', options.offset); + $(this).addClass('pinned'); + } + + // Add pin-top (when scrolled position is above top) + if (scrolled < options.top && !$(this).hasClass('pin-top')) { + removePinClasses($(this)); + $(this).css('top', 0); + $(this).addClass('pin-top'); + } + + // Add pin-bottom (when scrolled position is below bottom) + if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) { + removePinClasses($(this)); + $(this).addClass('pin-bottom'); + $(this).css('top', options.bottom - $original_offset); + } + }); + } + + updateElements($this, $(window).scrollTop()); + $(window).on('scroll.' + $uniqueId, function () { + var $scrolled = $(window).scrollTop() + options.offset; + updateElements($this, $scrolled); + }); + + }); + + }; + + + }); +}( jQuery )); \ No newline at end of file diff --git a/js/scrollFire.js b/js/scrollFire.js new file mode 100755 index 0000000..bd7a098 --- /dev/null +++ b/js/scrollFire.js @@ -0,0 +1,44 @@ +(function($) { + + // Input: Array of JSON objects {selector, offset, callback} + + Materialize.scrollFire = function(options) { + + var didScroll = false; + + window.addEventListener("scroll", function() { + didScroll = true; + }); + + // Rate limit to 100ms + setInterval(function() { + if(didScroll) { + didScroll = false; + + var windowScroll = window.pageYOffset + window.innerHeight; + + for (var i = 0 ; i < options.length; i++) { + // Get options from each line + var value = options[i]; + var selector = value.selector, + offset = value.offset, + callback = value.callback; + + var currentElement = document.querySelector(selector); + if ( currentElement !== null) { + var elementOffset = currentElement.getBoundingClientRect().top + document.body.scrollTop; + + if (windowScroll > (elementOffset + offset)) { + if (value.done !== true) { + var callbackFunc = new Function(callback); + callbackFunc(); + value.done = true; + } + } + } + } + } + }, 100); + }; + +})(jQuery); \ No newline at end of file diff --git a/js/scrollspy.js b/js/scrollspy.js new file mode 100755 index 0000000..d486bd2 --- /dev/null +++ b/js/scrollspy.js @@ -0,0 +1,284 @@ +/** + * 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 - 200 allows elements near bottom of page to scroll + + $('html, body').animate({ scrollTop: offset - 200 }, {duration: 400, queue: false, 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'); + }); + if (visible[0]) { // Check if empty + $('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); \ No newline at end of file diff --git a/js/sideNav.js b/js/sideNav.js new file mode 100644 index 0000000..030cc75 --- /dev/null +++ b/js/sideNav.js @@ -0,0 +1,312 @@ +(function ($) { + + var methods = { + init : function(options) { + var defaults = { + menuWidth: 240, + edge: 'left', + closeOnClick: false + }; + options = $.extend(defaults, options); + + $(this).each(function(){ + var $this = $(this); + var menu_id = $("#"+ $this.attr('data-activates')); + + // Set to width + if (options.menuWidth != 240) { + menu_id.css('width', options.menuWidth); + } + + // Add Touch Area + $('body').append($('
        ')); + + if (options.edge == 'left') { + menu_id.css('left', -1 * (options.menuWidth + 10)); + $('.drag-target').css({'left': 0}); // Add Touch Area + } + else { + menu_id.addClass('right-aligned') // Change text-alignment to right + .css('right', -1 * (options.menuWidth + 10)) + .css('left', ''); + $('.drag-target').css({'right': 0}); // Add Touch Area + } + + // If fixed sidenav, bring menu out + if (menu_id.hasClass('fixed')) { + if (window.innerWidth > 992) { + menu_id.css('left', 0); + } + } + + // Window resize to reset on large screens fixed + if (menu_id.hasClass('fixed')) { + $(window).resize( function() { + if (window.innerWidth > 992) { + // Close menu if window is resized bigger than 992 and user has fixed sidenav + if ($('#sidenav-overlay').css('opacity') !== 0 && menuOut) { + removeMenu(true); + } + else { + menu_id.removeAttr('style'); + menu_id.css('width', options.menuWidth); + } + } + else if (menuOut === false){ + if (options.edge === 'left') + menu_id.css('left', -1 * (options.menuWidth + 10)); + else + menu_id.css('right', -1 * (options.menuWidth + 10)); + } + + }); + } + + // if closeOnClick, then add close event for all a tags in side sideNav + if (options.closeOnClick === true) { + menu_id.on("click.itemclick", "a:not(.collapsible-header)", function(){ + removeMenu(); + }); + } + + function removeMenu(restoreNav) { + panning = false; + menuOut = false; + + // Reenable scrolling + $('body').css('overflow', ''); + + $('#sidenav-overlay').velocity({opacity: 0}, {duration: 200, queue: false, easing: 'easeOutQuad', + complete: function() { + $(this).remove(); + } }); + if (options.edge === 'left') { + // Reset phantom div + $('.drag-target').css({width: '', right: '', left: '0'}); + menu_id.velocity( + {left: -1 * (options.menuWidth + 10)}, + { duration: 200, + queue: false, + easing: 'easeOutCubic', + complete: function() { + if (restoreNav === true) { + // Restore Fixed sidenav + menu_id.removeAttr('style'); + menu_id.css('width', options.menuWidth); + } + } + + }); + } + else { + // Reset phantom div + $('.drag-target').css({width: '', right: '0', left: ''}); + menu_id.velocity( + {right: -1 * (options.menuWidth + 10)}, + { duration: 200, + queue: false, + easing: 'easeOutCubic', + complete: function() { + if (restoreNav === true) { + // Restore Fixed sidenav + menu_id.removeAttr('style'); + menu_id.css('width', options.menuWidth); + } + } + }); + } + } + + + + // Touch Event + var panning = false; + var menuOut = false; + + $('.drag-target').on('click', function(){ + removeMenu(); + }); + + $('.drag-target').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; + var velocityX = e.gesture.velocityX; + + // Disable Scrolling + $('body').css('overflow', 'hidden'); + + // If overlay does not exist, create one and if it is clicked, close menu + if ($('#sidenav-overlay').length === 0) { + var overlay = $('
        '); + overlay.css('opacity', 0).click( function(){ + removeMenu(); + }); + $('body').append(overlay); + } + + // Keep within boundaries + if (options.edge === 'left') { + if (x > options.menuWidth) { x = options.menuWidth; } + else if (x < 0) { x = 0; } + } + + if (options.edge === 'left') { + // Left Direction + if (x < (options.menuWidth / 2)) { menuOut = false; } + // Right Direction + else if (x >= (options.menuWidth / 2)) { menuOut = true; } + + menu_id.css('left', (x - options.menuWidth)); + } + else { + // Left Direction + if (x < (window.innerWidth - options.menuWidth / 2)) { + menuOut = true; + } + // Right Direction + else if (x >= (window.innerWidth - options.menuWidth / 2)) { + menuOut = false; + } + var rightPos = -1 *(x - options.menuWidth / 2); + if (rightPos > 0) { + rightPos = 0; + } + + menu_id.css('right', rightPos); + } + + + + + // Percentage overlay + var overlayPerc; + if (options.edge === 'left') { + overlayPerc = x / options.menuWidth; + $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + } + else { + overlayPerc = Math.abs((x - window.innerWidth) / options.menuWidth); + $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + } + } + + }).bind('panend', function(e) { + + if (e.gesture.pointerType == "touch") { + var velocityX = e.gesture.velocityX; + panning = false; + if (options.edge === 'left') { + // If velocityX <= 0.3 then the user is flinging the menu closed so ignore menuOut + if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) { + menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + $('.drag-target').css({width: '50%', right: 0, left: ''}); + } + else if (!menuOut || velocityX > 0.3) { + // Enable Scrolling + $('body').css('overflow', ''); + // Slide menu closed + menu_id.velocity({left: -1 * (options.menuWidth + 10)}, {duration: 200, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', + complete: function () { + $(this).remove(); + }}); + $('.drag-target').css({width: '10px', right: '', left: 0}); + } + } + else { + if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) { + menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + $('.drag-target').css({width: '50%', right: '', left: 0}); + } + else if (!menuOut || velocityX < -0.3) { + // Enable Scrolling + $('body').css('overflow', ''); + // Slide menu closed + menu_id.velocity({right: -1 * (options.menuWidth + 10)}, {duration: 200, queue: false, easing: 'easeOutQuad'}); + $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', + complete: function () { + $(this).remove(); + }}); + $('.drag-target').css({width: '10px', right: 0, left: ''}); + } + } + + } + }); + + $this.click(function() { + if (menuOut === true) { + menuOut = false; + panning = false; + removeMenu(); + } + else { + + // Disable Scrolling + $('body').css('overflow', 'hidden'); + + if (options.edge === 'left') { + $('.drag-target').css({width: '50%', right: 0, left: ''}); + menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + else { + $('.drag-target').css({width: '50%', right: '', left: 0}); + menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); + menu_id.css('left',''); + } + + var overlay = $('
        '); + overlay.css('opacity', 0) + .click(function(){ + menuOut = false; + panning = false; + removeMenu(); + overlay.velocity({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $(this).remove(); + } }); + + }); + $('body').append(overlay); + overlay.velocity({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function () { + menuOut = true; + panning = false; + } + }); + } + + return false; + }); + }); + + + }, + show : function() { + this.trigger('click'); + }, + hide : function() { + $('#sidenav-overlay').trigger('click'); + } + }; + + + $.fn.sideNav = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.sideNav' ); + } + }; // Plugin end +}( jQuery )); diff --git a/js/slider.js b/js/slider.js new file mode 100644 index 0000000..e957893 --- /dev/null +++ b/js/slider.js @@ -0,0 +1,301 @@ +(function ($) { + + var methods = { + + init : function(options) { + var defaults = { + indicators: true, + height: 400, + transition: 500, + interval: 6000 + }; + options = $.extend(defaults, options); + + return this.each(function() { + + // For each slider, we want to keep track of + // which slide is active and its associated content + var $this = $(this); + var $slider = $this.find('ul.slides').first(); + var $slides = $slider.find('li'); + var $active_index = $slider.find('.active').index(); + var $active; + if ($active_index != -1) { $active = $slides.eq($active_index); } + + // Transitions the caption depending on alignment + function captionTransition(caption, duration) { + if (caption.hasClass("center-align")) { + caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false}); + } + else if (caption.hasClass("right-align")) { + caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false}); + } + else if (caption.hasClass("left-align")) { + caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false}); + } + } + + // This function will transition the slide to any index of the next slide + function moveToSlide(index) { + if (index >= $slides.length) index = 0; + else if (index < 0) index = $slides.length -1; + + $active_index = $slider.find('.active').index(); + + // Only do if index changes + if ($active_index != index) { + $active = $slides.eq($active_index); + $caption = $active.find('.caption'); + + $active.removeClass('active'); + $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad', + complete: function() { + $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false}); + } }); + captionTransition($caption, options.transition); + + + // Update indicators + if (options.indicators) { + $indicators.eq($active_index).removeClass('active'); + } + + $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); + $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'}); + $slides.eq(index).addClass('active'); + + + // Update indicators + if (options.indicators) { + $indicators.eq(index).addClass('active'); + } + } + } + + // Set height of slider + // If fullscreen, do nothing + if (!$this.hasClass('fullscreen')) { + if (options.indicators) { + // Add height if indicators are present + $this.height(options.height + 40); + } + else { + $this.height(options.height); + } + $slider.height(options.height); + } + + + // Set initial positions of captions + $slides.find('.caption').each(function () { + captionTransition($(this), 0); + }); + + // Move img src into background-image + $slides.find('img').each(function () { + $(this).css('background-image', 'url(' + $(this).attr('src') + ')' ); + $(this).attr('src', 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='); + }); + + // dynamically add indicators + if (options.indicators) { + var $indicators = $('
          '); + $slides.each(function( index ) { + var $indicator = $('
        • '); + + // Handle clicks on indicators + $indicator.click(function () { + var $parent = $slider.parent(); + var curr_index = $parent.find($(this)).index(); + moveToSlide(curr_index); + + // reset interval + clearInterval($interval); + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + if ($slides.length == $active_index + 1) $active_index = 0; // loop to start + else $active_index += 1; + + moveToSlide($active_index); + + }, options.transition + options.interval + ); + }); + $indicators.append($indicator); + }); + $this.append($indicators); + $indicators = $this.find('ul.indicators').find('li.indicator-item'); + } + + if ($active) { + $active.show(); + } + else { + $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); + + $active_index = 0; + $active = $slides.eq($active_index); + + // Update indicators + if (options.indicators) { + $indicators.eq($active_index).addClass('active'); + } + } + + // Adjust height to current slide + $active.find('img').each(function() { + $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); + }); + + // auto scroll + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + moveToSlide($active_index + 1); + + }, options.transition + options.interval + ); + + + // HammerJS, Swipe navigation + + // Touch Event + var panning = false; + var swipeLeft = false; + var swipeRight = false; + + $this.hammer({ + prevent_default: false + }).bind('pan', function(e) { + if (e.gesture.pointerType === "touch") { + + // reset interval + clearInterval($interval); + + var direction = e.gesture.direction; + var x = e.gesture.deltaX; + var velocityX = e.gesture.velocityX; + + $curr_slide = $slider.find('.active'); + $curr_slide.velocity({ translateX: x + }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + // Swipe Left + if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) { + swipeRight = true; + } + // Swipe Right + else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) { + swipeLeft = true; + } + + // Make Slide Behind active slide visible + var next_slide; + if (swipeLeft) { + next_slide = $curr_slide.next(); + if (next_slide.length === 0) { + next_slide = $slides.first(); + } + next_slide.velocity({ opacity: 1 + }, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + if (swipeRight) { + next_slide = $curr_slide.prev(); + if (next_slide.length === 0) { + next_slide = $slides.last(); + } + next_slide.velocity({ opacity: 1 + }, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + + + } + + }).bind('panend', function(e) { + if (e.gesture.pointerType === "touch") { + + $curr_slide = $slider.find('.active'); + panning = false; + curr_index = $slider.find('.active').index(); + + if (!swipeRight && !swipeLeft) { + // Return to original spot + $curr_slide.velocity({ translateX: 0 + }, {duration: 300, queue: false, easing: 'easeOutQuad'}); + } + else if (swipeLeft) { + moveToSlide(curr_index + 1); + $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); + } }); + } + else if (swipeRight) { + moveToSlide(curr_index - 1); + $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', + complete: function() { + $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); + } }); + } + swipeLeft = false; + swipeRight = false; + + // Restart interval + clearInterval($interval); + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + if ($slides.length == $active_index + 1) $active_index = 0; // loop to start + else $active_index += 1; + + moveToSlide($active_index); + + }, options.transition + options.interval + ); + } + }); + + $this.on('sliderPause', function() { + clearInterval($interval); + }); + + $this.on('sliderStart', function() { + clearInterval($interval); + $interval = setInterval( + function(){ + $active_index = $slider.find('.active').index(); + if ($slides.length == $active_index + 1) $active_index = 0; // loop to start + else $active_index += 1; + + moveToSlide($active_index); + + }, options.transition + options.interval + ); + }); + + }); + + + + }, + pause : function() { + $(this).trigger('sliderPause'); + }, + start : function() { + $(this).trigger('sliderStart'); + } + }; + + + $.fn.slider = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); + } + }; // Plugin end +}( jQuery )); \ No newline at end of file diff --git a/js/tabs.js b/js/tabs.js new file mode 100644 index 0000000..bec445c --- /dev/null +++ b/js/tabs.js @@ -0,0 +1,134 @@ +(function ($) { + + var methods = { + init : 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), + 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'), + $tabs_width = $this.width(), + $tab_width = $this.find('li').first().outerWidth(), + $index = 0; + + // If the location.hash matches one of the links, use that as the active tab. + $active = $($links.filter('[href="'+location.hash+'"]')); + + // If no match is found, use the first link or any with class 'active' as the initial active tab. + if ($active.length === 0) { + $active = $(this).find('li.tab a.active').first(); + } + if ($active.length === 0) { + $active = $(this).find('li.tab a').first(); + } + + $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){ + if ($(this).parent().hasClass('disabled')) { + e.preventDefault(); + return; + } + + $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: 90}); + + } + 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: 90}); + } + + // Prevent the anchor's default click action + e.preventDefault(); + }); + }); + + }, + select_tab : function( id ) { + this.find('a[href="#' + id + '"]').trigger('click'); + } + }; + + $.fn.tabs = function(methodOrOptions) { + if ( methods[methodOrOptions] ) { + return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { + // Default to "init" + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); + } + }; + + $(document).ready(function(){ + $('ul.tabs').tabs(); + }); +}( jQuery )); diff --git a/js/toasts.js b/js/toasts.js new file mode 100644 index 0000000..56051b7 --- /dev/null +++ b/js/toasts.js @@ -0,0 +1,125 @@ +Materialize.toast = function (message, displayLength, className, completeCallback) { + className = className || ""; + + var container = document.getElementById('toast-container'); + + // Create toast container if it does not exist + if (container === null) { + // create notification container + container = document.createElement('div'); + container.id = 'toast-container'; + document.body.appendChild(container); + } + + // Select and append toast + var newToast = createToast(message); + + // only append toast if message is not undefined + if(message){ + container.appendChild(newToast); + } + + newToast.style.top = '35px'; + newToast.style.opacity = 0; + + // Animate toast in + Vel(newToast, { "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.parentNode === null) + window.clearInterval(counterInterval); + + // If toast is not being dragged, decrease its time remaining + if (!newToast.classList.contains('panning')) { + timeLeft -= 20; + } + + if (timeLeft <= 0) { + // Animate toast out + Vel(newToast, {"opacity": 0, marginTop: '-40px'}, { duration: 375, + easing: 'easeOutExpo', + queue: false, + complete: function(){ + // Call the optional callback + if(typeof(completeCallback) === "function") + completeCallback(); + // Remove toast after it times out + this[0].parentNode.removeChild(this[0]); + } + }); + window.clearInterval(counterInterval); + } + }, 20); + + + + function createToast(html) { + + // Create toast + var toast = document.createElement('div'); + toast.classList.add('toast'); + if (className) { + var classes = className.split(' '); + + for (var i = 0, count = classes.length; i < count; i++) { + toast.classList.add(classes[i]); + } + } + toast.innerHTML = html; + + // Bind hammer + var hammerHandler = new Hammer(toast, {prevent_default: false}); + hammerHandler.on('pan', function(e) { + var deltaX = e.deltaX; + var activationDistance = 80; + + // Change toast state + if (!toast.classList.contains('panning')){ + toast.classList.add('panning'); + } + + var opacityPercent = 1-Math.abs(deltaX / activationDistance); + if (opacityPercent < 0) + opacityPercent = 0; + + Vel(toast, {left: deltaX, opacity: opacityPercent }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + }); + + hammerHandler.on('panend', function(e) { + var deltaX = e.deltaX; + var activationDistance = 80; + + // If toast dragged past activation point + if (Math.abs(deltaX) > activationDistance) { + Vel(toast, {marginTop: '-40px'}, { duration: 375, + easing: 'easeOutExpo', + queue: false, + complete: function(){ + if(typeof(completeCallback) === "function") { + completeCallback(); + } + toast.parentNode.removeChild(toast); + } + }); + + } else { + toast.classList.remove('panning'); + // Put toast back into original position + Vel(toast, { left: 0, opacity: 1 }, { duration: 300, + easing: 'easeOutExpo', + queue: false + }); + + } + }); + + return toast; + } +}; diff --git a/js/tooltip.js b/js/tooltip.js new file mode 100644 index 0000000..65d5a2c --- /dev/null +++ b/js/tooltip.js @@ -0,0 +1,166 @@ +(function ($) { + $.fn.tooltip = function (options) { + var timeout = null, + counter = null, + started = false, + counterInterval = null, + margin = 5; + + // Defaults + var defaults = { + delay: 350 + }; + options = $.extend(defaults, options); + + //Remove previously created html + $('.material-tooltip').remove(); + + return this.each(function(){ + var origin = $(this); + + // Create Text span + var tooltip_text = $('').text(origin.attr('data-tooltip')); + + // Create tooltip + var newTooltip = $('
          '); + newTooltip.addClass('material-tooltip').append(tooltip_text); + newTooltip.appendTo($('body')); + + var backdrop = $('
          ').addClass('backdrop'); + backdrop.appendTo(newTooltip); + backdrop.css({ top: 0, left:0 }); + + + //Destroy previously binded events + $(this).off('mouseenter mouseleave'); + // Mouse In + $(this).on({ + mouseenter: function(e) { + var tooltip_delay = origin.data("delay"); + tooltip_delay = (tooltip_delay === undefined || tooltip_delay === '') ? options.delay : tooltip_delay; + counter = 0; + counterInterval = setInterval(function(){ + counter += 10; + if (counter >= tooltip_delay && started === false) { + started = true; + newTooltip.css({ display: 'block', left: '0px', top: '0px' }); + + // Set Tooltip text + newTooltip.children('span').text(origin.attr('data-tooltip')); + + // Tooltip positioning + var originWidth = origin.outerWidth(); + var originHeight = origin.outerHeight(); + var tooltipPosition = origin.attr('data-position'); + var tooltipHeight = newTooltip.outerHeight(); + var tooltipWidth = newTooltip.outerWidth(); + var tooltipVerticalMovement = '0px'; + var tooltipHorizontalMovement = '0px'; + var scale_factor = 8; + + if (tooltipPosition === "top") { + // Top Position + newTooltip.css({ + top: origin.offset().top - tooltipHeight - margin, + left: origin.offset().left + originWidth/2 - tooltipWidth/2 + }); + tooltipVerticalMovement = '-10px'; + backdrop.css({ + borderRadius: '14px 14px 0 0', + transformOrigin: '50% 90%', + marginTop: tooltipHeight, + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + + }); + } + // Left Position + else if (tooltipPosition === "left") { + newTooltip.css({ + top: origin.offset().top + originHeight/2 - tooltipHeight/2, + left: origin.offset().left - tooltipWidth - margin + }); + tooltipHorizontalMovement = '-10px'; + backdrop.css({ + width: '14px', + height: '14px', + borderRadius: '14px 0 0 14px', + transformOrigin: '95% 50%', + marginTop: tooltipHeight/2, + marginLeft: tooltipWidth + }); + } + // Right Position + else if (tooltipPosition === "right") { + newTooltip.css({ + top: origin.offset().top + originHeight/2 - tooltipHeight/2, + left: origin.offset().left + originWidth + margin + }); + tooltipHorizontalMovement = '+10px'; + backdrop.css({ + width: '14px', + height: '14px', + borderRadius: '0 14px 14px 0', + transformOrigin: '5% 50%', + marginTop: tooltipHeight/2, + marginLeft: '0px' + }); + } + else { + // Bottom Position + newTooltip.css({ + top: origin.offset().top + origin.outerHeight() + margin, + left: origin.offset().left + originWidth/2 - tooltipWidth/2 + }); + tooltipVerticalMovement = '+10px'; + backdrop.css({ + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + }); + } + + // Calculate Scale to fill + scale_factor = tooltipWidth / 8; + if (scale_factor < 8) { + scale_factor = 8; + } + if (tooltipPosition === "right" || tooltipPosition === "left") { + scale_factor = tooltipWidth / 10; + if (scale_factor < 6) + scale_factor = 6; + } + + newTooltip.velocity({ opacity: 1, marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 350, queue: false }); + backdrop.css({ display: 'block' }) + .velocity({opacity:1},{duration: 55, delay: 0, queue: false}) + .velocity({scale: scale_factor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'}); + + } + }, 10); // End Interval + + // Mouse Out + }, + mouseleave: function(){ + // Reset State + clearInterval(counterInterval); + counter = 0; + + // Animate back + newTooltip.velocity({ + opacity: 0, marginTop: 0, marginLeft: 0}, { 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;} + }); + } + }); + }); + }; + + $(document).ready(function(){ + $('.tooltipped').tooltip(); + }); +}( jQuery )); diff --git a/js/transitions.js b/js/transitions.js new file mode 100644 index 0000000..caa7192 --- /dev/null +++ b/js/transitions.js @@ -0,0 +1,154 @@ +(function ($) { + // Image transition function + Materialize.fadeInImage = function(selector){ + var element = $(selector); + element.css({opacity: 0}); + $(element).velocity({opacity: 1}, { + duration: 650, + queue: false, + easing: 'easeOutSine' + }); + $(element).velocity({opacity: 1}, { + duration: 1300, + queue: false, + easing: 'swing', + step: function(now, fx) { + fx.start = 100; + var grayscale_setting = now/100; + var brightness_setting = 150 - (100 - now)/1.75; + + if (brightness_setting < 100) { + brightness_setting = 100; + } + if (now >= 0) { + $(this).css({ + "-webkit-filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)", + "filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)" + }); + } + } + }); + }; + + // Horizontal staggered list + Materialize.showStaggeredList = function(selector) { + var time = 0; + $(selector).find('li').velocity( + { translateX: "-100px"}, + { duration: 0 }); + + $(selector).find('li').each(function() { + $(this).velocity( + { opacity: "1", translateX: "0"}, + { duration: 800, delay: time, easing: [60, 10] }); + time += 120; + }); + }; + + + $(document).ready(function() { + // Hardcoded .staggered-list scrollFire + // var staggeredListOptions = []; + // $('ul.staggered-list').each(function (i) { + + // var label = 'scrollFire-' + i; + // $(this).addClass(label); + // staggeredListOptions.push( + // {selector: 'ul.staggered-list.' + label, + // offset: 200, + // callback: 'showStaggeredList("ul.staggered-list.' + label + '")'}); + // }); + // scrollFire(staggeredListOptions); + + // HammerJS, Swipe navigation + + // Touch Event + var swipeLeft = false; + var swipeRight = false; + + + // Dismissible Collections + $('.dismissable').each(function() { + $(this).hammer({ + prevent_default: false + }).bind('pan', function(e) { + if (e.gesture.pointerType === "touch") { + var $this = $(this); + var direction = e.gesture.direction; + var x = e.gesture.deltaX; + var velocityX = e.gesture.velocityX; + + $this.velocity({ translateX: x + }, {duration: 50, queue: false, easing: 'easeOutQuad'}); + + // Swipe Left + if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.75)) { + swipeLeft = true; + } + + // Swipe Right + if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.75)) { + swipeRight = true; + } + } + }).bind('panend', function(e) { + // Reset if collection is moved back into original position + if (Math.abs(e.gesture.deltaX) < ($(this).innerWidth() / 2)) { + swipeRight = false; + swipeLeft = false; + } + + if (e.gesture.pointerType === "touch") { + var $this = $(this); + if (swipeLeft || swipeRight) { + var fullWidth; + if (swipeLeft) { fullWidth = $this.innerWidth(); } + else { fullWidth = -1 * $this.innerWidth(); } + + $this.velocity({ translateX: fullWidth, + }, {duration: 100, queue: false, easing: 'easeOutQuad', complete: + function() { + $this.css('border', 'none'); + $this.velocity({ height: 0, padding: 0, + }, {duration: 200, queue: false, easing: 'easeOutQuad', complete: + function() { $this.remove(); } + }); + } + }); + } + else { + $this.velocity({ translateX: 0, + }, {duration: 100, queue: false, easing: 'easeOutQuad'}); + } + swipeLeft = false; + swipeRight = false; + } + }); + + }); + + + // time = 0 + // // Vertical Staggered list + // $('ul.staggered-list.vertical li').velocity( + // { translateY: "100px"}, + // { duration: 0 }); + + // $('ul.staggered-list.vertical li').each(function() { + // $(this).velocity( + // { opacity: "1", translateY: "0"}, + // { duration: 800, delay: time, easing: [60, 25] }); + // time += 120; + // }); + + // // Fade in and Scale + // $('.fade-in.scale').velocity( + // { scaleX: .4, scaleY: .4, translateX: -600}, + // { duration: 0}); + // $('.fade-in').each(function() { + // $(this).velocity( + // { opacity: "1", scaleX: 1, scaleY: 1, translateX: 0}, + // { duration: 800, easing: [60, 10] }); + // }); + }); +}( jQuery )); diff --git a/js/velocity.min.js b/js/velocity.min.js new file mode 100644 index 0000000..58244c8 --- /dev/null +++ b/js/velocity.min.js @@ -0,0 +1,4 @@ +/*! VelocityJS.org (1.2.2). (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){var t=(new Date).getTime(),r=v.State.calls.length;r>1e4&&(v.State.calls=n(v.State.calls));for(var o=0;r>o;o++)if(v.State.calls[o]){var s=v.State.calls[o],l=s[0],u=s[2],f=s[3],d=!!f,m=null;f||(f=v.State.calls[o][3]=t-16);for(var y=Math.min((t-f)/u.duration,1),h=0,b=l.length;b>h;h++){var S=l[h],w=S.element;if(i(w)){var V=!1;if(u.display!==a&&null!==u.display&&"none"!==u.display){if("flex"===u.display){var C=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];$.each(C,function(e,t){x.setPropertyValue(w,"display",t)})}x.setPropertyValue(w,"display",u.display)}u.visibility!==a&&"hidden"!==u.visibility&&x.setPropertyValue(w,"visibility",u.visibility);for(var T in S)if("element"!==T){var k=S[T],A,F=g.isString(k.easing)?v.Easings[k.easing]:k.easing;if(1===y)A=k.endValue;else{var E=k.endValue-k.startValue;if(A=k.startValue+E*F(y,u,E),!d&&A===k.currentValue)continue}if(k.currentValue=A,"tween"===T)m=A;else{if(x.Hooks.registered[T]){var j=x.Hooks.getRoot(T),H=i(w).rootPropertyValueCache[j];H&&(k.rootPropertyValue=H)}var N=x.setPropertyValue(w,T,k.currentValue+(0===parseFloat(A)?"":k.unitType),k.rootPropertyValue,k.scrollData);x.Hooks.registered[T]&&(i(w).rootPropertyValueCache[j]=x.Normalizations.registered[j]?x.Normalizations.registered[j]("extract",null,N[1]):N[1]),"transform"===N[0]&&(V=!0)}}u.mobileHA&&i(w).transformCache.translate3d===a&&(i(w).transformCache.translate3d="(0px, 0px, 0px)",V=!0),V&&x.flushTransformCache(w)}}u.display!==a&&"none"!==u.display&&(v.State.calls[o][2].display=!1),u.visibility!==a&&"hidden"!==u.visibility&&(v.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],y,Math.max(0,f+u.duration-t),f,m),1===y&&p(o)}}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),i(p)&&o.loop===!0&&!t&&($.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),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:2,patch:2},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":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"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),"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)}if(!/^[\d-]/.test(l))if(i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(g){l=0}else l=e.getAttribute(r);else l=s(e,x.Names.prefixCheck(r)[0]);return 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 l?T.promise||null:f}function n(){function e(e){function p(e,t){var r=a,i=a,s=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])?s=e[1]:(g.isString(e[1])&&!x.RegEx.isHex.test(e[1])||g.isArray(e[1]))&&(i=t?e[1]:u(e[1],o.duration),e[2]!==a&&(s=e[2]))):r=e,t||(i=i||o.easing),g.isFunction(r)&&(r=r.call(n,w,P)),g.isFunction(s)&&(s=s.call(n,w,P)),[r||0,i,s]}function f(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 d(){var e={myParent:n.parentNode||r.body,position:x.getPropertyValue(n,"position"),fontSize:x.getPropertyValue(n,"fontSize")},a=e.position===N.lastPosition&&e.myParent===N.lastParent,o=e.fontSize===N.lastFontSize;N.lastParent=e.myParent,N.lastPosition=e.position,N.lastFontSize=e.fontSize;var s=100,l={};if(o&&a)l.emToPx=N.lastEmToPx,l.percentToPxWidth=N.lastPercentToPxWidth,l.percentToPxHeight=N.lastPercentToPxHeight;else{var u=i(n).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=N.lastPercentToPxWidth=(parseFloat(x.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=N.lastPercentToPxHeight=(parseFloat(x.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=N.lastEmToPx=(parseFloat(x.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===N.remToPx&&(N.remToPx=parseFloat(x.getPropertyValue(r.body,"fontSize"))||16),null===N.vwToPx&&(N.vwToPx=parseFloat(t.innerWidth)/100,N.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=N.remToPx,l.vwToPx=N.vwToPx,l.vhToPx=N.vhToPx,v.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),n),l}if(o.begin&&0===w)try{o.begin.call(m,m)}catch(y){setTimeout(function(){throw y},1)}if("scroll"===k){var S=/^x$/i.test(o.axis)?"Left":"Top",V=parseFloat(o.offset)||0,C,A,F;o.container?g.isWrapped(o.container)||g.isNode(o.container)?(o.container=o.container[0]||o.container,C=o.container["scroll"+S],F=C+$(n).position()[S.toLowerCase()]+V):o.container=null:(C=v.State.scrollAnchor[v.State["scrollProperty"+S]],A=v.State.scrollAnchor[v.State["scrollProperty"+("Left"===S?"Top":"Left")]],F=$(n).offset()[S.toLowerCase()]+V),s={scroll:{rootPropertyValue:!1,startValue:C,currentValue:C,endValue:F,unitType:"",easing:o.easing,scrollData:{container:o.container,direction:S,alternateValue:A}},element:n},v.debug&&console.log("tweensContainer (scroll): ",s.scroll,n)}else if("reverse"===k){if(!i(n).tweensContainer)return void $.dequeue(n,o.queue);"none"===i(n).opts.display&&(i(n).opts.display="auto"),"hidden"===i(n).opts.visibility&&(i(n).opts.visibility="visible"),i(n).opts.loop=!1,i(n).opts.begin=null,i(n).opts.complete=null,b.easing||delete o.easing,b.duration||delete o.duration,o=$.extend({},i(n).opts,o);var E=$.extend(!0,{},i(n).tweensContainer);for(var j in E)if("element"!==j){var H=E[j].startValue;E[j].startValue=E[j].currentValue=E[j].endValue,E[j].endValue=H,g.isEmptyObject(b)||(E[j].easing=o.easing),v.debug&&console.log("reverse tweensContainer ("+j+"): "+JSON.stringify(E[j]),n)}s=E}else if("start"===k){var E;i(n).tweensContainer&&i(n).isAnimating===!0&&(E=i(n).tweensContainer),$.each(h,function(e,t){if(RegExp("^"+x.Lists.colors.join("$|^")+"$").test(e)){var r=p(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;cO;O++){var z={delay:F.delay,progress:F.progress};O===R-1&&(z.display=F.display,z.visibility=F.visibility,z.complete=F.complete),S(m,"reverse",z)}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)}); \ No newline at end of file diff --git a/js/waves.js b/js/waves.js new file mode 100644 index 0000000..c76d463 --- /dev/null +++ b/js/waves.js @@ -0,0 +1,338 @@ +/*! + * Waves v0.6.4 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ + +;(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: 750, + + show: function(e, element) { + + // Disable right click + if (e.button === 2) { + return false; + } + + var el = element || 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); + var relativeX = (e.pageX - pos.left); + var scale = 'scale('+((el.clientWidth / 100) * 10)+')'; + + // Support for touch devices + if ('touches' in e) { + relativeY = (e.touches[0].pageY - pos.top); + relativeX = (e.touches[0].pageX - pos.left); + } + + // Attach data to element + ripple.setAttribute('data-hold', Date.now()); + ripple.setAttribute('data-scale', scale); + ripple.setAttribute('data-x', relativeX); + ripple.setAttribute('data-y', relativeY); + + // Set ripple position + var rippleStyle = { + 'top': relativeY+'px', + 'left': relativeX+'px' + }; + + ripple.className = ripple.className + ' 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'; + + rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; + + ripple.setAttribute('style', convertStyle(rippleStyle)); + }, + + hide: function(e) { + TouchHandler.touchup(e); + + var el = this; + var width = el.clientWidth * 1.4; + + // Get first ripple + var ripple = null; + var ripples = el.getElementsByClassName('waves-ripple'); + if (ripples.length > 0) { + ripple = ripples[ripples.length - 1]; + } else { + 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 = 350 - 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) { + continue; + } + + // 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'); + + if (!elementStyle) { + elementStyle = ''; + } + + wrapper.setAttribute('style', elementStyle); + + el.className = 'waves-button-input'; + el.removeAttribute('style'); + + // Put element as child + parent.replaceChild(wrapper, el); + wrapper.appendChild(el); + } + } + } + }; + + + /** + * Disable mousedown event for 500ms during and after touch + */ + var TouchHandler = { + /* uses an integer rather than bool so there's no issues with + * needing to clear timeouts if another touch event occurred + * within the 500ms. Cannot mouseup between touchstart and + * touchend, nor in the 500ms after touchend. */ + touches: 0, + allowEvent: function(e) { + var allow = true; + + if (e.type === 'touchstart') { + TouchHandler.touches += 1; //push + } else if (e.type === 'touchend' || e.type === 'touchcancel') { + setTimeout(function() { + if (TouchHandler.touches > 0) { + TouchHandler.touches -= 1; //pop after 500ms + } + }, 500); + } else if (e.type === 'mousedown' && TouchHandler.touches > 0) { + allow = false; + } + + return allow; + }, + touchup: function(e) { + TouchHandler.allowEvent(e); + } + }; + + + /** + * Delegated click handler for .waves-effect element. + * returns null when .waves-effect element not in "click tree" + */ + function getWavesEffectElement(e) { + if (TouchHandler.allowEvent(e) === false) { + return null; + } + + var element = null; + var target = e.target || e.srcElement; + + while (target.parentElement !== null) { + if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) { + element = target; + break; + } else if (target.classList.contains('waves-effect')) { + element = target; + break; + } + target = target.parentElement; + } + + return element; + } + + /** + * Bubble the click and show effect if .waves-effect elem was found + */ + function showEffect(e) { + var element = getWavesEffectElement(e); + + if (element !== null) { + Effect.show(e, element); + + if ('ontouchstart' in window) { + element.addEventListener('touchend', Effect.hide, false); + element.addEventListener('touchcancel', Effect.hide, false); + } + + element.addEventListener('mouseup', Effect.hide, false); + element.addEventListener('mouseleave', Effect.hide, false); + } + } + + Waves.displayEffect = function(options) { + options = options || {}; + + if ('duration' in options) { + Effect.duration = options.duration; + } + + //Wrap input inside tag + Effect.wrapInput($$('.waves-effect')); + + if ('ontouchstart' in window) { + document.body.addEventListener('touchstart', showEffect, false); + } + + document.body.addEventListener('mousedown', showEffect, false); + }; + + /** + * Attach Waves to an input element (or any element which doesn't + * bubble mouseup/mousedown events). + * Intended to be used with dynamically loaded forms/inputs, or + * where the user doesn't want a delegated click handler. + */ + Waves.attach = function(element) { + //FUTURE: automatically add waves classes and allow users + // to specify them with an options param? Eg. light/classic/button + if (element.tagName.toLowerCase() === 'input') { + Effect.wrapInput([element]); + element = element.parentElement; + } + + if ('ontouchstart' in window) { + element.addEventListener('touchstart', showEffect, false); + } + + element.addEventListener('mousedown', showEffect, false); + }; + + window.Waves = Waves; + + document.addEventListener('DOMContentLoaded', function() { + Waves.displayEffect(); + }, false); + +})(window); diff --git a/t/body.tpl b/t/body.tpl new file mode 100644 index 0000000..38a8c80 --- /dev/null +++ b/t/body.tpl @@ -0,0 +1,16 @@ +
          +
          + [% subg %]
          + [% time %] +

          + echo: [% echo %]
          + + From: [% author %]
          + To: [% to %]
          +

          +

          + [% message %]
          + Score: [% score %] +

          +
          +
          diff --git a/t/footer.tpl b/t/footer.tpl new file mode 100644 index 0000000..257a55e --- /dev/null +++ b/t/footer.tpl @@ -0,0 +1,6 @@ +
          +
          + Powered by Elasticsearch +
          + + diff --git a/t/form.tpl b/t/form.tpl new file mode 100644 index 0000000..64e8c0c --- /dev/null +++ b/t/form.tpl @@ -0,0 +1,17 @@ +
          +
          +
          +
          + + +
          +
          +
          +
          + +
          +
          +
          +
          diff --git a/t/header.tpl b/t/header.tpl new file mode 100644 index 0000000..85048cf --- /dev/null +++ b/t/header.tpl @@ -0,0 +1,28 @@ + + + + + [% IF query %] + Umbrella. [% query %] + [% ELSE %] + Umbrella. Search for ii network. + [% END %] + + + + + + + + + + +
          + Alpha2 +
          + +
          +
          + logo +
          +