├── css ├── app.css ├── foundation.min.css └── foundation.css ├── js ├── app.js ├── .DS_Store └── vendor │ ├── what-input.js │ ├── foundation.min.js │ └── foundation.js ├── .DS_Store ├── sample_audio ├── .DS_Store ├── goodbye.mp3 ├── timeout.mp3 ├── alexa-intro.mp3 ├── alexa-sample.mp3 ├── error-sample.mp3 ├── no-response.mp3 ├── yes-response.mp3 └── creepy-whisper.mp3 ├── README.md └── index.html /css/app.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /js/app.js: -------------------------------------------------------------------------------- 1 | $(document).foundation() 2 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/.DS_Store -------------------------------------------------------------------------------- /js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/js/.DS_Store -------------------------------------------------------------------------------- /sample_audio/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/sample_audio/.DS_Store -------------------------------------------------------------------------------- /sample_audio/goodbye.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/sample_audio/goodbye.mp3 -------------------------------------------------------------------------------- /sample_audio/timeout.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/sample_audio/timeout.mp3 -------------------------------------------------------------------------------- /sample_audio/alexa-intro.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/sample_audio/alexa-intro.mp3 -------------------------------------------------------------------------------- /sample_audio/alexa-sample.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/sample_audio/alexa-sample.mp3 -------------------------------------------------------------------------------- /sample_audio/error-sample.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/sample_audio/error-sample.mp3 -------------------------------------------------------------------------------- /sample_audio/no-response.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/sample_audio/no-response.mp3 -------------------------------------------------------------------------------- /sample_audio/yes-response.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/sample_audio/yes-response.mp3 -------------------------------------------------------------------------------- /sample_audio/creepy-whisper.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/quartz/playboard-template/master/sample_audio/creepy-whisper.mp3 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # playboard-template 2 | We created this simple board to facilitate user testing for interactive audio experiences. 3 | 4 | Read the full explanation on how to use [over on our blog](https://bots.qz.com/2017/06/26/relatively-rapid-prototyping-for-voice/). Happy experimenting! 5 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | User Testing Board 5 | 6 | 7 | 40 | 41 | 42 | 43 |
44 |

Play Board Template - Alexa

45 |
46 | 47 | 48 |
49 |
50 |
51 |

52 | Introduction 53 |

54 |
55 |
56 |
57 |
58 |

59 | Alexa says hello 60 |

61 |
62 |
63 |

64 | Error message 65 |

66 |
67 |
68 |

69 | Timeout message 70 |

71 |
72 |
73 |

74 |
75 |
76 |
77 | 78 | 79 | 80 |
81 |
82 |
83 |

84 | Branch 1 85 |

86 |
87 |
88 |

89 | [user response] 90 |

91 |
92 |
93 |

94 | Response confirmation 95 |

96 |
97 |
98 |

99 | Content 100 |

101 |
102 |
103 |
104 |
105 |

106 | Alexa launches this module with a question 107 |

108 |
109 |
110 |

user responds with "yes" or "no"

111 |
112 |
113 |

114 | Yes response 115 |

116 |

117 | No response 118 |

119 |
120 |
121 |

122 | Alexa tells you how she's feeling 123 |

124 |
125 |
126 |
127 | 128 | 129 | 130 | 131 |
132 |
133 |
134 |

135 | Outro (Goodbye Message) 136 |

137 |
138 |
139 |
140 |
141 |

142 | Alexa says goodbye 143 |

144 |
145 |
146 |
147 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /js/vendor/what-input.js: -------------------------------------------------------------------------------- 1 | /** 2 | * what-input - A global utility for tracking the current input method (mouse, keyboard or touch). 3 | * @version v4.0.4 4 | * @link https://github.com/ten1seven/what-input 5 | * @license MIT 6 | */ 7 | (function webpackUniversalModuleDefinition(root, factory) { 8 | if(typeof exports === 'object' && typeof module === 'object') 9 | module.exports = factory(); 10 | else if(typeof define === 'function' && define.amd) 11 | define("whatInput", [], factory); 12 | else if(typeof exports === 'object') 13 | exports["whatInput"] = factory(); 14 | else 15 | root["whatInput"] = factory(); 16 | })(this, function() { 17 | return /******/ (function(modules) { // webpackBootstrap 18 | /******/ // The module cache 19 | /******/ var installedModules = {}; 20 | 21 | /******/ // The require function 22 | /******/ function __webpack_require__(moduleId) { 23 | 24 | /******/ // Check if module is in cache 25 | /******/ if(installedModules[moduleId]) 26 | /******/ return installedModules[moduleId].exports; 27 | 28 | /******/ // Create a new module (and put it into the cache) 29 | /******/ var module = installedModules[moduleId] = { 30 | /******/ exports: {}, 31 | /******/ id: moduleId, 32 | /******/ loaded: false 33 | /******/ }; 34 | 35 | /******/ // Execute the module function 36 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 37 | 38 | /******/ // Flag the module as loaded 39 | /******/ module.loaded = true; 40 | 41 | /******/ // Return the exports of the module 42 | /******/ return module.exports; 43 | /******/ } 44 | 45 | 46 | /******/ // expose the modules object (__webpack_modules__) 47 | /******/ __webpack_require__.m = modules; 48 | 49 | /******/ // expose the module cache 50 | /******/ __webpack_require__.c = installedModules; 51 | 52 | /******/ // __webpack_public_path__ 53 | /******/ __webpack_require__.p = ""; 54 | 55 | /******/ // Load entry module and return exports 56 | /******/ return __webpack_require__(0); 57 | /******/ }) 58 | /************************************************************************/ 59 | /******/ ([ 60 | /* 0 */ 61 | /***/ function(module, exports) { 62 | 63 | module.exports = (function() { 64 | 65 | /* 66 | --------------- 67 | Variables 68 | --------------- 69 | */ 70 | 71 | // cache document.documentElement 72 | var docElem = document.documentElement; 73 | 74 | // last used input type 75 | var currentInput = 'initial'; 76 | 77 | // last used input intent 78 | var currentIntent = null; 79 | 80 | // form input types 81 | var formInputs = [ 82 | 'input', 83 | 'select', 84 | 'textarea' 85 | ]; 86 | 87 | // list of modifier keys commonly used with the mouse and 88 | // can be safely ignored to prevent false keyboard detection 89 | var ignoreMap = [ 90 | 16, // shift 91 | 17, // control 92 | 18, // alt 93 | 91, // Windows key / left Apple cmd 94 | 93 // Windows menu / right Apple cmd 95 | ]; 96 | 97 | // mapping of events to input types 98 | var inputMap = { 99 | 'keyup': 'keyboard', 100 | 'mousedown': 'mouse', 101 | 'mousemove': 'mouse', 102 | 'MSPointerDown': 'pointer', 103 | 'MSPointerMove': 'pointer', 104 | 'pointerdown': 'pointer', 105 | 'pointermove': 'pointer', 106 | 'touchstart': 'touch' 107 | }; 108 | 109 | // array of all used input types 110 | var inputTypes = []; 111 | 112 | // boolean: true if touch buffer timer is running 113 | var isBuffering = false; 114 | 115 | // map of IE 10 pointer events 116 | var pointerMap = { 117 | 2: 'touch', 118 | 3: 'touch', // treat pen like touch 119 | 4: 'mouse' 120 | }; 121 | 122 | // touch buffer timer 123 | var touchTimer = null; 124 | 125 | 126 | /* 127 | --------------- 128 | Set up 129 | --------------- 130 | */ 131 | 132 | var setUp = function() { 133 | 134 | // add correct mouse wheel event mapping to `inputMap` 135 | inputMap[detectWheel()] = 'mouse'; 136 | 137 | addListeners(); 138 | setInput(); 139 | }; 140 | 141 | 142 | /* 143 | --------------- 144 | Events 145 | --------------- 146 | */ 147 | 148 | var addListeners = function() { 149 | 150 | // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding 151 | // can only demonstrate potential, but not actual, interaction 152 | // and are treated separately 153 | 154 | // pointer events (mouse, pen, touch) 155 | if (window.PointerEvent) { 156 | docElem.addEventListener('pointerdown', updateInput); 157 | docElem.addEventListener('pointermove', setIntent); 158 | } else if (window.MSPointerEvent) { 159 | docElem.addEventListener('MSPointerDown', updateInput); 160 | docElem.addEventListener('MSPointerMove', setIntent); 161 | } else { 162 | 163 | // mouse events 164 | docElem.addEventListener('mousedown', updateInput); 165 | docElem.addEventListener('mousemove', setIntent); 166 | 167 | // touch events 168 | if ('ontouchstart' in window) { 169 | docElem.addEventListener('touchstart', touchBuffer); 170 | } 171 | } 172 | 173 | // mouse wheel 174 | docElem.addEventListener(detectWheel(), setIntent); 175 | 176 | // keyboard events 177 | docElem.addEventListener('keydown', updateInput); 178 | docElem.addEventListener('keyup', updateInput); 179 | }; 180 | 181 | // checks conditions before updating new input 182 | var updateInput = function(event) { 183 | 184 | // only execute if the touch buffer timer isn't running 185 | if (!isBuffering) { 186 | var eventKey = event.which; 187 | var value = inputMap[event.type]; 188 | if (value === 'pointer') value = pointerType(event); 189 | 190 | if ( 191 | currentInput !== value || 192 | currentIntent !== value 193 | ) { 194 | 195 | var activeInput = ( 196 | document.activeElement && 197 | formInputs.indexOf(document.activeElement.nodeName.toLowerCase()) === -1 198 | ) ? true : false; 199 | 200 | if ( 201 | value === 'touch' || 202 | 203 | // ignore mouse modifier keys 204 | (value === 'mouse' && ignoreMap.indexOf(eventKey) === -1) || 205 | 206 | // don't switch if the current element is a form input 207 | (value === 'keyboard' && activeInput) 208 | ) { 209 | 210 | // set the current and catch-all variable 211 | currentInput = currentIntent = value; 212 | 213 | setInput(); 214 | } 215 | } 216 | } 217 | }; 218 | 219 | // updates the doc and `inputTypes` array with new input 220 | var setInput = function() { 221 | docElem.setAttribute('data-whatinput', currentInput); 222 | docElem.setAttribute('data-whatintent', currentInput); 223 | 224 | if (inputTypes.indexOf(currentInput) === -1) { 225 | inputTypes.push(currentInput); 226 | docElem.className += ' whatinput-types-' + currentInput; 227 | } 228 | }; 229 | 230 | // updates input intent for `mousemove` and `pointermove` 231 | var setIntent = function(event) { 232 | 233 | // only execute if the touch buffer timer isn't running 234 | if (!isBuffering) { 235 | var value = inputMap[event.type]; 236 | if (value === 'pointer') value = pointerType(event); 237 | 238 | if (currentIntent !== value) { 239 | currentIntent = value; 240 | 241 | docElem.setAttribute('data-whatintent', currentIntent); 242 | } 243 | } 244 | }; 245 | 246 | // buffers touch events because they frequently also fire mouse events 247 | var touchBuffer = function(event) { 248 | 249 | // clear the timer if it happens to be running 250 | window.clearTimeout(touchTimer); 251 | 252 | // set the current input 253 | updateInput(event); 254 | 255 | // set the isBuffering to `true` 256 | isBuffering = true; 257 | 258 | // run the timer 259 | touchTimer = window.setTimeout(function() { 260 | 261 | // if the timer runs out, set isBuffering back to `false` 262 | isBuffering = false; 263 | }, 200); 264 | }; 265 | 266 | 267 | /* 268 | --------------- 269 | Utilities 270 | --------------- 271 | */ 272 | 273 | var pointerType = function(event) { 274 | if (typeof event.pointerType === 'number') { 275 | return pointerMap[event.pointerType]; 276 | } else { 277 | return (event.pointerType === 'pen') ? 'touch' : event.pointerType; // treat pen like touch 278 | } 279 | }; 280 | 281 | // detect version of mouse wheel event to use 282 | // via https://developer.mozilla.org/en-US/docs/Web/Events/wheel 283 | var detectWheel = function() { 284 | return 'onwheel' in document.createElement('div') ? 285 | 'wheel' : // Modern browsers support "wheel" 286 | 287 | document.onmousewheel !== undefined ? 288 | 'mousewheel' : // Webkit and IE support at least "mousewheel" 289 | 'DOMMouseScroll'; // let's assume that remaining browsers are older Firefox 290 | }; 291 | 292 | 293 | /* 294 | --------------- 295 | Init 296 | 297 | don't start script unless browser cuts the mustard 298 | (also passes if polyfills are used) 299 | --------------- 300 | */ 301 | 302 | if ( 303 | 'addEventListener' in window && 304 | Array.prototype.indexOf 305 | ) { 306 | setUp(); 307 | } 308 | 309 | 310 | /* 311 | --------------- 312 | API 313 | --------------- 314 | */ 315 | 316 | return { 317 | 318 | // returns string: the current input type 319 | // opt: 'loose'|'strict' 320 | // 'strict' (default): returns the same value as the `data-whatinput` attribute 321 | // 'loose': includes `data-whatintent` value if it's more current than `data-whatinput` 322 | ask: function(opt) { return (opt === 'loose') ? currentIntent : currentInput; }, 323 | 324 | // returns array: all the detected input types 325 | types: function() { return inputTypes; } 326 | 327 | }; 328 | 329 | }()); 330 | 331 | 332 | /***/ } 333 | /******/ ]) 334 | }); 335 | ; -------------------------------------------------------------------------------- /js/vendor/foundation.min.js: -------------------------------------------------------------------------------- 1 | function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}!function(t){"use strict";function e(t){if(void 0===Function.prototype.name){var e=/function\s([^(]{1,})\(/,n=e.exec(t.toString());return n&&n.length>1?n[1].trim():""}return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name}function n(t){return"true"===t||"false"!==t&&(isNaN(1*t)?t:parseFloat(t))}function i(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}var o="6.3.1",a={version:o,_plugins:{},_uuids:[],rtl:function(){return"rtl"===t("html").attr("dir")},plugin:function(t,n){var o=n||e(t),a=i(o);this._plugins[a]=this[o]=t},registerPlugin:function(t,n){var o=n?i(n):e(t.constructor).toLowerCase();t.uuid=this.GetYoDigits(6,o),t.$element.attr("data-"+o)||t.$element.attr("data-"+o,t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf."+o),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var n=i(e(t.$element.data("zfPlugin").constructor));this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-"+n).removeData("zfPlugin").trigger("destroyed.zf."+n);for(var o in t)t[o]=null},reInit:function(e){var n=e instanceof t;try{if(n)e.each(function(){t(this).data("zfPlugin")._init()});else{var o=typeof e,a=this,r={object:function(e){e.forEach(function(e){e=i(e),t("[data-"+e+"]").foundation("_init")})},string:function(){e=i(e),t("[data-"+e+"]").foundation("_init")},undefined:function(){this.object(Object.keys(a._plugins))}};r[o](e)}}catch(t){console.error(t)}finally{return e}},GetYoDigits:function(t,e){return t=t||6,Math.round(Math.pow(36,t+1)-Math.random()*Math.pow(36,t)).toString(36).slice(1)+(e?"-"+e:"")},reflow:function(e,i){"undefined"==typeof i?i=Object.keys(this._plugins):"string"==typeof i&&(i=[i]);var o=this;t.each(i,function(i,a){var r=o._plugins[a],s=t(e).find("[data-"+a+"]").addBack("[data-"+a+"]");s.each(function(){var e=t(this),i={};if(e.data("zfPlugin"))return void console.warn("Tried to initialize "+a+" on an element that already has a Foundation plugin.");if(e.attr("data-options")){e.attr("data-options").split(";").forEach(function(t,e){var o=t.split(":").map(function(t){return t.trim()});o[0]&&(i[o[0]]=n(o[1]))})}try{e.data("zfPlugin",new r(t(this),i))}catch(t){console.error(t)}finally{return}})})},getFnName:e,transitionend:function(t){var e,n={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend"},i=document.createElement("div");for(var o in n)"undefined"!=typeof i.style[o]&&(e=n[o]);return e?e:(e=setTimeout(function(){t.triggerHandler("transitionend",[t])},1),"transitionend")}};a.util={throttle:function(t,e){var n=null;return function(){var i=this,o=arguments;null===n&&(n=setTimeout(function(){t.apply(i,o),n=null},e))}}};var r=function(n){var i=typeof n,o=t("meta.foundation-mq"),r=t(".no-js");if(o.length||t('').appendTo(document.head),r.length&&r.removeClass("no-js"),"undefined"===i)a.MediaQuery._init(),a.reflow(this);else{if("string"!==i)throw new TypeError("We're sorry, "+i+" is not a valid parameter. You must use a string representing the method you wish to invoke.");var s=Array.prototype.slice.call(arguments,1),l=this.data("zfPlugin");if(void 0===l||void 0===l[n])throw new ReferenceError("We're sorry, '"+n+"' is not an available method for "+(l?e(l):"this element")+".");1===this.length?l[n].apply(l,s):this.each(function(e,i){l[n].apply(t(i).data("zfPlugin"),s)})}return this};window.Foundation=a,t.fn.foundation=r,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e1&&"only"===t[1]?t[0]===this._getCurrentSize():this.atLeast(t[0])},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var n=this.queries[e];if(t===n.name)return n.value}return null},_getCurrentSize:function(){for(var t,e=0;e=u.offset.top,s=f.offset.left>=u.offset.left,l=f.offset.left+f.width<=u.width+u.offset.left}else r=f.offset.top+f.height<=f.windowDims.height+f.windowDims.offset.top,a=f.offset.top>=f.windowDims.offset.top,s=f.offset.left>=f.windowDims.offset.left,l=f.offset.left+f.width<=f.windowDims.width;var d=[r,a,s,l];return i?s===l==!0:o?a===r==!0:d.indexOf(!1)===-1}function n(t,e){if(t=t.length?t[0]:t,t===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var n=t.getBoundingClientRect(),i=t.parentNode.getBoundingClientRect(),o=document.body.getBoundingClientRect(),a=window.pageYOffset,r=window.pageXOffset;return{width:n.width,height:n.height,offset:{top:n.top+a,left:n.left+r},parentDims:{width:i.width,height:i.height,offset:{top:i.top+a,left:i.left+r}},windowDims:{width:o.width,height:o.height,offset:{top:a,left:r}}}}function i(t,e,i,o,a,r){var s=n(t),l=e?n(e):null;switch(i){case"top":return{left:Foundation.rtl()?l.offset.left-s.width+l.width:l.offset.left,top:l.offset.top-(s.height+o)};case"left":return{left:l.offset.left-(s.width+a),top:l.offset.top};case"right":return{left:l.offset.left+l.width+a,top:l.offset.top};case"center top":return{left:l.offset.left+l.width/2-s.width/2,top:l.offset.top-(s.height+o)};case"center bottom":return{left:r?a:l.offset.left+l.width/2-s.width/2,top:l.offset.top+l.height+o};case"center left":return{left:l.offset.left-(s.width+a),top:l.offset.top+l.height/2-s.height/2};case"center right":return{left:l.offset.left+l.width+a+1,top:l.offset.top+l.height/2-s.height/2};case"center":return{left:s.windowDims.offset.left+s.windowDims.width/2-s.width/2,top:s.windowDims.offset.top+s.windowDims.height/2-s.height/2};case"reveal":return{left:(s.windowDims.width-s.width)/2,top:s.windowDims.offset.top+o};case"reveal full":return{left:s.windowDims.offset.left,top:s.windowDims.offset.top};case"left bottom":return{left:l.offset.left,top:l.offset.top+l.height+o};case"right bottom":return{left:l.offset.left+l.width+a-s.width,top:l.offset.top+l.height+o};default:return{left:Foundation.rtl()?l.offset.left-s.width+l.width:l.offset.left+a,top:l.offset.top+l.height+o}}}Foundation.Box={ImNotTouchingYou:e,GetDimensions:n,GetOffsets:i}}(jQuery),!function(t){function e(t,e,n){function i(s){r||(r=s),a=s-r,n.apply(e),a").addClass("reveal-overlay").appendTo(this.options.appendTo)}},{key:"_updatePosition",value:function(){var e,n,i=this.$element.outerWidth(),o=t(window).width(),a=this.$element.outerHeight(),r=t(window).height();e="auto"===this.options.hOffset?parseInt((o-i)/2,10):parseInt(this.options.hOffset,10),n="auto"===this.options.vOffset?a>r?parseInt(Math.min(100,r/10),10):parseInt((r-a)/4,10):parseInt(this.options.vOffset,10),this.$element.css({top:n+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:e+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var e=this,n=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(i,o){if(i.target===n.$element[0]||t(i.target).parents("[data-closable]")[0]===o)return e.close.apply(e)},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){n._updatePosition()}}),this.$anchor.length&&this.$anchor.on("keydown.zf.reveal",function(t){13!==t.which&&32!==t.which||(t.stopPropagation(),t.preventDefault(),n.open())}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.reveal",function(e){e.target!==n.$element[0]&&!t.contains(n.$element[0],e.target)&&t.contains(document,e.target)&&n.close()}),this.options.deepLink&&t(window).on("popstate.zf.reveal:"+this.id,this._handleState.bind(this))}},{key:"_handleState",value:function(t){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"open",value:function(){function e(){o.isMobile?(o.originalScrollPos||(o.originalScrollPos=window.pageYOffset),t("html, body").addClass("is-reveal-open")):t("body").addClass("is-reveal-open")}var n=this;if(this.options.deepLink){var i="#"+this.id;window.history.pushState?window.history.pushState(null,null,i):window.location.hash=i}this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id);var o=this;this.options.animationIn?!function(){var t=function(){o.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),e(),Foundation.Keyboard.trapFocus(o.$element)};n.options.overlay&&Foundation.Motion.animateIn(n.$overlay,"fade-in"),Foundation.Motion.animateIn(n.$element,n.options.animationIn,function(){n.$element&&(n.focusableElements=Foundation.Keyboard.findFocusable(n.$element),t())})}():(this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay)),this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),Foundation.Keyboard.trapFocus(this.$element),this.$element.trigger("open.zf.reveal"),e(),setTimeout(function(){n._extraHandlers()},0)}},{key:"_extraHandlers",value:function(){var e=this;this.$element&&(this.focusableElements=Foundation.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||t("body").on("click.zf.reveal",function(n){n.target!==e.$element[0]&&!t.contains(e.$element[0],n.target)&&t.contains(document,n.target)&&e.close()}),this.options.closeOnEsc&&t(window).on("keydown.zf.reveal",function(t){Foundation.Keyboard.handleKey(t,"Reveal",{close:function(){e.options.closeOnEsc&&(e.close(),e.$anchor.focus())}})}),this.$element.on("keydown.zf.reveal",function(n){var i=t(this);Foundation.Keyboard.handleKey(n,"Reveal",{open:function(){e.$element.find(":focus").is(e.$element.find("[data-close]"))?setTimeout(function(){e.$anchor.focus()},1):i.is(e.focusableElements)&&e.open()},close:function(){e.options.closeOnEsc&&(e.close(),e.$anchor.focus())},handled:function(t){t&&n.preventDefault()}})}))}},{key:"close",value:function(){function e(){n.isMobile?(t("html, body").removeClass("is-reveal-open"),n.originalScrollPos&&(t("body").scrollTop(n.originalScrollPos),n.originalScrollPos=null)):t("body").removeClass("is-reveal-open"),Foundation.Keyboard.releaseFocus(n.$element),n.$element.attr("aria-hidden",!0),n.$element.trigger("closed.zf.reveal")}if(!this.isActive||!this.$element.is(":visible"))return!1;var n=this;this.options.animationOut?(this.options.overlay?Foundation.Motion.animateOut(this.$overlay,"fade-out",e):e(),Foundation.Motion.animateOut(this.$element,this.options.animationOut)):(this.options.overlay?this.$overlay.hide(0,e):e(),this.$element.hide(this.options.hideDelay)),this.options.closeOnEsc&&t(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&t("body").off("click.zf.reveal"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,n.options.deepLink&&(window.history.replaceState?window.history.replaceState("",document.title,window.location.href.replace("#"+this.id,"")):window.location.hash="")}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"destroy",value:function(){this.options.overlay&&(this.$element.appendTo(t(this.options.appendTo)),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),t(window).off(".zf.reveal:"+this.id),Foundation.unregisterPlugin(this)}}]),e}();o.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,btmOffsetPct:10,overlay:!0,resetOnClose:!1,deepLink:!1,appendTo:"body"},Foundation.plugin(o,"Reveal")}(jQuery); -------------------------------------------------------------------------------- /css/foundation.min.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}main{display:block}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}input{overflow:visible}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;display:table;max-width:100%;padding:0;color:inherit;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}details{display:block}summary{display:list-item}menu{display:block}canvas{display:inline-block}[hidden],template{display:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{box-sizing:border-box;font-size:100%}*,:after,:before{box-sizing:inherit}body{margin:0;padding:0;background:#fefefe;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;color:#0a0a0a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle;max-width:100%;height:auto;-ms-interpolation-mode:bicubic}textarea{height:auto;min-height:50px;border-radius:0}select{box-sizing:border-box;width:100%;border-radius:0}.map_canvas embed,.map_canvas img,.map_canvas object,.mqa-display embed,.mqa-display img,.mqa-display object{max-width:none!important}button{padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:0;background:transparent;line-height:1}[data-whatinput=mouse] button{outline:0}pre{overflow:auto}.is-visible{display:block!important}.is-hidden{display:none!important}blockquote,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,li,ol,p,pre,td,th,ul{margin:0;padding:0}p{margin-bottom:1rem;font-size:inherit;line-height:1.6;text-rendering:optimizeLegibility}em,i{font-style:italic}b,em,i,strong{line-height:inherit}b,strong{font-weight:700}small{font-size:80%;line-height:inherit}h1,h2,h3,h4,h5,h6{font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:400;color:inherit;text-rendering:optimizeLegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{line-height:0;color:#cacaca}h1{font-size:1.5rem}h1,h2{line-height:1.4;margin-top:0;margin-bottom:.5rem}h2{font-size:1.25rem}h3{font-size:1.1875rem}h3,h4{line-height:1.4;margin-top:0;margin-bottom:.5rem}h4{font-size:1.125rem}h5{font-size:1.0625rem}h5,h6{line-height:1.4;margin-top:0;margin-bottom:.5rem}h6{font-size:1rem}@media print,screen and (min-width:40em){h1{font-size:3rem}h2{font-size:2.5rem}h3{font-size:1.9375rem}h4{font-size:1.5625rem}h5{font-size:1.25rem}h6{font-size:1rem}}a{line-height:inherit;color:#1779ba;text-decoration:none;cursor:pointer}a:focus,a:hover{color:#1468a0}a img{border:0}hr{clear:both;max-width:75rem;height:0;margin:1.25rem auto;border-top:0;border-right:0;border-bottom:1px solid #cacaca;border-left:0}dl,ol,ul{margin-bottom:1rem;list-style-position:outside;line-height:1.6}li{font-size:inherit}ul{list-style-type:disc}ol,ul{margin-left:1.25rem}ol ol,ol ul,ul ol,ul ul{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:700}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.8125rem;color:#8a8a8a}cite:before{content:"— "}abbr{border-bottom:1px dotted #0a0a0a;color:#0a0a0a;cursor:help}figure{margin:0}code{padding:.125rem .3125rem .0625rem;border:1px solid #cacaca;font-weight:400}code,kbd{background-color:#e6e6e6;font-family:Consolas,Liberation Mono,Courier,monospace;color:#0a0a0a}kbd{margin:0;padding:.125rem .25rem 0}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:400;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print,screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print,screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none!important}@media print{*{background:transparent!important;box-shadow:none!important;color:#000!important;text-shadow:none!important}.show-for-print{display:block!important}.hide-for-print{display:none!important}table.show-for-print{display:table!important}thead.show-for-print{display:table-header-group!important}tbody.show-for-print{display:table-row-group!important}tr.show-for-print{display:table-row!important}td.show-for-print,th.show-for-print{display:table-cell!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}abbr[title]:after{content:" (" attr(title) ")"}blockquote,pre{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.row{max-width:75rem;margin-right:auto;margin-left:auto}.row:after,.row:before{display:table;content:" "}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-right:0;padding-left:0}.row .row{margin-right:-.625rem;margin-left:-.625rem}@media print,screen and (min-width:40em){.row .row{margin-right:-.9375rem;margin-left:-.9375rem}}@media print,screen and (min-width:64em){.row .row{margin-right:-.9375rem;margin-left:-.9375rem}}.row .row.collapse{margin-right:0;margin-left:0}.row.expanded{max-width:none}.row.expanded .row{margin-right:auto;margin-left:auto}.row:not(.expanded) .row{max-width:none}.row.gutter-small>.column,.row.gutter-small>.columns{padding-right:.625rem;padding-left:.625rem}.row.gutter-medium>.column,.row.gutter-medium>.columns{padding-right:.9375rem;padding-left:.9375rem}.column,.columns{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}@media print,screen and (min-width:40em){.column,.columns{padding-right:.9375rem;padding-left:.9375rem}}.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:right}.column.end:last-child:last-child,.end.columns:last-child:last-child{float:left}.column.row.row,.row.row.columns{float:none}.row .column.row.row,.row .row.row.columns{margin-right:0;margin-left:0;padding-right:0;padding-left:0}.small-1{width:8.33333%}.small-push-1{position:relative;left:8.33333%}.small-pull-1{position:relative;left:-8.33333%}.small-offset-0{margin-left:0}.small-2{width:16.66667%}.small-push-2{position:relative;left:16.66667%}.small-pull-2{position:relative;left:-16.66667%}.small-offset-1{margin-left:8.33333%}.small-3{width:25%}.small-push-3{position:relative;left:25%}.small-pull-3{position:relative;left:-25%}.small-offset-2{margin-left:16.66667%}.small-4{width:33.33333%}.small-push-4{position:relative;left:33.33333%}.small-pull-4{position:relative;left:-33.33333%}.small-offset-3{margin-left:25%}.small-5{width:41.66667%}.small-push-5{position:relative;left:41.66667%}.small-pull-5{position:relative;left:-41.66667%}.small-offset-4{margin-left:33.33333%}.small-6{width:50%}.small-push-6{position:relative;left:50%}.small-pull-6{position:relative;left:-50%}.small-offset-5{margin-left:41.66667%}.small-7{width:58.33333%}.small-push-7{position:relative;left:58.33333%}.small-pull-7{position:relative;left:-58.33333%}.small-offset-6{margin-left:50%}.small-8{width:66.66667%}.small-push-8{position:relative;left:66.66667%}.small-pull-8{position:relative;left:-66.66667%}.small-offset-7{margin-left:58.33333%}.small-9{width:75%}.small-push-9{position:relative;left:75%}.small-pull-9{position:relative;left:-75%}.small-offset-8{margin-left:66.66667%}.small-10{width:83.33333%}.small-push-10{position:relative;left:83.33333%}.small-pull-10{position:relative;left:-83.33333%}.small-offset-9{margin-left:75%}.small-11{width:91.66667%}.small-push-11{position:relative;left:91.66667%}.small-pull-11{position:relative;left:-91.66667%}.small-offset-10{margin-left:83.33333%}.small-12{width:100%}.small-offset-11{margin-left:91.66667%}.small-up-1>.column,.small-up-1>.columns{float:left;width:100%}.small-up-1>.column:nth-of-type(1n),.small-up-1>.columns:nth-of-type(1n){clear:none}.small-up-1>.column:nth-of-type(1n+1),.small-up-1>.columns:nth-of-type(1n+1){clear:both}.small-up-1>.column:last-child,.small-up-1>.columns:last-child{float:left}.small-up-2>.column,.small-up-2>.columns{float:left;width:50%}.small-up-2>.column:nth-of-type(1n),.small-up-2>.columns:nth-of-type(1n){clear:none}.small-up-2>.column:nth-of-type(2n+1),.small-up-2>.columns:nth-of-type(2n+1){clear:both}.small-up-2>.column:last-child,.small-up-2>.columns:last-child{float:left}.small-up-3>.column,.small-up-3>.columns{float:left;width:33.33333%}.small-up-3>.column:nth-of-type(1n),.small-up-3>.columns:nth-of-type(1n){clear:none}.small-up-3>.column:nth-of-type(3n+1),.small-up-3>.columns:nth-of-type(3n+1){clear:both}.small-up-3>.column:last-child,.small-up-3>.columns:last-child{float:left}.small-up-4>.column,.small-up-4>.columns{float:left;width:25%}.small-up-4>.column:nth-of-type(1n),.small-up-4>.columns:nth-of-type(1n){clear:none}.small-up-4>.column:nth-of-type(4n+1),.small-up-4>.columns:nth-of-type(4n+1){clear:both}.small-up-4>.column:last-child,.small-up-4>.columns:last-child{float:left}.small-up-5>.column,.small-up-5>.columns{float:left;width:20%}.small-up-5>.column:nth-of-type(1n),.small-up-5>.columns:nth-of-type(1n){clear:none}.small-up-5>.column:nth-of-type(5n+1),.small-up-5>.columns:nth-of-type(5n+1){clear:both}.small-up-5>.column:last-child,.small-up-5>.columns:last-child{float:left}.small-up-6>.column,.small-up-6>.columns{float:left;width:16.66667%}.small-up-6>.column:nth-of-type(1n),.small-up-6>.columns:nth-of-type(1n){clear:none}.small-up-6>.column:nth-of-type(6n+1),.small-up-6>.columns:nth-of-type(6n+1){clear:both}.small-up-6>.column:last-child,.small-up-6>.columns:last-child{float:left}.small-up-7>.column,.small-up-7>.columns{float:left;width:14.28571%}.small-up-7>.column:nth-of-type(1n),.small-up-7>.columns:nth-of-type(1n){clear:none}.small-up-7>.column:nth-of-type(7n+1),.small-up-7>.columns:nth-of-type(7n+1){clear:both}.small-up-7>.column:last-child,.small-up-7>.columns:last-child{float:left}.small-up-8>.column,.small-up-8>.columns{float:left;width:12.5%}.small-up-8>.column:nth-of-type(1n),.small-up-8>.columns:nth-of-type(1n){clear:none}.small-up-8>.column:nth-of-type(8n+1),.small-up-8>.columns:nth-of-type(8n+1){clear:both}.small-up-8>.column:last-child,.small-up-8>.columns:last-child{float:left}.small-collapse>.column,.small-collapse>.columns{padding-right:0;padding-left:0}.expanded.row .small-collapse.row,.small-collapse .row{margin-right:0;margin-left:0}.small-uncollapse>.column,.small-uncollapse>.columns{padding-right:.625rem;padding-left:.625rem}.small-centered{margin-right:auto;margin-left:auto}.small-centered,.small-centered:last-child:not(:first-child){float:none;clear:both}.small-pull-0,.small-push-0,.small-uncentered{position:static;float:left;margin-right:0;margin-left:0}@media print,screen and (min-width:40em){.medium-1{width:8.33333%}.medium-push-1{position:relative;left:8.33333%}.medium-pull-1{position:relative;left:-8.33333%}.medium-offset-0{margin-left:0}.medium-2{width:16.66667%}.medium-push-2{position:relative;left:16.66667%}.medium-pull-2{position:relative;left:-16.66667%}.medium-offset-1{margin-left:8.33333%}.medium-3{width:25%}.medium-push-3{position:relative;left:25%}.medium-pull-3{position:relative;left:-25%}.medium-offset-2{margin-left:16.66667%}.medium-4{width:33.33333%}.medium-push-4{position:relative;left:33.33333%}.medium-pull-4{position:relative;left:-33.33333%}.medium-offset-3{margin-left:25%}.medium-5{width:41.66667%}.medium-push-5{position:relative;left:41.66667%}.medium-pull-5{position:relative;left:-41.66667%}.medium-offset-4{margin-left:33.33333%}.medium-6{width:50%}.medium-push-6{position:relative;left:50%}.medium-pull-6{position:relative;left:-50%}.medium-offset-5{margin-left:41.66667%}.medium-7{width:58.33333%}.medium-push-7{position:relative;left:58.33333%}.medium-pull-7{position:relative;left:-58.33333%}.medium-offset-6{margin-left:50%}.medium-8{width:66.66667%}.medium-push-8{position:relative;left:66.66667%}.medium-pull-8{position:relative;left:-66.66667%}.medium-offset-7{margin-left:58.33333%}.medium-9{width:75%}.medium-push-9{position:relative;left:75%}.medium-pull-9{position:relative;left:-75%}.medium-offset-8{margin-left:66.66667%}.medium-10{width:83.33333%}.medium-push-10{position:relative;left:83.33333%}.medium-pull-10{position:relative;left:-83.33333%}.medium-offset-9{margin-left:75%}.medium-11{width:91.66667%}.medium-push-11{position:relative;left:91.66667%}.medium-pull-11{position:relative;left:-91.66667%}.medium-offset-10{margin-left:83.33333%}.medium-12{width:100%}.medium-offset-11{margin-left:91.66667%}.medium-up-1>.column,.medium-up-1>.columns{float:left;width:100%}.medium-up-1>.column:nth-of-type(1n),.medium-up-1>.columns:nth-of-type(1n){clear:none}.medium-up-1>.column:nth-of-type(1n+1),.medium-up-1>.columns:nth-of-type(1n+1){clear:both}.medium-up-1>.column:last-child,.medium-up-1>.columns:last-child{float:left}.medium-up-2>.column,.medium-up-2>.columns{float:left;width:50%}.medium-up-2>.column:nth-of-type(1n),.medium-up-2>.columns:nth-of-type(1n){clear:none}.medium-up-2>.column:nth-of-type(2n+1),.medium-up-2>.columns:nth-of-type(2n+1){clear:both}.medium-up-2>.column:last-child,.medium-up-2>.columns:last-child{float:left}.medium-up-3>.column,.medium-up-3>.columns{float:left;width:33.33333%}.medium-up-3>.column:nth-of-type(1n),.medium-up-3>.columns:nth-of-type(1n){clear:none}.medium-up-3>.column:nth-of-type(3n+1),.medium-up-3>.columns:nth-of-type(3n+1){clear:both}.medium-up-3>.column:last-child,.medium-up-3>.columns:last-child{float:left}.medium-up-4>.column,.medium-up-4>.columns{float:left;width:25%}.medium-up-4>.column:nth-of-type(1n),.medium-up-4>.columns:nth-of-type(1n){clear:none}.medium-up-4>.column:nth-of-type(4n+1),.medium-up-4>.columns:nth-of-type(4n+1){clear:both}.medium-up-4>.column:last-child,.medium-up-4>.columns:last-child{float:left}.medium-up-5>.column,.medium-up-5>.columns{float:left;width:20%}.medium-up-5>.column:nth-of-type(1n),.medium-up-5>.columns:nth-of-type(1n){clear:none}.medium-up-5>.column:nth-of-type(5n+1),.medium-up-5>.columns:nth-of-type(5n+1){clear:both}.medium-up-5>.column:last-child,.medium-up-5>.columns:last-child{float:left}.medium-up-6>.column,.medium-up-6>.columns{float:left;width:16.66667%}.medium-up-6>.column:nth-of-type(1n),.medium-up-6>.columns:nth-of-type(1n){clear:none}.medium-up-6>.column:nth-of-type(6n+1),.medium-up-6>.columns:nth-of-type(6n+1){clear:both}.medium-up-6>.column:last-child,.medium-up-6>.columns:last-child{float:left}.medium-up-7>.column,.medium-up-7>.columns{float:left;width:14.28571%}.medium-up-7>.column:nth-of-type(1n),.medium-up-7>.columns:nth-of-type(1n){clear:none}.medium-up-7>.column:nth-of-type(7n+1),.medium-up-7>.columns:nth-of-type(7n+1){clear:both}.medium-up-7>.column:last-child,.medium-up-7>.columns:last-child{float:left}.medium-up-8>.column,.medium-up-8>.columns{float:left;width:12.5%}.medium-up-8>.column:nth-of-type(1n),.medium-up-8>.columns:nth-of-type(1n){clear:none}.medium-up-8>.column:nth-of-type(8n+1),.medium-up-8>.columns:nth-of-type(8n+1){clear:both}.medium-up-8>.column:last-child,.medium-up-8>.columns:last-child{float:left}.medium-collapse>.column,.medium-collapse>.columns{padding-right:0;padding-left:0}.expanded.row .medium-collapse.row,.medium-collapse .row{margin-right:0;margin-left:0}.medium-uncollapse>.column,.medium-uncollapse>.columns{padding-right:.9375rem;padding-left:.9375rem}.medium-centered{margin-right:auto;margin-left:auto}.medium-centered,.medium-centered:last-child:not(:first-child){float:none;clear:both}.medium-pull-0,.medium-push-0,.medium-uncentered{position:static;float:left;margin-right:0;margin-left:0}}@media print,screen and (min-width:64em){.large-1{width:8.33333%}.large-push-1{position:relative;left:8.33333%}.large-pull-1{position:relative;left:-8.33333%}.large-offset-0{margin-left:0}.large-2{width:16.66667%}.large-push-2{position:relative;left:16.66667%}.large-pull-2{position:relative;left:-16.66667%}.large-offset-1{margin-left:8.33333%}.large-3{width:25%}.large-push-3{position:relative;left:25%}.large-pull-3{position:relative;left:-25%}.large-offset-2{margin-left:16.66667%}.large-4{width:33.33333%}.large-push-4{position:relative;left:33.33333%}.large-pull-4{position:relative;left:-33.33333%}.large-offset-3{margin-left:25%}.large-5{width:41.66667%}.large-push-5{position:relative;left:41.66667%}.large-pull-5{position:relative;left:-41.66667%}.large-offset-4{margin-left:33.33333%}.large-6{width:50%}.large-push-6{position:relative;left:50%}.large-pull-6{position:relative;left:-50%}.large-offset-5{margin-left:41.66667%}.large-7{width:58.33333%}.large-push-7{position:relative;left:58.33333%}.large-pull-7{position:relative;left:-58.33333%}.large-offset-6{margin-left:50%}.large-8{width:66.66667%}.large-push-8{position:relative;left:66.66667%}.large-pull-8{position:relative;left:-66.66667%}.large-offset-7{margin-left:58.33333%}.large-9{width:75%}.large-push-9{position:relative;left:75%}.large-pull-9{position:relative;left:-75%}.large-offset-8{margin-left:66.66667%}.large-10{width:83.33333%}.large-push-10{position:relative;left:83.33333%}.large-pull-10{position:relative;left:-83.33333%}.large-offset-9{margin-left:75%}.large-11{width:91.66667%}.large-push-11{position:relative;left:91.66667%}.large-pull-11{position:relative;left:-91.66667%}.large-offset-10{margin-left:83.33333%}.large-12{width:100%}.large-offset-11{margin-left:91.66667%}.large-up-1>.column,.large-up-1>.columns{float:left;width:100%}.large-up-1>.column:nth-of-type(1n),.large-up-1>.columns:nth-of-type(1n){clear:none}.large-up-1>.column:nth-of-type(1n+1),.large-up-1>.columns:nth-of-type(1n+1){clear:both}.large-up-1>.column:last-child,.large-up-1>.columns:last-child{float:left}.large-up-2>.column,.large-up-2>.columns{float:left;width:50%}.large-up-2>.column:nth-of-type(1n),.large-up-2>.columns:nth-of-type(1n){clear:none}.large-up-2>.column:nth-of-type(2n+1),.large-up-2>.columns:nth-of-type(2n+1){clear:both}.large-up-2>.column:last-child,.large-up-2>.columns:last-child{float:left}.large-up-3>.column,.large-up-3>.columns{float:left;width:33.33333%}.large-up-3>.column:nth-of-type(1n),.large-up-3>.columns:nth-of-type(1n){clear:none}.large-up-3>.column:nth-of-type(3n+1),.large-up-3>.columns:nth-of-type(3n+1){clear:both}.large-up-3>.column:last-child,.large-up-3>.columns:last-child{float:left}.large-up-4>.column,.large-up-4>.columns{float:left;width:25%}.large-up-4>.column:nth-of-type(1n),.large-up-4>.columns:nth-of-type(1n){clear:none}.large-up-4>.column:nth-of-type(4n+1),.large-up-4>.columns:nth-of-type(4n+1){clear:both}.large-up-4>.column:last-child,.large-up-4>.columns:last-child{float:left}.large-up-5>.column,.large-up-5>.columns{float:left;width:20%}.large-up-5>.column:nth-of-type(1n),.large-up-5>.columns:nth-of-type(1n){clear:none}.large-up-5>.column:nth-of-type(5n+1),.large-up-5>.columns:nth-of-type(5n+1){clear:both}.large-up-5>.column:last-child,.large-up-5>.columns:last-child{float:left}.large-up-6>.column,.large-up-6>.columns{float:left;width:16.66667%}.large-up-6>.column:nth-of-type(1n),.large-up-6>.columns:nth-of-type(1n){clear:none}.large-up-6>.column:nth-of-type(6n+1),.large-up-6>.columns:nth-of-type(6n+1){clear:both}.large-up-6>.column:last-child,.large-up-6>.columns:last-child{float:left}.large-up-7>.column,.large-up-7>.columns{float:left;width:14.28571%}.large-up-7>.column:nth-of-type(1n),.large-up-7>.columns:nth-of-type(1n){clear:none}.large-up-7>.column:nth-of-type(7n+1),.large-up-7>.columns:nth-of-type(7n+1){clear:both}.large-up-7>.column:last-child,.large-up-7>.columns:last-child{float:left}.large-up-8>.column,.large-up-8>.columns{float:left;width:12.5%}.large-up-8>.column:nth-of-type(1n),.large-up-8>.columns:nth-of-type(1n){clear:none}.large-up-8>.column:nth-of-type(8n+1),.large-up-8>.columns:nth-of-type(8n+1){clear:both}.large-up-8>.column:last-child,.large-up-8>.columns:last-child{float:left}.large-collapse>.column,.large-collapse>.columns{padding-right:0;padding-left:0}.expanded.row .large-collapse.row,.large-collapse .row{margin-right:0;margin-left:0}.large-uncollapse>.column,.large-uncollapse>.columns{padding-right:.9375rem;padding-left:.9375rem}.large-centered{margin-right:auto;margin-left:auto}.large-centered,.large-centered:last-child:not(:first-child){float:none;clear:both}.large-pull-0,.large-push-0,.large-uncentered{position:static;float:left;margin-right:0;margin-left:0}}.column-block{margin-bottom:1.25rem}.column-block>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.column-block{margin-bottom:1.875rem}.column-block>:last-child{margin-bottom:0}}[type=color],[type=date],[type=datetime-local],[type=datetime],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;margin:0 0 1rem;padding:.5rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;box-shadow:inset 0 1px 2px hsla(0,0%,4%,.1);font-family:inherit;font-size:1rem;font-weight:400;color:#0a0a0a;transition:box-shadow .5s,border-color .25s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}[type=color]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=datetime]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,textarea:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;box-shadow:0 0 5px #cacaca;transition:box-shadow .5s,border-color .25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#cacaca}input::-moz-placeholder,textarea::-moz-placeholder{color:#cacaca}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#cacaca}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=button],[type=submit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=search]{box-sizing:border-box}[type=checkbox],[type=file],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;vertical-align:baseline;margin-left:.5rem;margin-right:1rem;margin-bottom:0}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:400;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:table;width:100%;margin-bottom:1rem}.input-group>:first-child,.input-group>:last-child>*{border-radius:0 0 0 0}.input-group-button,.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label,.input-group-field,.input-group-label{margin:0;white-space:nowrap;display:table-cell;vertical-align:middle}.input-group-label{padding:0 1rem;border:1px solid #cacaca;background:#e6e6e6;color:#0a0a0a;text-align:center;white-space:nowrap;width:1%;height:100%}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;height:2.5rem}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;width:1%;height:100%}.input-group-button a,.input-group-button button,.input-group-button input,.input-group-button label{height:2.5rem;padding-top:0;padding-bottom:0;font-size:1rem}.input-group .input-group-button{display:table-cell}fieldset{margin:0;padding:0;border:0}legend{max-width:100%;margin-bottom:.5rem}.fieldset{margin:1.125rem 0;padding:1.25rem;border:1px solid #cacaca}.fieldset legend{margin:0;margin-left:-.1875rem;padding:0 .1875rem;background:#fefefe}select{height:2.4375rem;margin:0 0 1rem;padding:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;font-family:inherit;font-size:1rem;line-height:normal;color:#0a0a0a;background-image:url("data:image/svg+xml;utf8,");background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;padding-right:1.5rem;transition:box-shadow .5s,border-color .25s ease-in-out}@media screen and (min-width:0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;box-shadow:0 0 5px #cacaca;transition:box-shadow .5s,border-color .25s ease-in-out}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){border-color:#cc4b37;background-color:#f9ecea}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.form-error,.is-invalid-input:not(:focus)::placeholder,.is-invalid-label{color:#cc4b37}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:700}.form-error.is-visible{display:block}.button{display:inline-block;vertical-align:middle;margin:0 0 1rem;padding:.85em 1em;-webkit-appearance:none;border:1px solid transparent;border-radius:0;transition:background-color .25s ease-out,color .25s ease-out;font-size:.9rem;line-height:1;text-align:center;cursor:pointer;background-color:#1779ba;color:#fefefe}[data-whatinput=mouse] .button{outline:0}.button:focus,.button:hover{background-color:#14679e;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-right:0;margin-left:0}.button.primary{background-color:#1779ba;color:#fefefe}.button.primary:focus,.button.primary:hover{background-color:#126195;color:#fefefe}.button.secondary{background-color:#767676;color:#fefefe}.button.secondary:focus,.button.secondary:hover{background-color:#5e5e5e;color:#fefefe}.button.success{background-color:#3adb76;color:#0a0a0a}.button.success:focus,.button.success:hover{background-color:#22bb5b;color:#0a0a0a}.button.warning{background-color:#ffae00;color:#0a0a0a}.button.warning:focus,.button.warning:hover{background-color:#cc8b00;color:#0a0a0a}.button.alert{background-color:#cc4b37;color:#fefefe}.button.alert:focus,.button.alert:hover{background-color:#a53b2a;color:#fefefe}.button.hollow{border:1px solid #1779ba;color:#1779ba}.button.hollow,.button.hollow:focus,.button.hollow:hover{background-color:transparent}.button.hollow:focus,.button.hollow:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:focus,.button.hollow.primary:hover{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.secondary{border:1px solid #767676;color:#767676}.button.hollow.secondary:focus,.button.hollow.secondary:hover{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:focus,.button.hollow.success:hover{border-color:#157539;color:#157539}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:focus,.button.hollow.warning:hover{border-color:#805700;color:#805700}.button.hollow.alert{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:focus,.button.hollow.alert:hover{border-color:#67251a;color:#67251a}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled,.button.disabled:focus,.button.disabled:hover,.button[disabled],.button[disabled]:focus,.button[disabled]:hover{background-color:#1779ba;color:#fefefe}.button.disabled.primary,.button[disabled].primary{opacity:.25;cursor:not-allowed}.button.disabled.primary,.button.disabled.primary:focus,.button.disabled.primary:hover,.button[disabled].primary,.button[disabled].primary:focus,.button[disabled].primary:hover{background-color:#1779ba;color:#fefefe}.button.disabled.secondary,.button[disabled].secondary{opacity:.25;cursor:not-allowed}.button.disabled.secondary,.button.disabled.secondary:focus,.button.disabled.secondary:hover,.button[disabled].secondary,.button[disabled].secondary:focus,.button[disabled].secondary:hover{background-color:#767676;color:#fefefe}.button.disabled.success,.button[disabled].success{opacity:.25;cursor:not-allowed}.button.disabled.success,.button.disabled.success:focus,.button.disabled.success:hover,.button[disabled].success,.button[disabled].success:focus,.button[disabled].success:hover{background-color:#3adb76;color:#0a0a0a}.button.disabled.warning,.button[disabled].warning{opacity:.25;cursor:not-allowed}.button.disabled.warning,.button.disabled.warning:focus,.button.disabled.warning:hover,.button[disabled].warning,.button[disabled].warning:focus,.button[disabled].warning:hover{background-color:#ffae00;color:#0a0a0a}.button.disabled.alert,.button[disabled].alert{opacity:.25;cursor:not-allowed}.button.disabled.alert,.button.disabled.alert:focus,.button.disabled.alert:hover,.button[disabled].alert,.button[disabled].alert:focus,.button[disabled].alert:hover{background-color:#cc4b37;color:#fefefe}.button.dropdown:after{display:block;width:0;height:0;border:.4em inset;content:"";border-bottom-width:0;border-top-style:solid;border-color:#fefefe transparent transparent;position:relative;top:.4em;display:inline-block;float:right;margin-left:1em}.button.arrow-only:after{top:-.1em;float:none;margin-left:0}.callout{position:relative;margin:0 0 1rem;padding:1rem;border:1px solid hsla(0,0%,4%,.25);border-radius:0;background-color:#fff;color:#0a0a0a}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding:.5rem}.callout.large{padding:3rem}body.is-reveal-open{overflow:hidden}html.is-reveal-open,html.is-reveal-open body{min-height:100%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reveal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;display:none;background-color:hsla(0,0%,4%,.45);overflow-y:scroll}.reveal{z-index:2;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none;padding:1rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;position:relative;top:100px;margin-right:auto;margin-left:auto;overflow-y:auto}[data-whatinput=mouse] .reveal{outline:0}@media print,screen and (min-width:40em){.reveal{min-height:0}}.reveal .column,.reveal .columns{min-width:0}.reveal>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.reveal{width:600px;max-width:75rem}}@media print,screen and (min-width:40em){.reveal .reveal{right:auto;left:auto;margin:0 auto}}.reveal.collapse{padding:0}@media print,screen and (min-width:40em){.reveal.tiny{width:30%;max-width:75rem}}@media print,screen and (min-width:40em){.reveal.small{width:50%;max-width:75rem}}@media print,screen and (min-width:40em){.reveal.large{width:90%;max-width:75rem}}.reveal.full{top:0;left:0;width:100%;max-width:none;height:100%;height:100vh;min-height:100vh;margin-left:0;border:0;border-radius:0}@media screen and (max-width:39.9375em){.reveal{top:0;left:0;width:100%;max-width:none;height:100%;height:100vh;min-height:100vh;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.slide-in-down.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:translateY(-100%);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-down.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-left.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:translateX(-100%);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-left.mui-enter.mui-enter-active{transform:translateX(0)}.slide-in-up.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:translateY(100%);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-up.mui-enter.mui-enter-active{transform:translateY(0)}.slide-in-right.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:translateX(100%);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-right.mui-enter.mui-enter-active{transform:translateX(0)}.slide-out-down.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:translateY(0);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-down.mui-leave.mui-leave-active{transform:translateY(100%)}.slide-out-right.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:translateX(0);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-right.mui-leave.mui-leave-active{transform:translateX(100%)}.slide-out-up.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:translateY(0);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-up.mui-leave.mui-leave-active{transform:translateY(-100%)}.slide-out-left.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:translateX(0);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-left.mui-leave.mui-leave-active{transform:translateX(-100%)}.fade-in.mui-enter{transition-duration:.5s;transition-timing-function:linear;opacity:0;transition-property:opacity}.fade-in.mui-enter.mui-enter-active{opacity:1}.fade-out.mui-leave{transition-duration:.5s;transition-timing-function:linear;opacity:1;transition-property:opacity}.fade-out.mui-leave.mui-leave-active{opacity:0}.hinge-in-from-top.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:top;transition-property:transform,opacity;opacity:0}.hinge-in-from-top.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-right.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:right;transition-property:transform,opacity;opacity:0}.hinge-in-from-right.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-bottom.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateX(90deg);transform-origin:bottom;transition-property:transform,opacity;opacity:0}.hinge-in-from-bottom.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-left.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateY(90deg);transform-origin:left;transition-property:transform,opacity;opacity:0}.hinge-in-from-left.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-x.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);transform-origin:center;transition-property:transform,opacity;opacity:0}.hinge-in-from-middle-x.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-y.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);transform-origin:center;transition-property:transform,opacity;opacity:0}.hinge-in-from-middle-y.mui-enter.mui-enter-active,.hinge-out-from-top.mui-leave{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-out-from-top.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform-origin:top;transition-property:transform,opacity}.hinge-out-from-top.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-right.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:right;transition-property:transform,opacity;opacity:1}.hinge-out-from-right.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.hinge-out-from-bottom.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:bottom;transition-property:transform,opacity;opacity:1}.hinge-out-from-bottom.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(90deg);opacity:0}.hinge-out-from-left.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:left;transition-property:transform,opacity;opacity:1}.hinge-out-from-left.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(90deg);opacity:0}.hinge-out-from-middle-x.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform,opacity;opacity:1}.hinge-out-from-middle-x.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-middle-y.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);transform-origin:center;transition-property:transform,opacity;opacity:1}.hinge-out-from-middle-y.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.scale-in-up.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:scale(.5);transition-property:transform,opacity;opacity:0}.scale-in-up.mui-enter.mui-enter-active{transform:scale(1);opacity:1}.scale-in-down.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:scale(1.5);transition-property:transform,opacity;opacity:0}.scale-in-down.mui-enter.mui-enter-active,.scale-out-up.mui-leave{transform:scale(1);opacity:1}.scale-out-up.mui-leave{transition-duration:.5s;transition-timing-function:linear;transition-property:transform,opacity}.scale-out-up.mui-leave.mui-leave-active{transform:scale(1.5);opacity:0}.scale-out-down.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:scale(1);transition-property:transform,opacity;opacity:1}.scale-out-down.mui-leave.mui-leave-active{transform:scale(.5);opacity:0}.spin-in.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:rotate(-270deg);transition-property:transform,opacity;opacity:0}.spin-in.mui-enter.mui-enter-active,.spin-out.mui-leave{transform:rotate(0);opacity:1}.spin-out.mui-leave{transition-duration:.5s;transition-timing-function:linear;transition-property:transform,opacity}.spin-in-ccw.mui-enter,.spin-out.mui-leave.mui-leave-active{transform:rotate(270deg);opacity:0}.spin-in-ccw.mui-enter{transition-duration:.5s;transition-timing-function:linear;transition-property:transform,opacity}.spin-in-ccw.mui-enter.mui-enter-active,.spin-out-ccw.mui-leave{transform:rotate(0);opacity:1}.spin-out-ccw.mui-leave{transition-duration:.5s;transition-timing-function:linear;transition-property:transform,opacity}.spin-out-ccw.mui-leave.mui-leave-active{transform:rotate(-270deg);opacity:0}.slow{transition-duration:.75s!important}.fast{transition-duration:.25s!important}.linear{transition-timing-function:linear!important}.ease{transition-timing-function:ease!important}.ease-in{transition-timing-function:ease-in!important}.ease-out{transition-timing-function:ease-out!important}.ease-in-out{transition-timing-function:ease-in-out!important}.bounce-in{transition-timing-function:cubic-bezier(.485,.155,.24,1.245)!important}.bounce-out{transition-timing-function:cubic-bezier(.485,.155,.515,.845)!important}.bounce-in-out{transition-timing-function:cubic-bezier(.76,-.245,.24,1.245)!important}.short-delay{transition-delay:.3s!important}.long-delay{transition-delay:.7s!important}.shake{animation-name:a}@keyframes a{0%,10%,20%,30%,40%,50%,60%,70%,80%,90%{transform:translateX(7%)}5%,15%,25%,35%,45%,55%,65%,75%,85%,95%{transform:translateX(-7%)}}.spin-ccw,.spin-cw{animation-name:b}@keyframes b{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.wiggle{animation-name:c}@keyframes c{40%,50%,60%{transform:rotate(7deg)}35%,45%,55%,65%{transform:rotate(-7deg)}0%,30%,70%,to{transform:rotate(0)}}.shake,.spin-ccw,.spin-cw,.wiggle{animation-duration:.5s}.infinite{animation-iteration-count:infinite}.slow{animation-duration:.75s!important}.fast{animation-duration:.25s!important}.linear{animation-timing-function:linear!important}.ease{animation-timing-function:ease!important}.ease-in{animation-timing-function:ease-in!important}.ease-out{animation-timing-function:ease-out!important}.ease-in-out{animation-timing-function:ease-in-out!important}.bounce-in{animation-timing-function:cubic-bezier(.485,.155,.24,1.245)!important}.bounce-out{animation-timing-function:cubic-bezier(.485,.155,.515,.845)!important}.bounce-in-out{animation-timing-function:cubic-bezier(.76,-.245,.24,1.245)!important}.short-delay{animation-delay:.3s!important}.long-delay{animation-delay:.7s!important} -------------------------------------------------------------------------------- /js/vendor/foundation.js: -------------------------------------------------------------------------------- 1 | !function ($) { 2 | 3 | "use strict"; 4 | 5 | var FOUNDATION_VERSION = '6.3.1'; 6 | 7 | // Global Foundation object 8 | // This is attached to the window, or used as a module for AMD/Browserify 9 | var Foundation = { 10 | version: FOUNDATION_VERSION, 11 | 12 | /** 13 | * Stores initialized plugins. 14 | */ 15 | _plugins: {}, 16 | 17 | /** 18 | * Stores generated unique ids for plugin instances 19 | */ 20 | _uuids: [], 21 | 22 | /** 23 | * Returns a boolean for RTL support 24 | */ 25 | rtl: function () { 26 | return $('html').attr('dir') === 'rtl'; 27 | }, 28 | /** 29 | * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing. 30 | * @param {Object} plugin - The constructor of the plugin. 31 | */ 32 | plugin: function (plugin, name) { 33 | // Object key to use when adding to global Foundation object 34 | // Examples: Foundation.Reveal, Foundation.OffCanvas 35 | var className = name || functionName(plugin); 36 | // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin 37 | // Examples: data-reveal, data-off-canvas 38 | var attrName = hyphenate(className); 39 | 40 | // Add to the Foundation object and the plugins list (for reflowing) 41 | this._plugins[attrName] = this[className] = plugin; 42 | }, 43 | /** 44 | * @function 45 | * Populates the _uuids array with pointers to each individual plugin instance. 46 | * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls. 47 | * Also fires the initialization event for each plugin, consolidating repetitive code. 48 | * @param {Object} plugin - an instance of a plugin, usually `this` in context. 49 | * @param {String} name - the name of the plugin, passed as a camelCased string. 50 | * @fires Plugin#init 51 | */ 52 | registerPlugin: function (plugin, name) { 53 | var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase(); 54 | plugin.uuid = this.GetYoDigits(6, pluginName); 55 | 56 | if (!plugin.$element.attr('data-' + pluginName)) { 57 | plugin.$element.attr('data-' + pluginName, plugin.uuid); 58 | } 59 | if (!plugin.$element.data('zfPlugin')) { 60 | plugin.$element.data('zfPlugin', plugin); 61 | } 62 | /** 63 | * Fires when the plugin has initialized. 64 | * @event Plugin#init 65 | */ 66 | plugin.$element.trigger('init.zf.' + pluginName); 67 | 68 | this._uuids.push(plugin.uuid); 69 | 70 | return; 71 | }, 72 | /** 73 | * @function 74 | * Removes the plugins uuid from the _uuids array. 75 | * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute. 76 | * Also fires the destroyed event for the plugin, consolidating repetitive code. 77 | * @param {Object} plugin - an instance of a plugin, usually `this` in context. 78 | * @fires Plugin#destroyed 79 | */ 80 | unregisterPlugin: function (plugin) { 81 | var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor)); 82 | 83 | this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1); 84 | plugin.$element.removeAttr('data-' + pluginName).removeData('zfPlugin') 85 | /** 86 | * Fires when the plugin has been destroyed. 87 | * @event Plugin#destroyed 88 | */ 89 | .trigger('destroyed.zf.' + pluginName); 90 | for (var prop in plugin) { 91 | plugin[prop] = null; //clean up script to prep for garbage collection. 92 | } 93 | return; 94 | }, 95 | 96 | /** 97 | * @function 98 | * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc. 99 | * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'` 100 | * @default If no argument is passed, reflow all currently active plugins. 101 | */ 102 | reInit: function (plugins) { 103 | var isJQ = plugins instanceof $; 104 | try { 105 | if (isJQ) { 106 | plugins.each(function () { 107 | $(this).data('zfPlugin')._init(); 108 | }); 109 | } else { 110 | var type = typeof plugins, 111 | _this = this, 112 | fns = { 113 | 'object': function (plgs) { 114 | plgs.forEach(function (p) { 115 | p = hyphenate(p); 116 | $('[data-' + p + ']').foundation('_init'); 117 | }); 118 | }, 119 | 'string': function () { 120 | plugins = hyphenate(plugins); 121 | $('[data-' + plugins + ']').foundation('_init'); 122 | }, 123 | 'undefined': function () { 124 | this['object'](Object.keys(_this._plugins)); 125 | } 126 | }; 127 | fns[type](plugins); 128 | } 129 | } catch (err) { 130 | console.error(err); 131 | } finally { 132 | return plugins; 133 | } 134 | }, 135 | 136 | /** 137 | * returns a random base-36 uid with namespacing 138 | * @function 139 | * @param {Number} length - number of random base-36 digits desired. Increase for more random strings. 140 | * @param {String} namespace - name of plugin to be incorporated in uid, optional. 141 | * @default {String} '' - if no plugin name is provided, nothing is appended to the uid. 142 | * @returns {String} - unique id 143 | */ 144 | GetYoDigits: function (length, namespace) { 145 | length = length || 6; 146 | return Math.round(Math.pow(36, length + 1) - Math.random() * Math.pow(36, length)).toString(36).slice(1) + (namespace ? '-' + namespace : ''); 147 | }, 148 | /** 149 | * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized. 150 | * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object. 151 | * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything. 152 | */ 153 | reflow: function (elem, plugins) { 154 | 155 | // If plugins is undefined, just grab everything 156 | if (typeof plugins === 'undefined') { 157 | plugins = Object.keys(this._plugins); 158 | } 159 | // If plugins is a string, convert it to an array with one item 160 | else if (typeof plugins === 'string') { 161 | plugins = [plugins]; 162 | } 163 | 164 | var _this = this; 165 | 166 | // Iterate through each plugin 167 | $.each(plugins, function (i, name) { 168 | // Get the current plugin 169 | var plugin = _this._plugins[name]; 170 | 171 | // Localize the search to all elements inside elem, as well as elem itself, unless elem === document 172 | var $elem = $(elem).find('[data-' + name + ']').addBack('[data-' + name + ']'); 173 | 174 | // For each plugin found, initialize it 175 | $elem.each(function () { 176 | var $el = $(this), 177 | opts = {}; 178 | // Don't double-dip on plugins 179 | if ($el.data('zfPlugin')) { 180 | console.warn("Tried to initialize " + name + " on an element that already has a Foundation plugin."); 181 | return; 182 | } 183 | 184 | if ($el.attr('data-options')) { 185 | var thing = $el.attr('data-options').split(';').forEach(function (e, i) { 186 | var opt = e.split(':').map(function (el) { 187 | return el.trim(); 188 | }); 189 | if (opt[0]) opts[opt[0]] = parseValue(opt[1]); 190 | }); 191 | } 192 | try { 193 | $el.data('zfPlugin', new plugin($(this), opts)); 194 | } catch (er) { 195 | console.error(er); 196 | } finally { 197 | return; 198 | } 199 | }); 200 | }); 201 | }, 202 | getFnName: functionName, 203 | transitionend: function ($elem) { 204 | var transitions = { 205 | 'transition': 'transitionend', 206 | 'WebkitTransition': 'webkitTransitionEnd', 207 | 'MozTransition': 'transitionend', 208 | 'OTransition': 'otransitionend' 209 | }; 210 | var elem = document.createElement('div'), 211 | end; 212 | 213 | for (var t in transitions) { 214 | if (typeof elem.style[t] !== 'undefined') { 215 | end = transitions[t]; 216 | } 217 | } 218 | if (end) { 219 | return end; 220 | } else { 221 | end = setTimeout(function () { 222 | $elem.triggerHandler('transitionend', [$elem]); 223 | }, 1); 224 | return 'transitionend'; 225 | } 226 | } 227 | }; 228 | 229 | Foundation.util = { 230 | /** 231 | * Function for applying a debounce effect to a function call. 232 | * @function 233 | * @param {Function} func - Function to be called at end of timeout. 234 | * @param {Number} delay - Time in ms to delay the call of `func`. 235 | * @returns function 236 | */ 237 | throttle: function (func, delay) { 238 | var timer = null; 239 | 240 | return function () { 241 | var context = this, 242 | args = arguments; 243 | 244 | if (timer === null) { 245 | timer = setTimeout(function () { 246 | func.apply(context, args); 247 | timer = null; 248 | }, delay); 249 | } 250 | }; 251 | } 252 | }; 253 | 254 | // TODO: consider not making this a jQuery function 255 | // TODO: need way to reflow vs. re-initialize 256 | /** 257 | * The Foundation jQuery method. 258 | * @param {String|Array} method - An action to perform on the current jQuery object. 259 | */ 260 | var foundation = function (method) { 261 | var type = typeof method, 262 | $meta = $('meta.foundation-mq'), 263 | $noJS = $('.no-js'); 264 | 265 | if (!$meta.length) { 266 | $('').appendTo(document.head); 267 | } 268 | if ($noJS.length) { 269 | $noJS.removeClass('no-js'); 270 | } 271 | 272 | if (type === 'undefined') { 273 | //needs to initialize the Foundation object, or an individual plugin. 274 | Foundation.MediaQuery._init(); 275 | Foundation.reflow(this); 276 | } else if (type === 'string') { 277 | //an individual method to invoke on a plugin or group of plugins 278 | var args = Array.prototype.slice.call(arguments, 1); //collect all the arguments, if necessary 279 | var plugClass = this.data('zfPlugin'); //determine the class of plugin 280 | 281 | if (plugClass !== undefined && plugClass[method] !== undefined) { 282 | //make sure both the class and method exist 283 | if (this.length === 1) { 284 | //if there's only one, call it directly. 285 | plugClass[method].apply(plugClass, args); 286 | } else { 287 | this.each(function (i, el) { 288 | //otherwise loop through the jQuery collection and invoke the method on each 289 | plugClass[method].apply($(el).data('zfPlugin'), args); 290 | }); 291 | } 292 | } else { 293 | //error for no class or no method 294 | throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.'); 295 | } 296 | } else { 297 | //error for invalid argument type 298 | throw new TypeError('We\'re sorry, ' + type + ' is not a valid parameter. You must use a string representing the method you wish to invoke.'); 299 | } 300 | return this; 301 | }; 302 | 303 | window.Foundation = Foundation; 304 | $.fn.foundation = foundation; 305 | 306 | // Polyfill for requestAnimationFrame 307 | (function () { 308 | if (!Date.now || !window.Date.now) window.Date.now = Date.now = function () { 309 | return new Date().getTime(); 310 | }; 311 | 312 | var vendors = ['webkit', 'moz']; 313 | for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) { 314 | var vp = vendors[i]; 315 | window.requestAnimationFrame = window[vp + 'RequestAnimationFrame']; 316 | window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame']; 317 | } 318 | if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) { 319 | var lastTime = 0; 320 | window.requestAnimationFrame = function (callback) { 321 | var now = Date.now(); 322 | var nextTime = Math.max(lastTime + 16, now); 323 | return setTimeout(function () { 324 | callback(lastTime = nextTime); 325 | }, nextTime - now); 326 | }; 327 | window.cancelAnimationFrame = clearTimeout; 328 | } 329 | /** 330 | * Polyfill for performance.now, required by rAF 331 | */ 332 | if (!window.performance || !window.performance.now) { 333 | window.performance = { 334 | start: Date.now(), 335 | now: function () { 336 | return Date.now() - this.start; 337 | } 338 | }; 339 | } 340 | })(); 341 | if (!Function.prototype.bind) { 342 | Function.prototype.bind = function (oThis) { 343 | if (typeof this !== 'function') { 344 | // closest thing possible to the ECMAScript 5 345 | // internal IsCallable function 346 | throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); 347 | } 348 | 349 | var aArgs = Array.prototype.slice.call(arguments, 1), 350 | fToBind = this, 351 | fNOP = function () {}, 352 | fBound = function () { 353 | return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); 354 | }; 355 | 356 | if (this.prototype) { 357 | // native functions don't have a prototype 358 | fNOP.prototype = this.prototype; 359 | } 360 | fBound.prototype = new fNOP(); 361 | 362 | return fBound; 363 | }; 364 | } 365 | // Polyfill to get the name of a function in IE9 366 | function functionName(fn) { 367 | if (Function.prototype.name === undefined) { 368 | var funcNameRegex = /function\s([^(]{1,})\(/; 369 | var results = funcNameRegex.exec(fn.toString()); 370 | return results && results.length > 1 ? results[1].trim() : ""; 371 | } else if (fn.prototype === undefined) { 372 | return fn.constructor.name; 373 | } else { 374 | return fn.prototype.constructor.name; 375 | } 376 | } 377 | function parseValue(str) { 378 | if ('true' === str) return true;else if ('false' === str) return false;else if (!isNaN(str * 1)) return parseFloat(str); 379 | return str; 380 | } 381 | // Convert PascalCase to kebab-case 382 | // Thank you: http://stackoverflow.com/a/8955580 383 | function hyphenate(str) { 384 | return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); 385 | } 386 | }(jQuery); 387 | 'use strict'; 388 | 389 | !function ($) { 390 | 391 | // Default set of media queries 392 | var defaultQueries = { 393 | 'default': 'only screen', 394 | landscape: 'only screen and (orientation: landscape)', 395 | portrait: 'only screen and (orientation: portrait)', 396 | retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)' 397 | }; 398 | 399 | var MediaQuery = { 400 | queries: [], 401 | 402 | current: '', 403 | 404 | /** 405 | * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. 406 | * @function 407 | * @private 408 | */ 409 | _init: function () { 410 | var self = this; 411 | var extractedStyles = $('.foundation-mq').css('font-family'); 412 | var namedQueries; 413 | 414 | namedQueries = parseStyleToObject(extractedStyles); 415 | 416 | for (var key in namedQueries) { 417 | if (namedQueries.hasOwnProperty(key)) { 418 | self.queries.push({ 419 | name: key, 420 | value: 'only screen and (min-width: ' + namedQueries[key] + ')' 421 | }); 422 | } 423 | } 424 | 425 | this.current = this._getCurrentSize(); 426 | 427 | this._watcher(); 428 | }, 429 | 430 | 431 | /** 432 | * Checks if the screen is at least as wide as a breakpoint. 433 | * @function 434 | * @param {String} size - Name of the breakpoint to check. 435 | * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. 436 | */ 437 | atLeast: function (size) { 438 | var query = this.get(size); 439 | 440 | if (query) { 441 | return window.matchMedia(query).matches; 442 | } 443 | 444 | return false; 445 | }, 446 | 447 | 448 | /** 449 | * Checks if the screen matches to a breakpoint. 450 | * @function 451 | * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method. 452 | * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not. 453 | */ 454 | is: function (size) { 455 | size = size.trim().split(' '); 456 | if (size.length > 1 && size[1] === 'only') { 457 | if (size[0] === this._getCurrentSize()) return true; 458 | } else { 459 | return this.atLeast(size[0]); 460 | } 461 | return false; 462 | }, 463 | 464 | 465 | /** 466 | * Gets the media query of a breakpoint. 467 | * @function 468 | * @param {String} size - Name of the breakpoint to get. 469 | * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. 470 | */ 471 | get: function (size) { 472 | for (var i in this.queries) { 473 | if (this.queries.hasOwnProperty(i)) { 474 | var query = this.queries[i]; 475 | if (size === query.name) return query.value; 476 | } 477 | } 478 | 479 | return null; 480 | }, 481 | 482 | 483 | /** 484 | * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). 485 | * @function 486 | * @private 487 | * @returns {String} Name of the current breakpoint. 488 | */ 489 | _getCurrentSize: function () { 490 | var matched; 491 | 492 | for (var i = 0; i < this.queries.length; i++) { 493 | var query = this.queries[i]; 494 | 495 | if (window.matchMedia(query.value).matches) { 496 | matched = query; 497 | } 498 | } 499 | 500 | if (typeof matched === 'object') { 501 | return matched.name; 502 | } else { 503 | return matched; 504 | } 505 | }, 506 | 507 | 508 | /** 509 | * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. 510 | * @function 511 | * @private 512 | */ 513 | _watcher: function () { 514 | var _this = this; 515 | 516 | $(window).on('resize.zf.mediaquery', function () { 517 | var newSize = _this._getCurrentSize(), 518 | currentSize = _this.current; 519 | 520 | if (newSize !== currentSize) { 521 | // Change the current media query 522 | _this.current = newSize; 523 | 524 | // Broadcast the media query change on the window 525 | $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); 526 | } 527 | }); 528 | } 529 | }; 530 | 531 | Foundation.MediaQuery = MediaQuery; 532 | 533 | // matchMedia() polyfill - Test a CSS media type/query in JS. 534 | // Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license 535 | window.matchMedia || (window.matchMedia = function () { 536 | 'use strict'; 537 | 538 | // For browsers that support matchMedium api such as IE 9 and webkit 539 | 540 | var styleMedia = window.styleMedia || window.media; 541 | 542 | // For those that don't support matchMedium 543 | if (!styleMedia) { 544 | var style = document.createElement('style'), 545 | script = document.getElementsByTagName('script')[0], 546 | info = null; 547 | 548 | style.type = 'text/css'; 549 | style.id = 'matchmediajs-test'; 550 | 551 | script && script.parentNode && script.parentNode.insertBefore(style, script); 552 | 553 | // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers 554 | info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; 555 | 556 | styleMedia = { 557 | matchMedium: function (media) { 558 | var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; 559 | 560 | // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers 561 | if (style.styleSheet) { 562 | style.styleSheet.cssText = text; 563 | } else { 564 | style.textContent = text; 565 | } 566 | 567 | // Test if media query is true or false 568 | return info.width === '1px'; 569 | } 570 | }; 571 | } 572 | 573 | return function (media) { 574 | return { 575 | matches: styleMedia.matchMedium(media || 'all'), 576 | media: media || 'all' 577 | }; 578 | }; 579 | }()); 580 | 581 | // Thank you: https://github.com/sindresorhus/query-string 582 | function parseStyleToObject(str) { 583 | var styleObject = {}; 584 | 585 | if (typeof str !== 'string') { 586 | return styleObject; 587 | } 588 | 589 | str = str.trim().slice(1, -1); // browsers re-quote string style values 590 | 591 | if (!str) { 592 | return styleObject; 593 | } 594 | 595 | styleObject = str.split('&').reduce(function (ret, param) { 596 | var parts = param.replace(/\+/g, ' ').split('='); 597 | var key = parts[0]; 598 | var val = parts[1]; 599 | key = decodeURIComponent(key); 600 | 601 | // missing `=` should be `null`: 602 | // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters 603 | val = val === undefined ? null : decodeURIComponent(val); 604 | 605 | if (!ret.hasOwnProperty(key)) { 606 | ret[key] = val; 607 | } else if (Array.isArray(ret[key])) { 608 | ret[key].push(val); 609 | } else { 610 | ret[key] = [ret[key], val]; 611 | } 612 | return ret; 613 | }, {}); 614 | 615 | return styleObject; 616 | } 617 | 618 | Foundation.MediaQuery = MediaQuery; 619 | }(jQuery); 620 | 'use strict'; 621 | 622 | !function ($) { 623 | 624 | Foundation.Box = { 625 | ImNotTouchingYou: ImNotTouchingYou, 626 | GetDimensions: GetDimensions, 627 | GetOffsets: GetOffsets 628 | }; 629 | 630 | /** 631 | * Compares the dimensions of an element to a container and determines collision events with container. 632 | * @function 633 | * @param {jQuery} element - jQuery object to test for collisions. 634 | * @param {jQuery} parent - jQuery object to use as bounding container. 635 | * @param {Boolean} lrOnly - set to true to check left and right values only. 636 | * @param {Boolean} tbOnly - set to true to check top and bottom values only. 637 | * @default if no parent object passed, detects collisions with `window`. 638 | * @returns {Boolean} - true if collision free, false if a collision in any direction. 639 | */ 640 | function ImNotTouchingYou(element, parent, lrOnly, tbOnly) { 641 | var eleDims = GetDimensions(element), 642 | top, 643 | bottom, 644 | left, 645 | right; 646 | 647 | if (parent) { 648 | var parDims = GetDimensions(parent); 649 | 650 | bottom = eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top; 651 | top = eleDims.offset.top >= parDims.offset.top; 652 | left = eleDims.offset.left >= parDims.offset.left; 653 | right = eleDims.offset.left + eleDims.width <= parDims.width + parDims.offset.left; 654 | } else { 655 | bottom = eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top; 656 | top = eleDims.offset.top >= eleDims.windowDims.offset.top; 657 | left = eleDims.offset.left >= eleDims.windowDims.offset.left; 658 | right = eleDims.offset.left + eleDims.width <= eleDims.windowDims.width; 659 | } 660 | 661 | var allDirs = [bottom, top, left, right]; 662 | 663 | if (lrOnly) { 664 | return left === right === true; 665 | } 666 | 667 | if (tbOnly) { 668 | return top === bottom === true; 669 | } 670 | 671 | return allDirs.indexOf(false) === -1; 672 | }; 673 | 674 | /** 675 | * Uses native methods to return an object of dimension values. 676 | * @function 677 | * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. 678 | * @returns {Object} - nested object of integer pixel values 679 | * TODO - if element is window, return only those values. 680 | */ 681 | function GetDimensions(elem, test) { 682 | elem = elem.length ? elem[0] : elem; 683 | 684 | if (elem === window || elem === document) { 685 | throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); 686 | } 687 | 688 | var rect = elem.getBoundingClientRect(), 689 | parRect = elem.parentNode.getBoundingClientRect(), 690 | winRect = document.body.getBoundingClientRect(), 691 | winY = window.pageYOffset, 692 | winX = window.pageXOffset; 693 | 694 | return { 695 | width: rect.width, 696 | height: rect.height, 697 | offset: { 698 | top: rect.top + winY, 699 | left: rect.left + winX 700 | }, 701 | parentDims: { 702 | width: parRect.width, 703 | height: parRect.height, 704 | offset: { 705 | top: parRect.top + winY, 706 | left: parRect.left + winX 707 | } 708 | }, 709 | windowDims: { 710 | width: winRect.width, 711 | height: winRect.height, 712 | offset: { 713 | top: winY, 714 | left: winX 715 | } 716 | } 717 | }; 718 | } 719 | 720 | /** 721 | * Returns an object of top and left integer pixel values for dynamically rendered elements, 722 | * such as: Tooltip, Reveal, and Dropdown 723 | * @function 724 | * @param {jQuery} element - jQuery object for the element being positioned. 725 | * @param {jQuery} anchor - jQuery object for the element's anchor point. 726 | * @param {String} position - a string relating to the desired position of the element, relative to it's anchor 727 | * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. 728 | * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. 729 | * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. 730 | * TODO alter/rewrite to work with `em` values as well/instead of pixels 731 | */ 732 | function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) { 733 | var $eleDims = GetDimensions(element), 734 | $anchorDims = anchor ? GetDimensions(anchor) : null; 735 | 736 | switch (position) { 737 | case 'top': 738 | return { 739 | left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left, 740 | top: $anchorDims.offset.top - ($eleDims.height + vOffset) 741 | }; 742 | break; 743 | case 'left': 744 | return { 745 | left: $anchorDims.offset.left - ($eleDims.width + hOffset), 746 | top: $anchorDims.offset.top 747 | }; 748 | break; 749 | case 'right': 750 | return { 751 | left: $anchorDims.offset.left + $anchorDims.width + hOffset, 752 | top: $anchorDims.offset.top 753 | }; 754 | break; 755 | case 'center top': 756 | return { 757 | left: $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, 758 | top: $anchorDims.offset.top - ($eleDims.height + vOffset) 759 | }; 760 | break; 761 | case 'center bottom': 762 | return { 763 | left: isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2, 764 | top: $anchorDims.offset.top + $anchorDims.height + vOffset 765 | }; 766 | break; 767 | case 'center left': 768 | return { 769 | left: $anchorDims.offset.left - ($eleDims.width + hOffset), 770 | top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 771 | }; 772 | break; 773 | case 'center right': 774 | return { 775 | left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1, 776 | top: $anchorDims.offset.top + $anchorDims.height / 2 - $eleDims.height / 2 777 | }; 778 | break; 779 | case 'center': 780 | return { 781 | left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2, 782 | top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - $eleDims.height / 2 783 | }; 784 | break; 785 | case 'reveal': 786 | return { 787 | left: ($eleDims.windowDims.width - $eleDims.width) / 2, 788 | top: $eleDims.windowDims.offset.top + vOffset 789 | }; 790 | case 'reveal full': 791 | return { 792 | left: $eleDims.windowDims.offset.left, 793 | top: $eleDims.windowDims.offset.top 794 | }; 795 | break; 796 | case 'left bottom': 797 | return { 798 | left: $anchorDims.offset.left, 799 | top: $anchorDims.offset.top + $anchorDims.height + vOffset 800 | }; 801 | break; 802 | case 'right bottom': 803 | return { 804 | left: $anchorDims.offset.left + $anchorDims.width + hOffset - $eleDims.width, 805 | top: $anchorDims.offset.top + $anchorDims.height + vOffset 806 | }; 807 | break; 808 | default: 809 | return { 810 | left: Foundation.rtl() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width : $anchorDims.offset.left + hOffset, 811 | top: $anchorDims.offset.top + $anchorDims.height + vOffset 812 | }; 813 | } 814 | } 815 | }(jQuery); 816 | 'use strict'; 817 | 818 | !function ($) { 819 | 820 | /** 821 | * Motion module. 822 | * @module foundation.motion 823 | */ 824 | 825 | var initClasses = ['mui-enter', 'mui-leave']; 826 | var activeClasses = ['mui-enter-active', 'mui-leave-active']; 827 | 828 | var Motion = { 829 | animateIn: function (element, animation, cb) { 830 | animate(true, element, animation, cb); 831 | }, 832 | 833 | animateOut: function (element, animation, cb) { 834 | animate(false, element, animation, cb); 835 | } 836 | }; 837 | 838 | function Move(duration, elem, fn) { 839 | var anim, 840 | prog, 841 | start = null; 842 | // console.log('called'); 843 | 844 | if (duration === 0) { 845 | fn.apply(elem); 846 | elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); 847 | return; 848 | } 849 | 850 | function move(ts) { 851 | if (!start) start = ts; 852 | // console.log(start, ts); 853 | prog = ts - start; 854 | fn.apply(elem); 855 | 856 | if (prog < duration) { 857 | anim = window.requestAnimationFrame(move, elem); 858 | } else { 859 | window.cancelAnimationFrame(anim); 860 | elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); 861 | } 862 | } 863 | anim = window.requestAnimationFrame(move); 864 | } 865 | 866 | /** 867 | * Animates an element in or out using a CSS transition class. 868 | * @function 869 | * @private 870 | * @param {Boolean} isIn - Defines if the animation is in or out. 871 | * @param {Object} element - jQuery or HTML object to animate. 872 | * @param {String} animation - CSS class to use. 873 | * @param {Function} cb - Callback to run when animation is finished. 874 | */ 875 | function animate(isIn, element, animation, cb) { 876 | element = $(element).eq(0); 877 | 878 | if (!element.length) return; 879 | 880 | var initClass = isIn ? initClasses[0] : initClasses[1]; 881 | var activeClass = isIn ? activeClasses[0] : activeClasses[1]; 882 | 883 | // Set up the animation 884 | reset(); 885 | 886 | element.addClass(animation).css('transition', 'none'); 887 | 888 | requestAnimationFrame(function () { 889 | element.addClass(initClass); 890 | if (isIn) element.show(); 891 | }); 892 | 893 | // Start the animation 894 | requestAnimationFrame(function () { 895 | element[0].offsetWidth; 896 | element.css('transition', '').addClass(activeClass); 897 | }); 898 | 899 | // Clean up the animation when it finishes 900 | element.one(Foundation.transitionend(element), finish); 901 | 902 | // Hides the element (for out animations), resets the element, and runs a callback 903 | function finish() { 904 | if (!isIn) element.hide(); 905 | reset(); 906 | if (cb) cb.apply(element); 907 | } 908 | 909 | // Resets transitions and removes motion-specific classes 910 | function reset() { 911 | element[0].style.transitionDuration = 0; 912 | element.removeClass(initClass + ' ' + activeClass + ' ' + animation); 913 | } 914 | } 915 | 916 | Foundation.Move = Move; 917 | Foundation.Motion = Motion; 918 | }(jQuery); 919 | 'use strict'; 920 | 921 | !function ($) { 922 | 923 | var MutationObserver = function () { 924 | var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; 925 | for (var i = 0; i < prefixes.length; i++) { 926 | if (prefixes[i] + 'MutationObserver' in window) { 927 | return window[prefixes[i] + 'MutationObserver']; 928 | } 929 | } 930 | return false; 931 | }(); 932 | 933 | var triggers = function (el, type) { 934 | el.data(type).split(' ').forEach(function (id) { 935 | $('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]); 936 | }); 937 | }; 938 | // Elements with [data-open] will reveal a plugin that supports it when clicked. 939 | $(document).on('click.zf.trigger', '[data-open]', function () { 940 | triggers($(this), 'open'); 941 | }); 942 | 943 | // Elements with [data-close] will close a plugin that supports it when clicked. 944 | // If used without a value on [data-close], the event will bubble, allowing it to close a parent component. 945 | $(document).on('click.zf.trigger', '[data-close]', function () { 946 | var id = $(this).data('close'); 947 | if (id) { 948 | triggers($(this), 'close'); 949 | } else { 950 | $(this).trigger('close.zf.trigger'); 951 | } 952 | }); 953 | 954 | // Elements with [data-toggle] will toggle a plugin that supports it when clicked. 955 | $(document).on('click.zf.trigger', '[data-toggle]', function () { 956 | var id = $(this).data('toggle'); 957 | if (id) { 958 | triggers($(this), 'toggle'); 959 | } else { 960 | $(this).trigger('toggle.zf.trigger'); 961 | } 962 | }); 963 | 964 | // Elements with [data-closable] will respond to close.zf.trigger events. 965 | $(document).on('close.zf.trigger', '[data-closable]', function (e) { 966 | e.stopPropagation(); 967 | var animation = $(this).data('closable'); 968 | 969 | if (animation !== '') { 970 | Foundation.Motion.animateOut($(this), animation, function () { 971 | $(this).trigger('closed.zf'); 972 | }); 973 | } else { 974 | $(this).fadeOut().trigger('closed.zf'); 975 | } 976 | }); 977 | 978 | $(document).on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', function () { 979 | var id = $(this).data('toggle-focus'); 980 | $('#' + id).triggerHandler('toggle.zf.trigger', [$(this)]); 981 | }); 982 | 983 | /** 984 | * Fires once after all other scripts have loaded 985 | * @function 986 | * @private 987 | */ 988 | $(window).on('load', function () { 989 | checkListeners(); 990 | }); 991 | 992 | function checkListeners() { 993 | eventsListener(); 994 | resizeListener(); 995 | scrollListener(); 996 | mutateListener(); 997 | closemeListener(); 998 | } 999 | 1000 | //******** only fires this function once on load, if there's something to watch ******** 1001 | function closemeListener(pluginName) { 1002 | var yetiBoxes = $('[data-yeti-box]'), 1003 | plugNames = ['dropdown', 'tooltip', 'reveal']; 1004 | 1005 | if (pluginName) { 1006 | if (typeof pluginName === 'string') { 1007 | plugNames.push(pluginName); 1008 | } else if (typeof pluginName === 'object' && typeof pluginName[0] === 'string') { 1009 | plugNames.concat(pluginName); 1010 | } else { 1011 | console.error('Plugin names must be strings'); 1012 | } 1013 | } 1014 | if (yetiBoxes.length) { 1015 | var listeners = plugNames.map(function (name) { 1016 | return 'closeme.zf.' + name; 1017 | }).join(' '); 1018 | 1019 | $(window).off(listeners).on(listeners, function (e, pluginId) { 1020 | var plugin = e.namespace.split('.')[0]; 1021 | var plugins = $('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]'); 1022 | 1023 | plugins.each(function () { 1024 | var _this = $(this); 1025 | 1026 | _this.triggerHandler('close.zf.trigger', [_this]); 1027 | }); 1028 | }); 1029 | } 1030 | } 1031 | 1032 | function resizeListener(debounce) { 1033 | var timer = void 0, 1034 | $nodes = $('[data-resize]'); 1035 | if ($nodes.length) { 1036 | $(window).off('resize.zf.trigger').on('resize.zf.trigger', function (e) { 1037 | if (timer) { 1038 | clearTimeout(timer); 1039 | } 1040 | 1041 | timer = setTimeout(function () { 1042 | 1043 | if (!MutationObserver) { 1044 | //fallback for IE 9 1045 | $nodes.each(function () { 1046 | $(this).triggerHandler('resizeme.zf.trigger'); 1047 | }); 1048 | } 1049 | //trigger all listening elements and signal a resize event 1050 | $nodes.attr('data-events', "resize"); 1051 | }, debounce || 10); //default time to emit resize event 1052 | }); 1053 | } 1054 | } 1055 | 1056 | function scrollListener(debounce) { 1057 | var timer = void 0, 1058 | $nodes = $('[data-scroll]'); 1059 | if ($nodes.length) { 1060 | $(window).off('scroll.zf.trigger').on('scroll.zf.trigger', function (e) { 1061 | if (timer) { 1062 | clearTimeout(timer); 1063 | } 1064 | 1065 | timer = setTimeout(function () { 1066 | 1067 | if (!MutationObserver) { 1068 | //fallback for IE 9 1069 | $nodes.each(function () { 1070 | $(this).triggerHandler('scrollme.zf.trigger'); 1071 | }); 1072 | } 1073 | //trigger all listening elements and signal a scroll event 1074 | $nodes.attr('data-events', "scroll"); 1075 | }, debounce || 10); //default time to emit scroll event 1076 | }); 1077 | } 1078 | } 1079 | 1080 | function mutateListener(debounce) { 1081 | var $nodes = $('[data-mutate]'); 1082 | if ($nodes.length && MutationObserver) { 1083 | //trigger all listening elements and signal a mutate event 1084 | //no IE 9 or 10 1085 | $nodes.each(function () { 1086 | $(this).triggerHandler('mutateme.zf.trigger'); 1087 | }); 1088 | } 1089 | } 1090 | 1091 | function eventsListener() { 1092 | if (!MutationObserver) { 1093 | return false; 1094 | } 1095 | var nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]'); 1096 | 1097 | //element callback 1098 | var listeningElementsMutation = function (mutationRecordsList) { 1099 | var $target = $(mutationRecordsList[0].target); 1100 | 1101 | //trigger the event handler for the element depending on type 1102 | switch (mutationRecordsList[0].type) { 1103 | 1104 | case "attributes": 1105 | if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") { 1106 | $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); 1107 | } 1108 | if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") { 1109 | $target.triggerHandler('resizeme.zf.trigger', [$target]); 1110 | } 1111 | if (mutationRecordsList[0].attributeName === "style") { 1112 | $target.closest("[data-mutate]").attr("data-events", "mutate"); 1113 | $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 1114 | } 1115 | break; 1116 | 1117 | case "childList": 1118 | $target.closest("[data-mutate]").attr("data-events", "mutate"); 1119 | $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 1120 | break; 1121 | 1122 | default: 1123 | return false; 1124 | //nothing 1125 | } 1126 | }; 1127 | 1128 | if (nodes.length) { 1129 | //for each element that needs to listen for resizing, scrolling, or mutation add a single observer 1130 | for (var i = 0; i <= nodes.length - 1; i++) { 1131 | var elementObserver = new MutationObserver(listeningElementsMutation); 1132 | elementObserver.observe(nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: ["data-events", "style"] }); 1133 | } 1134 | } 1135 | } 1136 | 1137 | // ------------------------------------ 1138 | 1139 | // [PH] 1140 | // Foundation.CheckWatchers = checkWatchers; 1141 | Foundation.IHearYou = checkListeners; 1142 | // Foundation.ISeeYou = scrollListener; 1143 | // Foundation.IFeelYou = closemeListener; 1144 | }(jQuery); 1145 | 1146 | // function domMutationObserver(debounce) { 1147 | // // !!! This is coming soon and needs more work; not active !!! // 1148 | // var timer, 1149 | // nodes = document.querySelectorAll('[data-mutate]'); 1150 | // // 1151 | // if (nodes.length) { 1152 | // // var MutationObserver = (function () { 1153 | // // var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; 1154 | // // for (var i=0; i < prefixes.length; i++) { 1155 | // // if (prefixes[i] + 'MutationObserver' in window) { 1156 | // // return window[prefixes[i] + 'MutationObserver']; 1157 | // // } 1158 | // // } 1159 | // // return false; 1160 | // // }()); 1161 | // 1162 | // 1163 | // //for the body, we need to listen for all changes effecting the style and class attributes 1164 | // var bodyObserver = new MutationObserver(bodyMutation); 1165 | // bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]}); 1166 | // 1167 | // 1168 | // //body callback 1169 | // function bodyMutation(mutate) { 1170 | // //trigger all listening elements and signal a mutation event 1171 | // if (timer) { clearTimeout(timer); } 1172 | // 1173 | // timer = setTimeout(function() { 1174 | // bodyObserver.disconnect(); 1175 | // $('[data-mutate]').attr('data-events',"mutate"); 1176 | // }, debounce || 150); 1177 | // } 1178 | // } 1179 | // } 1180 | /******************************************* 1181 | * * 1182 | * This util was created by Marius Olbertz * 1183 | * Please thank Marius on GitHub /owlbertz * 1184 | * or the web http://www.mariusolbertz.de/ * 1185 | * * 1186 | ******************************************/ 1187 | 1188 | 'use strict'; 1189 | 1190 | !function ($) { 1191 | 1192 | var keyCodes = { 1193 | 9: 'TAB', 1194 | 13: 'ENTER', 1195 | 27: 'ESCAPE', 1196 | 32: 'SPACE', 1197 | 37: 'ARROW_LEFT', 1198 | 38: 'ARROW_UP', 1199 | 39: 'ARROW_RIGHT', 1200 | 40: 'ARROW_DOWN' 1201 | }; 1202 | 1203 | var commands = {}; 1204 | 1205 | var Keyboard = { 1206 | keys: getKeyCodes(keyCodes), 1207 | 1208 | /** 1209 | * Parses the (keyboard) event and returns a String that represents its key 1210 | * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE 1211 | * @param {Event} event - the event generated by the event handler 1212 | * @return String key - String that represents the key pressed 1213 | */ 1214 | parseKey: function (event) { 1215 | var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase(); 1216 | 1217 | // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events 1218 | key = key.replace(/\W+/, ''); 1219 | 1220 | if (event.shiftKey) key = 'SHIFT_' + key; 1221 | if (event.ctrlKey) key = 'CTRL_' + key; 1222 | if (event.altKey) key = 'ALT_' + key; 1223 | 1224 | // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`) 1225 | key = key.replace(/_$/, ''); 1226 | 1227 | return key; 1228 | }, 1229 | 1230 | 1231 | /** 1232 | * Handles the given (keyboard) event 1233 | * @param {Event} event - the event generated by the event handler 1234 | * @param {String} component - Foundation component's name, e.g. Slider or Reveal 1235 | * @param {Objects} functions - collection of functions that are to be executed 1236 | */ 1237 | handleKey: function (event, component, functions) { 1238 | var commandList = commands[component], 1239 | keyCode = this.parseKey(event), 1240 | cmds, 1241 | command, 1242 | fn; 1243 | 1244 | if (!commandList) return console.warn('Component not defined!'); 1245 | 1246 | if (typeof commandList.ltr === 'undefined') { 1247 | // this component does not differentiate between ltr and rtl 1248 | cmds = commandList; // use plain list 1249 | } else { 1250 | // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa 1251 | if (Foundation.rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);else cmds = $.extend({}, commandList.rtl, commandList.ltr); 1252 | } 1253 | command = cmds[keyCode]; 1254 | 1255 | fn = functions[command]; 1256 | if (fn && typeof fn === 'function') { 1257 | // execute function if exists 1258 | var returnValue = fn.apply(); 1259 | if (functions.handled || typeof functions.handled === 'function') { 1260 | // execute function when event was handled 1261 | functions.handled(returnValue); 1262 | } 1263 | } else { 1264 | if (functions.unhandled || typeof functions.unhandled === 'function') { 1265 | // execute function when event was not handled 1266 | functions.unhandled(); 1267 | } 1268 | } 1269 | }, 1270 | 1271 | 1272 | /** 1273 | * Finds all focusable elements within the given `$element` 1274 | * @param {jQuery} $element - jQuery object to search within 1275 | * @return {jQuery} $focusable - all focusable elements within `$element` 1276 | */ 1277 | findFocusable: function ($element) { 1278 | if (!$element) { 1279 | return false; 1280 | } 1281 | return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function () { 1282 | if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { 1283 | return false; 1284 | } //only have visible elements and those that have a tabindex greater or equal 0 1285 | return true; 1286 | }); 1287 | }, 1288 | 1289 | 1290 | /** 1291 | * Returns the component name name 1292 | * @param {Object} component - Foundation component, e.g. Slider or Reveal 1293 | * @return String componentName 1294 | */ 1295 | 1296 | register: function (componentName, cmds) { 1297 | commands[componentName] = cmds; 1298 | }, 1299 | 1300 | 1301 | /** 1302 | * Traps the focus in the given element. 1303 | * @param {jQuery} $element jQuery object to trap the foucs into. 1304 | */ 1305 | trapFocus: function ($element) { 1306 | var $focusable = Foundation.Keyboard.findFocusable($element), 1307 | $firstFocusable = $focusable.eq(0), 1308 | $lastFocusable = $focusable.eq(-1); 1309 | 1310 | $element.on('keydown.zf.trapfocus', function (event) { 1311 | if (event.target === $lastFocusable[0] && Foundation.Keyboard.parseKey(event) === 'TAB') { 1312 | event.preventDefault(); 1313 | $firstFocusable.focus(); 1314 | } else if (event.target === $firstFocusable[0] && Foundation.Keyboard.parseKey(event) === 'SHIFT_TAB') { 1315 | event.preventDefault(); 1316 | $lastFocusable.focus(); 1317 | } 1318 | }); 1319 | }, 1320 | 1321 | /** 1322 | * Releases the trapped focus from the given element. 1323 | * @param {jQuery} $element jQuery object to release the focus for. 1324 | */ 1325 | releaseFocus: function ($element) { 1326 | $element.off('keydown.zf.trapfocus'); 1327 | } 1328 | }; 1329 | 1330 | /* 1331 | * Constants for easier comparing. 1332 | * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE 1333 | */ 1334 | function getKeyCodes(kcs) { 1335 | var k = {}; 1336 | for (var kc in kcs) { 1337 | k[kcs[kc]] = kcs[kc]; 1338 | }return k; 1339 | } 1340 | 1341 | Foundation.Keyboard = Keyboard; 1342 | }(jQuery); 1343 | 'use strict'; 1344 | 1345 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 1346 | 1347 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 1348 | 1349 | !function ($) { 1350 | 1351 | /** 1352 | * Reveal module. 1353 | * @module foundation.reveal 1354 | * @requires foundation.util.keyboard 1355 | * @requires foundation.util.box 1356 | * @requires foundation.util.triggers 1357 | * @requires foundation.util.mediaQuery 1358 | * @requires foundation.util.motion if using animations 1359 | */ 1360 | 1361 | var Reveal = function () { 1362 | /** 1363 | * Creates a new instance of Reveal. 1364 | * @class 1365 | * @param {jQuery} element - jQuery object to use for the modal. 1366 | * @param {Object} options - optional parameters. 1367 | */ 1368 | function Reveal(element, options) { 1369 | _classCallCheck(this, Reveal); 1370 | 1371 | this.$element = element; 1372 | this.options = $.extend({}, Reveal.defaults, this.$element.data(), options); 1373 | this._init(); 1374 | 1375 | Foundation.registerPlugin(this, 'Reveal'); 1376 | Foundation.Keyboard.register('Reveal', { 1377 | 'ENTER': 'open', 1378 | 'SPACE': 'open', 1379 | 'ESCAPE': 'close' 1380 | }); 1381 | } 1382 | 1383 | /** 1384 | * Initializes the modal by adding the overlay and close buttons, (if selected). 1385 | * @private 1386 | */ 1387 | 1388 | 1389 | _createClass(Reveal, [{ 1390 | key: '_init', 1391 | value: function _init() { 1392 | this.id = this.$element.attr('id'); 1393 | this.isActive = false; 1394 | this.cached = { mq: Foundation.MediaQuery.current }; 1395 | this.isMobile = mobileSniff(); 1396 | 1397 | this.$anchor = $('[data-open="' + this.id + '"]').length ? $('[data-open="' + this.id + '"]') : $('[data-toggle="' + this.id + '"]'); 1398 | this.$anchor.attr({ 1399 | 'aria-controls': this.id, 1400 | 'aria-haspopup': true, 1401 | 'tabindex': 0 1402 | }); 1403 | 1404 | if (this.options.fullScreen || this.$element.hasClass('full')) { 1405 | this.options.fullScreen = true; 1406 | this.options.overlay = false; 1407 | } 1408 | if (this.options.overlay && !this.$overlay) { 1409 | this.$overlay = this._makeOverlay(this.id); 1410 | } 1411 | 1412 | this.$element.attr({ 1413 | 'role': 'dialog', 1414 | 'aria-hidden': true, 1415 | 'data-yeti-box': this.id, 1416 | 'data-resize': this.id 1417 | }); 1418 | 1419 | if (this.$overlay) { 1420 | this.$element.detach().appendTo(this.$overlay); 1421 | } else { 1422 | this.$element.detach().appendTo($(this.options.appendTo)); 1423 | this.$element.addClass('without-overlay'); 1424 | } 1425 | this._events(); 1426 | if (this.options.deepLink && window.location.hash === '#' + this.id) { 1427 | $(window).one('load.zf.reveal', this.open.bind(this)); 1428 | } 1429 | } 1430 | 1431 | /** 1432 | * Creates an overlay div to display behind the modal. 1433 | * @private 1434 | */ 1435 | 1436 | }, { 1437 | key: '_makeOverlay', 1438 | value: function _makeOverlay() { 1439 | return $('
').addClass('reveal-overlay').appendTo(this.options.appendTo); 1440 | } 1441 | 1442 | /** 1443 | * Updates position of modal 1444 | * TODO: Figure out if we actually need to cache these values or if it doesn't matter 1445 | * @private 1446 | */ 1447 | 1448 | }, { 1449 | key: '_updatePosition', 1450 | value: function _updatePosition() { 1451 | var width = this.$element.outerWidth(); 1452 | var outerWidth = $(window).width(); 1453 | var height = this.$element.outerHeight(); 1454 | var outerHeight = $(window).height(); 1455 | var left, top; 1456 | if (this.options.hOffset === 'auto') { 1457 | left = parseInt((outerWidth - width) / 2, 10); 1458 | } else { 1459 | left = parseInt(this.options.hOffset, 10); 1460 | } 1461 | if (this.options.vOffset === 'auto') { 1462 | if (height > outerHeight) { 1463 | top = parseInt(Math.min(100, outerHeight / 10), 10); 1464 | } else { 1465 | top = parseInt((outerHeight - height) / 4, 10); 1466 | } 1467 | } else { 1468 | top = parseInt(this.options.vOffset, 10); 1469 | } 1470 | this.$element.css({ top: top + 'px' }); 1471 | // only worry about left if we don't have an overlay or we havea horizontal offset, 1472 | // otherwise we're perfectly in the middle 1473 | if (!this.$overlay || this.options.hOffset !== 'auto') { 1474 | this.$element.css({ left: left + 'px' }); 1475 | this.$element.css({ margin: '0px' }); 1476 | } 1477 | } 1478 | 1479 | /** 1480 | * Adds event handlers for the modal. 1481 | * @private 1482 | */ 1483 | 1484 | }, { 1485 | key: '_events', 1486 | value: function _events() { 1487 | var _this2 = this; 1488 | 1489 | var _this = this; 1490 | 1491 | this.$element.on({ 1492 | 'open.zf.trigger': this.open.bind(this), 1493 | 'close.zf.trigger': function (event, $element) { 1494 | if (event.target === _this.$element[0] || $(event.target).parents('[data-closable]')[0] === $element) { 1495 | // only close reveal when it's explicitly called 1496 | return _this2.close.apply(_this2); 1497 | } 1498 | }, 1499 | 'toggle.zf.trigger': this.toggle.bind(this), 1500 | 'resizeme.zf.trigger': function () { 1501 | _this._updatePosition(); 1502 | } 1503 | }); 1504 | 1505 | if (this.$anchor.length) { 1506 | this.$anchor.on('keydown.zf.reveal', function (e) { 1507 | if (e.which === 13 || e.which === 32) { 1508 | e.stopPropagation(); 1509 | e.preventDefault(); 1510 | _this.open(); 1511 | } 1512 | }); 1513 | } 1514 | 1515 | if (this.options.closeOnClick && this.options.overlay) { 1516 | this.$overlay.off('.zf.reveal').on('click.zf.reveal', function (e) { 1517 | if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target) || !$.contains(document, e.target)) { 1518 | return; 1519 | } 1520 | _this.close(); 1521 | }); 1522 | } 1523 | if (this.options.deepLink) { 1524 | $(window).on('popstate.zf.reveal:' + this.id, this._handleState.bind(this)); 1525 | } 1526 | } 1527 | 1528 | /** 1529 | * Handles modal methods on back/forward button clicks or any other event that triggers popstate. 1530 | * @private 1531 | */ 1532 | 1533 | }, { 1534 | key: '_handleState', 1535 | value: function _handleState(e) { 1536 | if (window.location.hash === '#' + this.id && !this.isActive) { 1537 | this.open(); 1538 | } else { 1539 | this.close(); 1540 | } 1541 | } 1542 | 1543 | /** 1544 | * Opens the modal controlled by `this.$anchor`, and closes all others by default. 1545 | * @function 1546 | * @fires Reveal#closeme 1547 | * @fires Reveal#open 1548 | */ 1549 | 1550 | }, { 1551 | key: 'open', 1552 | value: function open() { 1553 | var _this3 = this; 1554 | 1555 | if (this.options.deepLink) { 1556 | var hash = '#' + this.id; 1557 | 1558 | if (window.history.pushState) { 1559 | window.history.pushState(null, null, hash); 1560 | } else { 1561 | window.location.hash = hash; 1562 | } 1563 | } 1564 | 1565 | this.isActive = true; 1566 | 1567 | // Make elements invisible, but remove display: none so we can get size and positioning 1568 | this.$element.css({ 'visibility': 'hidden' }).show().scrollTop(0); 1569 | if (this.options.overlay) { 1570 | this.$overlay.css({ 'visibility': 'hidden' }).show(); 1571 | } 1572 | 1573 | this._updatePosition(); 1574 | 1575 | this.$element.hide().css({ 'visibility': '' }); 1576 | 1577 | if (this.$overlay) { 1578 | this.$overlay.css({ 'visibility': '' }).hide(); 1579 | if (this.$element.hasClass('fast')) { 1580 | this.$overlay.addClass('fast'); 1581 | } else if (this.$element.hasClass('slow')) { 1582 | this.$overlay.addClass('slow'); 1583 | } 1584 | } 1585 | 1586 | if (!this.options.multipleOpened) { 1587 | /** 1588 | * Fires immediately before the modal opens. 1589 | * Closes any other modals that are currently open 1590 | * @event Reveal#closeme 1591 | */ 1592 | this.$element.trigger('closeme.zf.reveal', this.id); 1593 | } 1594 | 1595 | var _this = this; 1596 | 1597 | function addRevealOpenClasses() { 1598 | if (_this.isMobile) { 1599 | if (!_this.originalScrollPos) { 1600 | _this.originalScrollPos = window.pageYOffset; 1601 | } 1602 | $('html, body').addClass('is-reveal-open'); 1603 | } else { 1604 | $('body').addClass('is-reveal-open'); 1605 | } 1606 | } 1607 | // Motion UI method of reveal 1608 | if (this.options.animationIn) { 1609 | (function () { 1610 | var afterAnimation = function () { 1611 | _this.$element.attr({ 1612 | 'aria-hidden': false, 1613 | 'tabindex': -1 1614 | }).focus(); 1615 | addRevealOpenClasses(); 1616 | Foundation.Keyboard.trapFocus(_this.$element); 1617 | }; 1618 | 1619 | if (_this3.options.overlay) { 1620 | Foundation.Motion.animateIn(_this3.$overlay, 'fade-in'); 1621 | } 1622 | Foundation.Motion.animateIn(_this3.$element, _this3.options.animationIn, function () { 1623 | if (_this3.$element) { 1624 | // protect against object having been removed 1625 | _this3.focusableElements = Foundation.Keyboard.findFocusable(_this3.$element); 1626 | afterAnimation(); 1627 | } 1628 | }); 1629 | })(); 1630 | } 1631 | // jQuery method of reveal 1632 | else { 1633 | if (this.options.overlay) { 1634 | this.$overlay.show(0); 1635 | } 1636 | this.$element.show(this.options.showDelay); 1637 | } 1638 | 1639 | // handle accessibility 1640 | this.$element.attr({ 1641 | 'aria-hidden': false, 1642 | 'tabindex': -1 1643 | }).focus(); 1644 | Foundation.Keyboard.trapFocus(this.$element); 1645 | 1646 | /** 1647 | * Fires when the modal has successfully opened. 1648 | * @event Reveal#open 1649 | */ 1650 | this.$element.trigger('open.zf.reveal'); 1651 | 1652 | addRevealOpenClasses(); 1653 | 1654 | setTimeout(function () { 1655 | _this3._extraHandlers(); 1656 | }, 0); 1657 | } 1658 | 1659 | /** 1660 | * Adds extra event handlers for the body and window if necessary. 1661 | * @private 1662 | */ 1663 | 1664 | }, { 1665 | key: '_extraHandlers', 1666 | value: function _extraHandlers() { 1667 | var _this = this; 1668 | if (!this.$element) { 1669 | return; 1670 | } // If we're in the middle of cleanup, don't freak out 1671 | this.focusableElements = Foundation.Keyboard.findFocusable(this.$element); 1672 | 1673 | if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) { 1674 | $('body').on('click.zf.reveal', function (e) { 1675 | if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target) || !$.contains(document, e.target)) { 1676 | return; 1677 | } 1678 | _this.close(); 1679 | }); 1680 | } 1681 | 1682 | if (this.options.closeOnEsc) { 1683 | $(window).on('keydown.zf.reveal', function (e) { 1684 | Foundation.Keyboard.handleKey(e, 'Reveal', { 1685 | close: function () { 1686 | if (_this.options.closeOnEsc) { 1687 | _this.close(); 1688 | _this.$anchor.focus(); 1689 | } 1690 | } 1691 | }); 1692 | }); 1693 | } 1694 | 1695 | // lock focus within modal while tabbing 1696 | this.$element.on('keydown.zf.reveal', function (e) { 1697 | var $target = $(this); 1698 | // handle keyboard event with keyboard util 1699 | Foundation.Keyboard.handleKey(e, 'Reveal', { 1700 | open: function () { 1701 | if (_this.$element.find(':focus').is(_this.$element.find('[data-close]'))) { 1702 | setTimeout(function () { 1703 | // set focus back to anchor if close button has been activated 1704 | _this.$anchor.focus(); 1705 | }, 1); 1706 | } else if ($target.is(_this.focusableElements)) { 1707 | // dont't trigger if acual element has focus (i.e. inputs, links, ...) 1708 | _this.open(); 1709 | } 1710 | }, 1711 | close: function () { 1712 | if (_this.options.closeOnEsc) { 1713 | _this.close(); 1714 | _this.$anchor.focus(); 1715 | } 1716 | }, 1717 | handled: function (preventDefault) { 1718 | if (preventDefault) { 1719 | e.preventDefault(); 1720 | } 1721 | } 1722 | }); 1723 | }); 1724 | } 1725 | 1726 | /** 1727 | * Closes the modal. 1728 | * @function 1729 | * @fires Reveal#closed 1730 | */ 1731 | 1732 | }, { 1733 | key: 'close', 1734 | value: function close() { 1735 | if (!this.isActive || !this.$element.is(':visible')) { 1736 | return false; 1737 | } 1738 | var _this = this; 1739 | 1740 | // Motion UI method of hiding 1741 | if (this.options.animationOut) { 1742 | if (this.options.overlay) { 1743 | Foundation.Motion.animateOut(this.$overlay, 'fade-out', finishUp); 1744 | } else { 1745 | finishUp(); 1746 | } 1747 | 1748 | Foundation.Motion.animateOut(this.$element, this.options.animationOut); 1749 | } 1750 | // jQuery method of hiding 1751 | else { 1752 | if (this.options.overlay) { 1753 | this.$overlay.hide(0, finishUp); 1754 | } else { 1755 | finishUp(); 1756 | } 1757 | 1758 | this.$element.hide(this.options.hideDelay); 1759 | } 1760 | 1761 | // Conditionals to remove extra event listeners added on open 1762 | if (this.options.closeOnEsc) { 1763 | $(window).off('keydown.zf.reveal'); 1764 | } 1765 | 1766 | if (!this.options.overlay && this.options.closeOnClick) { 1767 | $('body').off('click.zf.reveal'); 1768 | } 1769 | 1770 | this.$element.off('keydown.zf.reveal'); 1771 | 1772 | function finishUp() { 1773 | if (_this.isMobile) { 1774 | $('html, body').removeClass('is-reveal-open'); 1775 | if (_this.originalScrollPos) { 1776 | $('body').scrollTop(_this.originalScrollPos); 1777 | _this.originalScrollPos = null; 1778 | } 1779 | } else { 1780 | $('body').removeClass('is-reveal-open'); 1781 | } 1782 | 1783 | Foundation.Keyboard.releaseFocus(_this.$element); 1784 | 1785 | _this.$element.attr('aria-hidden', true); 1786 | 1787 | /** 1788 | * Fires when the modal is done closing. 1789 | * @event Reveal#closed 1790 | */ 1791 | _this.$element.trigger('closed.zf.reveal'); 1792 | } 1793 | 1794 | /** 1795 | * Resets the modal content 1796 | * This prevents a running video to keep going in the background 1797 | */ 1798 | if (this.options.resetOnClose) { 1799 | this.$element.html(this.$element.html()); 1800 | } 1801 | 1802 | this.isActive = false; 1803 | if (_this.options.deepLink) { 1804 | if (window.history.replaceState) { 1805 | window.history.replaceState('', document.title, window.location.href.replace('#' + this.id, '')); 1806 | } else { 1807 | window.location.hash = ''; 1808 | } 1809 | } 1810 | } 1811 | 1812 | /** 1813 | * Toggles the open/closed state of a modal. 1814 | * @function 1815 | */ 1816 | 1817 | }, { 1818 | key: 'toggle', 1819 | value: function toggle() { 1820 | if (this.isActive) { 1821 | this.close(); 1822 | } else { 1823 | this.open(); 1824 | } 1825 | } 1826 | }, { 1827 | key: 'destroy', 1828 | 1829 | 1830 | /** 1831 | * Destroys an instance of a modal. 1832 | * @function 1833 | */ 1834 | value: function destroy() { 1835 | if (this.options.overlay) { 1836 | this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin() 1837 | this.$overlay.hide().off().remove(); 1838 | } 1839 | this.$element.hide().off(); 1840 | this.$anchor.off('.zf'); 1841 | $(window).off('.zf.reveal:' + this.id); 1842 | 1843 | Foundation.unregisterPlugin(this); 1844 | } 1845 | }]); 1846 | 1847 | return Reveal; 1848 | }(); 1849 | 1850 | Reveal.defaults = { 1851 | /** 1852 | * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. 1853 | * @option 1854 | * @type {string} 1855 | * @default '' 1856 | */ 1857 | animationIn: '', 1858 | /** 1859 | * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. 1860 | * @option 1861 | * @type {string} 1862 | * @default '' 1863 | */ 1864 | animationOut: '', 1865 | /** 1866 | * Time, in ms, to delay the opening of a modal after a click if no animation used. 1867 | * @option 1868 | * @type {number} 1869 | * @default 0 1870 | */ 1871 | showDelay: 0, 1872 | /** 1873 | * Time, in ms, to delay the closing of a modal after a click if no animation used. 1874 | * @option 1875 | * @type {number} 1876 | * @default 0 1877 | */ 1878 | hideDelay: 0, 1879 | /** 1880 | * Allows a click on the body/overlay to close the modal. 1881 | * @option 1882 | * @type {boolean} 1883 | * @default true 1884 | */ 1885 | closeOnClick: true, 1886 | /** 1887 | * Allows the modal to close if the user presses the `ESCAPE` key. 1888 | * @option 1889 | * @type {boolean} 1890 | * @default true 1891 | */ 1892 | closeOnEsc: true, 1893 | /** 1894 | * If true, allows multiple modals to be displayed at once. 1895 | * @option 1896 | * @type {boolean} 1897 | * @default false 1898 | */ 1899 | multipleOpened: false, 1900 | /** 1901 | * Distance, in pixels, the modal should push down from the top of the screen. 1902 | * @option 1903 | * @type {number|string} 1904 | * @default auto 1905 | */ 1906 | vOffset: 'auto', 1907 | /** 1908 | * Distance, in pixels, the modal should push in from the side of the screen. 1909 | * @option 1910 | * @type {number|string} 1911 | * @default auto 1912 | */ 1913 | hOffset: 'auto', 1914 | /** 1915 | * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well. 1916 | * @option 1917 | * @type {boolean} 1918 | * @default false 1919 | */ 1920 | fullScreen: false, 1921 | /** 1922 | * Percentage of screen height the modal should push up from the bottom of the view. 1923 | * @option 1924 | * @type {number} 1925 | * @default 10 1926 | */ 1927 | btmOffsetPct: 10, 1928 | /** 1929 | * Allows the modal to generate an overlay div, which will cover the view when modal opens. 1930 | * @option 1931 | * @type {boolean} 1932 | * @default true 1933 | */ 1934 | overlay: true, 1935 | /** 1936 | * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background. 1937 | * @option 1938 | * @type {boolean} 1939 | * @default false 1940 | */ 1941 | resetOnClose: false, 1942 | /** 1943 | * Allows the modal to alter the url on open/close, and allows the use of the `back` button to close modals. ALSO, allows a modal to auto-maniacally open on page load IF the hash === the modal's user-set id. 1944 | * @option 1945 | * @type {boolean} 1946 | * @default false 1947 | */ 1948 | deepLink: false, 1949 | /** 1950 | * Allows the modal to append to custom div. 1951 | * @option 1952 | * @type {string} 1953 | * @default "body" 1954 | */ 1955 | appendTo: "body" 1956 | 1957 | }; 1958 | 1959 | // Window exports 1960 | Foundation.plugin(Reveal, 'Reveal'); 1961 | 1962 | function iPhoneSniff() { 1963 | return (/iP(ad|hone|od).*OS/.test(window.navigator.userAgent) 1964 | ); 1965 | } 1966 | 1967 | function androidSniff() { 1968 | return (/Android/.test(window.navigator.userAgent) 1969 | ); 1970 | } 1971 | 1972 | function mobileSniff() { 1973 | return iPhoneSniff() || androidSniff(); 1974 | } 1975 | }(jQuery); -------------------------------------------------------------------------------- /css/foundation.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /** 3 | * Foundation for Sites by ZURB 4 | * Version 6.3.1 5 | * foundation.zurb.com 6 | * Licensed under MIT Open Source 7 | */ 8 | /*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */ 9 | /* Document 10 | ========================================================================== */ 11 | /** 12 | * 1. Change the default font family in all browsers (opinionated). 13 | * 2. Correct the line height in all browsers. 14 | * 3. Prevent adjustments of font size after orientation changes in 15 | * IE on Windows Phone and in iOS. 16 | */ 17 | html { 18 | font-family: sans-serif; 19 | /* 1 */ 20 | line-height: 1.15; 21 | /* 2 */ 22 | -ms-text-size-adjust: 100%; 23 | /* 3 */ 24 | -webkit-text-size-adjust: 100%; 25 | /* 3 */ } 26 | 27 | /* Sections 28 | ========================================================================== */ 29 | /** 30 | * Remove the margin in all browsers (opinionated). 31 | */ 32 | body { 33 | margin: 0; } 34 | 35 | /** 36 | * Add the correct display in IE 9-. 37 | */ 38 | article, 39 | aside, 40 | footer, 41 | header, 42 | nav, 43 | section { 44 | display: block; } 45 | 46 | /** 47 | * Correct the font size and margin on `h1` elements within `section` and 48 | * `article` contexts in Chrome, Firefox, and Safari. 49 | */ 50 | h1 { 51 | font-size: 2em; 52 | margin: 0.67em 0; } 53 | 54 | /* Grouping content 55 | ========================================================================== */ 56 | /** 57 | * Add the correct display in IE 9-. 58 | */ 59 | figcaption, 60 | figure { 61 | display: block; } 62 | 63 | /** 64 | * Add the correct margin in IE 8. 65 | */ 66 | figure { 67 | margin: 1em 40px; } 68 | 69 | /** 70 | * 1. Add the correct box sizing in Firefox. 71 | * 2. Show the overflow in Edge and IE. 72 | */ 73 | hr { 74 | box-sizing: content-box; 75 | /* 1 */ 76 | height: 0; 77 | /* 1 */ 78 | overflow: visible; 79 | /* 2 */ } 80 | 81 | /** 82 | * Add the correct display in IE. 83 | */ 84 | main { 85 | display: block; } 86 | 87 | /** 88 | * 1. Correct the inheritance and scaling of font size in all browsers. 89 | * 2. Correct the odd `em` font sizing in all browsers. 90 | */ 91 | pre { 92 | font-family: monospace, monospace; 93 | /* 1 */ 94 | font-size: 1em; 95 | /* 2 */ } 96 | 97 | /* Links 98 | ========================================================================== */ 99 | /** 100 | * 1. Remove the gray background on active links in IE 10. 101 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 102 | */ 103 | a { 104 | background-color: transparent; 105 | /* 1 */ 106 | -webkit-text-decoration-skip: objects; 107 | /* 2 */ } 108 | 109 | /** 110 | * Remove the outline on focused links when they are also active or hovered 111 | * in all browsers (opinionated). 112 | */ 113 | a:active, 114 | a:hover { 115 | outline-width: 0; } 116 | 117 | /* Text-level semantics 118 | ========================================================================== */ 119 | /** 120 | * 1. Remove the bottom border in Firefox 39-. 121 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 122 | */ 123 | abbr[title] { 124 | border-bottom: none; 125 | /* 1 */ 126 | text-decoration: underline; 127 | /* 2 */ 128 | text-decoration: underline dotted; 129 | /* 2 */ } 130 | 131 | /** 132 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 133 | */ 134 | b, 135 | strong { 136 | font-weight: inherit; } 137 | 138 | /** 139 | * Add the correct font weight in Chrome, Edge, and Safari. 140 | */ 141 | b, 142 | strong { 143 | font-weight: bolder; } 144 | 145 | /** 146 | * 1. Correct the inheritance and scaling of font size in all browsers. 147 | * 2. Correct the odd `em` font sizing in all browsers. 148 | */ 149 | code, 150 | kbd, 151 | samp { 152 | font-family: monospace, monospace; 153 | /* 1 */ 154 | font-size: 1em; 155 | /* 2 */ } 156 | 157 | /** 158 | * Add the correct font style in Android 4.3-. 159 | */ 160 | dfn { 161 | font-style: italic; } 162 | 163 | /** 164 | * Add the correct background and color in IE 9-. 165 | */ 166 | mark { 167 | background-color: #ff0; 168 | color: #000; } 169 | 170 | /** 171 | * Add the correct font size in all browsers. 172 | */ 173 | small { 174 | font-size: 80%; } 175 | 176 | /** 177 | * Prevent `sub` and `sup` elements from affecting the line height in 178 | * all browsers. 179 | */ 180 | sub, 181 | sup { 182 | font-size: 75%; 183 | line-height: 0; 184 | position: relative; 185 | vertical-align: baseline; } 186 | 187 | sub { 188 | bottom: -0.25em; } 189 | 190 | sup { 191 | top: -0.5em; } 192 | 193 | /* Embedded content 194 | ========================================================================== */ 195 | /** 196 | * Add the correct display in IE 9-. 197 | */ 198 | audio, 199 | video { 200 | display: inline-block; } 201 | 202 | /** 203 | * Add the correct display in iOS 4-7. 204 | */ 205 | audio:not([controls]) { 206 | display: none; 207 | height: 0; } 208 | 209 | /** 210 | * Remove the border on images inside links in IE 10-. 211 | */ 212 | img { 213 | border-style: none; } 214 | 215 | /** 216 | * Hide the overflow in IE. 217 | */ 218 | svg:not(:root) { 219 | overflow: hidden; } 220 | 221 | /* Forms 222 | ========================================================================== */ 223 | /** 224 | * 1. Change the font styles in all browsers (opinionated). 225 | * 2. Remove the margin in Firefox and Safari. 226 | */ 227 | button, 228 | input, 229 | optgroup, 230 | select, 231 | textarea { 232 | font-family: sans-serif; 233 | /* 1 */ 234 | font-size: 100%; 235 | /* 1 */ 236 | line-height: 1.15; 237 | /* 1 */ 238 | margin: 0; 239 | /* 2 */ } 240 | 241 | /** 242 | * Show the overflow in IE. 243 | */ 244 | button { 245 | overflow: visible; } 246 | 247 | /** 248 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 249 | * 1. Remove the inheritance of text transform in Firefox. 250 | */ 251 | button, 252 | select { 253 | /* 1 */ 254 | text-transform: none; } 255 | 256 | /** 257 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 258 | * controls in Android 4. 259 | * 2. Correct the inability to style clickable types in iOS and Safari. 260 | */ 261 | button, 262 | html [type="button"], 263 | [type="reset"], 264 | [type="submit"] { 265 | -webkit-appearance: button; 266 | /* 2 */ } 267 | 268 | button, 269 | [type="button"], 270 | [type="reset"], 271 | [type="submit"] { 272 | /** 273 | * Remove the inner border and padding in Firefox. 274 | */ 275 | /** 276 | * Restore the focus styles unset by the previous rule. 277 | */ } 278 | button::-moz-focus-inner, 279 | [type="button"]::-moz-focus-inner, 280 | [type="reset"]::-moz-focus-inner, 281 | [type="submit"]::-moz-focus-inner { 282 | border-style: none; 283 | padding: 0; } 284 | button:-moz-focusring, 285 | [type="button"]:-moz-focusring, 286 | [type="reset"]:-moz-focusring, 287 | [type="submit"]:-moz-focusring { 288 | outline: 1px dotted ButtonText; } 289 | 290 | /** 291 | * Show the overflow in Edge. 292 | */ 293 | input { 294 | overflow: visible; } 295 | 296 | /** 297 | * 1. Add the correct box sizing in IE 10-. 298 | * 2. Remove the padding in IE 10-. 299 | */ 300 | [type="checkbox"], 301 | [type="radio"] { 302 | box-sizing: border-box; 303 | /* 1 */ 304 | padding: 0; 305 | /* 2 */ } 306 | 307 | /** 308 | * Correct the cursor style of increment and decrement buttons in Chrome. 309 | */ 310 | [type="number"]::-webkit-inner-spin-button, 311 | [type="number"]::-webkit-outer-spin-button { 312 | height: auto; } 313 | 314 | /** 315 | * 1. Correct the odd appearance in Chrome and Safari. 316 | * 2. Correct the outline style in Safari. 317 | */ 318 | [type="search"] { 319 | -webkit-appearance: textfield; 320 | /* 1 */ 321 | outline-offset: -2px; 322 | /* 2 */ 323 | /** 324 | * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. 325 | */ } 326 | [type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration { 327 | -webkit-appearance: none; } 328 | 329 | /** 330 | * 1. Correct the inability to style clickable types in iOS and Safari. 331 | * 2. Change font properties to `inherit` in Safari. 332 | */ 333 | ::-webkit-file-upload-button { 334 | -webkit-appearance: button; 335 | /* 1 */ 336 | font: inherit; 337 | /* 2 */ } 338 | 339 | /** 340 | * Change the border, margin, and padding in all browsers (opinionated). 341 | */ 342 | fieldset { 343 | border: 1px solid #c0c0c0; 344 | margin: 0 2px; 345 | padding: 0.35em 0.625em 0.75em; } 346 | 347 | /** 348 | * 1. Correct the text wrapping in Edge and IE. 349 | * 2. Correct the color inheritance from `fieldset` elements in IE. 350 | * 3. Remove the padding so developers are not caught out when they zero out 351 | * `fieldset` elements in all browsers. 352 | */ 353 | legend { 354 | box-sizing: border-box; 355 | /* 1 */ 356 | display: table; 357 | /* 1 */ 358 | max-width: 100%; 359 | /* 1 */ 360 | padding: 0; 361 | /* 3 */ 362 | color: inherit; 363 | /* 2 */ 364 | white-space: normal; 365 | /* 1 */ } 366 | 367 | /** 368 | * 1. Add the correct display in IE 9-. 369 | * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. 370 | */ 371 | progress { 372 | display: inline-block; 373 | /* 1 */ 374 | vertical-align: baseline; 375 | /* 2 */ } 376 | 377 | /** 378 | * Remove the default vertical scrollbar in IE. 379 | */ 380 | textarea { 381 | overflow: auto; } 382 | 383 | /* Interactive 384 | ========================================================================== */ 385 | /* 386 | * Add the correct display in Edge, IE, and Firefox. 387 | */ 388 | details { 389 | display: block; } 390 | 391 | /* 392 | * Add the correct display in all browsers. 393 | */ 394 | summary { 395 | display: list-item; } 396 | 397 | /* 398 | * Add the correct display in IE 9-. 399 | */ 400 | menu { 401 | display: block; } 402 | 403 | /* Scripting 404 | ========================================================================== */ 405 | /** 406 | * Add the correct display in IE 9-. 407 | */ 408 | canvas { 409 | display: inline-block; } 410 | 411 | /** 412 | * Add the correct display in IE. 413 | */ 414 | template { 415 | display: none; } 416 | 417 | /* Hidden 418 | ========================================================================== */ 419 | /** 420 | * Add the correct display in IE 10-. 421 | */ 422 | [hidden] { 423 | display: none; } 424 | 425 | .foundation-mq { 426 | font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; } 427 | 428 | html { 429 | box-sizing: border-box; 430 | font-size: 100%; } 431 | 432 | *, 433 | *::before, 434 | *::after { 435 | box-sizing: inherit; } 436 | 437 | body { 438 | margin: 0; 439 | padding: 0; 440 | background: #fefefe; 441 | font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; 442 | font-weight: normal; 443 | line-height: 1.5; 444 | color: #0a0a0a; 445 | -webkit-font-smoothing: antialiased; 446 | -moz-osx-font-smoothing: grayscale; } 447 | 448 | img { 449 | display: inline-block; 450 | vertical-align: middle; 451 | max-width: 100%; 452 | height: auto; 453 | -ms-interpolation-mode: bicubic; } 454 | 455 | textarea { 456 | height: auto; 457 | min-height: 50px; 458 | border-radius: 0; } 459 | 460 | select { 461 | box-sizing: border-box; 462 | width: 100%; 463 | border-radius: 0; } 464 | 465 | .map_canvas img, 466 | .map_canvas embed, 467 | .map_canvas object, 468 | .mqa-display img, 469 | .mqa-display embed, 470 | .mqa-display object { 471 | max-width: none !important; } 472 | 473 | button { 474 | padding: 0; 475 | -webkit-appearance: none; 476 | -moz-appearance: none; 477 | appearance: none; 478 | border: 0; 479 | border-radius: 0; 480 | background: transparent; 481 | line-height: 1; } 482 | [data-whatinput='mouse'] button { 483 | outline: 0; } 484 | 485 | pre { 486 | overflow: auto; } 487 | 488 | .is-visible { 489 | display: block !important; } 490 | 491 | .is-hidden { 492 | display: none !important; } 493 | 494 | div, 495 | dl, 496 | dt, 497 | dd, 498 | ul, 499 | ol, 500 | li, 501 | h1, 502 | h2, 503 | h3, 504 | h4, 505 | h5, 506 | h6, 507 | pre, 508 | form, 509 | p, 510 | blockquote, 511 | th, 512 | td { 513 | margin: 0; 514 | padding: 0; } 515 | 516 | p { 517 | margin-bottom: 1rem; 518 | font-size: inherit; 519 | line-height: 1.6; 520 | text-rendering: optimizeLegibility; } 521 | 522 | em, 523 | i { 524 | font-style: italic; 525 | line-height: inherit; } 526 | 527 | strong, 528 | b { 529 | font-weight: bold; 530 | line-height: inherit; } 531 | 532 | small { 533 | font-size: 80%; 534 | line-height: inherit; } 535 | 536 | h1, 537 | h2, 538 | h3, 539 | h4, 540 | h5, 541 | h6 { 542 | font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; 543 | font-style: normal; 544 | font-weight: normal; 545 | color: inherit; 546 | text-rendering: optimizeLegibility; } 547 | h1 small, 548 | h2 small, 549 | h3 small, 550 | h4 small, 551 | h5 small, 552 | h6 small { 553 | line-height: 0; 554 | color: #cacaca; } 555 | 556 | h1 { 557 | font-size: 1.5rem; 558 | line-height: 1.4; 559 | margin-top: 0; 560 | margin-bottom: 0.5rem; } 561 | 562 | h2 { 563 | font-size: 1.25rem; 564 | line-height: 1.4; 565 | margin-top: 0; 566 | margin-bottom: 0.5rem; } 567 | 568 | h3 { 569 | font-size: 1.1875rem; 570 | line-height: 1.4; 571 | margin-top: 0; 572 | margin-bottom: 0.5rem; } 573 | 574 | h4 { 575 | font-size: 1.125rem; 576 | line-height: 1.4; 577 | margin-top: 0; 578 | margin-bottom: 0.5rem; } 579 | 580 | h5 { 581 | font-size: 1.0625rem; 582 | line-height: 1.4; 583 | margin-top: 0; 584 | margin-bottom: 0.5rem; } 585 | 586 | h6 { 587 | font-size: 1rem; 588 | line-height: 1.4; 589 | margin-top: 0; 590 | margin-bottom: 0.5rem; } 591 | 592 | @media print, screen and (min-width: 40em) { 593 | h1 { 594 | font-size: 3rem; } 595 | h2 { 596 | font-size: 2.5rem; } 597 | h3 { 598 | font-size: 1.9375rem; } 599 | h4 { 600 | font-size: 1.5625rem; } 601 | h5 { 602 | font-size: 1.25rem; } 603 | h6 { 604 | font-size: 1rem; } } 605 | 606 | a { 607 | line-height: inherit; 608 | color: #1779ba; 609 | text-decoration: none; 610 | cursor: pointer; } 611 | a:hover, a:focus { 612 | color: #1468a0; } 613 | a img { 614 | border: 0; } 615 | 616 | hr { 617 | clear: both; 618 | max-width: 75rem; 619 | height: 0; 620 | margin: 1.25rem auto; 621 | border-top: 0; 622 | border-right: 0; 623 | border-bottom: 1px solid #cacaca; 624 | border-left: 0; } 625 | 626 | ul, 627 | ol, 628 | dl { 629 | margin-bottom: 1rem; 630 | list-style-position: outside; 631 | line-height: 1.6; } 632 | 633 | li { 634 | font-size: inherit; } 635 | 636 | ul { 637 | margin-left: 1.25rem; 638 | list-style-type: disc; } 639 | 640 | ol { 641 | margin-left: 1.25rem; } 642 | 643 | ul ul, ol ul, ul ol, ol ol { 644 | margin-left: 1.25rem; 645 | margin-bottom: 0; } 646 | 647 | dl { 648 | margin-bottom: 1rem; } 649 | dl dt { 650 | margin-bottom: 0.3rem; 651 | font-weight: bold; } 652 | 653 | blockquote { 654 | margin: 0 0 1rem; 655 | padding: 0.5625rem 1.25rem 0 1.1875rem; 656 | border-left: 1px solid #cacaca; } 657 | blockquote, blockquote p { 658 | line-height: 1.6; 659 | color: #8a8a8a; } 660 | 661 | cite { 662 | display: block; 663 | font-size: 0.8125rem; 664 | color: #8a8a8a; } 665 | cite:before { 666 | content: "— "; } 667 | 668 | abbr { 669 | border-bottom: 1px dotted #0a0a0a; 670 | color: #0a0a0a; 671 | cursor: help; } 672 | 673 | figure { 674 | margin: 0; } 675 | 676 | code { 677 | padding: 0.125rem 0.3125rem 0.0625rem; 678 | border: 1px solid #cacaca; 679 | background-color: #e6e6e6; 680 | font-family: Consolas, "Liberation Mono", Courier, monospace; 681 | font-weight: normal; 682 | color: #0a0a0a; } 683 | 684 | kbd { 685 | margin: 0; 686 | padding: 0.125rem 0.25rem 0; 687 | background-color: #e6e6e6; 688 | font-family: Consolas, "Liberation Mono", Courier, monospace; 689 | color: #0a0a0a; } 690 | 691 | .subheader { 692 | margin-top: 0.2rem; 693 | margin-bottom: 0.5rem; 694 | font-weight: normal; 695 | line-height: 1.4; 696 | color: #8a8a8a; } 697 | 698 | .lead { 699 | font-size: 125%; 700 | line-height: 1.6; } 701 | 702 | .stat { 703 | font-size: 2.5rem; 704 | line-height: 1; } 705 | p + .stat { 706 | margin-top: -1rem; } 707 | 708 | .no-bullet { 709 | margin-left: 0; 710 | list-style: none; } 711 | 712 | .text-left { 713 | text-align: left; } 714 | 715 | .text-right { 716 | text-align: right; } 717 | 718 | .text-center { 719 | text-align: center; } 720 | 721 | .text-justify { 722 | text-align: justify; } 723 | 724 | @media print, screen and (min-width: 40em) { 725 | .medium-text-left { 726 | text-align: left; } 727 | .medium-text-right { 728 | text-align: right; } 729 | .medium-text-center { 730 | text-align: center; } 731 | .medium-text-justify { 732 | text-align: justify; } } 733 | 734 | @media print, screen and (min-width: 64em) { 735 | .large-text-left { 736 | text-align: left; } 737 | .large-text-right { 738 | text-align: right; } 739 | .large-text-center { 740 | text-align: center; } 741 | .large-text-justify { 742 | text-align: justify; } } 743 | 744 | .show-for-print { 745 | display: none !important; } 746 | 747 | @media print { 748 | * { 749 | background: transparent !important; 750 | box-shadow: none !important; 751 | color: black !important; 752 | text-shadow: none !important; } 753 | .show-for-print { 754 | display: block !important; } 755 | .hide-for-print { 756 | display: none !important; } 757 | table.show-for-print { 758 | display: table !important; } 759 | thead.show-for-print { 760 | display: table-header-group !important; } 761 | tbody.show-for-print { 762 | display: table-row-group !important; } 763 | tr.show-for-print { 764 | display: table-row !important; } 765 | td.show-for-print { 766 | display: table-cell !important; } 767 | th.show-for-print { 768 | display: table-cell !important; } 769 | a, 770 | a:visited { 771 | text-decoration: underline; } 772 | a[href]:after { 773 | content: " (" attr(href) ")"; } 774 | .ir a:after, 775 | a[href^='javascript:']:after, 776 | a[href^='#']:after { 777 | content: ''; } 778 | abbr[title]:after { 779 | content: " (" attr(title) ")"; } 780 | pre, 781 | blockquote { 782 | border: 1px solid #8a8a8a; 783 | page-break-inside: avoid; } 784 | thead { 785 | display: table-header-group; } 786 | tr, 787 | img { 788 | page-break-inside: avoid; } 789 | img { 790 | max-width: 100% !important; } 791 | @page { 792 | margin: 0.5cm; } 793 | p, 794 | h2, 795 | h3 { 796 | orphans: 3; 797 | widows: 3; } 798 | h2, 799 | h3 { 800 | page-break-after: avoid; } } 801 | 802 | .row { 803 | max-width: 75rem; 804 | margin-right: auto; 805 | margin-left: auto; } 806 | .row::before, .row::after { 807 | display: table; 808 | content: ' '; } 809 | .row::after { 810 | clear: both; } 811 | .row.collapse > .column, .row.collapse > .columns { 812 | padding-right: 0; 813 | padding-left: 0; } 814 | .row .row { 815 | margin-right: -0.625rem; 816 | margin-left: -0.625rem; } 817 | @media print, screen and (min-width: 40em) { 818 | .row .row { 819 | margin-right: -0.9375rem; 820 | margin-left: -0.9375rem; } } 821 | @media print, screen and (min-width: 64em) { 822 | .row .row { 823 | margin-right: -0.9375rem; 824 | margin-left: -0.9375rem; } } 825 | .row .row.collapse { 826 | margin-right: 0; 827 | margin-left: 0; } 828 | .row.expanded { 829 | max-width: none; } 830 | .row.expanded .row { 831 | margin-right: auto; 832 | margin-left: auto; } 833 | .row:not(.expanded) .row { 834 | max-width: none; } 835 | .row.gutter-small > .column, .row.gutter-small > .columns { 836 | padding-right: 0.625rem; 837 | padding-left: 0.625rem; } 838 | .row.gutter-medium > .column, .row.gutter-medium > .columns { 839 | padding-right: 0.9375rem; 840 | padding-left: 0.9375rem; } 841 | 842 | .column, .columns { 843 | width: 100%; 844 | float: left; 845 | padding-right: 0.625rem; 846 | padding-left: 0.625rem; } 847 | @media print, screen and (min-width: 40em) { 848 | .column, .columns { 849 | padding-right: 0.9375rem; 850 | padding-left: 0.9375rem; } } 851 | .column:last-child:not(:first-child), .columns:last-child:not(:first-child) { 852 | float: right; } 853 | .column.end:last-child:last-child, .end.columns:last-child:last-child { 854 | float: left; } 855 | 856 | .column.row.row, .row.row.columns { 857 | float: none; } 858 | 859 | .row .column.row.row, .row .row.row.columns { 860 | margin-right: 0; 861 | margin-left: 0; 862 | padding-right: 0; 863 | padding-left: 0; } 864 | 865 | .small-1 { 866 | width: 8.33333%; } 867 | 868 | .small-push-1 { 869 | position: relative; 870 | left: 8.33333%; } 871 | 872 | .small-pull-1 { 873 | position: relative; 874 | left: -8.33333%; } 875 | 876 | .small-offset-0 { 877 | margin-left: 0%; } 878 | 879 | .small-2 { 880 | width: 16.66667%; } 881 | 882 | .small-push-2 { 883 | position: relative; 884 | left: 16.66667%; } 885 | 886 | .small-pull-2 { 887 | position: relative; 888 | left: -16.66667%; } 889 | 890 | .small-offset-1 { 891 | margin-left: 8.33333%; } 892 | 893 | .small-3 { 894 | width: 25%; } 895 | 896 | .small-push-3 { 897 | position: relative; 898 | left: 25%; } 899 | 900 | .small-pull-3 { 901 | position: relative; 902 | left: -25%; } 903 | 904 | .small-offset-2 { 905 | margin-left: 16.66667%; } 906 | 907 | .small-4 { 908 | width: 33.33333%; } 909 | 910 | .small-push-4 { 911 | position: relative; 912 | left: 33.33333%; } 913 | 914 | .small-pull-4 { 915 | position: relative; 916 | left: -33.33333%; } 917 | 918 | .small-offset-3 { 919 | margin-left: 25%; } 920 | 921 | .small-5 { 922 | width: 41.66667%; } 923 | 924 | .small-push-5 { 925 | position: relative; 926 | left: 41.66667%; } 927 | 928 | .small-pull-5 { 929 | position: relative; 930 | left: -41.66667%; } 931 | 932 | .small-offset-4 { 933 | margin-left: 33.33333%; } 934 | 935 | .small-6 { 936 | width: 50%; } 937 | 938 | .small-push-6 { 939 | position: relative; 940 | left: 50%; } 941 | 942 | .small-pull-6 { 943 | position: relative; 944 | left: -50%; } 945 | 946 | .small-offset-5 { 947 | margin-left: 41.66667%; } 948 | 949 | .small-7 { 950 | width: 58.33333%; } 951 | 952 | .small-push-7 { 953 | position: relative; 954 | left: 58.33333%; } 955 | 956 | .small-pull-7 { 957 | position: relative; 958 | left: -58.33333%; } 959 | 960 | .small-offset-6 { 961 | margin-left: 50%; } 962 | 963 | .small-8 { 964 | width: 66.66667%; } 965 | 966 | .small-push-8 { 967 | position: relative; 968 | left: 66.66667%; } 969 | 970 | .small-pull-8 { 971 | position: relative; 972 | left: -66.66667%; } 973 | 974 | .small-offset-7 { 975 | margin-left: 58.33333%; } 976 | 977 | .small-9 { 978 | width: 75%; } 979 | 980 | .small-push-9 { 981 | position: relative; 982 | left: 75%; } 983 | 984 | .small-pull-9 { 985 | position: relative; 986 | left: -75%; } 987 | 988 | .small-offset-8 { 989 | margin-left: 66.66667%; } 990 | 991 | .small-10 { 992 | width: 83.33333%; } 993 | 994 | .small-push-10 { 995 | position: relative; 996 | left: 83.33333%; } 997 | 998 | .small-pull-10 { 999 | position: relative; 1000 | left: -83.33333%; } 1001 | 1002 | .small-offset-9 { 1003 | margin-left: 75%; } 1004 | 1005 | .small-11 { 1006 | width: 91.66667%; } 1007 | 1008 | .small-push-11 { 1009 | position: relative; 1010 | left: 91.66667%; } 1011 | 1012 | .small-pull-11 { 1013 | position: relative; 1014 | left: -91.66667%; } 1015 | 1016 | .small-offset-10 { 1017 | margin-left: 83.33333%; } 1018 | 1019 | .small-12 { 1020 | width: 100%; } 1021 | 1022 | .small-offset-11 { 1023 | margin-left: 91.66667%; } 1024 | 1025 | .small-up-1 > .column, .small-up-1 > .columns { 1026 | float: left; 1027 | width: 100%; } 1028 | .small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) { 1029 | clear: none; } 1030 | .small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) { 1031 | clear: both; } 1032 | .small-up-1 > .column:last-child, .small-up-1 > .columns:last-child { 1033 | float: left; } 1034 | 1035 | .small-up-2 > .column, .small-up-2 > .columns { 1036 | float: left; 1037 | width: 50%; } 1038 | .small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) { 1039 | clear: none; } 1040 | .small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) { 1041 | clear: both; } 1042 | .small-up-2 > .column:last-child, .small-up-2 > .columns:last-child { 1043 | float: left; } 1044 | 1045 | .small-up-3 > .column, .small-up-3 > .columns { 1046 | float: left; 1047 | width: 33.33333%; } 1048 | .small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) { 1049 | clear: none; } 1050 | .small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) { 1051 | clear: both; } 1052 | .small-up-3 > .column:last-child, .small-up-3 > .columns:last-child { 1053 | float: left; } 1054 | 1055 | .small-up-4 > .column, .small-up-4 > .columns { 1056 | float: left; 1057 | width: 25%; } 1058 | .small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) { 1059 | clear: none; } 1060 | .small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) { 1061 | clear: both; } 1062 | .small-up-4 > .column:last-child, .small-up-4 > .columns:last-child { 1063 | float: left; } 1064 | 1065 | .small-up-5 > .column, .small-up-5 > .columns { 1066 | float: left; 1067 | width: 20%; } 1068 | .small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) { 1069 | clear: none; } 1070 | .small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) { 1071 | clear: both; } 1072 | .small-up-5 > .column:last-child, .small-up-5 > .columns:last-child { 1073 | float: left; } 1074 | 1075 | .small-up-6 > .column, .small-up-6 > .columns { 1076 | float: left; 1077 | width: 16.66667%; } 1078 | .small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) { 1079 | clear: none; } 1080 | .small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) { 1081 | clear: both; } 1082 | .small-up-6 > .column:last-child, .small-up-6 > .columns:last-child { 1083 | float: left; } 1084 | 1085 | .small-up-7 > .column, .small-up-7 > .columns { 1086 | float: left; 1087 | width: 14.28571%; } 1088 | .small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) { 1089 | clear: none; } 1090 | .small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) { 1091 | clear: both; } 1092 | .small-up-7 > .column:last-child, .small-up-7 > .columns:last-child { 1093 | float: left; } 1094 | 1095 | .small-up-8 > .column, .small-up-8 > .columns { 1096 | float: left; 1097 | width: 12.5%; } 1098 | .small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) { 1099 | clear: none; } 1100 | .small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) { 1101 | clear: both; } 1102 | .small-up-8 > .column:last-child, .small-up-8 > .columns:last-child { 1103 | float: left; } 1104 | 1105 | .small-collapse > .column, .small-collapse > .columns { 1106 | padding-right: 0; 1107 | padding-left: 0; } 1108 | 1109 | .small-collapse .row { 1110 | margin-right: 0; 1111 | margin-left: 0; } 1112 | 1113 | .expanded.row .small-collapse.row { 1114 | margin-right: 0; 1115 | margin-left: 0; } 1116 | 1117 | .small-uncollapse > .column, .small-uncollapse > .columns { 1118 | padding-right: 0.625rem; 1119 | padding-left: 0.625rem; } 1120 | 1121 | .small-centered { 1122 | margin-right: auto; 1123 | margin-left: auto; } 1124 | .small-centered, .small-centered:last-child:not(:first-child) { 1125 | float: none; 1126 | clear: both; } 1127 | 1128 | .small-uncentered, 1129 | .small-push-0, 1130 | .small-pull-0 { 1131 | position: static; 1132 | float: left; 1133 | margin-right: 0; 1134 | margin-left: 0; } 1135 | 1136 | @media print, screen and (min-width: 40em) { 1137 | .medium-1 { 1138 | width: 8.33333%; } 1139 | .medium-push-1 { 1140 | position: relative; 1141 | left: 8.33333%; } 1142 | .medium-pull-1 { 1143 | position: relative; 1144 | left: -8.33333%; } 1145 | .medium-offset-0 { 1146 | margin-left: 0%; } 1147 | .medium-2 { 1148 | width: 16.66667%; } 1149 | .medium-push-2 { 1150 | position: relative; 1151 | left: 16.66667%; } 1152 | .medium-pull-2 { 1153 | position: relative; 1154 | left: -16.66667%; } 1155 | .medium-offset-1 { 1156 | margin-left: 8.33333%; } 1157 | .medium-3 { 1158 | width: 25%; } 1159 | .medium-push-3 { 1160 | position: relative; 1161 | left: 25%; } 1162 | .medium-pull-3 { 1163 | position: relative; 1164 | left: -25%; } 1165 | .medium-offset-2 { 1166 | margin-left: 16.66667%; } 1167 | .medium-4 { 1168 | width: 33.33333%; } 1169 | .medium-push-4 { 1170 | position: relative; 1171 | left: 33.33333%; } 1172 | .medium-pull-4 { 1173 | position: relative; 1174 | left: -33.33333%; } 1175 | .medium-offset-3 { 1176 | margin-left: 25%; } 1177 | .medium-5 { 1178 | width: 41.66667%; } 1179 | .medium-push-5 { 1180 | position: relative; 1181 | left: 41.66667%; } 1182 | .medium-pull-5 { 1183 | position: relative; 1184 | left: -41.66667%; } 1185 | .medium-offset-4 { 1186 | margin-left: 33.33333%; } 1187 | .medium-6 { 1188 | width: 50%; } 1189 | .medium-push-6 { 1190 | position: relative; 1191 | left: 50%; } 1192 | .medium-pull-6 { 1193 | position: relative; 1194 | left: -50%; } 1195 | .medium-offset-5 { 1196 | margin-left: 41.66667%; } 1197 | .medium-7 { 1198 | width: 58.33333%; } 1199 | .medium-push-7 { 1200 | position: relative; 1201 | left: 58.33333%; } 1202 | .medium-pull-7 { 1203 | position: relative; 1204 | left: -58.33333%; } 1205 | .medium-offset-6 { 1206 | margin-left: 50%; } 1207 | .medium-8 { 1208 | width: 66.66667%; } 1209 | .medium-push-8 { 1210 | position: relative; 1211 | left: 66.66667%; } 1212 | .medium-pull-8 { 1213 | position: relative; 1214 | left: -66.66667%; } 1215 | .medium-offset-7 { 1216 | margin-left: 58.33333%; } 1217 | .medium-9 { 1218 | width: 75%; } 1219 | .medium-push-9 { 1220 | position: relative; 1221 | left: 75%; } 1222 | .medium-pull-9 { 1223 | position: relative; 1224 | left: -75%; } 1225 | .medium-offset-8 { 1226 | margin-left: 66.66667%; } 1227 | .medium-10 { 1228 | width: 83.33333%; } 1229 | .medium-push-10 { 1230 | position: relative; 1231 | left: 83.33333%; } 1232 | .medium-pull-10 { 1233 | position: relative; 1234 | left: -83.33333%; } 1235 | .medium-offset-9 { 1236 | margin-left: 75%; } 1237 | .medium-11 { 1238 | width: 91.66667%; } 1239 | .medium-push-11 { 1240 | position: relative; 1241 | left: 91.66667%; } 1242 | .medium-pull-11 { 1243 | position: relative; 1244 | left: -91.66667%; } 1245 | .medium-offset-10 { 1246 | margin-left: 83.33333%; } 1247 | .medium-12 { 1248 | width: 100%; } 1249 | .medium-offset-11 { 1250 | margin-left: 91.66667%; } 1251 | .medium-up-1 > .column, .medium-up-1 > .columns { 1252 | float: left; 1253 | width: 100%; } 1254 | .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) { 1255 | clear: none; } 1256 | .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) { 1257 | clear: both; } 1258 | .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child { 1259 | float: left; } 1260 | .medium-up-2 > .column, .medium-up-2 > .columns { 1261 | float: left; 1262 | width: 50%; } 1263 | .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) { 1264 | clear: none; } 1265 | .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) { 1266 | clear: both; } 1267 | .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child { 1268 | float: left; } 1269 | .medium-up-3 > .column, .medium-up-3 > .columns { 1270 | float: left; 1271 | width: 33.33333%; } 1272 | .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) { 1273 | clear: none; } 1274 | .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) { 1275 | clear: both; } 1276 | .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child { 1277 | float: left; } 1278 | .medium-up-4 > .column, .medium-up-4 > .columns { 1279 | float: left; 1280 | width: 25%; } 1281 | .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) { 1282 | clear: none; } 1283 | .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) { 1284 | clear: both; } 1285 | .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child { 1286 | float: left; } 1287 | .medium-up-5 > .column, .medium-up-5 > .columns { 1288 | float: left; 1289 | width: 20%; } 1290 | .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) { 1291 | clear: none; } 1292 | .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) { 1293 | clear: both; } 1294 | .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child { 1295 | float: left; } 1296 | .medium-up-6 > .column, .medium-up-6 > .columns { 1297 | float: left; 1298 | width: 16.66667%; } 1299 | .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) { 1300 | clear: none; } 1301 | .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) { 1302 | clear: both; } 1303 | .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child { 1304 | float: left; } 1305 | .medium-up-7 > .column, .medium-up-7 > .columns { 1306 | float: left; 1307 | width: 14.28571%; } 1308 | .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) { 1309 | clear: none; } 1310 | .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) { 1311 | clear: both; } 1312 | .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child { 1313 | float: left; } 1314 | .medium-up-8 > .column, .medium-up-8 > .columns { 1315 | float: left; 1316 | width: 12.5%; } 1317 | .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) { 1318 | clear: none; } 1319 | .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) { 1320 | clear: both; } 1321 | .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child { 1322 | float: left; } 1323 | .medium-collapse > .column, .medium-collapse > .columns { 1324 | padding-right: 0; 1325 | padding-left: 0; } 1326 | .medium-collapse .row { 1327 | margin-right: 0; 1328 | margin-left: 0; } 1329 | .expanded.row .medium-collapse.row { 1330 | margin-right: 0; 1331 | margin-left: 0; } 1332 | .medium-uncollapse > .column, .medium-uncollapse > .columns { 1333 | padding-right: 0.9375rem; 1334 | padding-left: 0.9375rem; } 1335 | .medium-centered { 1336 | margin-right: auto; 1337 | margin-left: auto; } 1338 | .medium-centered, .medium-centered:last-child:not(:first-child) { 1339 | float: none; 1340 | clear: both; } 1341 | .medium-uncentered, 1342 | .medium-push-0, 1343 | .medium-pull-0 { 1344 | position: static; 1345 | float: left; 1346 | margin-right: 0; 1347 | margin-left: 0; } } 1348 | 1349 | @media print, screen and (min-width: 64em) { 1350 | .large-1 { 1351 | width: 8.33333%; } 1352 | .large-push-1 { 1353 | position: relative; 1354 | left: 8.33333%; } 1355 | .large-pull-1 { 1356 | position: relative; 1357 | left: -8.33333%; } 1358 | .large-offset-0 { 1359 | margin-left: 0%; } 1360 | .large-2 { 1361 | width: 16.66667%; } 1362 | .large-push-2 { 1363 | position: relative; 1364 | left: 16.66667%; } 1365 | .large-pull-2 { 1366 | position: relative; 1367 | left: -16.66667%; } 1368 | .large-offset-1 { 1369 | margin-left: 8.33333%; } 1370 | .large-3 { 1371 | width: 25%; } 1372 | .large-push-3 { 1373 | position: relative; 1374 | left: 25%; } 1375 | .large-pull-3 { 1376 | position: relative; 1377 | left: -25%; } 1378 | .large-offset-2 { 1379 | margin-left: 16.66667%; } 1380 | .large-4 { 1381 | width: 33.33333%; } 1382 | .large-push-4 { 1383 | position: relative; 1384 | left: 33.33333%; } 1385 | .large-pull-4 { 1386 | position: relative; 1387 | left: -33.33333%; } 1388 | .large-offset-3 { 1389 | margin-left: 25%; } 1390 | .large-5 { 1391 | width: 41.66667%; } 1392 | .large-push-5 { 1393 | position: relative; 1394 | left: 41.66667%; } 1395 | .large-pull-5 { 1396 | position: relative; 1397 | left: -41.66667%; } 1398 | .large-offset-4 { 1399 | margin-left: 33.33333%; } 1400 | .large-6 { 1401 | width: 50%; } 1402 | .large-push-6 { 1403 | position: relative; 1404 | left: 50%; } 1405 | .large-pull-6 { 1406 | position: relative; 1407 | left: -50%; } 1408 | .large-offset-5 { 1409 | margin-left: 41.66667%; } 1410 | .large-7 { 1411 | width: 58.33333%; } 1412 | .large-push-7 { 1413 | position: relative; 1414 | left: 58.33333%; } 1415 | .large-pull-7 { 1416 | position: relative; 1417 | left: -58.33333%; } 1418 | .large-offset-6 { 1419 | margin-left: 50%; } 1420 | .large-8 { 1421 | width: 66.66667%; } 1422 | .large-push-8 { 1423 | position: relative; 1424 | left: 66.66667%; } 1425 | .large-pull-8 { 1426 | position: relative; 1427 | left: -66.66667%; } 1428 | .large-offset-7 { 1429 | margin-left: 58.33333%; } 1430 | .large-9 { 1431 | width: 75%; } 1432 | .large-push-9 { 1433 | position: relative; 1434 | left: 75%; } 1435 | .large-pull-9 { 1436 | position: relative; 1437 | left: -75%; } 1438 | .large-offset-8 { 1439 | margin-left: 66.66667%; } 1440 | .large-10 { 1441 | width: 83.33333%; } 1442 | .large-push-10 { 1443 | position: relative; 1444 | left: 83.33333%; } 1445 | .large-pull-10 { 1446 | position: relative; 1447 | left: -83.33333%; } 1448 | .large-offset-9 { 1449 | margin-left: 75%; } 1450 | .large-11 { 1451 | width: 91.66667%; } 1452 | .large-push-11 { 1453 | position: relative; 1454 | left: 91.66667%; } 1455 | .large-pull-11 { 1456 | position: relative; 1457 | left: -91.66667%; } 1458 | .large-offset-10 { 1459 | margin-left: 83.33333%; } 1460 | .large-12 { 1461 | width: 100%; } 1462 | .large-offset-11 { 1463 | margin-left: 91.66667%; } 1464 | .large-up-1 > .column, .large-up-1 > .columns { 1465 | float: left; 1466 | width: 100%; } 1467 | .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) { 1468 | clear: none; } 1469 | .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) { 1470 | clear: both; } 1471 | .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child { 1472 | float: left; } 1473 | .large-up-2 > .column, .large-up-2 > .columns { 1474 | float: left; 1475 | width: 50%; } 1476 | .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) { 1477 | clear: none; } 1478 | .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) { 1479 | clear: both; } 1480 | .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child { 1481 | float: left; } 1482 | .large-up-3 > .column, .large-up-3 > .columns { 1483 | float: left; 1484 | width: 33.33333%; } 1485 | .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) { 1486 | clear: none; } 1487 | .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) { 1488 | clear: both; } 1489 | .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child { 1490 | float: left; } 1491 | .large-up-4 > .column, .large-up-4 > .columns { 1492 | float: left; 1493 | width: 25%; } 1494 | .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) { 1495 | clear: none; } 1496 | .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) { 1497 | clear: both; } 1498 | .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child { 1499 | float: left; } 1500 | .large-up-5 > .column, .large-up-5 > .columns { 1501 | float: left; 1502 | width: 20%; } 1503 | .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) { 1504 | clear: none; } 1505 | .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) { 1506 | clear: both; } 1507 | .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child { 1508 | float: left; } 1509 | .large-up-6 > .column, .large-up-6 > .columns { 1510 | float: left; 1511 | width: 16.66667%; } 1512 | .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) { 1513 | clear: none; } 1514 | .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) { 1515 | clear: both; } 1516 | .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child { 1517 | float: left; } 1518 | .large-up-7 > .column, .large-up-7 > .columns { 1519 | float: left; 1520 | width: 14.28571%; } 1521 | .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) { 1522 | clear: none; } 1523 | .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) { 1524 | clear: both; } 1525 | .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child { 1526 | float: left; } 1527 | .large-up-8 > .column, .large-up-8 > .columns { 1528 | float: left; 1529 | width: 12.5%; } 1530 | .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) { 1531 | clear: none; } 1532 | .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) { 1533 | clear: both; } 1534 | .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child { 1535 | float: left; } 1536 | .large-collapse > .column, .large-collapse > .columns { 1537 | padding-right: 0; 1538 | padding-left: 0; } 1539 | .large-collapse .row { 1540 | margin-right: 0; 1541 | margin-left: 0; } 1542 | .expanded.row .large-collapse.row { 1543 | margin-right: 0; 1544 | margin-left: 0; } 1545 | .large-uncollapse > .column, .large-uncollapse > .columns { 1546 | padding-right: 0.9375rem; 1547 | padding-left: 0.9375rem; } 1548 | .large-centered { 1549 | margin-right: auto; 1550 | margin-left: auto; } 1551 | .large-centered, .large-centered:last-child:not(:first-child) { 1552 | float: none; 1553 | clear: both; } 1554 | .large-uncentered, 1555 | .large-push-0, 1556 | .large-pull-0 { 1557 | position: static; 1558 | float: left; 1559 | margin-right: 0; 1560 | margin-left: 0; } } 1561 | 1562 | .column-block { 1563 | margin-bottom: 1.25rem; } 1564 | .column-block > :last-child { 1565 | margin-bottom: 0; } 1566 | @media print, screen and (min-width: 40em) { 1567 | .column-block { 1568 | margin-bottom: 1.875rem; } 1569 | .column-block > :last-child { 1570 | margin-bottom: 0; } } 1571 | 1572 | [type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'], 1573 | textarea { 1574 | display: block; 1575 | box-sizing: border-box; 1576 | width: 100%; 1577 | height: 2.4375rem; 1578 | margin: 0 0 1rem; 1579 | padding: 0.5rem; 1580 | border: 1px solid #cacaca; 1581 | border-radius: 0; 1582 | background-color: #fefefe; 1583 | box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); 1584 | font-family: inherit; 1585 | font-size: 1rem; 1586 | font-weight: normal; 1587 | color: #0a0a0a; 1588 | transition: box-shadow 0.5s, border-color 0.25s ease-in-out; 1589 | -webkit-appearance: none; 1590 | -moz-appearance: none; 1591 | appearance: none; } 1592 | [type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus, 1593 | textarea:focus { 1594 | outline: none; 1595 | border: 1px solid #8a8a8a; 1596 | background-color: #fefefe; 1597 | box-shadow: 0 0 5px #cacaca; 1598 | transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } 1599 | 1600 | textarea { 1601 | max-width: 100%; } 1602 | textarea[rows] { 1603 | height: auto; } 1604 | 1605 | input::-webkit-input-placeholder, 1606 | textarea::-webkit-input-placeholder { 1607 | color: #cacaca; } 1608 | 1609 | input::-moz-placeholder, 1610 | textarea::-moz-placeholder { 1611 | color: #cacaca; } 1612 | 1613 | input:-ms-input-placeholder, 1614 | textarea:-ms-input-placeholder { 1615 | color: #cacaca; } 1616 | 1617 | input::placeholder, 1618 | textarea::placeholder { 1619 | color: #cacaca; } 1620 | 1621 | input:disabled, input[readonly], 1622 | textarea:disabled, 1623 | textarea[readonly] { 1624 | background-color: #e6e6e6; 1625 | cursor: not-allowed; } 1626 | 1627 | [type='submit'], 1628 | [type='button'] { 1629 | -webkit-appearance: none; 1630 | -moz-appearance: none; 1631 | appearance: none; 1632 | border-radius: 0; } 1633 | 1634 | input[type='search'] { 1635 | box-sizing: border-box; } 1636 | 1637 | [type='file'], 1638 | [type='checkbox'], 1639 | [type='radio'] { 1640 | margin: 0 0 1rem; } 1641 | 1642 | [type='checkbox'] + label, 1643 | [type='radio'] + label { 1644 | display: inline-block; 1645 | vertical-align: baseline; 1646 | margin-left: 0.5rem; 1647 | margin-right: 1rem; 1648 | margin-bottom: 0; } 1649 | [type='checkbox'] + label[for], 1650 | [type='radio'] + label[for] { 1651 | cursor: pointer; } 1652 | 1653 | label > [type='checkbox'], 1654 | label > [type='radio'] { 1655 | margin-right: 0.5rem; } 1656 | 1657 | [type='file'] { 1658 | width: 100%; } 1659 | 1660 | label { 1661 | display: block; 1662 | margin: 0; 1663 | font-size: 0.875rem; 1664 | font-weight: normal; 1665 | line-height: 1.8; 1666 | color: #0a0a0a; } 1667 | label.middle { 1668 | margin: 0 0 1rem; 1669 | padding: 0.5625rem 0; } 1670 | 1671 | .help-text { 1672 | margin-top: -0.5rem; 1673 | font-size: 0.8125rem; 1674 | font-style: italic; 1675 | color: #0a0a0a; } 1676 | 1677 | .input-group { 1678 | display: table; 1679 | width: 100%; 1680 | margin-bottom: 1rem; } 1681 | .input-group > :first-child { 1682 | border-radius: 0 0 0 0; } 1683 | .input-group > :last-child > * { 1684 | border-radius: 0 0 0 0; } 1685 | 1686 | .input-group-label, .input-group-field, .input-group-button, .input-group-button a, 1687 | .input-group-button input, 1688 | .input-group-button button, 1689 | .input-group-button label { 1690 | margin: 0; 1691 | white-space: nowrap; 1692 | display: table-cell; 1693 | vertical-align: middle; } 1694 | 1695 | .input-group-label { 1696 | padding: 0 1rem; 1697 | border: 1px solid #cacaca; 1698 | background: #e6e6e6; 1699 | color: #0a0a0a; 1700 | text-align: center; 1701 | white-space: nowrap; 1702 | width: 1%; 1703 | height: 100%; } 1704 | .input-group-label:first-child { 1705 | border-right: 0; } 1706 | .input-group-label:last-child { 1707 | border-left: 0; } 1708 | 1709 | .input-group-field { 1710 | border-radius: 0; 1711 | height: 2.5rem; } 1712 | 1713 | .input-group-button { 1714 | padding-top: 0; 1715 | padding-bottom: 0; 1716 | text-align: center; 1717 | width: 1%; 1718 | height: 100%; } 1719 | .input-group-button a, 1720 | .input-group-button input, 1721 | .input-group-button button, 1722 | .input-group-button label { 1723 | height: 2.5rem; 1724 | padding-top: 0; 1725 | padding-bottom: 0; 1726 | font-size: 1rem; } 1727 | 1728 | .input-group .input-group-button { 1729 | display: table-cell; } 1730 | 1731 | fieldset { 1732 | margin: 0; 1733 | padding: 0; 1734 | border: 0; } 1735 | 1736 | legend { 1737 | max-width: 100%; 1738 | margin-bottom: 0.5rem; } 1739 | 1740 | .fieldset { 1741 | margin: 1.125rem 0; 1742 | padding: 1.25rem; 1743 | border: 1px solid #cacaca; } 1744 | .fieldset legend { 1745 | margin: 0; 1746 | margin-left: -0.1875rem; 1747 | padding: 0 0.1875rem; 1748 | background: #fefefe; } 1749 | 1750 | select { 1751 | height: 2.4375rem; 1752 | margin: 0 0 1rem; 1753 | padding: 0.5rem; 1754 | -webkit-appearance: none; 1755 | -moz-appearance: none; 1756 | appearance: none; 1757 | border: 1px solid #cacaca; 1758 | border-radius: 0; 1759 | background-color: #fefefe; 1760 | font-family: inherit; 1761 | font-size: 1rem; 1762 | line-height: normal; 1763 | color: #0a0a0a; 1764 | background-image: url("data:image/svg+xml;utf8,"); 1765 | background-origin: content-box; 1766 | background-position: right -1rem center; 1767 | background-repeat: no-repeat; 1768 | background-size: 9px 6px; 1769 | padding-right: 1.5rem; 1770 | transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } 1771 | @media screen and (min-width: 0\0) { 1772 | select { 1773 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } } 1774 | select:focus { 1775 | outline: none; 1776 | border: 1px solid #8a8a8a; 1777 | background-color: #fefefe; 1778 | box-shadow: 0 0 5px #cacaca; 1779 | transition: box-shadow 0.5s, border-color 0.25s ease-in-out; } 1780 | select:disabled { 1781 | background-color: #e6e6e6; 1782 | cursor: not-allowed; } 1783 | select::-ms-expand { 1784 | display: none; } 1785 | select[multiple] { 1786 | height: auto; 1787 | background-image: none; } 1788 | 1789 | .is-invalid-input:not(:focus) { 1790 | border-color: #cc4b37; 1791 | background-color: #f9ecea; } 1792 | .is-invalid-input:not(:focus)::-webkit-input-placeholder { 1793 | color: #cc4b37; } 1794 | .is-invalid-input:not(:focus)::-moz-placeholder { 1795 | color: #cc4b37; } 1796 | .is-invalid-input:not(:focus):-ms-input-placeholder { 1797 | color: #cc4b37; } 1798 | .is-invalid-input:not(:focus)::placeholder { 1799 | color: #cc4b37; } 1800 | 1801 | .is-invalid-label { 1802 | color: #cc4b37; } 1803 | 1804 | .form-error { 1805 | display: none; 1806 | margin-top: -0.5rem; 1807 | margin-bottom: 1rem; 1808 | font-size: 0.75rem; 1809 | font-weight: bold; 1810 | color: #cc4b37; } 1811 | .form-error.is-visible { 1812 | display: block; } 1813 | 1814 | .button { 1815 | display: inline-block; 1816 | vertical-align: middle; 1817 | margin: 0 0 1rem 0; 1818 | padding: 0.85em 1em; 1819 | -webkit-appearance: none; 1820 | border: 1px solid transparent; 1821 | border-radius: 0; 1822 | transition: background-color 0.25s ease-out, color 0.25s ease-out; 1823 | font-size: 0.9rem; 1824 | line-height: 1; 1825 | text-align: center; 1826 | cursor: pointer; 1827 | background-color: #1779ba; 1828 | color: #fefefe; } 1829 | [data-whatinput='mouse'] .button { 1830 | outline: 0; } 1831 | .button:hover, .button:focus { 1832 | background-color: #14679e; 1833 | color: #fefefe; } 1834 | .button.tiny { 1835 | font-size: 0.6rem; } 1836 | .button.small { 1837 | font-size: 0.75rem; } 1838 | .button.large { 1839 | font-size: 1.25rem; } 1840 | .button.expanded { 1841 | display: block; 1842 | width: 100%; 1843 | margin-right: 0; 1844 | margin-left: 0; } 1845 | .button.primary { 1846 | background-color: #1779ba; 1847 | color: #fefefe; } 1848 | .button.primary:hover, .button.primary:focus { 1849 | background-color: #126195; 1850 | color: #fefefe; } 1851 | .button.secondary { 1852 | background-color: #767676; 1853 | color: #fefefe; } 1854 | .button.secondary:hover, .button.secondary:focus { 1855 | background-color: #5e5e5e; 1856 | color: #fefefe; } 1857 | .button.success { 1858 | background-color: #3adb76; 1859 | color: #0a0a0a; } 1860 | .button.success:hover, .button.success:focus { 1861 | background-color: #22bb5b; 1862 | color: #0a0a0a; } 1863 | .button.warning { 1864 | background-color: #ffae00; 1865 | color: #0a0a0a; } 1866 | .button.warning:hover, .button.warning:focus { 1867 | background-color: #cc8b00; 1868 | color: #0a0a0a; } 1869 | .button.alert { 1870 | background-color: #cc4b37; 1871 | color: #fefefe; } 1872 | .button.alert:hover, .button.alert:focus { 1873 | background-color: #a53b2a; 1874 | color: #fefefe; } 1875 | .button.hollow { 1876 | border: 1px solid #1779ba; 1877 | color: #1779ba; } 1878 | .button.hollow, .button.hollow:hover, .button.hollow:focus { 1879 | background-color: transparent; } 1880 | .button.hollow:hover, .button.hollow:focus { 1881 | border-color: #0c3d5d; 1882 | color: #0c3d5d; } 1883 | .button.hollow.primary { 1884 | border: 1px solid #1779ba; 1885 | color: #1779ba; } 1886 | .button.hollow.primary:hover, .button.hollow.primary:focus { 1887 | border-color: #0c3d5d; 1888 | color: #0c3d5d; } 1889 | .button.hollow.secondary { 1890 | border: 1px solid #767676; 1891 | color: #767676; } 1892 | .button.hollow.secondary:hover, .button.hollow.secondary:focus { 1893 | border-color: #3b3b3b; 1894 | color: #3b3b3b; } 1895 | .button.hollow.success { 1896 | border: 1px solid #3adb76; 1897 | color: #3adb76; } 1898 | .button.hollow.success:hover, .button.hollow.success:focus { 1899 | border-color: #157539; 1900 | color: #157539; } 1901 | .button.hollow.warning { 1902 | border: 1px solid #ffae00; 1903 | color: #ffae00; } 1904 | .button.hollow.warning:hover, .button.hollow.warning:focus { 1905 | border-color: #805700; 1906 | color: #805700; } 1907 | .button.hollow.alert { 1908 | border: 1px solid #cc4b37; 1909 | color: #cc4b37; } 1910 | .button.hollow.alert:hover, .button.hollow.alert:focus { 1911 | border-color: #67251a; 1912 | color: #67251a; } 1913 | .button.disabled, .button[disabled] { 1914 | opacity: 0.25; 1915 | cursor: not-allowed; } 1916 | .button.disabled, .button.disabled:hover, .button.disabled:focus, .button[disabled], .button[disabled]:hover, .button[disabled]:focus { 1917 | background-color: #1779ba; 1918 | color: #fefefe; } 1919 | .button.disabled.primary, .button[disabled].primary { 1920 | opacity: 0.25; 1921 | cursor: not-allowed; } 1922 | .button.disabled.primary, .button.disabled.primary:hover, .button.disabled.primary:focus, .button[disabled].primary, .button[disabled].primary:hover, .button[disabled].primary:focus { 1923 | background-color: #1779ba; 1924 | color: #fefefe; } 1925 | .button.disabled.secondary, .button[disabled].secondary { 1926 | opacity: 0.25; 1927 | cursor: not-allowed; } 1928 | .button.disabled.secondary, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary, .button[disabled].secondary:hover, .button[disabled].secondary:focus { 1929 | background-color: #767676; 1930 | color: #fefefe; } 1931 | .button.disabled.success, .button[disabled].success { 1932 | opacity: 0.25; 1933 | cursor: not-allowed; } 1934 | .button.disabled.success, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success, .button[disabled].success:hover, .button[disabled].success:focus { 1935 | background-color: #3adb76; 1936 | color: #0a0a0a; } 1937 | .button.disabled.warning, .button[disabled].warning { 1938 | opacity: 0.25; 1939 | cursor: not-allowed; } 1940 | .button.disabled.warning, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning, .button[disabled].warning:hover, .button[disabled].warning:focus { 1941 | background-color: #ffae00; 1942 | color: #0a0a0a; } 1943 | .button.disabled.alert, .button[disabled].alert { 1944 | opacity: 0.25; 1945 | cursor: not-allowed; } 1946 | .button.disabled.alert, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert, .button[disabled].alert:hover, .button[disabled].alert:focus { 1947 | background-color: #cc4b37; 1948 | color: #fefefe; } 1949 | .button.dropdown::after { 1950 | display: block; 1951 | width: 0; 1952 | height: 0; 1953 | border: inset 0.4em; 1954 | content: ''; 1955 | border-bottom-width: 0; 1956 | border-top-style: solid; 1957 | border-color: #fefefe transparent transparent; 1958 | position: relative; 1959 | top: 0.4em; 1960 | display: inline-block; 1961 | float: right; 1962 | margin-left: 1em; } 1963 | .button.arrow-only::after { 1964 | top: -0.1em; 1965 | float: none; 1966 | margin-left: 0; } 1967 | 1968 | .callout { 1969 | position: relative; 1970 | margin: 0 0 1rem 0; 1971 | padding: 1rem; 1972 | border: 1px solid rgba(10, 10, 10, 0.25); 1973 | border-radius: 0; 1974 | background-color: white; 1975 | color: #0a0a0a; } 1976 | .callout > :first-child { 1977 | margin-top: 0; } 1978 | .callout > :last-child { 1979 | margin-bottom: 0; } 1980 | .callout.primary { 1981 | background-color: #d7ecfa; 1982 | color: #0a0a0a; } 1983 | .callout.secondary { 1984 | background-color: #eaeaea; 1985 | color: #0a0a0a; } 1986 | .callout.success { 1987 | background-color: #e1faea; 1988 | color: #0a0a0a; } 1989 | .callout.warning { 1990 | background-color: #fff3d9; 1991 | color: #0a0a0a; } 1992 | .callout.alert { 1993 | background-color: #f7e4e1; 1994 | color: #0a0a0a; } 1995 | .callout.small { 1996 | padding-top: 0.5rem; 1997 | padding-right: 0.5rem; 1998 | padding-bottom: 0.5rem; 1999 | padding-left: 0.5rem; } 2000 | .callout.large { 2001 | padding-top: 3rem; 2002 | padding-right: 3rem; 2003 | padding-bottom: 3rem; 2004 | padding-left: 3rem; } 2005 | 2006 | body.is-reveal-open { 2007 | overflow: hidden; } 2008 | 2009 | html.is-reveal-open, 2010 | html.is-reveal-open body { 2011 | min-height: 100%; 2012 | overflow: hidden; 2013 | -webkit-user-select: none; 2014 | -moz-user-select: none; 2015 | -ms-user-select: none; 2016 | user-select: none; } 2017 | 2018 | .reveal-overlay { 2019 | position: fixed; 2020 | top: 0; 2021 | right: 0; 2022 | bottom: 0; 2023 | left: 0; 2024 | z-index: 1005; 2025 | display: none; 2026 | background-color: rgba(10, 10, 10, 0.45); 2027 | overflow-y: scroll; } 2028 | 2029 | .reveal { 2030 | z-index: 1006; 2031 | -webkit-backface-visibility: hidden; 2032 | backface-visibility: hidden; 2033 | display: none; 2034 | padding: 1rem; 2035 | border: 1px solid #cacaca; 2036 | border-radius: 0; 2037 | background-color: #fefefe; 2038 | position: relative; 2039 | top: 100px; 2040 | margin-right: auto; 2041 | margin-left: auto; 2042 | overflow-y: auto; } 2043 | [data-whatinput='mouse'] .reveal { 2044 | outline: 0; } 2045 | @media print, screen and (min-width: 40em) { 2046 | .reveal { 2047 | min-height: 0; } } 2048 | .reveal .column, .reveal .columns, 2049 | .reveal .columns { 2050 | min-width: 0; } 2051 | .reveal > :last-child { 2052 | margin-bottom: 0; } 2053 | @media print, screen and (min-width: 40em) { 2054 | .reveal { 2055 | width: 600px; 2056 | max-width: 75rem; } } 2057 | @media print, screen and (min-width: 40em) { 2058 | .reveal .reveal { 2059 | right: auto; 2060 | left: auto; 2061 | margin: 0 auto; } } 2062 | .reveal.collapse { 2063 | padding: 0; } 2064 | @media print, screen and (min-width: 40em) { 2065 | .reveal.tiny { 2066 | width: 30%; 2067 | max-width: 75rem; } } 2068 | @media print, screen and (min-width: 40em) { 2069 | .reveal.small { 2070 | width: 50%; 2071 | max-width: 75rem; } } 2072 | @media print, screen and (min-width: 40em) { 2073 | .reveal.large { 2074 | width: 90%; 2075 | max-width: 75rem; } } 2076 | .reveal.full { 2077 | top: 0; 2078 | left: 0; 2079 | width: 100%; 2080 | max-width: none; 2081 | height: 100%; 2082 | height: 100vh; 2083 | min-height: 100vh; 2084 | margin-left: 0; 2085 | border: 0; 2086 | border-radius: 0; } 2087 | @media screen and (max-width: 39.9375em) { 2088 | .reveal { 2089 | top: 0; 2090 | left: 0; 2091 | width: 100%; 2092 | max-width: none; 2093 | height: 100%; 2094 | height: 100vh; 2095 | min-height: 100vh; 2096 | margin-left: 0; 2097 | border: 0; 2098 | border-radius: 0; } } 2099 | .reveal.without-overlay { 2100 | position: fixed; } 2101 | 2102 | .slide-in-down.mui-enter { 2103 | transition-duration: 500ms; 2104 | transition-timing-function: linear; 2105 | -ms-transform: translateY(-100%); 2106 | transform: translateY(-100%); 2107 | transition-property: transform, opacity; 2108 | -webkit-backface-visibility: hidden; 2109 | backface-visibility: hidden; } 2110 | 2111 | .slide-in-down.mui-enter.mui-enter-active { 2112 | -ms-transform: translateY(0); 2113 | transform: translateY(0); } 2114 | 2115 | .slide-in-left.mui-enter { 2116 | transition-duration: 500ms; 2117 | transition-timing-function: linear; 2118 | -ms-transform: translateX(-100%); 2119 | transform: translateX(-100%); 2120 | transition-property: transform, opacity; 2121 | -webkit-backface-visibility: hidden; 2122 | backface-visibility: hidden; } 2123 | 2124 | .slide-in-left.mui-enter.mui-enter-active { 2125 | -ms-transform: translateX(0); 2126 | transform: translateX(0); } 2127 | 2128 | .slide-in-up.mui-enter { 2129 | transition-duration: 500ms; 2130 | transition-timing-function: linear; 2131 | -ms-transform: translateY(100%); 2132 | transform: translateY(100%); 2133 | transition-property: transform, opacity; 2134 | -webkit-backface-visibility: hidden; 2135 | backface-visibility: hidden; } 2136 | 2137 | .slide-in-up.mui-enter.mui-enter-active { 2138 | -ms-transform: translateY(0); 2139 | transform: translateY(0); } 2140 | 2141 | .slide-in-right.mui-enter { 2142 | transition-duration: 500ms; 2143 | transition-timing-function: linear; 2144 | -ms-transform: translateX(100%); 2145 | transform: translateX(100%); 2146 | transition-property: transform, opacity; 2147 | -webkit-backface-visibility: hidden; 2148 | backface-visibility: hidden; } 2149 | 2150 | .slide-in-right.mui-enter.mui-enter-active { 2151 | -ms-transform: translateX(0); 2152 | transform: translateX(0); } 2153 | 2154 | .slide-out-down.mui-leave { 2155 | transition-duration: 500ms; 2156 | transition-timing-function: linear; 2157 | -ms-transform: translateY(0); 2158 | transform: translateY(0); 2159 | transition-property: transform, opacity; 2160 | -webkit-backface-visibility: hidden; 2161 | backface-visibility: hidden; } 2162 | 2163 | .slide-out-down.mui-leave.mui-leave-active { 2164 | -ms-transform: translateY(100%); 2165 | transform: translateY(100%); } 2166 | 2167 | .slide-out-right.mui-leave { 2168 | transition-duration: 500ms; 2169 | transition-timing-function: linear; 2170 | -ms-transform: translateX(0); 2171 | transform: translateX(0); 2172 | transition-property: transform, opacity; 2173 | -webkit-backface-visibility: hidden; 2174 | backface-visibility: hidden; } 2175 | 2176 | .slide-out-right.mui-leave.mui-leave-active { 2177 | -ms-transform: translateX(100%); 2178 | transform: translateX(100%); } 2179 | 2180 | .slide-out-up.mui-leave { 2181 | transition-duration: 500ms; 2182 | transition-timing-function: linear; 2183 | -ms-transform: translateY(0); 2184 | transform: translateY(0); 2185 | transition-property: transform, opacity; 2186 | -webkit-backface-visibility: hidden; 2187 | backface-visibility: hidden; } 2188 | 2189 | .slide-out-up.mui-leave.mui-leave-active { 2190 | -ms-transform: translateY(-100%); 2191 | transform: translateY(-100%); } 2192 | 2193 | .slide-out-left.mui-leave { 2194 | transition-duration: 500ms; 2195 | transition-timing-function: linear; 2196 | -ms-transform: translateX(0); 2197 | transform: translateX(0); 2198 | transition-property: transform, opacity; 2199 | -webkit-backface-visibility: hidden; 2200 | backface-visibility: hidden; } 2201 | 2202 | .slide-out-left.mui-leave.mui-leave-active { 2203 | -ms-transform: translateX(-100%); 2204 | transform: translateX(-100%); } 2205 | 2206 | .fade-in.mui-enter { 2207 | transition-duration: 500ms; 2208 | transition-timing-function: linear; 2209 | opacity: 0; 2210 | transition-property: opacity; } 2211 | 2212 | .fade-in.mui-enter.mui-enter-active { 2213 | opacity: 1; } 2214 | 2215 | .fade-out.mui-leave { 2216 | transition-duration: 500ms; 2217 | transition-timing-function: linear; 2218 | opacity: 1; 2219 | transition-property: opacity; } 2220 | 2221 | .fade-out.mui-leave.mui-leave-active { 2222 | opacity: 0; } 2223 | 2224 | .hinge-in-from-top.mui-enter { 2225 | transition-duration: 500ms; 2226 | transition-timing-function: linear; 2227 | transform: perspective(2000px) rotateX(-90deg); 2228 | -ms-transform-origin: top; 2229 | transform-origin: top; 2230 | transition-property: transform, opacity; 2231 | opacity: 0; } 2232 | 2233 | .hinge-in-from-top.mui-enter.mui-enter-active { 2234 | transform: perspective(2000px) rotate(0deg); 2235 | opacity: 1; } 2236 | 2237 | .hinge-in-from-right.mui-enter { 2238 | transition-duration: 500ms; 2239 | transition-timing-function: linear; 2240 | transform: perspective(2000px) rotateY(-90deg); 2241 | -ms-transform-origin: right; 2242 | transform-origin: right; 2243 | transition-property: transform, opacity; 2244 | opacity: 0; } 2245 | 2246 | .hinge-in-from-right.mui-enter.mui-enter-active { 2247 | transform: perspective(2000px) rotate(0deg); 2248 | opacity: 1; } 2249 | 2250 | .hinge-in-from-bottom.mui-enter { 2251 | transition-duration: 500ms; 2252 | transition-timing-function: linear; 2253 | transform: perspective(2000px) rotateX(90deg); 2254 | -ms-transform-origin: bottom; 2255 | transform-origin: bottom; 2256 | transition-property: transform, opacity; 2257 | opacity: 0; } 2258 | 2259 | .hinge-in-from-bottom.mui-enter.mui-enter-active { 2260 | transform: perspective(2000px) rotate(0deg); 2261 | opacity: 1; } 2262 | 2263 | .hinge-in-from-left.mui-enter { 2264 | transition-duration: 500ms; 2265 | transition-timing-function: linear; 2266 | transform: perspective(2000px) rotateY(90deg); 2267 | -ms-transform-origin: left; 2268 | transform-origin: left; 2269 | transition-property: transform, opacity; 2270 | opacity: 0; } 2271 | 2272 | .hinge-in-from-left.mui-enter.mui-enter-active { 2273 | transform: perspective(2000px) rotate(0deg); 2274 | opacity: 1; } 2275 | 2276 | .hinge-in-from-middle-x.mui-enter { 2277 | transition-duration: 500ms; 2278 | transition-timing-function: linear; 2279 | transform: perspective(2000px) rotateX(-90deg); 2280 | -ms-transform-origin: center; 2281 | transform-origin: center; 2282 | transition-property: transform, opacity; 2283 | opacity: 0; } 2284 | 2285 | .hinge-in-from-middle-x.mui-enter.mui-enter-active { 2286 | transform: perspective(2000px) rotate(0deg); 2287 | opacity: 1; } 2288 | 2289 | .hinge-in-from-middle-y.mui-enter { 2290 | transition-duration: 500ms; 2291 | transition-timing-function: linear; 2292 | transform: perspective(2000px) rotateY(-90deg); 2293 | -ms-transform-origin: center; 2294 | transform-origin: center; 2295 | transition-property: transform, opacity; 2296 | opacity: 0; } 2297 | 2298 | .hinge-in-from-middle-y.mui-enter.mui-enter-active { 2299 | transform: perspective(2000px) rotate(0deg); 2300 | opacity: 1; } 2301 | 2302 | .hinge-out-from-top.mui-leave { 2303 | transition-duration: 500ms; 2304 | transition-timing-function: linear; 2305 | transform: perspective(2000px) rotate(0deg); 2306 | -ms-transform-origin: top; 2307 | transform-origin: top; 2308 | transition-property: transform, opacity; 2309 | opacity: 1; } 2310 | 2311 | .hinge-out-from-top.mui-leave.mui-leave-active { 2312 | transform: perspective(2000px) rotateX(-90deg); 2313 | opacity: 0; } 2314 | 2315 | .hinge-out-from-right.mui-leave { 2316 | transition-duration: 500ms; 2317 | transition-timing-function: linear; 2318 | transform: perspective(2000px) rotate(0deg); 2319 | -ms-transform-origin: right; 2320 | transform-origin: right; 2321 | transition-property: transform, opacity; 2322 | opacity: 1; } 2323 | 2324 | .hinge-out-from-right.mui-leave.mui-leave-active { 2325 | transform: perspective(2000px) rotateY(-90deg); 2326 | opacity: 0; } 2327 | 2328 | .hinge-out-from-bottom.mui-leave { 2329 | transition-duration: 500ms; 2330 | transition-timing-function: linear; 2331 | transform: perspective(2000px) rotate(0deg); 2332 | -ms-transform-origin: bottom; 2333 | transform-origin: bottom; 2334 | transition-property: transform, opacity; 2335 | opacity: 1; } 2336 | 2337 | .hinge-out-from-bottom.mui-leave.mui-leave-active { 2338 | transform: perspective(2000px) rotateX(90deg); 2339 | opacity: 0; } 2340 | 2341 | .hinge-out-from-left.mui-leave { 2342 | transition-duration: 500ms; 2343 | transition-timing-function: linear; 2344 | transform: perspective(2000px) rotate(0deg); 2345 | -ms-transform-origin: left; 2346 | transform-origin: left; 2347 | transition-property: transform, opacity; 2348 | opacity: 1; } 2349 | 2350 | .hinge-out-from-left.mui-leave.mui-leave-active { 2351 | transform: perspective(2000px) rotateY(90deg); 2352 | opacity: 0; } 2353 | 2354 | .hinge-out-from-middle-x.mui-leave { 2355 | transition-duration: 500ms; 2356 | transition-timing-function: linear; 2357 | transform: perspective(2000px) rotate(0deg); 2358 | -ms-transform-origin: center; 2359 | transform-origin: center; 2360 | transition-property: transform, opacity; 2361 | opacity: 1; } 2362 | 2363 | .hinge-out-from-middle-x.mui-leave.mui-leave-active { 2364 | transform: perspective(2000px) rotateX(-90deg); 2365 | opacity: 0; } 2366 | 2367 | .hinge-out-from-middle-y.mui-leave { 2368 | transition-duration: 500ms; 2369 | transition-timing-function: linear; 2370 | transform: perspective(2000px) rotate(0deg); 2371 | -ms-transform-origin: center; 2372 | transform-origin: center; 2373 | transition-property: transform, opacity; 2374 | opacity: 1; } 2375 | 2376 | .hinge-out-from-middle-y.mui-leave.mui-leave-active { 2377 | transform: perspective(2000px) rotateY(-90deg); 2378 | opacity: 0; } 2379 | 2380 | .scale-in-up.mui-enter { 2381 | transition-duration: 500ms; 2382 | transition-timing-function: linear; 2383 | -ms-transform: scale(0.5); 2384 | transform: scale(0.5); 2385 | transition-property: transform, opacity; 2386 | opacity: 0; } 2387 | 2388 | .scale-in-up.mui-enter.mui-enter-active { 2389 | -ms-transform: scale(1); 2390 | transform: scale(1); 2391 | opacity: 1; } 2392 | 2393 | .scale-in-down.mui-enter { 2394 | transition-duration: 500ms; 2395 | transition-timing-function: linear; 2396 | -ms-transform: scale(1.5); 2397 | transform: scale(1.5); 2398 | transition-property: transform, opacity; 2399 | opacity: 0; } 2400 | 2401 | .scale-in-down.mui-enter.mui-enter-active { 2402 | -ms-transform: scale(1); 2403 | transform: scale(1); 2404 | opacity: 1; } 2405 | 2406 | .scale-out-up.mui-leave { 2407 | transition-duration: 500ms; 2408 | transition-timing-function: linear; 2409 | -ms-transform: scale(1); 2410 | transform: scale(1); 2411 | transition-property: transform, opacity; 2412 | opacity: 1; } 2413 | 2414 | .scale-out-up.mui-leave.mui-leave-active { 2415 | -ms-transform: scale(1.5); 2416 | transform: scale(1.5); 2417 | opacity: 0; } 2418 | 2419 | .scale-out-down.mui-leave { 2420 | transition-duration: 500ms; 2421 | transition-timing-function: linear; 2422 | -ms-transform: scale(1); 2423 | transform: scale(1); 2424 | transition-property: transform, opacity; 2425 | opacity: 1; } 2426 | 2427 | .scale-out-down.mui-leave.mui-leave-active { 2428 | -ms-transform: scale(0.5); 2429 | transform: scale(0.5); 2430 | opacity: 0; } 2431 | 2432 | .spin-in.mui-enter { 2433 | transition-duration: 500ms; 2434 | transition-timing-function: linear; 2435 | -ms-transform: rotate(-0.75turn); 2436 | transform: rotate(-0.75turn); 2437 | transition-property: transform, opacity; 2438 | opacity: 0; } 2439 | 2440 | .spin-in.mui-enter.mui-enter-active { 2441 | -ms-transform: rotate(0); 2442 | transform: rotate(0); 2443 | opacity: 1; } 2444 | 2445 | .spin-out.mui-leave { 2446 | transition-duration: 500ms; 2447 | transition-timing-function: linear; 2448 | -ms-transform: rotate(0); 2449 | transform: rotate(0); 2450 | transition-property: transform, opacity; 2451 | opacity: 1; } 2452 | 2453 | .spin-out.mui-leave.mui-leave-active { 2454 | -ms-transform: rotate(0.75turn); 2455 | transform: rotate(0.75turn); 2456 | opacity: 0; } 2457 | 2458 | .spin-in-ccw.mui-enter { 2459 | transition-duration: 500ms; 2460 | transition-timing-function: linear; 2461 | -ms-transform: rotate(0.75turn); 2462 | transform: rotate(0.75turn); 2463 | transition-property: transform, opacity; 2464 | opacity: 0; } 2465 | 2466 | .spin-in-ccw.mui-enter.mui-enter-active { 2467 | -ms-transform: rotate(0); 2468 | transform: rotate(0); 2469 | opacity: 1; } 2470 | 2471 | .spin-out-ccw.mui-leave { 2472 | transition-duration: 500ms; 2473 | transition-timing-function: linear; 2474 | -ms-transform: rotate(0); 2475 | transform: rotate(0); 2476 | transition-property: transform, opacity; 2477 | opacity: 1; } 2478 | 2479 | .spin-out-ccw.mui-leave.mui-leave-active { 2480 | -ms-transform: rotate(-0.75turn); 2481 | transform: rotate(-0.75turn); 2482 | opacity: 0; } 2483 | 2484 | .slow { 2485 | transition-duration: 750ms !important; } 2486 | 2487 | .fast { 2488 | transition-duration: 250ms !important; } 2489 | 2490 | .linear { 2491 | transition-timing-function: linear !important; } 2492 | 2493 | .ease { 2494 | transition-timing-function: ease !important; } 2495 | 2496 | .ease-in { 2497 | transition-timing-function: ease-in !important; } 2498 | 2499 | .ease-out { 2500 | transition-timing-function: ease-out !important; } 2501 | 2502 | .ease-in-out { 2503 | transition-timing-function: ease-in-out !important; } 2504 | 2505 | .bounce-in { 2506 | transition-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } 2507 | 2508 | .bounce-out { 2509 | transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } 2510 | 2511 | .bounce-in-out { 2512 | transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } 2513 | 2514 | .short-delay { 2515 | transition-delay: 300ms !important; } 2516 | 2517 | .long-delay { 2518 | transition-delay: 700ms !important; } 2519 | 2520 | .shake { 2521 | animation-name: shake-7; } 2522 | 2523 | @keyframes shake-7 { 2524 | 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% { 2525 | transform: translateX(7%); } 2526 | 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% { 2527 | transform: translateX(-7%); } } 2528 | 2529 | .spin-cw { 2530 | animation-name: spin-cw-1turn; } 2531 | 2532 | @keyframes spin-cw-1turn { 2533 | 0% { 2534 | transform: rotate(-1turn); } 2535 | 100% { 2536 | transform: rotate(0); } } 2537 | 2538 | .spin-ccw { 2539 | animation-name: spin-cw-1turn; } 2540 | 2541 | @keyframes spin-cw-1turn { 2542 | 0% { 2543 | transform: rotate(0); } 2544 | 100% { 2545 | transform: rotate(1turn); } } 2546 | 2547 | .wiggle { 2548 | animation-name: wiggle-7deg; } 2549 | 2550 | @keyframes wiggle-7deg { 2551 | 40%, 50%, 60% { 2552 | transform: rotate(7deg); } 2553 | 35%, 45%, 55%, 65% { 2554 | transform: rotate(-7deg); } 2555 | 0%, 30%, 70%, 100% { 2556 | transform: rotate(0); } } 2557 | 2558 | .shake, 2559 | .spin-cw, 2560 | .spin-ccw, 2561 | .wiggle { 2562 | animation-duration: 500ms; } 2563 | 2564 | .infinite { 2565 | animation-iteration-count: infinite; } 2566 | 2567 | .slow { 2568 | animation-duration: 750ms !important; } 2569 | 2570 | .fast { 2571 | animation-duration: 250ms !important; } 2572 | 2573 | .linear { 2574 | animation-timing-function: linear !important; } 2575 | 2576 | .ease { 2577 | animation-timing-function: ease !important; } 2578 | 2579 | .ease-in { 2580 | animation-timing-function: ease-in !important; } 2581 | 2582 | .ease-out { 2583 | animation-timing-function: ease-out !important; } 2584 | 2585 | .ease-in-out { 2586 | animation-timing-function: ease-in-out !important; } 2587 | 2588 | .bounce-in { 2589 | animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; } 2590 | 2591 | .bounce-out { 2592 | animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; } 2593 | 2594 | .bounce-in-out { 2595 | animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; } 2596 | 2597 | .short-delay { 2598 | animation-delay: 300ms !important; } 2599 | 2600 | .long-delay { 2601 | animation-delay: 700ms !important; } 2602 | --------------------------------------------------------------------------------