Page MenuHomeDevCentral

D268.diff
No OneTemporary

D268.diff

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -13,6 +13,7 @@
# Composer
vendor
composer.lock
+!javascripts/vendor
# NPM
node_modules/
diff --git a/javascripts/app.js b/javascripts/app.js
--- a/javascripts/app.js
+++ b/javascripts/app.js
@@ -1,41 +1,4 @@
-;(function ($, window, undefined) {
- 'use strict';
-
- var $doc = $(document),
- Modernizr = window.Modernizr;
-
- $(document).ready(function() {
- $.fn.foundationAlerts ? $doc.foundationAlerts() : null;
- $.fn.foundationButtons ? $doc.foundationButtons() : null;
- $.fn.foundationAccordion ? $doc.foundationAccordion() : null;
- $.fn.foundationNavigation ? $doc.foundationNavigation() : null;
- $.fn.foundationTopBar ? $doc.foundationTopBar() : null;
- $.fn.foundationCustomForms ? $doc.foundationCustomForms() : null;
- $.fn.foundationMediaQueryViewer ? $doc.foundationMediaQueryViewer() : null;
- $.fn.foundationTabs ? $doc.foundationTabs({callback : $.foundation.customForms.appendCustomMarkup}) : null;
- $.fn.foundationTooltips ? $doc.foundationTooltips() : null;
- $.fn.foundationMagellan ? $doc.foundationMagellan() : null;
- $.fn.foundationClearing ? $doc.foundationClearing() : null;
-
- $.fn.placeholder ? $('input, textarea').placeholder() : null;
- });
-
- // UNCOMMENT THE LINE YOU WANT BELOW IF YOU WANT IE8 SUPPORT AND ARE USING .block-grids
- // $('.block-grid.two-up>li:nth-child(2n+1)').css({clear: 'both'});
- // $('.block-grid.three-up>li:nth-child(3n+1)').css({clear: 'both'});
- // $('.block-grid.four-up>li:nth-child(4n+1)').css({clear: 'both'});
- // $('.block-grid.five-up>li:nth-child(5n+1)').css({clear: 'both'});
-
- // Hide address bar on mobile devices (except if #hash present, so we don't mess up deep linking).
- if (Modernizr.touch && !window.location.hash) {
- $(window).load(function () {
- setTimeout(function () {
- window.scrollTo(0, 1);
- }, 0);
- });
- }
-
-})(jQuery, this);
+$(document).foundation();
/**
* Switches to the specified UI tonality
diff --git a/javascripts/foundation.min.js b/javascripts/foundation.min.js
deleted file mode 100644
--- a/javascripts/foundation.min.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
- * Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load
- */
-window.Modernizr=function(e,t,n){function r(e){d.cssText=e}function i(e,t){return r(g.join(e+";")+(t||""))}function s(e,t){return typeof e===t}function o(e,t){return!!~(""+e).indexOf(t)}function u(e,t,r){for(var i in e){var o=t[e[i]];if(o!==n)return r===!1?e[i]:s(o,"function")?o.bind(r||t):o}return!1}var a="2.6.2",f={},l=!0,c=t.documentElement,h="modernizr",p=t.createElement(h),d=p.style,v,m={}.toString,g=" -webkit- -moz- -o- -ms- ".split(" "),y={svg:"http://www.w3.org/2000/svg"},b={},w={},E={},S=[],x=S.slice,T,N=function(e,n,r,i){var s,o,u,a,f=t.createElement("div"),l=t.body,p=l||t.createElement("body");if(parseInt(r,10))while(r--)u=t.createElement("div"),u.id=i?i[r]:h+(r+1),f.appendChild(u);return s=["&#173;",'<style id="s',h,'">',e,"</style>"].join(""),f.id=h,(l?f:p).innerHTML+=s,p.appendChild(f),l||(p.style.background="",p.style.overflow="hidden",a=c.style.overflow,c.style.overflow="hidden",c.appendChild(p)),o=n(f,e),l?f.parentNode.removeChild(f):(p.parentNode.removeChild(p),c.style.overflow=a),!!o},C=function(t){var n=e.matchMedia||e.msMatchMedia;if(n)return n(t).matches;var r;return N("@media "+t+" { #"+h+" { position: absolute; } }",function(t){r=(e.getComputedStyle?getComputedStyle(t,null):t.currentStyle)["position"]=="absolute"}),r},k={}.hasOwnProperty,L;!s(k,"undefined")&&!s(k.call,"undefined")?L=function(e,t){return k.call(e,t)}:L=function(e,t){return t in e&&s(e.constructor.prototype[t],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError;var n=x.call(arguments,1),r=function(){if(this instanceof r){var i=function(){};i.prototype=t.prototype;var s=new i,o=t.apply(s,n.concat(x.call(arguments)));return Object(o)===o?o:s}return t.apply(e,n.concat(x.call(arguments)))};return r}),b.touch=function(){var n;return"ontouchstart"in e||e.DocumentTouch&&t instanceof DocumentTouch?n=!0:N(["@media (",g.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(e){n=e.offsetTop===9}),n},b.svg=function(){return!!t.createElementNS&&!!t.createElementNS(y.svg,"svg").createSVGRect},b.inlinesvg=function(){var e=t.createElement("div");return e.innerHTML="<svg/>",(e.firstChild&&e.firstChild.namespaceURI)==y.svg},b.svgclippaths=function(){return!!t.createElementNS&&/SVGClipPath/.test(m.call(t.createElementNS(y.svg,"clipPath")))};for(var A in b)L(b,A)&&(T=A.toLowerCase(),f[T]=b[A](),S.push((f[T]?"":"no-")+T));return f.addTest=function(e,t){if(typeof e=="object")for(var r in e)L(e,r)&&f.addTest(r,e[r]);else{e=e.toLowerCase();if(f[e]!==n)return f;t=typeof t=="function"?t():t,typeof l!="undefined"&&l&&(c.className+=" "+(t?"":"no-")+e),f[e]=t}return f},r(""),p=v=null,function(e,t){function n(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x<style>"+t+"</style>",r.insertBefore(n.lastChild,r.firstChild)}function r(){var e=g.elements;return typeof e=="string"?e.split(" "):e}function i(e){var t=v[e[p]];return t||(t={},d++,e[p]=d,v[d]=t),t}function s(e,n,r){n||(n=t);if(m)return n.createElement(e);r||(r=i(n));var s;return r.cache[e]?s=r.cache[e].cloneNode():c.test(e)?s=(r.cache[e]=r.createElem(e)).cloneNode():s=r.createElem(e),s.canHaveChildren&&!l.test(e)?r.frag.appendChild(s):s}function o(e,n){e||(e=t);if(m)return e.createDocumentFragment();n=n||i(e);var s=n.frag.cloneNode(),o=0,u=r(),a=u.length;for(;o<a;o++)s.createElement(u[o]);return s}function u(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return g.shivMethods?s(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/\w+/g,function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'})+");return n}")(g,t.frag)}function a(e){e||(e=t);var r=i(e);return g.shivCSS&&!h&&!r.hasCSS&&(r.hasCSS=!!n(e,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),m||u(e,r),e}var f=e.html5||{},l=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,c=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,h,p="_html5shiv",d=0,v={},m;(function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",h="hidden"in e,m=e.childNodes.length==1||function(){t.createElement("a");var e=t.createDocumentFragment();return typeof e.cloneNode=="undefined"||typeof e.createDocumentFragment=="undefined"||typeof e.createElement=="undefined"}()}catch(n){h=!0,m=!0}})();var g={elements:f.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:f.shivCSS!==!1,supportsUnknownElements:m,shivMethods:f.shivMethods!==!1,type:"default",shivDocument:a,createElement:s,createDocumentFragment:o};e.html5=g,a(t)}(this,t),f._version=a,f._prefixes=g,f.mq=C,f.testStyles=N,c.className=c.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(l?" js "+S.join(" "):""),f}(this,this.document),function(e,t,n){function r(e){return"[object Function]"==d.call(e)}function i(e){return"string"==typeof e}function s(){}function o(e){return!e||"loaded"==e||"complete"==e||"uninitialized"==e}function u(){var e=v.shift();m=1,e?e.t?h(function(){("c"==e.t?k.injectCss:k.injectJs)(e.s,0,e.a,e.x,e.e,1)},0):(e(),u()):m=0}function a(e,n,r,i,s,a,f){function l(t){if(!d&&o(c.readyState)&&(w.r=d=1,!m&&u(),c.onload=c.onreadystatechange=null,t)){"img"!=e&&h(function(){b.removeChild(c)},50);for(var r in T[n])T[n].hasOwnProperty(r)&&T[n][r].onload()}}var f=f||k.errorTimeout,c=t.createElement(e),d=0,g=0,w={t:r,s:n,e:s,a:a,x:f};1===T[n]&&(g=1,T[n]=[]),"object"==e?c.data=n:(c.src=n,c.type=e),c.width=c.height="0",c.onerror=c.onload=c.onreadystatechange=function(){l.call(this,g)},v.splice(i,0,w),"img"!=e&&(g||2===T[n]?(b.insertBefore(c,y?null:p),h(l,f)):T[n].push(c))}function f(e,t,n,r,s){return m=0,t=t||"j",i(e)?a("c"==t?E:w,e,t,this.i++,n,r,s):(v.splice(this.i++,0,e),1==v.length&&u()),this}function l(){var e=k;return e.loader={load:f,i:0},e}var c=t.documentElement,h=e.setTimeout,p=t.getElementsByTagName("script")[0],d={}.toString,v=[],m=0,g="MozAppearance"in c.style,y=g&&!!t.createRange().compareNode,b=y?c:p.parentNode,c=e.opera&&"[object Opera]"==d.call(e.opera),c=!!t.attachEvent&&!c,w=g?"object":c?"script":"img",E=c?"script":w,S=Array.isArray||function(e){return"[object Array]"==d.call(e)},x=[],T={},N={timeout:function(e,t){return t.length&&(e.timeout=t[0]),e}},C,k;k=function(e){function t(e){var e=e.split("!"),t=x.length,n=e.pop(),r=e.length,n={url:n,origUrl:n,prefixes:e},i,s,o;for(s=0;s<r;s++)o=e[s].split("="),(i=N[o.shift()])&&(n=i(n,o));for(s=0;s<t;s++)n=x[s](n);return n}function o(e,i,s,o,u){var a=t(e),f=a.autoCallback;a.url.split(".").pop().split("?").shift(),a.bypass||(i&&(i=r(i)?i:i[e]||i[o]||i[e.split("/").pop().split("?")[0]]),a.instead?a.instead(e,i,s,o,u):(T[a.url]?a.noexec=!0:T[a.url]=1,s.load(a.url,a.forceCSS||!a.forceJS&&"css"==a.url.split(".").pop().split("?").shift()?"c":n,a.noexec,a.attrs,a.timeout),(r(i)||r(f))&&s.load(function(){l(),i&&i(a.origUrl,u,o),f&&f(a.origUrl,u,o),T[a.url]=2})))}function u(e,t){function n(e,n){if(e){if(i(e))n||(f=function(){var e=[].slice.call(arguments);l.apply(this,e),c()}),o(e,f,t,0,u);else if(Object(e)===e)for(p in h=function(){var t=0,n;for(n in e)e.hasOwnProperty(n)&&t++;return t}(),e)e.hasOwnProperty(p)&&(!n&&!--h&&(r(f)?f=function(){var e=[].slice.call(arguments);l.apply(this,e),c()}:f[p]=function(e){return function(){var t=[].slice.call(arguments);e&&e.apply(this,t),c()}}(l[p])),o(e[p],f,t,p,u))}else!n&&c()}var u=!!e.test,a=e.load||e.both,f=e.callback||s,l=f,c=e.complete||s,h,p;n(u?e.yep:e.nope,!!a),a&&n(a)}var a,f,c=this.yepnope.loader;if(i(e))o(e,0,c,0);else if(S(e))for(a=0;a<e.length;a++)f=e[a],i(f)?o(f,0,c,0):S(f)?k(f):Object(f)===f&&u(f,c);else Object(e)===e&&u(e,c)},k.addPrefix=function(e,t){N[e]=t},k.addFilter=function(e){x.push(e)},k.errorTimeout=1e4,null==t.readyState&&t.addEventListener&&(t.readyState="loading",t.addEventListener("DOMContentLoaded",C=function(){t.removeEventListener("DOMContentLoaded",C,0),t.readyState="complete"},0)),e.yepnope=l(),e.yepnope.executeStack=u,e.yepnope.injectJs=function(e,n,r,i,a,f){var l=t.createElement("script"),c,d,i=i||k.errorTimeout;l.src=e;for(d in r)l.setAttribute(d,r[d]);n=f?u:n||s,l.onreadystatechange=l.onload=function(){!c&&o(l.readyState)&&(c=1,n(),l.onload=l.onreadystatechange=null)},h(function(){c||(c=1,n(1))},i),a?l.onload():p.parentNode.insertBefore(l,p)},e.yepnope.injectCss=function(e,n,r,i,o,a){var i=t.createElement("link"),f,n=a?u:n||s;i.href=e,i.rel="stylesheet",i.type="text/css";for(f in r)i.setAttribute(f,r[f]);o||(p.parentNode.insertBefore(i,p),h(n,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))},Modernizr.addTest("ie8compat",function(){return!window.addEventListener&&document.documentMode&&document.documentMode===7});
-/*!
- * jQuery JavaScript Library v1.8.2
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: Thu Sep 20 2012 21:13:05 GMT-0400 (Eastern Daylight Time)
- */
-(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=1-(n/f.duration||0),i=0,s=f.tweens.length;for(;i<s;i++)f.tweens[i].run(r);return u.notifyWith(e,[f,r,n]),r<1&&s?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c=this,h=e.style,p={},d=[],m=e.nodeType&&Gt(e);n.queue||(f=v._queueHooks(e,"fx"),f.unqueued==null&&(f.unqueued=0,l=f.empty.fire,f.empty.fire=function(){f.unqueued||l()}),f.unqueued++,c.always(function(){c.always(function(){f.unqueued--,v.queue(e,"fx").length||f.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?h.display="inline-block":h.zoom=1)),n.overflow&&(h.overflow="hidden",v.support.shrinkWrapBlocks||c.done(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r];if(s===(m?"hide":"show"))continue;d.push(r)}}o=d.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),m?v(e).show():c.done(function(){v(e).hide()}),c.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in p)v.style(e,t,p[t])});for(r=0;r<o;r++)i=d[r],a=c.createTween(i,m?u[i]:0),p[i]=u[i]||v.style(e,i),i in u||(u[i]=a.start,m&&(a.end=a.start,a.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call(" ")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"&&(!e.unique||!c.has(n))?a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0],r.style.cssText="top:1px;float:left;opacity:.5";if(!n||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r,i,s=e.selectedIndex,o=[],u=e.options,a=e.type==="select-one";if(s<0)return null;n=a?s:0,r=a?s+1:u.length;for(;n<r;n++){i=u[n];if(i.selected&&(v.support.optDisabled?!i.disabled:i.getAttribute("disabled")===null)&&(!i.parentNode.disabled||!v.nodeName(i.parentNode,"optgroup"))){t=v(i).val();if(a)return t;o.push(t)}}return a&&!o.length&&u.length?v(u[s]).val():o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(
-e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r,g,!0)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){if(s&&i)return;var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[],s),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){c=lt(g,p),r(c,[],u,a),f=c.length;while(f--)if(l=c[f])g[p[f]]=!(m[p[f]]=l)}if(s){f=e&&g.length;while(f--)if(l=g[f])s[h[f]]=!(o[h[f]]=l)}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n,r){var i=0,s=t.length;for(;i<s;i++)nt(e,t[i],n,r);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e];return t||(t=k(e,new RegExp("(^|"+O+")"+e+"("+O+"|$)"))),function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")}},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&(!!e.type||!!e.href)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(e,t,n){return[0]}),last:st(function(e,t,n){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t,n){for(var r=0;r<t;r+=2)e.push(r);return e}),odd:st(function(e,t,n){for(var r=1;r<t;r+=2)e.push(r);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=1;l=h,e.sort(f);if(l)for(;t=e[n];n++)t===e[n-1]&&e.splice(n--,1);return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active",":focus"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&(!i||!i.test(e))){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&(!i||!i.test(n)))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=
-Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase())||!1,c.crossDomain=a&&a.join(":")+(a[3]?"":a[1]==="http:"?80:443)!==ln.join(":")+(ln[3]?"":ln[1]==="http:"?80:443)),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(e){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,t=v.timers,n=0;for(;n<t.length;n++)e=t[n],!e()&&t[n]===e&&t.splice(n--,1);t.length||v.fx.stop()},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
-(function(e,t,n){"use strict";e.fn.foundationMediaQueryViewer=function(t){var n=e.extend(t,{toggleKey:77}),r=e(document);r.on("keyup.mediaQueryViewer",":input",function(e){e.which===n.toggleKey&&e.stopPropagation()}),r.on("keyup.mediaQueryViewer",function(t){var r=e("#fqv");t.which===n.toggleKey&&(r.length>0?r.remove():e("body").prepend('<div id="fqv" style="position:fixed;top:4px;left:4px;z-index:999;color:#fff;"><p style="font-size:12px;background:rgba(0,0,0,0.75);padding:5px;margin-bottom:1px;line-height:1.2;"><span class="left">Media:</span> <span style="font-weight:bold;" class="show-for-xlarge">Extra Large</span><span style="font-weight:bold;" class="show-for-large">Large</span><span style="font-weight:bold;" class="show-for-medium">Medium</span><span style="font-weight:bold;" class="show-for-small">Small</span><span style="font-weight:bold;" class="show-for-landscape">Landscape</span><span style="font-weight:bold;" class="show-for-portrait">Portrait</span><span style="font-weight:bold;" class="show-for-touch">Touch</span></p></div>'))})}})(jQuery,this);
-/*
- * jQuery Custom Forms Plugin 1.0
- * www.ZURB.com
- * Copyright 2010, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-(function(e){var t=function(){return{tmp:[],hidden:null,adjust:function(t){var n=this;n.hidden=t.parents().andSelf().filter(":hidden"),n.hidden.each(function(){var t=e(this);n.tmp.push(t.attr("style")),t.css({visibility:"hidden",display:"block"})})},reset:function(){var t=this;t.hidden.each(function(n){var r=e(this),i=t.tmp[n];i===undefined?r.removeAttr("style"):r.attr("style",i)}),t.tmp=[],t.hidden=null}}};jQuery.foundation=jQuery.foundation||{},jQuery.foundation.customForms=jQuery.foundation.customForms||{},e.foundation.customForms.appendCustomMarkup=function(n){function i(t,n){var r=e(n).hide(),i=r.attr("type"),s=r.next("span.custom."+i);s.length===0&&(s=e('<span class="custom '+i+'"></span>').insertAfter(r)),s.toggleClass("checked",r.is(":checked")),s.toggleClass("disabled",r.is(":disabled"))}function s(r,i){var s=t(),o=e(i),u=o.next("div.custom.dropdown"),a=u.find("ul"),f=u.find(".current"),l=u.find(".selector"),c=o.find("option"),h=c.filter(":selected"),p=0,d="",v,m=!1;if(o.hasClass(n.disable_class))return;if(u.length===0){var g=o.hasClass("small")?"small":o.hasClass("medium")?"medium":o.hasClass("large")?"large":o.hasClass("expand")?"expand":"";u=e('<div class="'+["custom","dropdown",g].join(" ")+'"><a href="#" class="selector"></a><ul /></div>'),l=u.find(".selector"),a=u.find("ul"),d=c.map(function(){return"<li>"+e(this).html()+"</li>"}).get().join(""),a.append(d),m=u.prepend('<a href="#" class="current">'+h.html()+"</a>").find(".current"),o.after(u).hide()}else d=c.map(function(){return"<li>"+e(this).html()+"</li>"}).get().join(""),a.html("").append(d);u.toggleClass("disabled",o.is(":disabled")),v=a.find("li"),c.each(function(t){this.selected&&(v.eq(t).addClass("selected"),m&&m.html(e(this).html()))}),a.css("width","auto"),u.css("width","auto"),u.is(".small, .medium, .large, .expand")||(u.addClass("open"),s.adjust(a),p=v.outerWidth()>p?v.outerWidth():p,s.reset(),u.removeClass("open"),u.width(p+18),a.width(p+16))}var r={disable_class:"no-custom"};n=e.extend(r,n),e("form.custom input:radio[data-customforms!=disabled]").each(i),e("form.custom input:checkbox[data-customforms!=disabled]").each(i),e("form.custom select[data-customforms!=disabled]").each(s)};var n=function(t){var n=0,r=t.next();$options=t.find("option"),r.find("ul").html(""),$options.each(function(){$li=e("<li>"+e(this).html()+"</li>"),r.find("ul").append($li)}),$options.each(function(t){this.selected&&(r.find("li").eq(t).addClass("selected"),r.find(".current").html(e(this).html()))}),r.removeAttr("style").find("ul").removeAttr("style"),r.find("li").each(function(){r.addClass("open"),e(this).outerWidth()>n&&(n=e(this).outerWidth()),r.removeClass("open")}),r.css("width",n+18+"px"),r.find("ul").css("width",n+16+"px")},r=function(e){var t=e.prev(),n=t[0];!1===t.is(":disabled")&&(n.checked=n.checked?!1:!0,e.toggleClass("checked"),t.trigger("change"))},i=function(e){var t=e.prev(),n=t.closest("form.custom"),r=t[0];!1===t.is(":disabled")&&(n.find('input:radio[name="'+t.attr("name")+'"]').next().not(e).removeClass("checked"),e.hasClass("checked")||e.toggleClass("checked"),r.checked=e.hasClass("checked"),t.trigger("change"))};e(document).on("click","form.custom span.custom.checkbox",function(t){t.preventDefault(),t.stopPropagation(),r(e(this))}),e(document).on("click","form.custom span.custom.radio",function(t){t.preventDefault(),t.stopPropagation(),i(e(this))}),e(document).on("change","form.custom select[data-customforms!=disabled]",function(t){n(e(this))}),e(document).on("click","form.custom label",function(t){var n=e("#"+e(this).attr("for")+"[data-customforms!=disabled]"),s,o;n.length!==0&&(n.attr("type")==="checkbox"?(t.preventDefault(),s=e(this).find("span.custom.checkbox"),s.length==0&&(s=e(this).next("span.custom.checkbox")),s.length==0&&(s=e(this).prev("span.custom.checkbox")),r(s)):n.attr("type")==="radio"&&(t.preventDefault(),o=e(this).find("span.custom.radio"),o.length==0&&(o=e(this).next("span.custom.radio")),o.length==0&&(o=e(this).prev("span.custom.radio")),i(o)))}),e(document).on("click","form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector",function(t){var n=e(this),r=n.closest("div.custom.dropdown"),i=r.prev();t.preventDefault(),e("div.dropdown").removeClass("open");if(!1===i.is(":disabled"))return r.toggleClass("open"),r.hasClass("open")?e(document).bind("click.customdropdown",function(t){r.removeClass("open"),e(document).unbind(".customdropdown")}):e(document).unbind(".customdropdown"),!1}),e(document).on("click","form.custom div.custom.dropdown li",function(t){var n=e(this),r=n.closest("div.custom.dropdown"),i=r.prev(),s=0;t.preventDefault(),t.stopPropagation(),e("div.dropdown").removeClass("open"),n.closest("ul").find("li").removeClass("selected"),n.addClass("selected"),r.removeClass("open").find("a.current").html(n.html()),n.closest("ul").find("li").each(function(e){n[0]==this&&(s=e)}),i[0].selectedIndex=s,i.trigger("change")}),e.fn.foundationCustomForms=e.foundation.customForms.appendCustomMarkup})(jQuery);
-/*
- * jQuery Reveal Plugin 1.1
- * www.ZURB.com
- * Copyright 2010, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-/*globals jQuery */
-(function(e){"use strict";var t=!1;e(document).on("click","a[data-reveal-id]",function(t){t.preventDefault();var n=e(this).attr("data-reveal-id");e("#"+n).reveal(e(this).data())}),e.fn.reveal=function(n){var r=e(document),i={animation:"fadeAndPop",animationSpeed:300,closeOnBackgroundClick:!0,dismissModalClass:"close-reveal-modal",open:e.noop,opened:e.noop,close:e.noop,closed:e.noop};return n=e.extend({},i,n),this.not(".reveal-modal.open").each(function(){function c(){u=!1}function h(){u=!0}function p(){var n=e(".reveal-modal.open");n.length===1&&(t=!0,n.trigger("reveal:close"))}function d(){u||(h(),p(),i.addClass("open"),n.animation==="fadeAndPop"&&(f.open.top=r.scrollTop()-o,f.open.opacity=0,i.css(f.open),a.fadeIn(n.animationSpeed/2),i.delay(n.animationSpeed/2).animate({top:r.scrollTop()+s+"px",opacity:1},n.animationSpeed,function(){i.trigger("reveal:opened")})),n.animation==="fade"&&(f.open.top=r.scrollTop()+s,f.open.opacity=0,i.css(f.open),a.fadeIn(n.animationSpeed/2),i.delay(n.animationSpeed/2).animate({opacity:1},n.animationSpeed,function(){i.trigger("reveal:opened")})),n.animation==="none"&&(f.open.top=r.scrollTop()+s,f.open.opacity=1,i.css(f.open),a.css({display:"block"}),i.trigger("reveal:opened")))}function v(){var e=i.find(".flex-video"),t=e.find("iframe");t.length>0&&(t.attr("src",t.data("src")),e.fadeIn(100))}function m(){u||(h(),i.removeClass("open"),n.animation==="fadeAndPop"&&(i.animate({top:r.scrollTop()-o+"px",opacity:0},n.animationSpeed/2,function(){i.css(f.close)}),t?i.trigger("reveal:closed"):a.delay(n.animationSpeed).fadeOut(n.animationSpeed,function(){i.trigger("reveal:closed")})),n.animation==="fade"&&(i.animate({opacity:0},n.animationSpeed,function(){i.css(f.close)}),t?i.trigger("reveal:closed"):a.delay(n.animationSpeed).fadeOut(n.animationSpeed,function(){i.trigger("reveal:closed")})),n.animation==="none"&&(i.css(f.close),t||a.css({display:"none"}),i.trigger("reveal:closed")),t=!1)}function g(){i.unbind(".reveal"),a.unbind(".reveal"),l.unbind(".reveal"),e("body").unbind(".reveal")}function y(){var e=i.find(".flex-video"),t=e.find("iframe");t.length>0&&(t.data("src",t.attr("src")),t.attr("src",""),e.fadeOut(100))}var i=e(this),s=parseInt(i.css("top"),10),o=i.height()+s,u=!1,a=e(".reveal-modal-bg"),f={open:{top:0,opacity:0,visibility:"visible",display:"block"},close:{top:s,opacity:1,visibility:"hidden",display:"none"}},l;a.length===0&&(a=e("<div />",{"class":"reveal-modal-bg"}).insertAfter(i),a.fadeTo("fast",.8)),i.bind("reveal:open.reveal",d),i.bind("reveal:open.reveal",v),i.bind("reveal:close.reveal",m),i.bind("reveal:closed.reveal",y),i.bind("reveal:opened.reveal reveal:closed.reveal",c),i.bind("reveal:closed.reveal",g),i.bind("reveal:open.reveal",n.open),i.bind("reveal:opened.reveal",n.opened),i.bind("reveal:close.reveal",n.close),i.bind("reveal:closed.reveal",n.closed),i.trigger("reveal:open"),l=e("."+n.dismissModalClass).bind("click.reveal",function(){i.trigger("reveal:close")}),n.closeOnBackgroundClick&&(a.css({cursor:"pointer"}),a.bind("click.reveal",function(){i.trigger("reveal:close")})),e("body").bind("keyup.reveal",function(e){e.which===27&&i.trigger("reveal:close")})})}})(jQuery);
-/*
- * jQuery Orbit Plugin 1.4.0
- * www.ZURB.com/playground
- * Copyright 2010, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-(function(e){"use strict";e.fn.findFirstImage=function(){return this.first().find("img").andSelf().filter("img").first()};var t={defaults:{animation:"horizontal-push",animationSpeed:600,timer:!0,advanceSpeed:4e3,pauseOnHover:!1,startClockOnMouseOut:!1,startClockOnMouseOutAfter:1e3,directionalNav:!0,directionalNavRightText:"Right",directionalNavLeftText:"Left",captions:!0,captionAnimation:"fade",captionAnimationSpeed:600,resetTimerOnClick:!1,bullets:!1,bulletThumbs:!1,bulletThumbLocation:"",bulletThumbsHideOnSmall:!0,afterSlideChange:e.noop,afterLoadComplete:e.noop,fluid:!0,centerBullets:!0,singleCycle:!1,slideNumber:!1,stackOnSmall:!1},activeSlide:0,numberSlides:0,orbitWidth:null,orbitHeight:null,locked:null,timerRunning:null,degrees:0,wrapperHTML:'<div class="orbit-wrapper" />',timerHTML:'<div class="timer"><span class="mask"><span class="rotator"></span></span><span class="pause"></span></div>',captionHTML:'<div class="orbit-caption"></div>',directionalNavHTML:'<div class="slider-nav hide-for-small"><span class="right"></span><span class="left"></span></div>',bulletHTML:'<ul class="orbit-bullets"></ul>',slideNumberHTML:'<span class="orbit-slide-counter"></span>',init:function(t,n){var r,i=0,s=this;this.clickTimer=e.proxy(this.clickTimer,this),this.addBullet=e.proxy(this.addBullet,this),this.resetAndUnlock=e.proxy(this.resetAndUnlock,this),this.stopClock=e.proxy(this.stopClock,this),this.startTimerAfterMouseLeave=e.proxy(this.startTimerAfterMouseLeave,this),this.clearClockMouseLeaveTimer=e.proxy(this.clearClockMouseLeaveTimer,this),this.rotateTimer=e.proxy(this.rotateTimer,this),this.options=e.extend({},this.defaults,n),this.options.timer==="false"&&(this.options.timer=!1),this.options.captions==="false"&&(this.options.captions=!1),this.options.directionalNav==="false"&&(this.options.directionalNav=!1),this.$element=e(t),this.$wrapper=this.$element.wrap(this.wrapperHTML).parent(),this.$slides=this.$element.children("img, a, div, figure, li"),this.$element.on("movestart",function(e){(e.distX>e.distY&&e.distX<-e.distY||e.distX<e.distY&&e.distX>-e.distY)&&e.preventDefault()}),this.$element.bind("orbit.next",function(){s.shift("next")}),this.$element.bind("orbit.prev",function(){s.shift("prev")}),this.$element.bind("swipeleft",function(){e(this).trigger("orbit.next")}),this.$element.bind("swiperight",function(){e(this).trigger("orbit.prev")}),this.$element.bind("orbit.goto",function(e,t){s.shift(t)}),this.$element.bind("orbit.start",function(e,t){s.startClock()}),this.$element.bind("orbit.stop",function(e,t){s.stopClock()}),r=this.$slides.filter("img"),r.length===0?this.loaded():r.bind("imageready",function(){i+=1,i===r.length&&s.loaded()})},loaded:function(){this.$element.addClass("orbit").css({width:"1px",height:"1px"}),this.options.stackOnSmall&&this.$element.addClass("orbit-stack-on-small"),this.$slides.addClass("orbit-slide").css({opacity:0}),this.setDimentionsFromLargestSlide(),this.updateOptionsIfOnlyOneSlide(),this.setupFirstSlide(),this.notifySlideChange(),this.options.timer&&(this.setupTimer(),this.startClock()),this.options.captions&&this.setupCaptions(),this.options.directionalNav&&this.setupDirectionalNav(),this.options.bullets&&(this.setupBulletNav(),this.setActiveBullet()),this.options.afterLoadComplete.call(this),Holder.run()},currentSlide:function(){return this.$slides.eq(this.activeSlide)},notifySlideChange:function(){if(this.options.slideNumber){var t=this.activeSlide+1+" of "+this.$slides.length;this.$element.trigger("orbit.change",{slideIndex:this.activeSlide,slideCount:this.$slides.length});if(this.$counter===undefined){var n=e(this.slideNumberHTML).html(t);this.$counter=n,this.$wrapper.append(this.$counter)}else this.$counter.html(t)}},setDimentionsFromLargestSlide:function(){var t=this,n;t.$element.add(t.$wrapper).width(this.$slides.first().outerWidth()),t.$element.add(t.$wrapper).height(this.$slides.first().height()),t.orbitWidth=this.$slides.first().outerWidth(),t.orbitHeight=this.$slides.first().height(),n=this.$slides.first().findFirstImage().clone(),this.$slides.each(function(){var r=e(this),i=r.outerWidth(),s=r.height();i>t.$element.outerWidth()&&(t.$element.add(t.$wrapper).width(i),t.orbitWidth=t.$element.outerWidth()),s>t.$element.height()&&(t.$element.add(t.$wrapper).height(s),t.orbitHeight=t.$element.height(),n=e(this).findFirstImage().clone()),t.numberSlides+=1}),this.options.fluid&&(typeof this.options.fluid=="string"&&(n=e("<img>").attr("data-src","holder.js/"+this.options.fluid)),t.$element.prepend(n),n.addClass("fluid-placeholder"),t.$element.add(t.$wrapper).css({width:"inherit"}),t.$element.add(t.$wrapper).css({height:"inherit"}),e(window).bind("resize",function(){t.orbitWidth=t.$element.outerWidth(),t.orbitHeight=t.$element.height()}))},lock:function(){this.locked=!0},unlock:function(){this.locked=!1},updateOptionsIfOnlyOneSlide:function(){this.$slides.length===1&&(this.options.directionalNav=!1,this.options.timer=!1,this.options.bullets=!1)},setupFirstSlide:function(){var e=this;this.$slides.first().css({"z-index":3,opacity:1}).fadeIn(function(){e.$slides.css({display:"block"})})},startClock:function(){var e=this;if(!this.options.timer)return!1;this.$timer.is(":hidden")?this.clock=setInterval(function(){e.$element.trigger("orbit.next")},this.options.advanceSpeed):(this.timerRunning=!0,this.$pause.removeClass("active"),this.clock=setInterval(this.rotateTimer,this.options.advanceSpeed/180,!1))},rotateTimer:function(e){var t="rotate("+this.degrees+"deg)";this.degrees+=2,this.$rotator.css({"-webkit-transform":t,"-moz-transform":t,"-o-transform":t,"-ms-transform":t}),e&&(this.degrees=0,this.$rotator.removeClass("move"),this.$mask.removeClass("move")),this.degrees>180&&(this.$rotator.addClass("move"),this.$mask.addClass("move")),this.degrees>360&&(this.$rotator.removeClass("move"),this.$mask.removeClass("move"),this.degrees=0,this.$element.trigger("orbit.next"))},stopClock:function(){if(!this.options.timer)return!1;this.timerRunning=!1,clearInterval(this.clock),this.$pause.addClass("active")},setupTimer:function(){this.$timer=e(this.timerHTML),this.$wrapper.append(this.$timer),this.$rotator=this.$timer.find(".rotator"),this.$mask=this.$timer.find(".mask"),this.$pause=this.$timer.find(".pause"),this.$timer.click(this.clickTimer),this.options.startClockOnMouseOut&&(this.$wrapper.mouseleave(this.startTimerAfterMouseLeave),this.$wrapper.mouseenter(this.clearClockMouseLeaveTimer)),this.options.pauseOnHover&&this.$wrapper.mouseenter(this.stopClock)},startTimerAfterMouseLeave:function(){var e=this;this.outTimer=setTimeout(function(){e.timerRunning||e.startClock()},this.options.startClockOnMouseOutAfter)},clearClockMouseLeaveTimer:function(){clearTimeout(this.outTimer)},clickTimer:function(){this.timerRunning?this.stopClock():this.startClock()},setupCaptions:function(){this.$caption=e(this.captionHTML),this.$wrapper.append(this.$caption),this.setCaption()},setCaption:function(){var t=this.currentSlide().attr("data-caption"),n;if(!this.options.captions)return!1;if(t){if(e.trim(e(t).text()).length<1)return!1;t.charAt(0)=="#"&&(t=t.substring(1,t.length)),n=e("#"+t).html(),this.$caption.attr("id",t).html(n);switch(this.options.captionAnimation){case"none":this.$caption.show();break;case"fade":this.$caption.fadeIn(this.options.captionAnimationSpeed);break;case"slideOpen":this.$caption.slideDown(this.options.captionAnimationSpeed)}}else switch(this.options.captionAnimation){case"none":this.$caption.hide();break;case"fade":this.$caption.fadeOut(this.options.captionAnimationSpeed);break;case"slideOpen":this.$caption.slideUp(this.options.captionAnimationSpeed)}},setupDirectionalNav:function(){var t=this,n=e(this.directionalNavHTML);n.find(".right").html(this.options.directionalNavRightText),n.find(".left").html(this.options.directionalNavLeftText),this.$wrapper.append(n),this.$wrapper.find(".left").click(function(){t.stopClock(),t.options.resetTimerOnClick&&(t.rotateTimer(!0),t.startClock()),t.$element.trigger("orbit.prev")}),this.$wrapper.find(".right").click(function(){t.stopClock(),t.options.resetTimerOnClick&&(t.rotateTimer(!0),t.startClock()),t.$element.trigger("orbit.next")})},setupBulletNav:function(){this.$bullets=e(this.bulletHTML),this.$wrapper.append(this.$bullets),this.$slides.each(this.addBullet),this.$element.addClass("with-bullets"),this.options.centerBullets&&this.$bullets.css("margin-left",-this.$bullets.outerWidth()/2),this.options.bulletThumbsHideOnSmall&&this.$bullets.addClass("hide-for-small")},addBullet:function(t,n){var r=t+1,i=e("<li>"+r+"</li>"),s,o=this;this.options.bulletThumbs&&(s=e(n).attr("data-thumb"),s&&i.addClass("has-thumb").css({background:"url("+this.options.bulletThumbLocation+s+") no-repeat"})),this.$bullets.append(i),i.data("index",t),i.click(function(){o.stopClock(),o.options.resetTimerOnClick&&(o.rotateTimer(!0),o.startClock()),o.$element.trigger("orbit.goto",[i.data("index")])})},setActiveBullet:function(){if(!this.options.bullets)return!1;this.$bullets.find("li").removeClass("active").eq(this.activeSlide).addClass("active")},resetAndUnlock:function(){this.$slides.eq(this.prevActiveSlide).css({"z-index":1}),this.unlock(),this.options.afterSlideChange.call(this,this.$slides.eq(this.prevActiveSlide),this.$slides.eq(this.activeSlide))},shift:function(t){var n=t;this.prevActiveSlide=this.activeSlide;if(this.prevActiveSlide==n)return!1;if(this.$slides.length=="1")return!1;this.locked||(this.lock(),t=="next"?(this.activeSlide++,this.activeSlide==this.numberSlides&&(this.activeSlide=0)):t=="prev"?(this.activeSlide--,this.activeSlide<0&&(this.activeSlide=this.numberSlides-1)):(this.activeSlide=t,this.prevActiveSlide<this.activeSlide?n="next":this.prevActiveSlide>this.activeSlide&&(n="prev")),this.setActiveBullet(),this.notifySlideChange(),this.$slides.eq(this.prevActiveSlide).css({"z-index":2}),this.options.animation=="fade"&&(this.$slides.eq(this.activeSlide).css({opacity:0,"z-index":3}).animate({opacity:1},this.options.animationSpeed,this.resetAndUnlock),this.$slides.eq(this.prevActiveSlide).animate({opacity:0},this.options.animationSpeed)),this.options.animation=="horizontal-slide"&&(n=="next"&&this.$slides.eq(this.activeSlide).css({left:this.orbitWidth,"z-index":3}).css("opacity",1).animate({left:0},this.options.animationSpeed,this.resetAndUnlock),n=="prev"&&this.$slides.eq(this.activeSlide).css({left:-this.orbitWidth,"z-index":3}).css("opacity",1).animate({left:0},this.options.animationSpeed,this.resetAndUnlock),this.$slides.eq(this.prevActiveSlide).css("opacity",0)),this.options.animation=="vertical-slide"&&(n=="prev"&&(this.$slides.eq(this.activeSlide).css({top:this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0},this.options.animationSpeed,this.resetAndUnlock),this.$slides.eq(this.prevActiveSlide).css("opacity",0)),n=="next"&&this.$slides.eq(this.activeSlide).css({top:-this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0},this.options.animationSpeed,this.resetAndUnlock),this.$slides.eq(this.prevActiveSlide).css("opacity",0)),this.options.animation=="horizontal-push"&&(n=="next"&&(this.$slides.eq(this.activeSlide).css({left:this.orbitWidth,"z-index":3}).animate({left:0,opacity:1},this.options.animationSpeed,this.resetAndUnlock),this.$slides.eq(this.prevActiveSlide).animate({left:-this.orbitWidth},this.options.animationSpeed,"",function(){e(this).css({opacity:0})})),n=="prev"&&(this.$slides.eq(this.activeSlide).css({left:-this.orbitWidth,"z-index":3}).animate({left:0,opacity:1},this.options.animationSpeed,this.resetAndUnlock),this.$slides.eq(this.prevActiveSlide).animate({left:this.orbitWidth},this.options.animationSpeed,"",function(){e(this).css({opacity:0})}))),this.options.animation=="vertical-push"&&(n=="next"&&(this.$slides.eq(this.activeSlide).css({top:-this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0,opacity:1},this.options.animationSpeed,this.resetAndUnlock),this.$slides.eq(this.prevActiveSlide).css("opacity",0).animate({top:this.orbitHeight},this.options.animationSpeed,"")),n=="prev"&&(this.$slides.eq(this.activeSlide).css({top:this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0},this.options.animationSpeed,this.resetAndUnlock),this.$slides.eq(this.prevActiveSlide).css("opacity",0).animate({top:-this.orbitHeight},this.options.animationSpeed))),this.setCaption()),this.activeSlide===this.$slides.length-1&&this.options.singleCycle&&this.stopClock()}};e.fn.orbit=function(n){return this.each(function(){var r=e.extend({},t);r.init(this,n)})}})(jQuery),function(e){function n(t,n){var r=e(t);r.bind("load.imageready",function(){n.apply(t,arguments),r.unbind("load.imageready")})}var t={};e.event.special.imageready={setup:function(e,n,r){t=e||t},add:function(r){var i=e(this),s;this.nodeType===1&&this.tagName.toLowerCase()==="img"&&this.src!==""&&(t.forceLoad?(s=i.attr("src"),i.attr("src",""),n(this,r.handler),i.attr("src",s)):this.complete||this.readyState===4?r.handler.apply(this,arguments):n(this,r.handler))},teardown:function(t){e(this).unbind(".imageready")}}}(jQuery);var Holder=Holder||{};(function(e,t){function s(e,t){var n="complete",r="readystatechange",i=!1,s=i,o=!0,u=e.document,a=u.documentElement,f=u.addEventListener?"addEventListener":"attachEvent",l=u.addEventListener?"removeEventListener":"detachEvent",c=u.addEventListener?"":"on",h=function(o){(o.type!=r||u.readyState==n)&&((o.type=="load"?e:u)[l](c+o.type,h,i),!s&&(s=!0)&&t.call(e,null))},p=function(){try{a.doScroll("left")}catch(e){setTimeout(p,50);return}h("poll")};if(u.readyState==n)t.call(e,"lazy");else{if(u.createEventObject&&a.doScroll){try{o=!e.frameElement}catch(d){}o&&p()}u[f](c+"DOMContentLoaded",h,i),u[f](c+r,h,i),e[f](c+"load",h,i)}}function o(e){e=e.match(/^(\W)?(.*)/);var t=document["getElement"+(e[1]?e[1]=="#"?"ById":"sByClassName":"sByTagName")](e[2]),n=[];return t!=null&&(t.length?n=t:t.length==0?n=t:n=[t]),n}function u(e,t){var n={};for(var r in e)n[r]=e[r];for(var i in t)n[i]=t[i];return n}function a(e,t,n){var r=[t.height,t.width].sort(),s=Math.round(r[1]/16),o=Math.round(r[0]/16),u=Math.max(n.size,s);i.width=t.width,i.height=t.height,e.textAlign="center",e.textBaseline="middle",e.fillStyle=n.background,e.fillRect(0,0,t.width,t.height),e.fillStyle=n.foreground,e.font="bold "+u+"px sans-serif";var a=n.text?n.text:t.width+"x"+t.height;return Math.round(e.measureText(a).width)/t.width>1&&(u=Math.max(o,n.size)),e.font="bold "+u+"px sans-serif",e.fillText(a,t.width/2,t.height/2,t.width),i.toDataURL("image/png")}var n=!1,r=!1,i=document.createElement("canvas");if(!i.getContext)r=!0;else if(i.toDataURL("image/png").indexOf("data:image/png")<0)r=!0;else var f=i.getContext("2d");var l={domain:"holder.js",images:"img",themes:{gray:{background:"#eee",foreground:"#aaa",size:12},social:{background:"#3a5a97",foreground:"#fff",size:12},industrial:{background:"#434A52",foreground:"#C2F200",size:12}}};e.flags={dimensions:{regex:/([0-9]+)x([0-9]+)/,output:function(e){var t=this.regex.exec(e);return{width:+t[1],height:+t[2]}}},colors:{regex:/#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i,output:function(e){var t=this.regex.exec(e);return{size:l.themes.gray.size,foreground:"#"+t[2],background:"#"+t[1]}}},text:{regex:/text\:(.*)/,output:function(e){return this.regex.exec(e)[1]}}};for(var c in e.flags)e.flags[c].match=function(e){return e.match(this.regex)};e.add_theme=function(t,n){return t!=null&&n!=null&&(l.themes[t]=n),e},e.add_image=function(t,n){var r=o(n);if(r.length)for(var i=0,s=r.length;i<s;i++){var u=document.createElement("img");u.setAttribute("data-src",t),r[i].appendChild(u)}return e},e.run=function(t){var n=u(l,t),i=o(n.images),s=!0;for(var c=i.length,h=0;h<c;h++){var p=l.themes.gray,d=i[h].getAttribute("data-src")||i[h].getAttribute("src");if(d&&!!~d.indexOf(n.domain)){var v=!1,m=null,g=null,y=d.substr(d.indexOf(n.domain)+n.domain.length+1).split("/");for(sl=y.length,j=0;j<sl;j++)e.flags.dimensions.match(y[j])?(v=!0,m=e.flags.dimensions.output(y[j])):e.flags.colors.match(y[j])?p=e.flags.colors.output(y[j]):n.themes[y[j]]?p=n.themes[y[j]]:e.flags.text.match(y[j])&&(g=e.flags.text.output(y[j]));if(v){i[h].setAttribute("data-src",d);var b=m.width+"x"+m.height;i[h].setAttribute("alt",g?g:p.text?p.text+" ["+b+"]":b),i[h].style.backgroundColor=p.background;var p=g?u(p,{text:g}):p;r||i[h].setAttribute("src",a(f,m,p))}}}return e},s(t,function(){n||e.run()})})(Holder,window);
-(function(e,t,n){"use strict";e.fn.foundationNavigation=function(t){var n=!1;Modernizr.touch||navigator.userAgent.match(/Windows Phone/i)?(e(document).on("click.fndtn touchstart.fndtn",".nav-bar a.flyout-toggle",function(t){t.preventDefault();var r=e(this).siblings(".flyout").first();n===!1&&(e(".nav-bar .flyout").not(r).slideUp(500),r.slideToggle(500,function(){n=!1})),n=!0}),e(".nav-bar>li.has-flyout",this).addClass("is-touch")):e(".nav-bar>li.has-flyout",this).on("mouseenter mouseleave",function(t){t.type=="mouseenter"&&(e(".nav-bar").find(".flyout").hide(),e(this).children(".flyout").show());if(t.type=="mouseleave"){var n=e(this).children(".flyout"),r=n.find("input"),i=function(t){var n;return t.length>0?(t.each(function(){e(this).is(":focus")&&(n=!0)}),n):!1};i(r)||e(this).children(".flyout").hide()}})}})(jQuery,this);
-(function(e,t,n){"use strict";e.fn.foundationButtons=function(t){var r=e(document),i=e.extend({dropdownAsToggle:!1,activeClass:"active"},t),s=function(t){e(".button.dropdown").find("ul").not(t).removeClass("show-dropdown")},o=function(t){var n=e(".button.dropdown").not(t);n.add(e("> span."+i.activeClass,n)).removeClass(i.activeClass)};r.on("click.fndtn",".button.disabled",function(e){e.preventDefault()}),e(".button.dropdown > ul",this).addClass("no-hover"),r.on("click.fndtn",".button.dropdown:not(.split), .button.dropdown.split span",function(t){var n=e(this),r=n.closest(".button.dropdown"),u=e("> ul",r);["A","BUTTON"].indexOf(t.target.nodeName)==-1&&t.preventDefault(),setTimeout(function(){s(i.dropdownAsToggle?"":u),u.toggleClass("show-dropdown"),i.dropdownAsToggle&&(o(r),n.toggleClass(i.activeClass))},0)}),r.on("click.fndtn","body, html",function(t){if(n==t.originalEvent)return;e(t.originalEvent.target).is(".button.dropdown:not(.split), .button.dropdown.split span")||(s(),i.dropdownAsToggle&&o())});var u=e(".button.dropdown:not(.large):not(.small):not(.tiny):visible",this).outerHeight()-1,a=e(".button.large.dropdown:visible",this).outerHeight()-1,f=e(".button.small.dropdown:visible",this).outerHeight()-1,l=e(".button.tiny.dropdown:visible",this).outerHeight()-1;e(".button.dropdown:not(.large):not(.small):not(.tiny) > ul",this).css("top",u),e(".button.dropdown.large > ul",this).css("top",a),e(".button.dropdown.small > ul",this).css("top",f),e(".button.dropdown.tiny > ul",this).css("top",l),e(".button.dropdown.up:not(.large):not(.small):not(.tiny) > ul",this).css("top","auto").css("bottom",u-2),e(".button.dropdown.up.large > ul",this).css("top","auto").css("bottom",a-2),e(".button.dropdown.up.small > ul",this).css("top","auto").css("bottom",f-2),e(".button.dropdown.up.tiny > ul",this).css("top","auto").css("bottom",l-2)}})(jQuery,this);
-(function(e,t,n,r){"use strict";var i={callback:e.noop,deep_linking:!0,init:!1},s={init:function(t){return i=e.extend({},i,t),this.each(function(){i.init||s.events(),i.deep_linking&&s.from_hash()})},events:function(){e(n).on("click.fndtn",".tabs a",function(t){s.set_tab(e(this).parent("dd, li"),t)}),i.init=!0},set_tab:function(t,n){var r=t.closest("dl, ul").find(".active"),s=t.children("a").attr("href"),o=/^#/.test(s),u=e(s+"Tab");o&&u.length>0&&(n&&!i.deep_linking&&n.preventDefault(),u.closest(".tabs-content").children("li").removeClass("active").hide(),u.css("display","block").addClass("active")),r.removeClass("active"),t.addClass("active"),i.callback()},from_hash:function(){var n=t.location.hash,r=e('a[href="'+n+'"]');r.trigger("click.fndtn")}};e.fn.foundationTabs=function(t){if(s[t])return s[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return s.init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery.foundationTabs")}})(jQuery,this,this.document);
-/*
- * jQuery Foundation Tooltips 2.0.2
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-/*jslint unparam: true, browser: true, indent: 2 */
-(function(e,t,n){"use strict";var r={bodyHeight:0,selector:".has-tip",additionalInheritableClasses:[],tooltipClass:".tooltip",tipTemplate:function(e,t){return'<span data-selector="'+e+'" class="'+r.tooltipClass.substring(1)+'">'+t+'<span class="nub"></span></span>'}},i={init:function(t){return r=e.extend(r,t),r.selector=r.targetClass?r.targetClass:r.selector,this.each(function(){var t=e("body");Modernizr.touch?(t.on("click.tooltip touchstart.tooltip touchend.tooltip",r.selector,function(t){t.preventDefault(),e(r.tooltipClass).hide(),i.showOrCreateTip(e(this))}),t.on("click.tooltip touchstart.tooltip touchend.tooltip",r.tooltipClass,function(t){t.preventDefault(),e(this).fadeOut(150)})):t.on("mouseenter.tooltip mouseleave.tooltip",r.selector,function(t){var n=e(this);t.type==="mouseenter"?i.showOrCreateTip(n):t.type==="mouseleave"&&i.hide(n)}),e(this).data("tooltips",!0)})},showOrCreateTip:function(e,t){var n=i.getTip(e);n&&n.length>0?i.show(e):i.create(e,t)},getTip:function(t){var n=i.selector(t),s=null;return n&&(s=e("span[data-selector="+n+"]"+r.tooltipClass)),s.length>0?s:!1},selector:function(e){var t=e.attr("id"),r=e.data("selector");return t===n&&r===n&&(r="tooltip"+Math.random().toString(36).substring(7),e.attr("data-selector",r)),t?t:r},create:function(t,n){var s=e(r.tipTemplate(i.selector(t),e("<div>").html(n?n:t.attr("title")).html())),o=i.inheritable_classes(t);s.addClass(o).appendTo("body"),Modernizr.touch&&s.append('<span class="tap-to-close">tap to close </span>'),t.removeAttr("title"),i.show(t)},reposition:function(n,r,i){var s,o,u,a,f,l;r.css("visibility","hidden").show(),s=n.data("width"),o=r.children(".nub"),u=o.outerHeight(),a=o.outerWidth(),l=function(e,t,n,r,i,s){return e.css({top:t,bottom:r,left:i,right:n,"max-width":s?s:"auto"}).end()},l(r,n.offset().top+n.outerHeight()+10,"auto","auto",n.offset().left,s),l(o,-u,"auto","auto",10),e(t).width()<767?(f=n.closest(".columns"),f.length<0&&(f=e("body")),r.width(f.outerWidth()-25).css("left",15).addClass("tip-override"),l(o,-u,"auto","auto",n.offset().left)):i&&i.indexOf("tip-top")>-1?(l(r,n.offset().top-r.outerHeight()-u,"auto","auto",n.offset().left,s).removeClass("tip-override"),l(o,"auto","auto",-u,"auto")):i&&i.indexOf("tip-left")>-1?(l(r,n.offset().top+n.outerHeight()/2-u,"auto","auto",n.offset().left-r.outerWidth()-10,s).removeClass("tip-override"),l(o,r.outerHeight()/2-u/2,-u,"auto","auto")):i&&i.indexOf("tip-right")>-1?(l(r,n.offset().top+n.outerHeight()/2-u,"auto","auto",n.offset().left+n.outerWidth()+10,s).removeClass("tip-override"),l(o,r.outerHeight()/2-u/2,"auto","auto",-u)):i&&i.indexOf("tip-centered-top")>-1?(l(r,n.offset().top-r.outerHeight()-u,"auto","auto",n.offset().left+(n.outerWidth()-r.outerWidth())/2,s).removeClass("tip-override"),l(o,"auto",r.outerWidth()/2-u/2,-u,"auto")):i&&i.indexOf("tip-centered-bottom")>-1&&(l(r,n.offset().top+n.outerHeight()+10,"auto","auto",n.offset().left+(n.outerWidth()-r.outerWidth())/2,s).removeClass("tip-override"),l(o,-u,r.outerWidth()/2-u/2,"auto","auto")),r.css("visibility","visible").hide()},inheritable_classes:function(t){var n=["tip-top","tip-left","tip-bottom","tip-right","tip-centered-top","tip-centered-bottom","noradius"].concat(r.additionalInheritableClasses),i=t.attr("class"),s=i?e.map(i.split(" "),function(t,r){if(e.inArray(t,n)!==-1)return t}).join(" "):"";return e.trim(s)},show:function(e){var t=i.getTip(e);i.reposition(e,t,e.attr("class")),t.fadeIn(150)},hide:function(e){var t=i.getTip(e);t.fadeOut(150)},reload:function(){var t=e(this);return t.data("tooltips")?t.foundationTooltips("destroy").foundationTooltips("init"):t.foundationTooltips("init")},destroy:function(){return this.each(function(){e(t).off(".tooltip"),e(r.selector).off(".tooltip"),e(r.tooltipClass).each(function(t){e(e(r.selector).get(t)).attr("title",e(this).text())}).remove()})}};e.fn.foundationTooltips=function(t){if(i[t])return i[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return i.init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery.foundationTooltips")}})(jQuery,this);
-(function(e,t,n){"use strict";e.fn.foundationAccordion=function(t){var n=function(e){return e.hasClass("hover")&&!Modernizr.touch};e(document).on("mouseenter",".accordion li",function(){var t=e(this).parent();if(n(t)){var r=e(this).children(".content").first();e(".content",t).not(r).hide().parent("li").removeClass("active"),r.show(0,function(){r.parent("li").addClass("active")})}}),e(document).on("click.fndtn",".accordion li .title",function(){var t=e(this).closest("li"),r=t.parent();if(!n(r)){var i=t.children(".content").first();t.hasClass("active")?r.find("li").removeClass("active").end().find(".content").hide():(e(".content",r).not(i).hide().parent("li").removeClass("active"),i.show(0,function(){i.parent("li").addClass("active")}))}})}})(jQuery,this);
-/*! http://mths.be/placeholder v2.0.7 by @mathias */
-(function(e,t,n){function f(e){var t={},r=/^jQuery\d+$/;return n.each(e.attributes,function(e,n){n.specified&&!r.test(n.name)&&(t[n.name]=n.value)}),t}function l(e,r){var i=this,s=n(i);if(i.value==s.attr("placeholder")&&s.hasClass("placeholder"))if(s.data("placeholder-password")){s=s.hide().next().show().attr("id",s.removeAttr("id").data("placeholder-id"));if(e===!0)return s[0].value=r;s.focus()}else i.value="",s.removeClass("placeholder"),i==t.activeElement&&i.select()}function c(){var e,t=this,r=n(t),i=r,s=this.id;if(t.value==""){if(t.type=="password"){if(!r.data("placeholder-textinput")){try{e=r.clone().attr({type:"text"})}catch(o){e=n("<input>").attr(n.extend(f(this),{type:"text"}))}e.removeAttr("name").data({"placeholder-password":!0,"placeholder-id":s}).bind("focus.placeholder",l),r.data({"placeholder-textinput":e,"placeholder-id":s}).before(e)}r=r.removeAttr("id").hide().prev().attr("id",s).show()}r.addClass("placeholder"),r[0].value=r.attr("placeholder")}else r.removeClass("placeholder")}var r="placeholder"in t.createElement("input"),i="placeholder"in t.createElement("textarea"),s=n.fn,o=n.valHooks,u,a;r&&i?(a=s.placeholder=function(){return this},a.input=a.textarea=!0):(a=s.placeholder=function(){var e=this;return e.filter((r?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":l,"blur.placeholder":c}).data("placeholder-enabled",!0).trigger("blur.placeholder"),e},a.input=r,a.textarea=i,u={get:function(e){var t=n(e);return t.data("placeholder-enabled")&&t.hasClass("placeholder")?"":e.value},set:function(e,r){var i=n(e);return i.data("placeholder-enabled")?(r==""?(e.value=r,e!=t.activeElement&&c.call(e)):i.hasClass("placeholder")?l.call(e,!0,r)||(e.value=r):e.value=r,i):e.value=r}},r||(o.input=u),i||(o.textarea=u),n(function(){n(t).delegate("form","submit.placeholder",function(){var e=n(".placeholder",this).each(l);setTimeout(function(){e.each(c)},10)})}),n(e).bind("beforeunload.placeholder",function(){n(".placeholder").each(function(){this.value=""})}))})(this,document,jQuery);
-(function(e,t,n){"use strict";e.fn.foundationAlerts=function(t){var n=e.extend({callback:e.noop},t);e(document).on("click",".alert-box a.close",function(t){t.preventDefault(),e(this).closest(".alert-box").fadeOut(function(){e(this).remove(),n.callback()})})}})(jQuery,this);
-/*
- * jQuery Foundation Top Bar 2.0.3
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-/*jslint unparam: true, browser: true, indent: 2 */
-(function(e,t,n){"use strict";var r={index:0,initialized:!1},i={init:function(n){return this.each(function(){r=e.extend(r,n),r.$w=e(t),r.$topbar=e("nav.top-bar"),r.$section=r.$topbar.find("section"),r.$titlebar=r.$topbar.children("ul:first");var s=e("<div class='top-bar-js-breakpoint'/>").appendTo("body");r.breakPoint=s.width(),s.remove(),r.initialized||(i.assemble(),r.initialized=!0),r.height||i.largestUL(),r.$topbar.parent().hasClass("fixed")&&e("body").css("padding-top",r.$topbar.outerHeight()),e(".top-bar .toggle-topbar").die("click.fndtn").live("click.fndtn",function(e){e.preventDefault(),i.breakpoint()&&(r.$topbar.toggleClass("expanded"),r.$topbar.css("min-height","")),r.$topbar.hasClass("expanded")||(r.$section.css({left:"0%"}),r.$section.find(">.name").css({left:"100%"}),r.$section.find("li.moved").removeClass("moved"),r.index=0)}),e(".top-bar .has-dropdown>a").die("click.fndtn").live("click.fndtn",function(t){(Modernizr.touch||i.breakpoint())&&t.preventDefault();if(i.breakpoint()){var n=e(this),s=n.closest("li");r.index+=1,s.addClass("moved"),r.$section.css({left:-(100*r.index)+"%"}),r.$section.find(">.name").css({left:100*r.index+"%"}),n.siblings("ul").height(r.height+r.$titlebar.outerHeight(!0)),r.$topbar.css("min-height",r.height+r.$titlebar.outerHeight(!0)*2)}}),e(t).on("resize.fndtn.topbar",function(){i.breakpoint()||r.$topbar.css("min-height","")}),e(".top-bar .has-dropdown .back").die("click.fndtn").live("click.fndtn",function(t){t.preventDefault();var n=e(this),i=n.closest("li.moved"),s=i.parent();r.index-=1,r.$section.css({left:-(100*r.index)+"%"}),r.$section.find(">.name").css({left:100*r.index+"%"}),r.index===0&&r.$topbar.css("min-height",0),setTimeout(function(){i.removeClass("moved")},300)})})},breakpoint:function(){return r.$w.width()<r.breakPoint},assemble:function(){r.$section.detach(),r.$section.find(".has-dropdown>a").each(function(){var t=e(this),n=t.siblings(".dropdown"),r=e('<li class="title back js-generated"><h5><a href="#"></a></h5></li>');r.find("h5>a").html(t.html()),n.prepend(r)}),r.$section.appendTo(r.$topbar)},largestUL:function(){var t=r.$topbar.find("section ul ul"),n=t.first(),i=0;t.each(function(){e(this).children("li").length>n.children("li").length&&(n=e(this))}),n.children("li").each(function(){i+=e(this).outerHeight(!0)}),r.height=i}};e.fn.foundationTopBar=function(t){if(i[t])return i[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return i.init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery.foundationTopBar")};if(e(".sticky").length>0){var s=e(".sticky").length?e(".sticky").offset().top:0,o=e(t);o.scroll(function(){o.scrollTop()>=s?e(".sticky").addClass("fixed"):o.scrollTop()<s&&e(".sticky").removeClass("fixed")})}})(jQuery,this);
-/*
- * jQuery Foundation Joyride Plugin 2.0.3
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-/*jslint unparam: true, browser: true, indent: 2 */
-(function(e,t,n){"use strict";var r={version:"2.0.3",tipLocation:"bottom",nubPosition:"auto",scrollSpeed:300,timer:0,startTimerOnClick:!0,startOffset:0,nextButton:!0,tipAnimation:"fade",pauseAfter:[],tipAnimationFadeSpeed:300,cookieMonster:!1,cookieName:"joyride",cookieDomain:!1,tipContainer:"body",postRideCallback:e.noop,postStepCallback:e.noop,template:{link:'<a href="#close" class="joyride-close-tip">X</a>',timer:'<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',tip:'<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',wrapper:'<div class="joyride-content-wrapper"></div>',button:'<a href="#" class="small button joyride-next-tip"></a>'}},i=i||!1,s={},o={init:function(n){return this.each(function(){if(e.isEmptyObject(s)){s=e.extend(!0,r,n),s.document=t.document,s.$document=e(s.document),s.$window=e(t),s.$content_el=e(this),s.body_offset=e(s.tipContainer).position(),s.$tip_content=e("> li",s.$content_el),s.paused=!1,s.attempts=0,s.tipLocationPatterns={top:["bottom"],bottom:[],left:["right","top","bottom"],right:["left","top","bottom"]},o.jquery_check(),e.isFunction(e.cookie)||(s.cookieMonster=!1);if(!s.cookieMonster||!e.cookie(s.cookieName))s.$tip_content.each(function(t){o.create({$li:e(this),index:t})}),!s.startTimerOnClick&&s.timer>0?(o.show("init"),o.startTimer()):o.show("init");s.$document.on("click.joyride",".joyride-next-tip, .joyride-modal-bg",function(e){e.preventDefault(),s.$li.next().length<1?o.end():s.timer>0?(clearTimeout(s.automate),o.hide(),o.show(),o.startTimer()):(o.hide(),o.show())}),s.$document.on("click.joyride",".joyride-close-tip",function(e){e.preventDefault(),o.end()}),s.$window.bind("resize.joyride",function(e){o.is_phone()?o.pos_phone():o.pos_default()})}else o.restart()})},resume:function(){o.set_li(),o.show()},tip_template:function(t){var n,r;return t.tip_class=t.tip_class||"",n=e(s.template.tip).addClass(t.tip_class),r=e.trim(e(t.li).html())+o.button_text(t.button_text)+s.template.link+o.timer_instance(t.index),n.append(e(s.template.wrapper)),n.first().attr("data-index",t.index),e(".joyride-content-wrapper",n).append(r),n[0]},timer_instance:function(t){var n;return t===0&&s.startTimerOnClick&&s.timer>0||s.timer===0?n="":n=o.outerHTML(e(s.template.timer)[0]),n},button_text:function(t){return s.nextButton?(t=e.trim(t)||"Next",t=o.outerHTML(e(s.template.button).append(t)[0])):t="",t},create:function(t){var n=t.$li.attr("data-button")||t.$li.attr("data-text"),r=t.$li.attr("class"),i=e(o.tip_template({tip_class:r,index:t.index,button_text:n,li:t.$li}));e(s.tipContainer).append(i)},show:function(t){var r={},i,u=[],a=0,f,l=null;if(s.$li===n||e.inArray(s.$li.index(),s.pauseAfter)===-1){s.paused?s.paused=!1:o.set_li(t),s.attempts=0;if(s.$li.length&&s.$target.length>0){u=(s.$li.data("options")||":").split(";"),a=u.length;for(i=a-1;i>=0;i--)f=u[i].split(":"),f.length===2&&(r[e.trim(f[0])]=e.trim(f[1]));s.tipSettings=e.extend({},s,r),s.tipSettings.tipLocationPattern=s.tipLocationPatterns[s.tipSettings.tipLocation],/body/i.test(s.$target.selector)||o.scroll_to(),o.is_phone()?o.pos_phone(!0):o.pos_default(!0),l=e(".joyride-timer-indicator",s.$next_tip),/pop/i.test(s.tipAnimation)?(l.outerWidth(0),s.timer>0?(s.$next_tip.show(),l.animate({width:e(".joyride-timer-indicator-wrap",s.$next_tip).outerWidth()},s.timer)):s.$next_tip.show()):/fade/i.test(s.tipAnimation)&&(l.outerWidth(0),s.timer>0?(s.$next_tip.fadeIn(s.tipAnimationFadeSpeed),s.$next_tip.show(),l.animate({width:e(".joyride-timer-indicator-wrap",s.$next_tip).outerWidth()},s.timer)):s.$next_tip.fadeIn(s.tipAnimationFadeSpeed)),s.$current_tip=s.$next_tip}else s.$li&&s.$target.length<1?o.show():o.end()}else s.paused=!0},is_phone:function(){return i?i.mq("only screen and (max-width: 767px)"):s.$window.width()<767?!0:!1},hide:function(){s.postStepCallback(s.$li.index(),s.$current_tip),e(".joyride-modal-bg").hide(),s.$current_tip.hide()},set_li:function(e){e?(s.$li=s.$tip_content.eq(s.startOffset),o.set_next_tip(),s.$current_tip=s.$next_tip):(s.$li=s.$li.next(),o.set_next_tip()),o.set_target()},set_next_tip:function(){s.$next_tip=e(".joyride-tip-guide[data-index="+s.$li.index()+"]")},set_target:function(){var t=s.$li.attr("data-class"),n=s.$li.attr("data-id"),r=function(){return n?e(s.document.getElementById(n)):t?e("."+t).first():e("body")};s.$target=r()},scroll_to:function(){var t,n;t=s.$window.height()/2,n=Math.ceil(s.$target.offset().top-t+s.$next_tip.outerHeight()),e("html, body").stop().animate({scrollTop:n},s.scrollSpeed)},paused:function(){return e.inArray(s.$li.index()+1,s.pauseAfter)===-1?!0:!1},destroy:function(){s.$document.off(".joyride"),e(t).off(".joyride"),e(".joyride-close-tip, .joyride-next-tip, .joyride-modal-bg").off(".joyride"),e(".joyride-tip-guide, .joyride-modal-bg").remove(),clearTimeout(s.automate),s={}},restart:function(){o.hide(),s.$li=n,o.show("init")},pos_default:function(t){var n=Math.ceil(s.$window.height()/2),r=s.$next_tip.offset(),i=e(".joyride-nub",s.$next_tip),u=Math.ceil(i.outerHeight()/2),a=t||!1;a&&(s.$next_tip.css("visibility","hidden"),s.$next_tip.show()),/body/i.test(s.$target.selector)?s.$li.length&&o.pos_modal(i):(o.bottom()?(s.$next_tip.css({top:s.$target.offset().top+u+s.$target.outerHeight(),left:s.$target.offset().left}),o.nub_position(i,s.tipSettings.nubPosition,"top")):o.top()?(s.$next_tip.css({top:s.$target.offset().top-s.$next_tip.outerHeight()-u,left:s.$target.offset().left}),o.nub_position(i,s.tipSettings.nubPosition,"bottom")):o.right()?(s.$next_tip.css({top:s.$target.offset().top,left:s.$target.outerWidth()+s.$target.offset().left}),o.nub_position(i,s.tipSettings.nubPosition,"left")):o.left()&&(s.$next_tip.css({top:s.$target.offset().top,left:s.$target.offset().left-s.$next_tip.outerWidth()-u}),o.nub_position(i,s.tipSettings.nubPosition,"right")),!o.visible(o.corners(s.$next_tip))&&s.attempts<s.tipSettings.tipLocationPattern.length&&(i.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),s.tipSettings.tipLocation=s.tipSettings.tipLocationPattern[s.attempts],s.attempts++,o.pos_default(!0))),a&&(s.$next_tip.hide(),s.$next_tip.css("visibility","visible"))},pos_phone:function(t){var n=s.$next_tip.outerHeight(),r=s.$next_tip.offset(),i=s.$target.outerHeight(),u=e(".joyride-nub",s.$next_tip),a=Math.ceil(u.outerHeight()/2),f=t||!1;u.removeClass("bottom").removeClass("top").removeClass("right").removeClass("left"),f&&(s.$next_tip.css("visibility","hidden"),s.$next_tip.show()),/body/i.test(s.$target.selector)?s.$li.length&&o.pos_modal(u):o.top()?(s.$next_tip.offset({top:s.$target.offset().top-n-a}),u.addClass("bottom")):(s.$next_tip.offset({top:s.$target.offset().top+i+a}),u.addClass("top")),f&&(s.$next_tip.hide(),s.$next_tip.css("visibility","visible"))},pos_modal:function(t){o.center(),t.hide(),e(".joyride-modal-bg").length<1&&e("body").append('<div class="joyride-modal-bg">').show(),/pop/i.test(s.tipAnimation)?e(".joyride-modal-bg").show():e(".joyride-modal-bg").fadeIn(s.tipAnimationFadeSpeed)},center:function(){var e=s.$window;return s.$next_tip.css({top:(e.height()-s.$next_tip.outerHeight())/2+e.scrollTop(),left:(e.width()-s.$next_tip.outerWidth())/2+e.scrollLeft()}),!0},bottom:function(){return/bottom/i.test(s.tipSettings.tipLocation)},top:function(){return/top/i.test(s.tipSettings.tipLocation)},right:function(){return/right/i.test(s.tipSettings.tipLocation)},left:function(){return/left/i.test(s.tipSettings.tipLocation)},corners:function(e){var t=s.$window,n=t.width()+t.scrollLeft(),r=t.width()+t.scrollTop();return[e.offset().top<=t.scrollTop(),n<=e.offset().left+e.outerWidth(),r<=e.offset().top+e.outerHeight(),t.scrollLeft()>=e.offset().left]},visible:function(e){var t=e.length;while(t--)if(e[t])return!1;return!0},nub_position:function(e,t,n){t==="auto"?e.addClass(n):e.addClass(t)},startTimer:function(){s.$li.length?s.automate=setTimeout(function(){o.hide(),o.show(),o.startTimer()},s.timer):clearTimeout(s.automate)},end:function(){s.cookieMonster&&e.cookie(s.cookieName,"ridden",{expires:365,domain:s.cookieDomain}),s.timer>0&&clearTimeout(s.automate),e(".joyride-modal-bg").hide(),s.$current_tip.hide(),s.postStepCallback(s.$li.index(),s.$current_tip),s.postRideCallback(s.$li.index(),s.$current_tip)},jquery_check:function(){return e.isFunction(e.fn.on)?!0:(e.fn.on=function(e,t,n){return this.delegate(t,e,n)},e.fn.off=function(e,t,n){return this.undelegate(t,e,n)},!1)},outerHTML:function(e){return e.outerHTML||(new XMLSerializer).serializeToString(e)},version:function(){return s.version}};e.fn.joyride=function(t){if(o[t])return o[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return o.init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery.joyride")}})(jQuery,this);
-/*
- * jQuery Foundation Clearing 1.2.1
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-/*jslint unparam: true, browser: true, indent: 2 */
-(function(e,t,n,r){"use strict";var i={templates:{viewing:'<a href="#" class="clearing-close">&times;</a><div class="visible-img" style="display: none"><img src="#"><p class="clearing-caption"></p><a href="#" class="clearing-main-left"></a><a href="#" class="clearing-main-right"></a></div>'},close_selectors:"a.clearing-close",initialized:!1,locked:!1},s={init:function(t,r){return this.find("ul[data-clearing]").each(function(){var t=e(n),r=e(this),o=o||{},u=u||{},a=r.data("fndtn.clearing.settings");a||(o.$parent=r.parent(),r.data("fndtn.clearing.settings",e.extend({},i,o)),s.assemble(r.find("li")),i.initialized||(s.events(r),Modernizr.touch&&s.swipe_events()))})},events:function(r){var o=r.data("fndtn.clearing.settings");e(n).on("click.fndtn.clearing","ul[data-clearing] li",function(t,n,r){var n=n||e(this),r=r||n,i=n.parent().data("fndtn.clearing.settings");t.preventDefault(),i||n.parent().foundationClearing(),s.open(e(t.target),n,r),s.update_paddles(r)}).on("click.fndtn.clearing",".clearing-main-right",function(e){s.nav(e,"next")}).on("click.fndtn.clearing",".clearing-main-left",function(e){s.nav(e,"prev")}).on("click.fndtn.clearing",o.close_selectors,this.close).on("keydown.fndtn.clearing",this.keydown),e(t).on("resize.fndtn.clearing",this.resize),i.initialized=!0},swipe_events:function(){e(n).bind("swipeleft","ul[data-clearing]",function(e){s.nav(e,"next")}).bind("swiperight","ul[data-clearing]",function(e){s.nav(e,"prev")}).bind("movestart","ul[data-clearing]",function(e){(e.distX>e.distY&&e.distX<-e.distY||e.distX<e.distY&&e.distX>-e.distY)&&e.preventDefault()})},assemble:function(e){var t=e.parent(),n=t.data("fndtn.clearing.settings"),r=t.detach(),i={grid:'<div class="carousel">'+this.outerHTML(r[0])+"</div>",viewing:n.templates.viewing},s='<div class="clearing-assembled"><div>'+i.viewing+i.grid+"</div></div>";return n.$parent.append(s)},open:function(e,t,n){var r=n.closest(".clearing-assembled"),i=r.find("div:first"),o=i.find(".visible-img"),u=o.find("img").not(e);s.locked()||(u.attr("src",this.load(e)),u.loaded(function(){r.addClass("clearing-blackout"),i.addClass("clearing-container"),this.caption(o.find(".clearing-caption"),e),o.show(),this.fix_height(n),this.center(u),this.shift(t,n,function(){n.siblings().removeClass("visible"),n.addClass("visible")})}.bind(this)))},close:function(t){t.preventDefault();var n=function(e){return/blackout/.test(e.selector)?e:e.closest(".clearing-blackout")}(e(this)),r,s;return this===t.target&&n&&(r=n.find("div:first"),s=r.find(".visible-img"),i.prev_index=0,n.find("ul[data-clearing]").attr("style",""),n.removeClass("clearing-blackout"),r.removeClass("clearing-container"),s.hide()),!1},keydown:function(t){var n=e(".clearing-blackout").find("ul[data-clearing]");t.which===39&&s.go(n,"next"),t.which===37&&s.go(n,"prev"),t.which===27&&e("a.clearing-close").trigger("click")},nav:function(t,n){var r=e(".clearing-blackout").find("ul[data-clearing]");t.preventDefault(),this.go(r,n)},resize:function(){var t=e(".clearing-blackout .visible-img").find("img");t.length>0&&s.center(t)},fix_height:function(t){var n=t.siblings();n.each(function(){var t=e(this),n=t.find("img");t.height()>n.outerHeight()&&t.addClass("fix-height")}).closest("ul").width(n.length*100+"%")},update_paddles:function(e){var t=e.closest(".carousel").siblings(".visible-img");e.next().length>0?t.find(".clearing-main-right").removeClass("disabled"):t.find(".clearing-main-right").addClass("disabled"),e.prev().length>0?t.find(".clearing-main-left").removeClass("disabled"):t.find(".clearing-main-left").addClass("disabled")},load:function(e){var t=e.parent().attr("href");return this.preload(e),t?t:e.attr("src")},preload:function(e){this.img(e.closest("li").next()),this.img(e.closest("li").prev())},img:function(e){if(e.length>0){var t=new Image,n=e.find("a");n.length>0?t.src=n.attr("href"):t.src=e.find("img").attr("src")}},caption:function(e,t){var n=t.data("caption");n?e.text(n).show():e.text("").hide()},go:function(e,t){var n=e.find(".visible"),r=n[t]();r.length>0&&r.find("img").trigger("click",[n,r])},shift:function(e,t,n){var r=t.parent(),s=i.prev_index,o=this.direction(r,e,t),u=parseInt(r.css("left"),10),a=t.outerWidth(),f;t.index()!==s&&!/skip/.test(o)?/left/.test(o)?(this.lock(),r.animate({left:u+a},300,this.unlock)):/right/.test(o)&&(this.lock(),r.animate({left:u-a},300,this.unlock)):/skip/.test(o)&&(f=t.index()-i.up_count,this.lock(),f>0?r.animate({left:-(f*a)},300,this.unlock):r.animate({left:0},300,this.unlock)),n()},lock:function(){i.locked=!0},unlock:function(){i.locked=!1},locked:function(){return i.locked},direction:function(t,n,r){var s=t.find("li"),o=s.outerWidth()+s.outerWidth()/4,u=Math.floor(e(".clearing-container").outerWidth()/o)-1,a=s.index(r),f;return i.up_count=u,this.adjacent(i.prev_index,a)?a>u&&a>i.prev_index?f="right":a>u-1&&a<=i.prev_index?f="left":f=!1:f="skip",i.prev_index=a,f},adjacent:function(e,t){for(var n=t+1;n>=t-1;n--)if(n===e)return!0;return!1},center:function(e){e.css({marginLeft:-(e.outerWidth()/2),marginTop:-(e.outerHeight()/2)})},outerHTML:function(e){return e.outerHTML||(new XMLSerializer).serializeToString(e)}};e.fn.foundationClearing=function(t){if(s[t])return s[t].apply(this,Array.prototype.slice.call(arguments,1));if(typeof t=="object"||!t)return s.init.apply(this,arguments);e.error("Method "+t+" does not exist on jQuery.foundationClearing")},function(e){e.fn.loaded=function(t,n){function o(){s-=1,!s&&t()}function u(){this.one("load",o);if(e.browser.msie){var t=this.attr("src"),n=t.match(/\?/)?"&":"?";n+=r.cachePrefix+"="+(new Date).getTime(),this.attr("src",t+n)}}var r=e.extend({},e.fn.loaded.defaults,n),i=this.find("img").add(this.filter("img")),s=i.length;return i.each(function(){var t=e(this);if(!t.attr("src")){o();return}this.complete||this.readyState===4?o():u.call(t)})},e.fn.loaded.defaults={cachePrefix:"random"}}(jQuery)})(jQuery,this,this.document);
-/*
- * jQuery Foundation Magellan 0.0.1
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-/*jslint unparam: true, browser: true, indent: 2 */
-(function(e,t,n){"use strict";e.fn.foundationMagellan=function(n){var r=e(t),i=e(document),s=e("[data-magellan-expedition=fixed]"),o={threshold:s.length?s.outerHeight(!0):0,activeClass:"active"},n=e.extend({},o,n);i.on("magellan.arrival","[data-magellan-arrival]",function(t){var r=e(this),i=r.closest("[data-magellan-expedition]"),s=i.attr("data-magellan-active-class")||n.activeClass;r.closest("[data-magellan-expedition]").find("[data-magellan-arrival]").not(this).removeClass(s),r.addClass(s)});var u=e("[data-magellan-expedition]");u.find("[data-magellan-arrival]:first").addClass(u.attr("data-magellan-active-class")||n.activeClass),s.on("magellan.update-position",function(){var t=e(this);t.data("magellan-fixed-position",""),t.data("magellan-top-offset","")}).trigger("magellan.update-position"),r.on("resize.magellan",function(){s.trigger("magellan.update-position")}),r.on("scroll.magellan",function(){var t=r.scrollTop();s.each(function(){var r=e(this);r.data("magellan-top-offset")===""&&r.data("magellan-top-offset",r.offset().top);var i=t+n.threshold>r.data("magellan-top-offset");r.data("magellan-fixed-position")!=i&&(r.data("magellan-fixed-position",i),i?r.css({position:"fixed",top:0}):r.css({position:"",top:""}))})});var a=e("[data-magellan-destination]:last");r.on("scroll.magellan",function(t){var s=r.scrollTop(),o=s+r.outerHeight(!0),u=Math.ceil(a.offset().top);e("[data-magellan-destination]").each(function(){var t=e(this),r=t.attr("data-magellan-destination"),a=t.offset().top-s;a<=n.threshold&&e("[data-magellan-arrival="+r+"]").trigger("magellan.arrival"),o>=i.outerHeight(!0)&&u>s&&u<o&&e("[data-magellan-arrival]:last").trigger("magellan.arrival")})})}})(jQuery,this);
diff --git a/javascripts/jquery.foundation.accordion.js b/javascripts/jquery.foundation.accordion.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.accordion.js
+++ /dev/null
@@ -1,47 +0,0 @@
-;(function ($, window, undefined){
- 'use strict';
-
- $.fn.foundationAccordion = function (options) {
-
- // DRY up the logic used to determine if the event logic should execute.
- var hasHover = function(accordion) {
- return accordion.hasClass('hover') && !Modernizr.touch
- };
-
- $(document).on('mouseenter', '.accordion li', function () {
- var p = $(this).parent();
-
- if (hasHover(p)) {
- var flyout = $(this).children('.content').first();
-
- $('.content', p).not(flyout).hide().parent('li').removeClass('active');
- flyout.show(0, function () {
- flyout.parent('li').addClass('active');
- });
- }
- }
- );
-
- $(document).on('click.fndtn', '.accordion li .title', function () {
- var li = $(this).closest('li'),
- p = li.parent();
-
- if(!hasHover(p)) {
- var flyout = li.children('.content').first();
-
- if (li.hasClass('active')) {
- p.find('li').removeClass('active').end().find('.content').hide();
- } else {
- $('.content', p).not(flyout).hide().parent('li').removeClass('active');
- flyout.show(0, function () {
- flyout.parent('li').addClass('active');
- });
- }
- }
- }
- );
-
- };
-
-})( jQuery, this );
-
diff --git a/javascripts/jquery.foundation.alerts.js b/javascripts/jquery.foundation.alerts.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.alerts.js
+++ /dev/null
@@ -1,20 +0,0 @@
-;(function ($, window, undefined) {
- 'use strict';
-
- $.fn.foundationAlerts = function (options) {
- var settings = $.extend({
- callback: $.noop
- }, options);
-
- $(document).on("click", ".alert-box a.close", function (e) {
- e.preventDefault();
- $(this).closest(".alert-box").fadeOut(function () {
- $(this).remove();
- // Do something else after the alert closes
- settings.callback();
- });
- });
-
- };
-
-})(jQuery, this);
diff --git a/javascripts/jquery.foundation.buttons.js b/javascripts/jquery.foundation.buttons.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.buttons.js
+++ /dev/null
@@ -1,83 +0,0 @@
-;(function ($, window, undefined) {
- 'use strict';
-
- $.fn.foundationButtons = function (options) {
- var $doc = $(document),
- config = $.extend({
- dropdownAsToggle:false,
- activeClass:'active'
- }, options),
-
- // close all dropdowns except for the dropdown passed
- closeDropdowns = function (dropdown) {
- // alert(dropdown.html());
- $('.button.dropdown').find('ul').not(dropdown).removeClass('show-dropdown');
- },
- // reset all toggle states except for the button passed
- resetToggles = function (button) {
- // alert(button.html());
- var buttons = $('.button.dropdown').not(button);
- buttons.add($('> span.' + config.activeClass, buttons)).removeClass(config.activeClass);
- };
-
- // Prevent event propagation on disabled buttons
- $doc.on('click.fndtn', '.button.disabled', function (e) {
- e.preventDefault();
- });
-
- $('.button.dropdown > ul', this).addClass('no-hover');
-
- // reset other active states
- $doc.on('click.fndtn', '.button.dropdown:not(.split), .button.dropdown.split span', function (e) {
- var $el = $(this),
- button = $el.closest('.button.dropdown'),
- dropdown = $('> ul', button);
-
- // If the click is registered on an actual link or on button element then do not preventDefault which stops the browser from following the link
- if (["A", "BUTTON"].indexOf(e.target.nodeName) == -1){
- e.preventDefault();
- }
-
- // close other dropdowns
- setTimeout(function () {
- closeDropdowns(config.dropdownAsToggle ? '' : dropdown);
- dropdown.toggleClass('show-dropdown');
-
- if (config.dropdownAsToggle) {
- resetToggles(button);
- $el.toggleClass(config.activeClass);
- }
- }, 0);
- });
-
- // close all dropdowns and deactivate all buttons
- $doc.on('click.fndtn', 'body, html', function (e) {
- if (undefined == e.originalEvent) { return; }
- // check original target instead of stopping event propagation to play nice with other events
- if (!$(e.originalEvent.target).is('.button.dropdown:not(.split), .button.dropdown.split span')) {
- closeDropdowns();
- if (config.dropdownAsToggle) {
- resetToggles();
- }
- }
- });
-
- // Positioning the Flyout List
- var normalButtonHeight = $('.button.dropdown:not(.large):not(.small):not(.tiny):visible', this).outerHeight() - 1,
- largeButtonHeight = $('.button.large.dropdown:visible', this).outerHeight() - 1,
- smallButtonHeight = $('.button.small.dropdown:visible', this).outerHeight() - 1,
- tinyButtonHeight = $('.button.tiny.dropdown:visible', this).outerHeight() - 1;
-
- $('.button.dropdown:not(.large):not(.small):not(.tiny) > ul', this).css('top', normalButtonHeight);
- $('.button.dropdown.large > ul', this).css('top', largeButtonHeight);
- $('.button.dropdown.small > ul', this).css('top', smallButtonHeight);
- $('.button.dropdown.tiny > ul', this).css('top', tinyButtonHeight);
-
- $('.button.dropdown.up:not(.large):not(.small):not(.tiny) > ul', this).css('top', 'auto').css('bottom', normalButtonHeight - 2);
- $('.button.dropdown.up.large > ul', this).css('top', 'auto').css('bottom', largeButtonHeight - 2);
- $('.button.dropdown.up.small > ul', this).css('top', 'auto').css('bottom', smallButtonHeight - 2);
- $('.button.dropdown.up.tiny > ul', this).css('top', 'auto').css('bottom', tinyButtonHeight - 2);
-
- };
-
-})( jQuery, this );
diff --git a/javascripts/jquery.foundation.clearing.js b/javascripts/jquery.foundation.clearing.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.clearing.js
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * jQuery Foundation Clearing 1.2.1
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-
-/*jslint unparam: true, browser: true, indent: 2 */
-
-;(function ($, window, document, undefined) {
- 'use strict';
-
- var defaults = {
- templates : {
- viewing : '<a href="#" class="clearing-close">&times;</a>' +
- '<div class="visible-img" style="display: none"><img src="#">' +
- '<p class="clearing-caption"></p><a href="#" class="clearing-main-left"></a>' +
- '<a href="#" class="clearing-main-right"></a></div>'
- },
-
- // comma delimited list of selectors that, on click, will close clearing,
- // add 'div.clearing-blackout, div.visible-img' to close on background click
- close_selectors : 'a.clearing-close',
-
- // event initializers and locks
- initialized : false,
- locked : false
- },
-
- cl = {
- init : function (options, extendMethods) {
- return this.find('ul[data-clearing]').each(function () {
- var doc = $(document),
- $el = $(this),
- options = options || {},
- extendMethods = extendMethods || {},
- settings = $el.data('fndtn.clearing.settings');
-
- if (!settings) {
- options.$parent = $el.parent();
-
- $el.data('fndtn.clearing.settings', $.extend({}, defaults, options));
-
- cl.assemble($el.find('li'));
-
- if (!defaults.initialized) {
- cl.events($el);
- if (Modernizr.touch) cl.swipe_events();
- }
-
- }
- });
- },
-
- events : function (el) {
- var settings = el.data('fndtn.clearing.settings');
-
- $(document)
- .on('click.fndtn.clearing', 'ul[data-clearing] li', function (e, current, target) {
- var current = current || $(this),
- target = target || current,
- settings = current.parent().data('fndtn.clearing.settings');
-
- e.preventDefault();
-
- if (!settings) {
- current.parent().foundationClearing();
- }
-
- // set current and target to the clicked li if not otherwise defined.
- cl.open($(e.target), current, target);
- cl.update_paddles(target);
- })
-
- .on('click.fndtn.clearing', '.clearing-main-right', function (e) { cl.nav(e, 'next') })
- .on('click.fndtn.clearing', '.clearing-main-left', function (e) { cl.nav(e, 'prev') })
- .on('click.fndtn.clearing', settings.close_selectors, this.close)
- .on('keydown.fndtn.clearing', this.keydown);
-
- $(window).on('resize.fndtn.clearing', this.resize);
-
- defaults.initialized = true;
- },
-
- swipe_events : function () {
- $(document)
- .bind('swipeleft', 'ul[data-clearing]', function (e) { cl.nav(e, 'next') })
- .bind('swiperight', 'ul[data-clearing]', function (e) { cl.nav(e, 'prev') })
- .bind('movestart', 'ul[data-clearing]', function (e) {
- if ((e.distX > e.distY && e.distX < -e.distY) ||
- (e.distX < e.distY && e.distX > -e.distY)) {
- e.preventDefault();
- }
- });
- },
-
- assemble : function ($li) {
- var $el = $li.parent(),
- settings = $el.data('fndtn.clearing.settings'),
- grid = $el.detach(),
- data = {
- grid: '<div class="carousel">' + this.outerHTML(grid[0]) + '</div>',
- viewing: settings.templates.viewing
- },
- wrapper = '<div class="clearing-assembled"><div>' + data.viewing + data.grid + '</div></div>';
-
- return settings.$parent.append(wrapper);
- },
-
- open : function ($image, current, target) {
- var root = target.closest('.clearing-assembled'),
- container = root.find('div:first'),
- visible_image = container.find('.visible-img'),
- image = visible_image.find('img').not($image);
-
- if (!cl.locked()) {
-
- // set the image to the selected thumbnail
- image.attr('src', this.load($image));
-
- image.loaded(function () {
- // toggle the gallery if not visible
- root.addClass('clearing-blackout');
- container.addClass('clearing-container');
- this.caption(visible_image.find('.clearing-caption'), $image);
- visible_image.show();
- this.fix_height(target);
- this.center(image);
-
- // shift the thumbnails if necessary
- this.shift(current, target, function () {
- target.siblings().removeClass('visible');
- target.addClass('visible');
- });
- }.bind(this));
- }
- },
-
- close : function (e) {
- e.preventDefault();
-
- var root = (function (target) {
- if (/blackout/.test(target.selector)) {
- return target;
- } else {
- return target.closest('.clearing-blackout');
- }
- }($(this))), container, visible_image;
-
- if (this === e.target && root) {
- container = root.find('div:first'),
- visible_image = container.find('.visible-img');
-
- defaults.prev_index = 0;
-
- root.find('ul[data-clearing]').attr('style', '')
- root.removeClass('clearing-blackout');
- container.removeClass('clearing-container');
- visible_image.hide();
- }
-
- return false;
- },
-
- keydown : function (e) {
- var clearing = $('.clearing-blackout').find('ul[data-clearing]');
-
- if (e.which === 39) cl.go(clearing, 'next');
- if (e.which === 37) cl.go(clearing, 'prev');
- if (e.which === 27) $('a.clearing-close').trigger('click');
- },
-
- nav : function (e, direction) {
- var clearing = $('.clearing-blackout').find('ul[data-clearing]');
-
- e.preventDefault();
- this.go(clearing, direction);
- },
-
- resize : function () {
- var image = $('.clearing-blackout .visible-img').find('img');
-
- if (image.length > 0) {
- cl.center(image);
- }
- },
-
- fix_height : function (target) {
- var lis = target.siblings();
-
- lis.each(function () {
- var li = $(this),
- image = li.find('img');
-
- if (li.height() > image.outerHeight()) {
- li.addClass('fix-height');
- }
- })
- .closest('ul').width(lis.length * 100 + '%');
- },
-
- update_paddles : function (target) {
- var visible_image = target.closest('.carousel').siblings('.visible-img');
-
- if (target.next().length > 0) {
- visible_image.find('.clearing-main-right').removeClass('disabled');
- } else {
- visible_image.find('.clearing-main-right').addClass('disabled');
- }
-
- if (target.prev().length > 0) {
- visible_image.find('.clearing-main-left').removeClass('disabled');
- } else {
- visible_image.find('.clearing-main-left').addClass('disabled');
- }
- },
-
- load : function ($image) {
- var href = $image.parent().attr('href');
-
- this.preload($image);
-
- if (href) return href;
- return $image.attr('src');
- },
-
- preload : function ($image) {
- this.img($image.closest('li').next());
- this.img($image.closest('li').prev());
- },
-
- img : function (img) {
- if (img.length > 0) {
- var new_img = new Image(),
- new_a = img.find('a');
-
- if (new_a.length > 0) {
- new_img.src = new_a.attr('href');
- } else {
- new_img.src = img.find('img').attr('src');
- }
- }
- },
-
- caption : function (container, $image) {
- var caption = $image.data('caption');
-
- if (caption) {
- container.text(caption).show();
- } else {
- container.text('').hide();
- }
- },
-
- go : function ($ul, direction) {
- var current = $ul.find('.visible'),
- target = current[direction]();
-
- if (target.length > 0) {
- target.find('img').trigger('click', [current, target]);
- }
- },
-
- shift : function (current, target, callback) {
- var clearing = target.parent(),
- old_index = defaults.prev_index,
- direction = this.direction(clearing, current, target),
- left = parseInt(clearing.css('left'), 10),
- width = target.outerWidth(),
- skip_shift;
-
- // we use jQuery animate instead of CSS transitions because we
- // need a callback to unlock the next animation
- if (target.index() !== old_index && !/skip/.test(direction)){
- if (/left/.test(direction)) {
- this.lock();
- clearing.animate({left : left + width}, 300, this.unlock);
- } else if (/right/.test(direction)) {
- this.lock();
- clearing.animate({left : left - width}, 300, this.unlock);
- }
- } else if (/skip/.test(direction)) {
-
- // the target image is not adjacent to the current image, so
- // do we scroll right or not
- skip_shift = target.index() - defaults.up_count;
- this.lock();
-
- if (skip_shift > 0) {
- clearing.animate({left : -(skip_shift * width)}, 300, this.unlock);
- } else {
- clearing.animate({left : 0}, 300, this.unlock);
- }
- }
-
- callback();
- },
-
- lock : function () {
- defaults.locked = true;
- },
-
- unlock : function () {
- defaults.locked = false;
- },
-
- locked : function () {
- return defaults.locked;
- },
-
- direction : function ($el, current, target) {
- var lis = $el.find('li'),
- li_width = lis.outerWidth() + (lis.outerWidth() / 4),
- up_count = Math.floor($('.clearing-container').outerWidth() / li_width) - 1,
- target_index = lis.index(target),
- response;
-
- defaults.up_count = up_count;
-
- if (this.adjacent(defaults.prev_index, target_index)) {
- if ((target_index > up_count) && target_index > defaults.prev_index) {
- response = 'right';
- } else if ((target_index > up_count - 1) && target_index <= defaults.prev_index) {
- response = 'left';
- } else {
- response = false;
- }
- } else {
- response = 'skip';
- }
-
- defaults.prev_index = target_index;
-
- return response;
- },
-
- adjacent : function (current_index, target_index) {
- for (var i = target_index + 1; i >= target_index - 1; i--) {
- if (i === current_index) return true;
- }
- return false;
- },
-
- center : function (target) {
- target.css({
- marginLeft : -(target.outerWidth() / 2),
- marginTop : -(target.outerHeight() / 2)
- });
- },
-
- outerHTML : function (el) {
- // support FireFox < 11
- return el.outerHTML || new XMLSerializer().serializeToString(el);
- }
-
- };
-
- $.fn.foundationClearing = function (method) {
- if (cl[method]) {
- return cl[method].apply(this, Array.prototype.slice.call(arguments, 1));
- } else if (typeof method === 'object' || !method) {
- return cl.init.apply(this, arguments);
- } else {
- $.error('Method ' + method + ' does not exist on jQuery.foundationClearing');
- }
- };
-
- // jquery.imageready.js
- // @weblinc, @jsantell, (c) 2012
-
- (function( $ ) {
- $.fn.loaded = function ( callback, userSettings ) {
- var
- options = $.extend( {}, $.fn.loaded.defaults, userSettings ),
- $images = this.find( 'img' ).add( this.filter( 'img' ) ),
- unloadedImages = $images.length;
-
- function loaded () {
- unloadedImages -= 1;
- !unloadedImages && callback();
- }
-
- function bindLoad () {
- this.one( 'load', loaded );
- if ( $.browser.msie ) {
- var
- src = this.attr( 'src' ),
- param = src.match( /\?/ ) ? '&' : '?';
- param += options.cachePrefix + '=' + ( new Date() ).getTime();
- this.attr( 'src', src + param );
- }
- }
-
- return $images.each(function () {
- var $this = $( this );
- if ( !$this.attr( 'src' ) ) {
- loaded();
- return;
- }
- this.complete || this.readyState === 4 ?
- loaded() :
- bindLoad.call( $this );
- });
- };
-
- $.fn.loaded.defaults = {
- cachePrefix: 'random'
- };
-
- }(jQuery));
-
-}(jQuery, this, this.document));
diff --git a/javascripts/jquery.foundation.forms.js b/javascripts/jquery.foundation.forms.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.forms.js
+++ /dev/null
@@ -1,502 +0,0 @@
-/*
- * jQuery Custom Forms Plugin 1.0
- * www.ZURB.com
- * Copyright 2010, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-
-(function( $ ){
-
- /**
- * Helper object used to quickly adjust all hidden parent element's, display and visibility properties.
- * This is currently used for the custom drop downs. When the dropdowns are contained within a reveal modal
- * we cannot accurately determine the list-item elements width property, since the modal's display property is set
- * to 'none'.
- *
- * This object will help us work around that problem.
- *
- * NOTE: This could also be plugin.
- *
- * @function hiddenFix
- */
- var hiddenFix = function() {
-
- return {
- /**
- * Sets all hidden parent elements and self to visibile.
- *
- * @method adjust
- * @param {jQuery Object} $child
- */
-
- // We'll use this to temporarily store style properties.
- tmp : [],
-
- // We'll use this to set hidden parent elements.
- hidden : null,
-
- adjust : function( $child ) {
- // Internal reference.
- var _self = this;
-
- // Set all hidden parent elements, including this element.
- _self.hidden = $child.parents().andSelf().filter( ":hidden" );
-
- // Loop through all hidden elements.
- _self.hidden.each( function() {
-
- // Cache the element.
- var $elem = $( this );
-
- // Store the style attribute.
- // Undefined if element doesn't have a style attribute.
- _self.tmp.push( $elem.attr( 'style' ) );
-
- // Set the element's display property to block,
- // but ensure it's visibility is hidden.
- $elem.css( { 'visibility' : 'hidden', 'display' : 'block' } );
- });
-
- }, // end adjust
-
- /**
- * Resets the elements previous state.
- *
- * @method reset
- */
- reset : function() {
- // Internal reference.
- var _self = this;
- // Loop through our hidden element collection.
- _self.hidden.each( function( i ) {
- // Cache this element.
- var $elem = $( this ),
- _tmp = _self.tmp[ i ]; // Get the stored 'style' value for this element.
-
- // If the stored value is undefined.
- if( _tmp === undefined )
- // Remove the style attribute.
- $elem.removeAttr( 'style' );
- else
- // Otherwise, reset the element style attribute.
- $elem.attr( 'style', _tmp );
-
- });
- // Reset the tmp array.
- _self.tmp = [];
- // Reset the hidden elements variable.
- _self.hidden = null;
-
- } // end reset
-
- }; // end return
-
- };
-
- jQuery.foundation = jQuery.foundation || {};
- jQuery.foundation.customForms = jQuery.foundation.customForms || {};
-
- $.foundation.customForms.appendCustomMarkup = function ( options ) {
-
- var defaults = {
- disable_class: "no-custom"
- };
-
- options = $.extend( defaults, options );
-
- function appendCustomMarkup(idx, sel) {
- var $this = $(sel).hide(),
- type = $this.attr('type'),
- $span = $this.next('span.custom.' + type);
-
- if ($span.length === 0) {
- $span = $('<span class="custom ' + type + '"></span>').insertAfter($this);
- }
-
- $span.toggleClass('checked', $this.is(':checked'));
- $span.toggleClass('disabled', $this.is(':disabled'));
- }
-
- function appendCustomSelect(idx, sel) {
- var hiddenFixObj = hiddenFix();
- //
- // jQueryify the <select> element and cache it.
- //
- var $this = $( sel ),
- //
- // Find the custom drop down element.
- //
- $customSelect = $this.next( 'div.custom.dropdown' ),
- //
- // Find the custom select element within the custom drop down.
- //
- $customList = $customSelect.find( 'ul' ),
- //
- // Find the custom a.current element.
- //
- $selectCurrent = $customSelect.find( ".current" ),
- //
- // Find the custom a.selector element (the drop-down icon).
- //
- $selector = $customSelect.find( ".selector" ),
- //
- // Get the <options> from the <select> element.
- //
- $options = $this.find( 'option' ),
- //
- // Filter down the selected options
- //
- $selectedOption = $options.filter( ':selected' ),
- //
- // Initial max width.
- //
- maxWidth = 0,
- //
- // We'll use this variable to create the <li> elements for our custom select.
- //
- liHtml = '',
- //
- // We'll use this to cache the created <li> elements within our custom select.
- //
- $listItems
- ;
- var $currentSelect = false;
- //
- // Should we not create a custom list?
- //
- if ( $this.hasClass( options.disable_class ) ) return;
-
- //
- // Did we not create a custom select element yet?
- //
- if ( $customSelect.length === 0 ) {
- //
- // Let's create our custom select element!
- //
-
- //
- // Determine what select size to use.
- //
- var customSelectSize = $this.hasClass( 'small' ) ? 'small' :
- $this.hasClass( 'medium' ) ? 'medium' :
- $this.hasClass( 'large' ) ? 'large' :
- $this.hasClass( 'expand' ) ? 'expand' : ''
- ;
- //
- // Build our custom list.
- //
- $customSelect = $('<div class="' + ['custom', 'dropdown', customSelectSize ].join( ' ' ) + '"><a href="#" class="selector"></a><ul /></div>');
- //
- // Grab the selector element
- //
- $selector = $customSelect.find( ".selector" );
- //
- // Grab the unordered list element from the custom list.
- //
- $customList = $customSelect.find( "ul" );
- //
- // Build our <li> elements.
- //
- liHtml = $options.map( function() { return "<li>" + $( this ).html() + "</li>"; } ).get().join( '' );
- //
- // Append our <li> elements to the custom list (<ul>).
- //
- $customList.append( liHtml );
- //
- // Insert the the currently selected list item before all other elements.
- // Then, find the element and assign it to $currentSelect.
- //
-
- $currentSelect = $customSelect.prepend( '<a href="#" class="current">' + $selectedOption.html() + '</a>' ).find( ".current" );
- //
- // Add the custom select element after the <select> element.
- //
- $this.after( $customSelect )
- //
- //then hide the <select> element.
- //
- .hide();
-
- } else {
- //
- // Create our list item <li> elements.
- //
- liHtml = $options.map( function() { return "<li>" + $( this ).html() + "</li>"; } ).get().join( '' );
- //
- // Refresh the ul with options from the select in case the supplied markup doesn't match.
- // Clear what's currently in the <ul> element.
- //
- $customList.html( '' )
- //
- // Populate the list item <li> elements.
- //
- .append( liHtml );
-
- } // endif $customSelect.length === 0
-
- //
- // Determine whether or not the custom select element should be disabled.
- //
- $customSelect.toggleClass( 'disabled', $this.is( ':disabled' ) );
- //
- // Cache our List item elements.
- //
- $listItems = $customList.find( 'li' );
-
- //
- // Determine which elements to select in our custom list.
- //
- $options.each( function ( index ) {
-
- if ( this.selected ) {
- //
- // Add the selected class to the current li element
- //
- $listItems.eq( index ).addClass( 'selected' );
- //
- // Update the current element with the option value.
- //
- if ($currentSelect) {
- $currentSelect.html( $( this ).html() );
- }
-
- }
-
- });
-
- //
- // Update the custom <ul> list width property.
- //
- $customList.css( 'width', 'auto' );
- //
- // Set the custom select width property.
- //
- $customSelect.css( 'width', 'auto' );
-
- //
- // If we're not specifying a predetermined form size.
- //
- if ( !$customSelect.is( '.small, .medium, .large, .expand' ) ) {
-
- // ------------------------------------------------------------------------------------
- // This is a work-around for when elements are contained within hidden parents.
- // For example, when custom-form elements are inside of a hidden reveal modal.
- //
- // We need to display the current custom list element as well as hidden parent elements
- // in order to properly calculate the list item element's width property.
- // -------------------------------------------------------------------------------------
-
- //
- // Show the drop down.
- // This should ensure that the list item's width values are properly calculated.
- //
- $customSelect.addClass( 'open' );
- //
- // Quickly, display all parent elements.
- // This should help us calcualate the width of the list item's within the drop down.
- //
- hiddenFixObj.adjust( $customList );
- //
- // Grab the largest list item width.
- //
- maxWidth = ( $listItems.outerWidth() > maxWidth ) ? $listItems.outerWidth() : maxWidth;
- //
- // Okay, now reset the parent elements.
- // This will hide them again.
- //
- hiddenFixObj.reset();
- //
- // Finally, hide the drop down.
- //
- $customSelect.removeClass( 'open' );
- //
- // Set the custom list width.
- //
- $customSelect.width( maxWidth + 18);
- //
- // Set the custom list element (<ul />) width.
- //
- $customList.width( maxWidth + 16 );
-
- } // endif
-
- }
-
- $('form.custom input:radio[data-customforms!=disabled]').each(appendCustomMarkup);
- $('form.custom input:checkbox[data-customforms!=disabled]').each(appendCustomMarkup);
- $('form.custom select[data-customforms!=disabled]').each(appendCustomSelect);
- };
-
- var refreshCustomSelect = function($select) {
- var maxWidth = 0,
- $customSelect = $select.next();
- $options = $select.find('option');
- $customSelect.find('ul').html('');
-
- $options.each(function () {
- $li = $('<li>' + $(this).html() + '</li>');
- $customSelect.find('ul').append($li);
- });
-
- // re-populate
- $options.each(function (index) {
- if (this.selected) {
- $customSelect.find('li').eq(index).addClass('selected');
- $customSelect.find('.current').html($(this).html());
- }
- });
-
- // fix width
- $customSelect.removeAttr('style')
- .find('ul').removeAttr('style');
- $customSelect.find('li').each(function () {
- $customSelect.addClass('open');
- if ($(this).outerWidth() > maxWidth) {
- maxWidth = $(this).outerWidth();
- }
- $customSelect.removeClass('open');
- });
- $customSelect.css('width', maxWidth + 18 + 'px');
- $customSelect.find('ul').css('width', maxWidth + 16 + 'px');
-
- };
-
- var toggleCheckbox = function($element) {
- var $input = $element.prev(),
- input = $input[0];
-
- if (false === $input.is(':disabled')) {
- input.checked = ((input.checked) ? false : true);
- $element.toggleClass('checked');
-
- $input.trigger('change');
- }
- };
-
- var toggleRadio = function($element) {
- var $input = $element.prev(),
- $form = $input.closest('form.custom'),
- input = $input[0];
-
- if (false === $input.is(':disabled')) {
- $form.find('input:radio[name="' + $input.attr('name') + '"]').next().not($element).removeClass('checked');
- if ( !$element.hasClass('checked') ) {
- $element.toggleClass('checked');
- }
- input.checked = $element.hasClass('checked');
-
- $input.trigger('change');
- }
- };
-
- $(document).on('click', 'form.custom span.custom.checkbox', function (event) {
- event.preventDefault();
- event.stopPropagation();
-
- toggleCheckbox($(this));
- });
-
- $(document).on('click', 'form.custom span.custom.radio', function (event) {
- event.preventDefault();
- event.stopPropagation();
-
- toggleRadio($(this));
- });
-
- $(document).on('change', 'form.custom select[data-customforms!=disabled]', function (event) {
- refreshCustomSelect($(this));
- });
-
- $(document).on('click', 'form.custom label', function (event) {
- var $associatedElement = $('#' + $(this).attr('for') + '[data-customforms!=disabled]'),
- $customCheckbox,
- $customRadio;
- if ($associatedElement.length !== 0) {
- if ($associatedElement.attr('type') === 'checkbox') {
- event.preventDefault();
- $customCheckbox = $(this).find('span.custom.checkbox');
- //the checkbox might be outside after the label
- if ($customCheckbox.length == 0) {
- $customCheckbox = $(this).next('span.custom.checkbox');
- }
- //the checkbox might be outside before the label
- if ($customCheckbox.length == 0) {
- $customCheckbox = $(this).prev('span.custom.checkbox');
- }
- toggleCheckbox($customCheckbox);
- } else if ($associatedElement.attr('type') === 'radio') {
- event.preventDefault();
- $customRadio = $(this).find('span.custom.radio');
- //the radio might be outside after the label
- if ($customRadio.length == 0) {
- $customRadio = $(this).next('span.custom.radio');
- }
- //the radio might be outside before the label
- if ($customRadio.length == 0) {
- $customRadio = $(this).prev('span.custom.radio');
- }
- toggleRadio($customRadio);
- }
- }
- });
-
- $(document).on('click', 'form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector', function (event) {
- var $this = $(this),
- $dropdown = $this.closest('div.custom.dropdown'),
- $select = $dropdown.prev();
-
- event.preventDefault();
- $('div.dropdown').removeClass('open');
-
- if (false === $select.is(':disabled')) {
- $dropdown.toggleClass('open');
-
- if ($dropdown.hasClass('open')) {
- $(document).bind('click.customdropdown', function (event) {
- $dropdown.removeClass('open');
- $(document).unbind('.customdropdown');
- });
- } else {
- $(document).unbind('.customdropdown');
- }
- return false;
- }
- });
-
- $(document).on('click', 'form.custom div.custom.dropdown li', function (event) {
- var $this = $(this),
- $customDropdown = $this.closest('div.custom.dropdown'),
- $select = $customDropdown.prev(),
- selectedIndex = 0;
-
- event.preventDefault();
- event.stopPropagation();
- $('div.dropdown').removeClass('open');
-
- $this
- .closest('ul')
- .find('li')
- .removeClass('selected');
- $this.addClass('selected');
-
- $customDropdown
- .removeClass('open')
- .find('a.current')
- .html($this.html());
-
- $this.closest('ul').find('li').each(function (index) {
- if ($this[0] == this) {
- selectedIndex = index;
- }
-
- });
- $select[0].selectedIndex = selectedIndex;
-
- $select.trigger('change');
- });
-
-
- $.fn.foundationCustomForms = $.foundation.customForms.appendCustomMarkup;
-
-})( jQuery );
diff --git a/javascripts/jquery.foundation.joyride.js b/javascripts/jquery.foundation.joyride.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.joyride.js
+++ /dev/null
@@ -1,639 +0,0 @@
-/*
- * jQuery Foundation Joyride Plugin 2.0.3
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-
-/*jslint unparam: true, browser: true, indent: 2 */
-
-;(function ($, window, undefined) {
- 'use strict';
-
- var defaults = {
- 'version' : '2.0.3',
- 'tipLocation' : 'bottom', // 'top' or 'bottom' in relation to parent
- 'nubPosition' : 'auto', // override on a per tooltip bases
- 'scrollSpeed' : 300, // Page scrolling speed in milliseconds
- 'timer' : 0, // 0 = no timer , all other numbers = timer in milliseconds
- 'startTimerOnClick' : true, // true or false - true requires clicking the first button start the timer
- 'startOffset' : 0, // the index of the tooltip you want to start on (index of the li)
- 'nextButton' : true, // true or false to control whether a next button is used
- 'tipAnimation' : 'fade', // 'pop' or 'fade' in each tip
- 'pauseAfter' : [], // array of indexes where to pause the tour after
- 'tipAnimationFadeSpeed': 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition
- 'cookieMonster' : false, // true or false to control whether cookies are used
- 'cookieName' : 'joyride', // Name the cookie you'll use
- 'cookieDomain' : false, // Will this cookie be attached to a domain, ie. '.notableapp.com'
- 'tipContainer' : 'body', // Where will the tip be attached
- 'postRideCallback' : $.noop, // A method to call once the tour closes (canceled or complete)
- 'postStepCallback' : $.noop, // A method to call after each step
- 'template' : { // HTML segments for tip layout
- 'link' : '<a href="#close" class="joyride-close-tip">X</a>',
- 'timer' : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
- 'tip' : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
- 'wrapper' : '<div class="joyride-content-wrapper"></div>',
- 'button' : '<a href="#" class="small button joyride-next-tip"></a>'
- }
- },
-
- Modernizr = Modernizr || false,
-
- settings = {},
-
- methods = {
-
- init : function (opts) {
- return this.each(function () {
-
- if ($.isEmptyObject(settings)) {
- settings = $.extend(true, defaults, opts);
-
- // non configurable settings
- settings.document = window.document;
- settings.$document = $(settings.document);
- settings.$window = $(window);
- settings.$content_el = $(this);
- settings.body_offset = $(settings.tipContainer).position();
- settings.$tip_content = $('> li', settings.$content_el);
- settings.paused = false;
- settings.attempts = 0;
-
- settings.tipLocationPatterns = {
- top: ['bottom'],
- bottom: [], // bottom should not need to be repositioned
- left: ['right', 'top', 'bottom'],
- right: ['left', 'top', 'bottom']
- };
-
- // are we using jQuery 1.7+
- methods.jquery_check();
-
- // can we create cookies?
- if (!$.isFunction($.cookie)) {
- settings.cookieMonster = false;
- }
-
- // generate the tips and insert into dom.
- if (!settings.cookieMonster || !$.cookie(settings.cookieName)) {
-
- settings.$tip_content.each(function (index) {
- methods.create({$li : $(this), index : index});
- });
-
- // show first tip
- if (!settings.startTimerOnClick && settings.timer > 0) {
- methods.show('init');
- methods.startTimer();
- } else {
- methods.show('init');
- }
-
- }
-
- settings.$document.on('click.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
- e.preventDefault();
-
- if (settings.$li.next().length < 1) {
- methods.end();
- } else if (settings.timer > 0) {
- clearTimeout(settings.automate);
- methods.hide();
- methods.show();
- methods.startTimer();
- } else {
- methods.hide();
- methods.show();
- }
-
- });
-
- settings.$document.on('click.joyride', '.joyride-close-tip', function (e) {
- e.preventDefault();
- methods.end();
- });
-
- settings.$window.bind('resize.joyride', function (e) {
- if (methods.is_phone()) {
- methods.pos_phone();
- } else {
- methods.pos_default();
- }
- });
- } else {
- methods.restart();
- }
-
- });
- },
-
- // call this method when you want to resume the tour
- resume : function () {
- methods.set_li();
- methods.show();
- },
-
- tip_template : function (opts) {
- var $blank, content;
-
- opts.tip_class = opts.tip_class || '';
-
- $blank = $(settings.template.tip).addClass(opts.tip_class);
- content = $.trim($(opts.li).html()) +
- methods.button_text(opts.button_text) +
- settings.template.link +
- methods.timer_instance(opts.index);
-
- $blank.append($(settings.template.wrapper));
- $blank.first().attr('data-index', opts.index);
- $('.joyride-content-wrapper', $blank).append(content);
-
- return $blank[0];
- },
-
- timer_instance : function (index) {
- var txt;
-
- if ((index === 0 && settings.startTimerOnClick && settings.timer > 0) || settings.timer === 0) {
- txt = '';
- } else {
- txt = methods.outerHTML($(settings.template.timer)[0]);
- }
- return txt;
- },
-
- button_text : function (txt) {
- if (settings.nextButton) {
- txt = $.trim(txt) || 'Next';
- txt = methods.outerHTML($(settings.template.button).append(txt)[0]);
- } else {
- txt = '';
- }
- return txt;
- },
-
- create : function (opts) {
- // backwards compatibility with data-text attribute
- var buttonText = opts.$li.attr('data-button') || opts.$li.attr('data-text'),
- tipClass = opts.$li.attr('class'),
- $tip_content = $(methods.tip_template({
- tip_class : tipClass,
- index : opts.index,
- button_text : buttonText,
- li : opts.$li
- }));
-
- $(settings.tipContainer).append($tip_content);
- },
-
- show : function (init) {
- var opts = {}, ii, opts_arr = [], opts_len = 0, p,
- $timer = null;
-
- // are we paused?
- if (settings.$li === undefined || ($.inArray(settings.$li.index(), settings.pauseAfter) === -1)) {
-
- // don't go to the next li if the tour was paused
- if (settings.paused) {
- settings.paused = false;
- } else {
- methods.set_li(init);
- }
-
- settings.attempts = 0;
-
- if (settings.$li.length && settings.$target.length > 0) {
- opts_arr = (settings.$li.data('options') || ':').split(';');
- opts_len = opts_arr.length;
-
- // parse options
- for (ii = opts_len - 1; ii >= 0; ii--) {
- p = opts_arr[ii].split(':');
-
- if (p.length === 2) {
- opts[$.trim(p[0])] = $.trim(p[1]);
- }
- }
-
- settings.tipSettings = $.extend({}, settings, opts);
-
- settings.tipSettings.tipLocationPattern = settings.tipLocationPatterns[settings.tipSettings.tipLocation];
-
- // scroll if not modal
- if (!/body/i.test(settings.$target.selector)) {
- methods.scroll_to();
- }
-
- if (methods.is_phone()) {
- methods.pos_phone(true);
- } else {
- methods.pos_default(true);
- }
-
- $timer = $('.joyride-timer-indicator', settings.$next_tip);
-
- if (/pop/i.test(settings.tipAnimation)) {
-
- $timer.outerWidth(0);
-
- if (settings.timer > 0) {
-
- settings.$next_tip.show();
- $timer.animate({
- width: $('.joyride-timer-indicator-wrap', settings.$next_tip).outerWidth()
- }, settings.timer);
-
- } else {
-
- settings.$next_tip.show();
-
- }
-
-
- } else if (/fade/i.test(settings.tipAnimation)) {
-
- $timer.outerWidth(0);
-
- if (settings.timer > 0) {
-
- settings.$next_tip.fadeIn(settings.tipAnimationFadeSpeed);
-
- settings.$next_tip.show();
- $timer.animate({
- width: $('.joyride-timer-indicator-wrap', settings.$next_tip).outerWidth()
- }, settings.timer);
-
- } else {
-
- settings.$next_tip.fadeIn(settings.tipAnimationFadeSpeed);
-
- }
- }
-
- settings.$current_tip = settings.$next_tip;
-
- // skip non-existent targets
- } else if (settings.$li && settings.$target.length < 1) {
-
- methods.show();
-
- } else {
-
- methods.end();
-
- }
- } else {
-
- settings.paused = true;
-
- }
-
- },
-
- // detect phones with media queries if supported.
- is_phone : function () {
- if (Modernizr) {
- return Modernizr.mq('only screen and (max-width: 767px)');
- }
-
- return (settings.$window.width() < 767) ? true : false;
- },
-
- hide : function () {
- settings.postStepCallback(settings.$li.index(), settings.$current_tip);
- $('.joyride-modal-bg').hide();
- settings.$current_tip.hide();
- },
-
- set_li : function (init) {
- if (init) {
- settings.$li = settings.$tip_content.eq(settings.startOffset);
- methods.set_next_tip();
- settings.$current_tip = settings.$next_tip;
- } else {
- settings.$li = settings.$li.next();
- methods.set_next_tip();
- }
-
- methods.set_target();
- },
-
- set_next_tip : function () {
- settings.$next_tip = $('.joyride-tip-guide[data-index=' + settings.$li.index() + ']');
- },
-
- set_target : function () {
- var cl = settings.$li.attr('data-class'),
- id = settings.$li.attr('data-id'),
- $sel = function () {
- if (id) {
- return $(settings.document.getElementById(id));
- } else if (cl) {
- return $('.' + cl).first();
- } else {
- return $('body');
- }
- };
-
- settings.$target = $sel();
- },
-
- scroll_to : function () {
- var window_half, tipOffset;
-
- window_half = settings.$window.height() / 2;
- tipOffset = Math.ceil(settings.$target.offset().top - window_half + settings.$next_tip.outerHeight());
-
- $("html, body").stop().animate({
- scrollTop: tipOffset
- }, settings.scrollSpeed);
- },
-
- paused : function () {
- if (($.inArray((settings.$li.index() + 1), settings.pauseAfter) === -1)) {
- return true;
- }
-
- return false;
- },
-
- destroy : function () {
- settings.$document.off('.joyride');
- $(window).off('.joyride');
- $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
- $('.joyride-tip-guide, .joyride-modal-bg').remove();
- clearTimeout(settings.automate);
- settings = {};
- },
-
- restart : function () {
- methods.hide();
- settings.$li = undefined;
- methods.show('init');
- },
-
- pos_default : function (init) {
- var half_fold = Math.ceil(settings.$window.height() / 2),
- tip_position = settings.$next_tip.offset(),
- $nub = $('.joyride-nub', settings.$next_tip),
- nub_height = Math.ceil($nub.outerHeight() / 2),
- toggle = init || false;
-
- // tip must not be "display: none" to calculate position
- if (toggle) {
- settings.$next_tip.css('visibility', 'hidden');
- settings.$next_tip.show();
- }
-
- if (!/body/i.test(settings.$target.selector)) {
-
- if (methods.bottom()) {
- settings.$next_tip.css({
- top: (settings.$target.offset().top + nub_height + settings.$target.outerHeight()),
- left: settings.$target.offset().left});
-
- methods.nub_position($nub, settings.tipSettings.nubPosition, 'top');
-
- } else if (methods.top()) {
-
- settings.$next_tip.css({
- top: (settings.$target.offset().top - settings.$next_tip.outerHeight() - nub_height),
- left: settings.$target.offset().left});
-
- methods.nub_position($nub, settings.tipSettings.nubPosition, 'bottom');
-
- } else if (methods.right()) {
-
- settings.$next_tip.css({
- top: settings.$target.offset().top,
- left: (settings.$target.outerWidth() + settings.$target.offset().left)});
-
- methods.nub_position($nub, settings.tipSettings.nubPosition, 'left');
-
- } else if (methods.left()) {
-
- settings.$next_tip.css({
- top: settings.$target.offset().top,
- left: (settings.$target.offset().left - settings.$next_tip.outerWidth() - nub_height)});
-
- methods.nub_position($nub, settings.tipSettings.nubPosition, 'right');
-
- }
-
- if (!methods.visible(methods.corners(settings.$next_tip)) && settings.attempts < settings.tipSettings.tipLocationPattern.length) {
-
- $nub.removeClass('bottom')
- .removeClass('top')
- .removeClass('right')
- .removeClass('left');
-
- settings.tipSettings.tipLocation = settings.tipSettings.tipLocationPattern[settings.attempts];
-
- settings.attempts++;
-
- methods.pos_default(true);
-
- }
-
- } else if (settings.$li.length) {
-
- methods.pos_modal($nub);
-
- }
-
- if (toggle) {
- settings.$next_tip.hide();
- settings.$next_tip.css('visibility', 'visible');
- }
-
- },
-
- pos_phone : function (init) {
- var tip_height = settings.$next_tip.outerHeight(),
- tip_offset = settings.$next_tip.offset(),
- target_height = settings.$target.outerHeight(),
- $nub = $('.joyride-nub', settings.$next_tip),
- nub_height = Math.ceil($nub.outerHeight() / 2),
- toggle = init || false;
-
- $nub.removeClass('bottom')
- .removeClass('top')
- .removeClass('right')
- .removeClass('left');
-
- if (toggle) {
- settings.$next_tip.css('visibility', 'hidden');
- settings.$next_tip.show();
- }
-
- if (!/body/i.test(settings.$target.selector)) {
-
- if (methods.top()) {
-
- settings.$next_tip.offset({top: settings.$target.offset().top - tip_height - nub_height});
- $nub.addClass('bottom');
-
- } else {
-
- settings.$next_tip.offset({top: settings.$target.offset().top + target_height + nub_height});
- $nub.addClass('top');
-
- }
-
- } else if (settings.$li.length) {
-
- methods.pos_modal($nub);
-
- }
-
- if (toggle) {
- settings.$next_tip.hide();
- settings.$next_tip.css('visibility', 'visible');
- }
- },
-
- pos_modal : function ($nub) {
- methods.center();
- $nub.hide();
-
- if ($('.joyride-modal-bg').length < 1) {
- $('body').append('<div class="joyride-modal-bg">').show();
- }
-
- if (/pop/i.test(settings.tipAnimation)) {
- $('.joyride-modal-bg').show();
- } else {
- $('.joyride-modal-bg').fadeIn(settings.tipAnimationFadeSpeed);
- }
- },
-
- center : function () {
- var $w = settings.$window;
-
- settings.$next_tip.css({
- top : ((($w.height() - settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),
- left : ((($w.width() - settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())
- });
-
- return true;
- },
-
- bottom : function () {
- return /bottom/i.test(settings.tipSettings.tipLocation);
- },
-
- top : function () {
- return /top/i.test(settings.tipSettings.tipLocation);
- },
-
- right : function () {
- return /right/i.test(settings.tipSettings.tipLocation);
- },
-
- left : function () {
- return /left/i.test(settings.tipSettings.tipLocation);
- },
-
- corners : function (el) {
- var w = settings.$window,
- right = w.width() + w.scrollLeft(),
- bottom = w.width() + w.scrollTop();
-
- return [
- el.offset().top <= w.scrollTop(),
- right <= el.offset().left + el.outerWidth(),
- bottom <= el.offset().top + el.outerHeight(),
- w.scrollLeft() >= el.offset().left
- ];
- },
-
- visible : function (hidden_corners) {
- var i = hidden_corners.length;
-
- while (i--) {
- if (hidden_corners[i]) return false;
- }
-
- return true;
- },
-
- nub_position : function (nub, pos, def) {
- if (pos === 'auto') {
- nub.addClass(def);
- } else {
- nub.addClass(pos);
- }
- },
-
- startTimer : function () {
- if (settings.$li.length) {
- settings.automate = setTimeout(function () {
- methods.hide();
- methods.show();
- methods.startTimer();
- }, settings.timer);
- } else {
- clearTimeout(settings.automate);
- }
- },
-
- end : function () {
- if (settings.cookieMonster) {
- $.cookie(settings.cookieName, 'ridden', { expires: 365, domain: settings.cookieDomain });
- }
-
- if (settings.timer > 0) {
- clearTimeout(settings.automate);
- }
-
- $('.joyride-modal-bg').hide();
- settings.$current_tip.hide();
- settings.postStepCallback(settings.$li.index(), settings.$current_tip);
- settings.postRideCallback(settings.$li.index(), settings.$current_tip);
- },
-
- jquery_check : function () {
- // define on() and off() for older jQuery
- if (!$.isFunction($.fn.on)) {
-
- $.fn.on = function (types, sel, fn) {
-
- return this.delegate(sel, types, fn);
-
- };
-
- $.fn.off = function (types, sel, fn) {
-
- return this.undelegate(sel, types, fn);
-
- };
-
- return false;
- }
-
- return true;
- },
-
- outerHTML : function (el) {
- // support FireFox < 11
- return el.outerHTML || new XMLSerializer().serializeToString(el);
- },
-
- version : function () {
- return settings.version;
- }
-
- };
-
- $.fn.joyride = function (method) {
- if (methods[method]) {
- return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
- } else if (typeof method === 'object' || !method) {
- return methods.init.apply(this, arguments);
- } else {
- $.error('Method ' + method + ' does not exist on jQuery.joyride');
- }
- };
-
-}(jQuery, this));
diff --git a/javascripts/jquery.foundation.magellan.js b/javascripts/jquery.foundation.magellan.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.magellan.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * jQuery Foundation Magellan 0.0.1
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-
-/*jslint unparam: true, browser: true, indent: 2 */
-
-;(function ($, window, undefined) {
- 'use strict';
-
- $.fn.foundationMagellan = function(options) {
- var $window = $(window),
- $document = $(document),
- $fixedMagellan = $('[data-magellan-expedition=fixed]'),
- defaults = {
- threshold: ($fixedMagellan.length) ? $fixedMagellan.outerHeight(true) : 0,
- activeClass: 'active'
- },
- options = $.extend({}, defaults, options);
-
- // Indicate we have arrived at a destination
- $document.on('magellan.arrival', '[data-magellan-arrival]', function(e) {
- var $destination = $(this),
- $expedition = $destination.closest('[data-magellan-expedition]'),
- activeClass = $expedition.attr('data-magellan-active-class') || options.activeClass;
- $destination
- .closest('[data-magellan-expedition]')
- .find('[data-magellan-arrival]')
- .not(this)
- .removeClass(activeClass);
- $destination.addClass(activeClass);
- });
-
- // Set starting point as the current destination
- var $expedition = $('[data-magellan-expedition]');
- $expedition.find('[data-magellan-arrival]:first')
- .addClass($expedition.attr('data-magellan-active-class') || options.activeClass);
-
- // Update fixed position
- $fixedMagellan.on('magellan.update-position', function(){
- var $el = $(this);
- $el.data("magellan-fixed-position","");
- $el.data("magellan-top-offset", "");
- })
- .trigger('magellan.update-position');
-
- $window.on('resize.magellan', function() {
- $fixedMagellan.trigger('magellan.update-position');
- });
-
- $window.on('scroll.magellan', function() {
- var windowScrollTop = $window.scrollTop();
- $fixedMagellan.each(function() {
- var $expedition = $(this);
- if ($expedition.data("magellan-top-offset") === "") {
- $expedition.data("magellan-top-offset", $expedition.offset().top);
- }
- var fixed_position = (windowScrollTop + options.threshold) > $expedition.data("magellan-top-offset");
- if ($expedition.data("magellan-fixed-position") != fixed_position) {
- $expedition.data("magellan-fixed-position", fixed_position);
- if (fixed_position) {
- $expedition.css({position:"fixed", top:0});
- } else {
- $expedition.css({position:"", top:""});
- }
- }
- });
- });
-
- // Determine when a destination has been reached, ah0y!
- var $lastDestination = $('[data-magellan-destination]:last');
- $window.on('scroll.magellan', function(e){
- var windowScrollTop = $window.scrollTop(),
- scrolltopPlusHeight = windowScrollTop+$window.outerHeight(true),
- lastDestinationTop = Math.ceil($lastDestination.offset().top);
- $('[data-magellan-destination]').each(function(){
- var $destination = $(this),
- destination_name = $destination.attr('data-magellan-destination'),
- topOffset = $destination.offset().top - windowScrollTop;
- if (topOffset <= options.threshold) {
- $('[data-magellan-arrival=' + destination_name + ']').trigger('magellan.arrival');
- }
- // In large screens we may hit the bottom of the page and dont reach the top of the last magellan-destination, so lets force it
- if (scrolltopPlusHeight >= $document.outerHeight(true) && lastDestinationTop > windowScrollTop && lastDestinationTop < scrolltopPlusHeight) {
- $('[data-magellan-arrival]:last').trigger('magellan.arrival');
- }
- });
- });
- };
-}(jQuery, this));
diff --git a/javascripts/jquery.foundation.mediaQueryToggle.js b/javascripts/jquery.foundation.mediaQueryToggle.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.mediaQueryToggle.js
+++ /dev/null
@@ -1,27 +0,0 @@
-;(function ($, window, undefined) {
- 'use strict';
-
- $.fn.foundationMediaQueryViewer = function (options) {
- var settings = $.extend(options,{toggleKey:77}), // Press 'M'
- $doc = $(document);
-
- $doc.on("keyup.mediaQueryViewer", ":input", function (e){
- if (e.which === settings.toggleKey) {
- e.stopPropagation();
- }
- });
- $doc.on("keyup.mediaQueryViewer", function (e) {
- var $mqViewer = $('#fqv');
-
- if (e.which === settings.toggleKey) {
- if ($mqViewer.length > 0) {
- $mqViewer.remove();
- } else {
- $('body').prepend('<div id="fqv" style="position:fixed;top:4px;left:4px;z-index:999;color:#fff;"><p style="font-size:12px;background:rgba(0,0,0,0.75);padding:5px;margin-bottom:1px;line-height:1.2;"><span class="left">Media:</span> <span style="font-weight:bold;" class="show-for-xlarge">Extra Large</span><span style="font-weight:bold;" class="show-for-large">Large</span><span style="font-weight:bold;" class="show-for-medium">Medium</span><span style="font-weight:bold;" class="show-for-small">Small</span><span style="font-weight:bold;" class="show-for-landscape">Landscape</span><span style="font-weight:bold;" class="show-for-portrait">Portrait</span><span style="font-weight:bold;" class="show-for-touch">Touch</span></p></div>');
- }
- }
- });
-
- };
-
-})(jQuery, this);
diff --git a/javascripts/jquery.foundation.navigation.js b/javascripts/jquery.foundation.navigation.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.navigation.js
+++ /dev/null
@@ -1,55 +0,0 @@
-;(function ($, window, undefined) {
- 'use strict';
-
- $.fn.foundationNavigation = function (options) {
-
- var lockNavBar = false;
- // Windows Phone, sadly, does not register touch events :(
- if (Modernizr.touch || navigator.userAgent.match(/Windows Phone/i)) {
- $(document).on('click.fndtn touchstart.fndtn', '.nav-bar a.flyout-toggle', function (e) {
- e.preventDefault();
- var flyout = $(this).siblings('.flyout').first();
- if (lockNavBar === false) {
- $('.nav-bar .flyout').not(flyout).slideUp(500);
- flyout.slideToggle(500, function () {
- lockNavBar = false;
- });
- }
- lockNavBar = true;
- });
- $('.nav-bar>li.has-flyout', this).addClass('is-touch');
- } else {
- $('.nav-bar>li.has-flyout', this).on('mouseenter mouseleave', function (e) {
- if (e.type == 'mouseenter') {
- $('.nav-bar').find('.flyout').hide();
- $(this).children('.flyout').show();
- }
-
- if (e.type == 'mouseleave') {
- var flyout = $(this).children('.flyout'),
- inputs = flyout.find('input'),
- hasFocus = function (inputs) {
- var focus;
- if (inputs.length > 0) {
- inputs.each(function () {
- if ($(this).is(":focus")) {
- focus = true;
- }
- });
- return focus;
- }
-
- return false;
- };
-
- if (!hasFocus(inputs)) {
- $(this).children('.flyout').hide();
- }
- }
-
- });
- }
-
- };
-
-})( jQuery, this );
diff --git a/javascripts/jquery.foundation.orbit.js b/javascripts/jquery.foundation.orbit.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.orbit.js
+++ /dev/null
@@ -1,919 +0,0 @@
-/*
- * jQuery Orbit Plugin 1.4.0
- * www.ZURB.com/playground
- * Copyright 2010, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-
-
-(function ($) {
- 'use strict';
-
- $.fn.findFirstImage = function () {
- return this.first()
- .find('img')
- .andSelf().filter('img')
- .first();
- };
-
- var ORBIT = {
-
- defaults: {
- animation: 'horizontal-push', // fade, horizontal-slide, vertical-slide, horizontal-push, vertical-push
- animationSpeed: 600, // how fast animations are
- timer: true, // display timer?
- advanceSpeed: 4000, // if timer is enabled, time between transitions
- pauseOnHover: false, // if you hover pauses the slider
- startClockOnMouseOut: false, // if clock should start on MouseOut
- startClockOnMouseOutAfter: 1000, // how long after MouseOut should the timer start again
- directionalNav: true, // manual advancing directional navs
- directionalNavRightText: 'Right', // text of right directional element for accessibility
- directionalNavLeftText: 'Left', // text of left directional element for accessibility
- captions: true, // do you want captions?
- captionAnimation: 'fade', // fade, slideOpen, none
- captionAnimationSpeed: 600, // if so how quickly should they animate in
- resetTimerOnClick: false, // true resets the timer instead of pausing slideshow progress on manual navigation
- bullets: false, // true or false to activate the bullet navigation
- bulletThumbs: false, // thumbnails for the bullets
- bulletThumbLocation: '', // relative path to thumbnails from this file
- bulletThumbsHideOnSmall: true, // hide thumbs on small devices
- afterSlideChange: $.noop, // callback to execute after slide changes
- afterLoadComplete: $.noop, // callback to execute after everything has been loaded
- fluid: true,
- centerBullets: true, // center bullet nav with js, turn this off if you want to position the bullet nav manually
- singleCycle: false, // cycles through orbit slides only once
- slideNumber: false, // display slide numbers?
- stackOnSmall: false // stack slides on small devices (i.e. phones)
- },
-
- activeSlide: 0,
- numberSlides: 0,
- orbitWidth: null,
- orbitHeight: null,
- locked: null,
- timerRunning: null,
- degrees: 0,
- wrapperHTML: '<div class="orbit-wrapper" />',
- timerHTML: '<div class="timer"><span class="mask"><span class="rotator"></span></span><span class="pause"></span></div>',
- captionHTML: '<div class="orbit-caption"></div>',
- directionalNavHTML: '<div class="slider-nav hide-for-small"><span class="right"></span><span class="left"></span></div>',
- bulletHTML: '<ul class="orbit-bullets"></ul>',
- slideNumberHTML: '<span class="orbit-slide-counter"></span>',
-
- init: function (element, options) {
- var $imageSlides,
- imagesLoadedCount = 0,
- self = this;
-
- // Bind functions to correct context
- this.clickTimer = $.proxy(this.clickTimer, this);
- this.addBullet = $.proxy(this.addBullet, this);
- this.resetAndUnlock = $.proxy(this.resetAndUnlock, this);
- this.stopClock = $.proxy(this.stopClock, this);
- this.startTimerAfterMouseLeave = $.proxy(this.startTimerAfterMouseLeave, this);
- this.clearClockMouseLeaveTimer = $.proxy(this.clearClockMouseLeaveTimer, this);
- this.rotateTimer = $.proxy(this.rotateTimer, this);
-
- this.options = $.extend({}, this.defaults, options);
- if (this.options.timer === 'false') this.options.timer = false;
- if (this.options.captions === 'false') this.options.captions = false;
- if (this.options.directionalNav === 'false') this.options.directionalNav = false;
-
- this.$element = $(element);
- this.$wrapper = this.$element.wrap(this.wrapperHTML).parent();
- this.$slides = this.$element.children('img, a, div, figure, li');
-
- this.$element.on('movestart', function(e) {
- // If the movestart is heading off in an upwards or downwards
- // direction, prevent it so that the browser scrolls normally.
- if ((e.distX > e.distY && e.distX < -e.distY) ||
- (e.distX < e.distY && e.distX > -e.distY)) {
- e.preventDefault();
- }
- });
-
- this.$element.bind('orbit.next', function () {
- self.shift('next');
- });
-
- this.$element.bind('orbit.prev', function () {
- self.shift('prev');
- });
-
- this.$element.bind('swipeleft', function () {
- $(this).trigger('orbit.next');
- });
-
- this.$element.bind('swiperight', function () {
- $(this).trigger('orbit.prev');
- });
-
- this.$element.bind('orbit.goto', function (event, index) {
- self.shift(index);
- });
-
- this.$element.bind('orbit.start', function (event, index) {
- self.startClock();
- });
-
- this.$element.bind('orbit.stop', function (event, index) {
- self.stopClock();
- });
-
- $imageSlides = this.$slides.filter('img');
-
- if ($imageSlides.length === 0) {
- this.loaded();
- } else {
- $imageSlides.bind('imageready', function () {
- imagesLoadedCount += 1;
- if (imagesLoadedCount === $imageSlides.length) {
- self.loaded();
- }
- });
- }
- },
-
- loaded: function () {
- this.$element
- .addClass('orbit')
- .css({width: '1px', height: '1px'});
-
- if (this.options.stackOnSmall) {
- this.$element.addClass('orbit-stack-on-small');
- }
-
- this.$slides.addClass('orbit-slide').css({"opacity" : 0});
-
- this.setDimentionsFromLargestSlide();
- this.updateOptionsIfOnlyOneSlide();
- this.setupFirstSlide();
- this.notifySlideChange();
-
- if (this.options.timer) {
- this.setupTimer();
- this.startClock();
- }
-
- if (this.options.captions) {
- this.setupCaptions();
- }
-
- if (this.options.directionalNav) {
- this.setupDirectionalNav();
- }
-
- if (this.options.bullets) {
- this.setupBulletNav();
- this.setActiveBullet();
- }
-
- this.options.afterLoadComplete.call(this);
- Holder.run();
- },
-
- currentSlide: function () {
- return this.$slides.eq(this.activeSlide);
- },
-
- notifySlideChange: function() {
- if (this.options.slideNumber) {
- var txt = (this.activeSlide+1) + ' of ' + this.$slides.length;
- this.$element.trigger("orbit.change", {slideIndex: this.activeSlide, slideCount: this.$slides.length});
- if (this.$counter === undefined) {
- var $counter = $(this.slideNumberHTML).html(txt);
- this.$counter = $counter;
- this.$wrapper.append(this.$counter);
- } else {
- this.$counter.html(txt);
- }
- }
- },
-
- setDimentionsFromLargestSlide: function () {
- //Collect all slides and set slider size of largest image
- var self = this,
- $fluidPlaceholder;
-
- self.$element.add(self.$wrapper).width(this.$slides.first().outerWidth());
- self.$element.add(self.$wrapper).height(this.$slides.first().height());
- self.orbitWidth = this.$slides.first().outerWidth();
- self.orbitHeight = this.$slides.first().height();
- $fluidPlaceholder = this.$slides.first().findFirstImage().clone();
-
-
- this.$slides.each(function () {
- var slide = $(this),
- slideWidth = slide.outerWidth(),
- slideHeight = slide.height();
-
- if (slideWidth > self.$element.outerWidth()) {
- self.$element.add(self.$wrapper).width(slideWidth);
- self.orbitWidth = self.$element.outerWidth();
- }
- if (slideHeight > self.$element.height()) {
- self.$element.add(self.$wrapper).height(slideHeight);
- self.orbitHeight = self.$element.height();
- $fluidPlaceholder = $(this).findFirstImage().clone();
- }
- self.numberSlides += 1;
- });
-
- if (this.options.fluid) {
- if (typeof this.options.fluid === "string") {
- // $fluidPlaceholder = $("<img>").attr("src", "http://placehold.it/" + this.options.fluid);
- $fluidPlaceholder = $("<img>").attr("data-src", "holder.js/" + this.options.fluid);
- //var inner = $("<div/>").css({"display":"inline-block", "width":"2px", "height":"2px"});
- //$fluidPlaceholder = $("<div/>").css({"float":"left"});
- //$fluidPlaceholder.wrapInner(inner);
-
- //$fluidPlaceholder = $("<div/>").css({"height":"1px", "width":"2px"});
- //$fluidPlaceholder = $("<div style='display:inline-block;width:2px;height:1px;'></div>");
- }
-
- self.$element.prepend($fluidPlaceholder);
- $fluidPlaceholder.addClass('fluid-placeholder');
- self.$element.add(self.$wrapper).css({width: 'inherit'});
- self.$element.add(self.$wrapper).css({height: 'inherit'});
-
- $(window).bind('resize', function () {
- self.orbitWidth = self.$element.outerWidth();
- self.orbitHeight = self.$element.height();
- });
- }
- },
-
- //Animation locking functions
- lock: function () {
- this.locked = true;
- },
-
- unlock: function () {
- this.locked = false;
- },
-
- updateOptionsIfOnlyOneSlide: function () {
- if(this.$slides.length === 1) {
- this.options.directionalNav = false;
- this.options.timer = false;
- this.options.bullets = false;
- }
- },
-
- setupFirstSlide: function () {
- //Set initial front photo z-index and fades it in
- var self = this;
- this.$slides.first()
- .css({"z-index" : 3, "opacity" : 1})
- .fadeIn(function() {
- //brings in all other slides IF css declares a display: none
- self.$slides.css({"display":"block"})
- });
- },
-
- startClock: function () {
- var self = this;
-
- if(!this.options.timer) {
- return false;
- }
-
- if (this.$timer.is(':hidden')) {
- this.clock = setInterval(function () {
- self.$element.trigger('orbit.next');
- }, this.options.advanceSpeed);
- } else {
- this.timerRunning = true;
- this.$pause.removeClass('active');
- this.clock = setInterval(this.rotateTimer, this.options.advanceSpeed / 180, false);
- }
- },
-
- rotateTimer: function (reset) {
- var degreeCSS = "rotate(" + this.degrees + "deg)";
- this.degrees += 2;
- this.$rotator.css({
- "-webkit-transform": degreeCSS,
- "-moz-transform": degreeCSS,
- "-o-transform": degreeCSS,
- "-ms-transform": degreeCSS
- });
- if (reset) {
- this.degrees = 0;
- this.$rotator.removeClass('move');
- this.$mask.removeClass('move');
- }
- if(this.degrees > 180) {
- this.$rotator.addClass('move');
- this.$mask.addClass('move');
- }
- if(this.degrees > 360) {
- this.$rotator.removeClass('move');
- this.$mask.removeClass('move');
- this.degrees = 0;
- this.$element.trigger('orbit.next');
- }
- },
-
- stopClock: function () {
- if (!this.options.timer) {
- return false;
- } else {
- this.timerRunning = false;
- clearInterval(this.clock);
- this.$pause.addClass('active');
- }
- },
-
- setupTimer: function () {
- this.$timer = $(this.timerHTML);
- this.$wrapper.append(this.$timer);
-
- this.$rotator = this.$timer.find('.rotator');
- this.$mask = this.$timer.find('.mask');
- this.$pause = this.$timer.find('.pause');
-
- this.$timer.click(this.clickTimer);
-
- if (this.options.startClockOnMouseOut) {
- this.$wrapper.mouseleave(this.startTimerAfterMouseLeave);
- this.$wrapper.mouseenter(this.clearClockMouseLeaveTimer);
- }
-
- if (this.options.pauseOnHover) {
- this.$wrapper.mouseenter(this.stopClock);
- }
- },
-
- startTimerAfterMouseLeave: function () {
- var self = this;
-
- this.outTimer = setTimeout(function() {
- if(!self.timerRunning){
- self.startClock();
- }
- }, this.options.startClockOnMouseOutAfter)
- },
-
- clearClockMouseLeaveTimer: function () {
- clearTimeout(this.outTimer);
- },
-
- clickTimer: function () {
- if(!this.timerRunning) {
- this.startClock();
- } else {
- this.stopClock();
- }
- },
-
- setupCaptions: function () {
- this.$caption = $(this.captionHTML);
- this.$wrapper.append(this.$caption);
- this.setCaption();
- },
-
- setCaption: function () {
- var captionLocation = this.currentSlide().attr('data-caption'),
- captionHTML;
-
- if (!this.options.captions) {
- return false;
- }
-
- //Set HTML for the caption if it exists
- if (captionLocation) {
- //if caption text is blank, don't show captions
- if ($.trim($(captionLocation).text()).length < 1){
- return false;
- }
-
- // if location selector starts with '#', remove it so we don't see id="#selector"
- if (captionLocation.charAt(0) == '#') {
- captionLocation = captionLocation.substring(1, captionLocation.length);
- }
- captionHTML = $('#' + captionLocation).html(); //get HTML from the matching HTML entity
- this.$caption
- .attr('id', captionLocation) // Add ID caption TODO why is the id being set?
- .html(captionHTML); // Change HTML in Caption
- //Animations for Caption entrances
- switch (this.options.captionAnimation) {
- case 'none':
- this.$caption.show();
- break;
- case 'fade':
- this.$caption.fadeIn(this.options.captionAnimationSpeed);
- break;
- case 'slideOpen':
- this.$caption.slideDown(this.options.captionAnimationSpeed);
- break;
- }
- } else {
- //Animations for Caption exits
- switch (this.options.captionAnimation) {
- case 'none':
- this.$caption.hide();
- break;
- case 'fade':
- this.$caption.fadeOut(this.options.captionAnimationSpeed);
- break;
- case 'slideOpen':
- this.$caption.slideUp(this.options.captionAnimationSpeed);
- break;
- }
- }
- },
-
- setupDirectionalNav: function () {
- var self = this,
- $directionalNav = $(this.directionalNavHTML);
-
- $directionalNav.find('.right').html(this.options.directionalNavRightText);
- $directionalNav.find('.left').html(this.options.directionalNavLeftText);
-
- this.$wrapper.append($directionalNav);
-
- this.$wrapper.find('.left').click(function () {
- self.stopClock();
- if (self.options.resetTimerOnClick) {
- self.rotateTimer(true);
- self.startClock();
- }
- self.$element.trigger('orbit.prev');
- });
-
- this.$wrapper.find('.right').click(function () {
- self.stopClock();
- if (self.options.resetTimerOnClick) {
- self.rotateTimer(true);
- self.startClock();
- }
- self.$element.trigger('orbit.next');
- });
- },
-
- setupBulletNav: function () {
- this.$bullets = $(this.bulletHTML);
- this.$wrapper.append(this.$bullets);
- this.$slides.each(this.addBullet);
- this.$element.addClass('with-bullets');
- if (this.options.centerBullets) this.$bullets.css('margin-left', -this.$bullets.outerWidth() / 2);
- if (this.options.bulletThumbsHideOnSmall) this.$bullets.addClass('hide-for-small');
- },
-
- addBullet: function (index, slide) {
- var position = index + 1,
- $li = $('<li>' + (position) + '</li>'),
- thumbName,
- self = this;
-
- if (this.options.bulletThumbs) {
- thumbName = $(slide).attr('data-thumb');
- if (thumbName) {
- $li
- .addClass('has-thumb')
- .css({background: "url(" + this.options.bulletThumbLocation + thumbName + ") no-repeat"});;
- }
- }
- this.$bullets.append($li);
- $li.data('index', index);
- $li.click(function () {
- self.stopClock();
- if (self.options.resetTimerOnClick) {
- self.rotateTimer(true);
- self.startClock();
- }
- self.$element.trigger('orbit.goto', [$li.data('index')])
- });
- },
-
- setActiveBullet: function () {
- if(!this.options.bullets) { return false; } else {
- this.$bullets.find('li')
- .removeClass('active')
- .eq(this.activeSlide)
- .addClass('active');
- }
- },
-
- resetAndUnlock: function () {
- this.$slides
- .eq(this.prevActiveSlide)
- .css({"z-index" : 1});
- this.unlock();
- this.options.afterSlideChange.call(this, this.$slides.eq(this.prevActiveSlide), this.$slides.eq(this.activeSlide));
- },
-
- shift: function (direction) {
- var slideDirection = direction;
-
- //remember previous activeSlide
- this.prevActiveSlide = this.activeSlide;
-
- //exit function if bullet clicked is same as the current image
- if (this.prevActiveSlide == slideDirection) { return false; }
-
- if (this.$slides.length == "1") { return false; }
- if (!this.locked) {
- this.lock();
- //deduce the proper activeImage
- if (direction == "next") {
- this.activeSlide++;
- if (this.activeSlide == this.numberSlides) {
- this.activeSlide = 0;
- }
- } else if (direction == "prev") {
- this.activeSlide--
- if (this.activeSlide < 0) {
- this.activeSlide = this.numberSlides - 1;
- }
- } else {
- this.activeSlide = direction;
- if (this.prevActiveSlide < this.activeSlide) {
- slideDirection = "next";
- } else if (this.prevActiveSlide > this.activeSlide) {
- slideDirection = "prev"
- }
- }
-
- //set to correct bullet
- this.setActiveBullet();
- this.notifySlideChange();
-
- //set previous slide z-index to one below what new activeSlide will be
- this.$slides
- .eq(this.prevActiveSlide)
- .css({"z-index" : 2});
-
- //fade
- if (this.options.animation == "fade") {
- this.$slides
- .eq(this.activeSlide)
- .css({"opacity" : 0, "z-index" : 3})
- .animate({"opacity" : 1}, this.options.animationSpeed, this.resetAndUnlock);
- this.$slides
- .eq(this.prevActiveSlide)
- .animate({"opacity":0}, this.options.animationSpeed);
- }
-
- //horizontal-slide
- if (this.options.animation == "horizontal-slide") {
- if (slideDirection == "next") {
- this.$slides
- .eq(this.activeSlide)
- .css({"left": this.orbitWidth, "z-index" : 3})
- .css("opacity", 1)
- .animate({"left" : 0}, this.options.animationSpeed, this.resetAndUnlock);
- }
- if (slideDirection == "prev") {
- this.$slides
- .eq(this.activeSlide)
- .css({"left": -this.orbitWidth, "z-index" : 3})
- .css("opacity", 1)
- .animate({"left" : 0}, this.options.animationSpeed, this.resetAndUnlock);
- }
- this.$slides
- .eq(this.prevActiveSlide)
- .css("opacity", 0);
- }
-
- //vertical-slide
- if (this.options.animation == "vertical-slide") {
- if (slideDirection == "prev") {
- this.$slides
- .eq(this.activeSlide)
- .css({"top": this.orbitHeight, "z-index" : 3})
- .css("opacity", 1)
- .animate({"top" : 0}, this.options.animationSpeed, this.resetAndUnlock);
- this.$slides
- .eq(this.prevActiveSlide)
- .css("opacity", 0);
- }
- if (slideDirection == "next") {
- this.$slides
- .eq(this.activeSlide)
- .css({"top": -this.orbitHeight, "z-index" : 3})
- .css("opacity", 1)
- .animate({"top" : 0}, this.options.animationSpeed, this.resetAndUnlock);
- }
- this.$slides
- .eq(this.prevActiveSlide)
- .css("opacity", 0);
- }
-
- //horizontal-push
- if (this.options.animation == "horizontal-push") {
- if (slideDirection == "next") {
- this.$slides
- .eq(this.activeSlide)
- .css({"left": this.orbitWidth, "z-index" : 3})
- .animate({"left" : 0, "opacity" : 1}, this.options.animationSpeed, this.resetAndUnlock);
- this.$slides
- .eq(this.prevActiveSlide)
- .animate({"left" : -this.orbitWidth}, this.options.animationSpeed, "", function(){
- $(this).css({"opacity" : 0});
- });
- }
- if (slideDirection == "prev") {
- this.$slides
- .eq(this.activeSlide)
- .css({"left": -this.orbitWidth, "z-index" : 3})
- .animate({"left" : 0, "opacity" : 1}, this.options.animationSpeed, this.resetAndUnlock);
- this.$slides
- .eq(this.prevActiveSlide)
- .animate({"left" : this.orbitWidth}, this.options.animationSpeed, "", function(){
- $(this).css({"opacity" : 0});
- });
- }
- }
-
- //vertical-push
- if (this.options.animation == "vertical-push") {
- if (slideDirection == "next") {
- this.$slides
- .eq(this.activeSlide)
- .css({top: -this.orbitHeight, "z-index" : 3})
- .css("opacity", 1)
- .animate({top : 0, "opacity":1}, this.options.animationSpeed, this.resetAndUnlock);
- this.$slides
- .eq(this.prevActiveSlide)
- .css("opacity", 0)
- .animate({top : this.orbitHeight}, this.options.animationSpeed, "");
- }
- if (slideDirection == "prev") {
- this.$slides
- .eq(this.activeSlide)
- .css({top: this.orbitHeight, "z-index" : 3})
- .css("opacity", 1)
- .animate({top : 0}, this.options.animationSpeed, this.resetAndUnlock);
- this.$slides
- .eq(this.prevActiveSlide)
- .css("opacity", 0)
- .animate({top : -this.orbitHeight}, this.options.animationSpeed);
- }
- }
-
- this.setCaption();
- }
-
- // if on last slide and singleCycle is true, don't loop through slides again
- // .length is zero based so must minus 1 to match activeSlide index
- if (this.activeSlide === this.$slides.length-1 && this.options.singleCycle) {
- this.stopClock();
- }
- }
- };
-
- $.fn.orbit = function (options) {
- return this.each(function () {
- var orbit = $.extend({}, ORBIT);
- orbit.init(this, options);
- });
- };
-
-})(jQuery);
-
-/*!
- * jQuery imageready Plugin
- * http://www.zurb.com/playground/
- *
- * Copyright 2011, ZURB
- * Released under the MIT License
- */
-(function ($) {
-
- var options = {};
-
- $.event.special.imageready = {
-
- setup: function (data, namespaces, eventHandle) {
- options = data || options;
- },
-
- add: function (handleObj) {
- var $this = $(this),
- src;
-
- if ( this.nodeType === 1 && this.tagName.toLowerCase() === 'img' && this.src !== '' ) {
- if (options.forceLoad) {
- src = $this.attr('src');
- $this.attr('src', '');
- bindToLoad(this, handleObj.handler);
- $this.attr('src', src);
- } else if ( this.complete || this.readyState === 4 ) {
- handleObj.handler.apply(this, arguments);
- } else {
- bindToLoad(this, handleObj.handler);
- }
- }
- },
-
- teardown: function (namespaces) {
- $(this).unbind('.imageready');
- }
- };
-
- function bindToLoad(element, callback) {
- var $this = $(element);
-
- $this.bind('load.imageready', function () {
- callback.apply(element, arguments);
- $this.unbind('load.imageready');
- });
- }
-
-}(jQuery));
-
-/*
-
-Holder - 1.3 - client side image placeholders
-(c) 2012 Ivan Malopinsky / http://imsky.co
-
-Provided under the Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
-Commercial use requires attribution.
-
-*/
-
-var Holder = Holder || {};
-(function (app, win) {
-
-var preempted = false,
-fallback = false,
-canvas = document.createElement('canvas');
-
-//http://javascript.nwbox.com/ContentLoaded by Diego Perini with modifications
-function contentLoaded(n,t){var l="complete",s="readystatechange",u=!1,h=u,c=!0,i=n.document,a=i.documentElement,e=i.addEventListener?"addEventListener":"attachEvent",v=i.addEventListener?"removeEventListener":"detachEvent",f=i.addEventListener?"":"on",r=function(e){(e.type!=s||i.readyState==l)&&((e.type=="load"?n:i)[v](f+e.type,r,u),!h&&(h=!0)&&t.call(n,null))},o=function(){try{a.doScroll("left")}catch(n){setTimeout(o,50);return}r("poll")};if(i.readyState==l)t.call(n,"lazy");else{if(i.createEventObject&&a.doScroll){try{c=!n.frameElement}catch(y){}c&&o()}i[e](f+"DOMContentLoaded",r,u),i[e](f+s,r,u),n[e](f+"load",r,u)}};
-
-//https://gist.github.com/991057 by Jed Schmidt with modifications
-function selector(a){
- a=a.match(/^(\W)?(.*)/);var b=document["getElement"+(a[1]?a[1]=="#"?"ById":"sByClassName":"sByTagName")](a[2]);
- var ret=[]; b!=null&&(b.length?ret=b:b.length==0?ret=b:ret=[b]); return ret;
-}
-
-//shallow object property extend
-function extend(a,b){var c={};for(var d in a)c[d]=a[d];for(var e in b)c[e]=b[e];return c}
-
-function draw(ctx, dimensions, template) {
- var dimension_arr = [dimensions.height, dimensions.width].sort();
- var maxFactor = Math.round(dimension_arr[1] / 16),
- minFactor = Math.round(dimension_arr[0] / 16);
- var text_height = Math.max(template.size, maxFactor);
- canvas.width = dimensions.width;
- canvas.height = dimensions.height;
- ctx.textAlign = "center";
- ctx.textBaseline = "middle";
- ctx.fillStyle = template.background;
- ctx.fillRect(0, 0, dimensions.width, dimensions.height);
- ctx.fillStyle = template.foreground;
- ctx.font = "bold " + text_height + "px sans-serif";
- var text = template.text ? template.text : (dimensions.width + "x" + dimensions.height);
- if (Math.round(ctx.measureText(text).width) / dimensions.width > 1) {
- text_height = Math.max(minFactor, template.size);
- }
- ctx.font = "bold " + text_height + "px sans-serif";
- ctx.fillText(text, (dimensions.width / 2), (dimensions.height / 2), dimensions.width);
- return canvas.toDataURL("image/png");
-}
-
-if (!canvas.getContext) {
- fallback = true;
-} else {
- if (canvas.toDataURL("image/png").indexOf("data:image/png") < 0) {
- //Android doesn't support data URI
- fallback = true;
- } else {
- var ctx = canvas.getContext("2d");
- }
-}
-
-var settings = {
- domain: "holder.js",
- images: "img",
- themes: {
- "gray": {
- background: "#eee",
- foreground: "#aaa",
- size: 12
- },
- "social": {
- background: "#3a5a97",
- foreground: "#fff",
- size: 12
- },
- "industrial": {
- background: "#434A52",
- foreground: "#C2F200",
- size: 12
- }
- }
-};
-
-
-
-app.flags = {
- dimensions: {
- regex: /([0-9]+)x([0-9]+)/,
- output: function(val){
- var exec = this.regex.exec(val);
- return {
- width: +exec[1],
- height: +exec[2]
- }
- }
- },
- colors: {
- regex: /#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i,
- output: function(val){
- var exec = this.regex.exec(val);
- return {
- size: settings.themes.gray.size,
- foreground: "#" + exec[2],
- background: "#" + exec[1]
- }
- }
- },
- text: {
- regex: /text\:(.*)/,
- output: function(val){
- return this.regex.exec(val)[1];
- }
- }
-}
-
-for(var flag in app.flags){
- app.flags[flag].match = function (val){
- return val.match(this.regex)
- }
-}
-
-app.add_theme = function (name, theme) {
- name != null && theme != null && (settings.themes[name] = theme);
- return app;
-};
-
-app.add_image = function (src, el) {
- var node = selector(el);
- if (node.length) {
- for (var i = 0, l = node.length; i < l; i++) {
- var img = document.createElement("img")
- img.setAttribute("data-src", src);
- node[i].appendChild(img);
- }
- }
- return app;
-};
-
-app.run = function (o) {
- var options = extend(settings, o),
- images = selector(options.images),
- preempted = true;
-
- for (var l = images.length, i = 0; i < l; i++) {
- var theme = settings.themes.gray;
- var src = images[i].getAttribute("data-src") || images[i].getAttribute("src");
- if (src && !! ~src.indexOf(options.domain)) {
- var render = false,
- dimensions = null,
- text = null;
- var flags = src.substr(src.indexOf(options.domain) + options.domain.length + 1).split("/");
- for (sl = flags.length, j = 0; j < sl; j++) {
- if (app.flags.dimensions.match(flags[j])) {
- render = true;
- dimensions = app.flags.dimensions.output(flags[j]);
- } else if (app.flags.colors.match(flags[j])) {
- theme = app.flags.colors.output(flags[j]);
- } else if (options.themes[flags[j]]) {
- //If a theme is specified, it will override custom colors
- theme = options.themes[flags[j]];
- } else if (app.flags.text.match(flags[j])) {
- text = app.flags.text.output(flags[j]);
- }
- }
- if (render) {
- images[i].setAttribute("data-src", src);
- var dimensions_caption = dimensions.width + "x" + dimensions.height;
- images[i].setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption);
-
- // Fallback
- // images[i].style.width = dimensions.width + "px";
- // images[i].style.height = dimensions.height + "px";
- images[i].style.backgroundColor = theme.background;
-
- var theme = (text ? extend(theme, {
- text: text
- }) : theme);
-
- if (!fallback) {
- images[i].setAttribute("src", draw(ctx, dimensions, theme));
- }
- }
- }
- }
- return app;
-};
-contentLoaded(win, function () {
- preempted || app.run()
-})
-
-})(Holder, window);
diff --git a/javascripts/jquery.foundation.reveal.js b/javascripts/jquery.foundation.reveal.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.reveal.js
+++ /dev/null
@@ -1,794 +0,0 @@
-/*
- * jQuery Reveal Plugin 1.1
- * www.ZURB.com
- * Copyright 2010, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-/*globals jQuery */
-
-(function ($) {
- 'use strict';
- //
- // Global variable.
- // Helps us determine if the current modal is being queued for display.
- //
- var modalQueued = false;
-
- //
- // Bind the live 'click' event to all anchor elemnets with the data-reveal-id attribute.
- //
- $(document).on('click', 'a[data-reveal-id]', function ( event ) {
- //
- // Prevent default action of the event.
- //
- event.preventDefault();
- //
- // Get the clicked anchor data-reveal-id attribute value.
- //
- var modalLocation = $( this ).attr( 'data-reveal-id' );
- //
- // Find the element with that modalLocation id and call the reveal plugin.
- //
- $( '#' + modalLocation ).reveal( $( this ).data() );
-
- });
-
- /**
- * @module reveal
- * @property {Object} [options] Reveal options
- */
- $.fn.reveal = function ( options ) {
- /*
- * Cache the document object.
- */
- var $doc = $( document ),
- /*
- * Default property values.
- */
- defaults = {
- /**
- * Possible options: fade, fadeAndPop, none
- *
- * @property animation
- * @type {String}
- * @default fadeAndPop
- */
- animation: 'fadeAndPop',
- /**
- * Speed at which the reveal should show. How fast animtions are.
- *
- * @property animationSpeed
- * @type {Integer}
- * @default 300
- */
- animationSpeed: 300,
- /**
- * Should the modal close when the background is clicked?
- *
- * @property closeOnBackgroundClick
- * @type {Boolean}
- * @default true
- */
- closeOnBackgroundClick: true,
- /**
- * Specify a class name for the 'close modal' element.
- * This element will close an open modal.
- *
- @example
- <a href='#close' class='close-reveal-modal'>Close Me</a>
- *
- * @property dismissModalClass
- * @type {String}
- * @default close-reveal-modal
- */
- dismissModalClass: 'close-reveal-modal',
- /**
- * Specify a callback function that triggers 'before' the modal opens.
- *
- * @property open
- * @type {Function}
- * @default function(){}
- */
- open: $.noop,
- /**
- * Specify a callback function that triggers 'after' the modal is opened.
- *
- * @property opened
- * @type {Function}
- * @default function(){}
- */
- opened: $.noop,
- /**
- * Specify a callback function that triggers 'before' the modal prepares to close.
- *
- * @property close
- * @type {Function}
- * @default function(){}
- */
- close: $.noop,
- /**
- * Specify a callback function that triggers 'after' the modal is closed.
- *
- * @property closed
- * @type {Function}
- * @default function(){}
- */
- closed: $.noop
- }
- ;
- //
- // Extend the default options.
- // This replaces the passed in option (options) values with default values.
- //
- options = $.extend( {}, defaults, options );
-
- //
- // Apply the plugin functionality to each element in the jQuery collection.
- //
- return this.not('.reveal-modal.open').each( function () {
- //
- // Cache the modal element
- //
- var modal = $( this ),
- //
- // Get the current css 'top' property value in decimal format.
- //
- topMeasure = parseInt( modal.css( 'top' ), 10 ),
- //
- // Calculate the top offset.
- //
- topOffset = modal.height() + topMeasure,
- //
- // Helps determine if the modal is locked.
- // This way we keep the modal from triggering while it's in the middle of animating.
- //
- locked = false,
- //
- // Get the modal background element.
- //
- modalBg = $( '.reveal-modal-bg' ),
- //
- // Show modal properties
- //
- cssOpts = {
- //
- // Used, when we show the modal.
- //
- open : {
- //
- // Set the 'top' property to the document scroll minus the calculated top offset.
- //
- 'top': 0,
- //
- // Opacity gets set to 0.
- //
- 'opacity': 0,
- //
- // Show the modal
- //
- 'visibility': 'visible',
- //
- // Ensure it's displayed as a block element.
- //
- 'display': 'block'
- },
- //
- // Used, when we hide the modal.
- //
- close : {
- //
- // Set the default 'top' property value.
- //
- 'top': topMeasure,
- //
- // Has full opacity.
- //
- 'opacity': 1,
- //
- // Hide the modal
- //
- 'visibility': 'hidden',
- //
- // Ensure the elment is hidden.
- //
- 'display': 'none'
- }
-
- },
- //
- // Initial closeButton variable.
- //
- $closeButton
- ;
-
- //
- // Do we have a modal background element?
- //
- if ( modalBg.length === 0 ) {
- //
- // No we don't. So, let's create one.
- //
- modalBg = $( '<div />', { 'class' : 'reveal-modal-bg' } )
- //
- // Then insert it after the modal element.
- //
- .insertAfter( modal );
- //
- // Now, fade it out a bit.
- //
- modalBg.fadeTo( 'fast', 0.8 );
- }
-
- //
- // Helper Methods
- //
-
- /**
- * Unlock the modal for animation.
- *
- * @method unlockModal
- */
- function unlockModal() {
- locked = false;
- }
-
- /**
- * Lock the modal to prevent further animation.
- *
- * @method lockModal
- */
- function lockModal() {
- locked = true;
- }
-
- /**
- * Closes all open modals.
- *
- * @method closeOpenModal
- */
- function closeOpenModals() {
- //
- // Get all reveal-modal elements with the .open class.
- //
- var $openModals = $( ".reveal-modal.open" );
- //
- // Do we have modals to close?
- //
- if ( $openModals.length === 1 ) {
- //
- // Set the modals for animation queuing.
- //
- modalQueued = true;
- //
- // Trigger the modal close event.
- //
- $openModals.trigger( "reveal:close" );
- }
-
- }
- /**
- * Animates the modal opening.
- * Handles the modal 'open' event.
- *
- * @method openAnimation
- */
- function openAnimation() {
- //
- // First, determine if we're in the middle of animation.
- //
- if ( !locked ) {
- //
- // We're not animating, let's lock the modal for animation.
- //
- lockModal();
- //
- // Close any opened modals.
- //
- closeOpenModals();
- //
- // Now, add the open class to this modal.
- //
- modal.addClass( "open" );
-
- //
- // Are we executing the 'fadeAndPop' animation?
- //
- if ( options.animation === "fadeAndPop" ) {
- //
- // Yes, we're doing the 'fadeAndPop' animation.
- // Okay, set the modal css properties.
- //
- //
- // Set the 'top' property to the document scroll minus the calculated top offset.
- //
- cssOpts.open.top = $doc.scrollTop() - topOffset;
- //
- // Flip the opacity to 0.
- //
- cssOpts.open.opacity = 0;
- //
- // Set the css options.
- //
- modal.css( cssOpts.open );
- //
- // Fade in the background element, at half the speed of the modal element.
- // So, faster than the modal element.
- //
- modalBg.fadeIn( options.animationSpeed / 2 );
-
- //
- // Let's delay the next animation queue.
- // We'll wait until the background element is faded in.
- //
- modal.delay( options.animationSpeed / 2 )
- //
- // Animate the following css properties.
- //
- .animate( {
- //
- // Set the 'top' property to the document scroll plus the calculated top measure.
- //
- "top": $doc.scrollTop() + topMeasure + 'px',
- //
- // Set it to full opacity.
- //
- "opacity": 1
-
- },
- /*
- * Fade speed.
- */
- options.animationSpeed,
- /*
- * End of animation callback.
- */
- function () {
- //
- // Trigger the modal reveal:opened event.
- // This should trigger the functions set in the options.opened property.
- //
- modal.trigger( 'reveal:opened' );
-
- }); // end of animate.
-
- } // end if 'fadeAndPop'
-
- //
- // Are executing the 'fade' animation?
- //
- if ( options.animation === "fade" ) {
- //
- // Yes, were executing 'fade'.
- // Okay, let's set the modal properties.
- //
- cssOpts.open.top = $doc.scrollTop() + topMeasure;
- //
- // Flip the opacity to 0.
- //
- cssOpts.open.opacity = 0;
- //
- // Set the css options.
- //
- modal.css( cssOpts.open );
- //
- // Fade in the modal background at half the speed of the modal.
- // So, faster than modal.
- //
- modalBg.fadeIn( options.animationSpeed / 2 );
-
- //
- // Delay the modal animation.
- // Wait till the modal background is done animating.
- //
- modal.delay( options.animationSpeed / 2 )
- //
- // Now animate the modal.
- //
- .animate( {
- //
- // Set to full opacity.
- //
- "opacity": 1
- },
-
- /*
- * Animation speed.
- */
- options.animationSpeed,
-
- /*
- * End of animation callback.
- */
- function () {
- //
- // Trigger the modal reveal:opened event.
- // This should trigger the functions set in the options.opened property.
- //
- modal.trigger( 'reveal:opened' );
-
- });
-
- } // end if 'fade'
-
- //
- // Are we not animating?
- //
- if ( options.animation === "none" ) {
- //
- // We're not animating.
- // Okay, let's set the modal css properties.
- //
- //
- // Set the top property.
- //
- cssOpts.open.top = $doc.scrollTop() + topMeasure;
- //
- // Set the opacity property to full opacity, since we're not fading (animating).
- //
- cssOpts.open.opacity = 1;
- //
- // Set the css property.
- //
- modal.css( cssOpts.open );
- //
- // Show the modal Background.
- //
- modalBg.css( { "display": "block" } );
- //
- // Trigger the modal opened event.
- //
- modal.trigger( 'reveal:opened' );
-
- } // end if animating 'none'
-
- }// end if !locked
-
- }// end openAnimation
-
-
- function openVideos() {
- var video = modal.find('.flex-video'),
- iframe = video.find('iframe');
- if (iframe.length > 0) {
- iframe.attr("src", iframe.data("src"));
- video.fadeIn(100);
- }
- }
-
- //
- // Bind the reveal 'open' event.
- // When the event is triggered, openAnimation is called
- // along with any function set in the options.open property.
- //
- modal.bind( 'reveal:open.reveal', openAnimation );
- modal.bind( 'reveal:open.reveal', openVideos);
-
- /**
- * Closes the modal element(s)
- * Handles the modal 'close' event.
- *
- * @method closeAnimation
- */
- function closeAnimation() {
- //
- // First, determine if we're in the middle of animation.
- //
- if ( !locked ) {
- //
- // We're not animating, let's lock the modal for animation.
- //
- lockModal();
- //
- // Clear the modal of the open class.
- //
- modal.removeClass( "open" );
-
- //
- // Are we using the 'fadeAndPop' animation?
- //
- if ( options.animation === "fadeAndPop" ) {
- //
- // Yes, okay, let's set the animation properties.
- //
- modal.animate( {
- //
- // Set the top property to the document scrollTop minus calculated topOffset.
- //
- "top": $doc.scrollTop() - topOffset + 'px',
- //
- // Fade the modal out, by using the opacity property.
- //
- "opacity": 0
-
- },
- /*
- * Fade speed.
- */
- options.animationSpeed / 2,
- /*
- * End of animation callback.
- */
- function () {
- //
- // Set the css hidden options.
- //
- modal.css( cssOpts.close );
-
- });
- //
- // Is the modal animation queued?
- //
- if ( !modalQueued ) {
- //
- // Oh, the modal(s) are mid animating.
- // Let's delay the animation queue.
- //
- modalBg.delay( options.animationSpeed )
- //
- // Fade out the modal background.
- //
- .fadeOut(
- /*
- * Animation speed.
- */
- options.animationSpeed,
- /*
- * End of animation callback.
- */
- function () {
- //
- // Trigger the modal 'closed' event.
- // This should trigger any method set in the options.closed property.
- //
- modal.trigger( 'reveal:closed' );
-
- });
-
- } else {
- //
- // We're not mid queue.
- // Trigger the modal 'closed' event.
- // This should trigger any method set in the options.closed propety.
- //
- modal.trigger( 'reveal:closed' );
-
- } // end if !modalQueued
-
- } // end if animation 'fadeAndPop'
-
- //
- // Are we using the 'fade' animation.
- //
- if ( options.animation === "fade" ) {
- //
- // Yes, we're using the 'fade' animation.
- //
- modal.animate( { "opacity" : 0 },
- /*
- * Animation speed.
- */
- options.animationSpeed,
- /*
- * End of animation callback.
- */
- function () {
- //
- // Set the css close options.
- //
- modal.css( cssOpts.close );
-
- }); // end animate
-
- //
- // Are we mid animating the modal(s)?
- //
- if ( !modalQueued ) {
- //
- // Oh, the modal(s) are mid animating.
- // Let's delay the animation queue.
- //
- modalBg.delay( options.animationSpeed )
- //
- // Let's fade out the modal background element.
- //
- .fadeOut(
- /*
- * Animation speed.
- */
- options.animationSpeed,
- /*
- * End of animation callback.
- */
- function () {
- //
- // Trigger the modal 'closed' event.
- // This should trigger any method set in the options.closed propety.
- //
- modal.trigger( 'reveal:closed' );
-
- }); // end fadeOut
-
- } else {
- //
- // We're not mid queue.
- // Trigger the modal 'closed' event.
- // This should trigger any method set in the options.closed propety.
- //
- modal.trigger( 'reveal:closed' );
-
- } // end if !modalQueued
-
- } // end if animation 'fade'
-
- //
- // Are we not animating?
- //
- if ( options.animation === "none" ) {
- //
- // We're not animating.
- // Set the modal close css options.
- //
- modal.css( cssOpts.close );
- //
- // Is the modal in the middle of an animation queue?
- //
- if ( !modalQueued ) {
- //
- // It's not mid queueu. Just hide it.
- //
- modalBg.css( { 'display': 'none' } );
- }
- //
- // Trigger the modal 'closed' event.
- // This should trigger any method set in the options.closed propety.
- //
- modal.trigger( 'reveal:closed' );
-
- } // end if not animating
- //
- // Reset the modalQueued variable.
- //
- modalQueued = false;
- } // end if !locked
-
- } // end closeAnimation
-
- /**
- * Destroys the modal and it's events.
- *
- * @method destroy
- */
- function destroy() {
- //
- // Unbind all .reveal events from the modal.
- //
- modal.unbind( '.reveal' );
- //
- // Unbind all .reveal events from the modal background.
- //
- modalBg.unbind( '.reveal' );
- //
- // Unbind all .reveal events from the modal 'close' button.
- //
- $closeButton.unbind( '.reveal' );
- //
- // Unbind all .reveal events from the body.
- //
- $( 'body' ).unbind( '.reveal' );
-
- }
-
- function closeVideos() {
- var video = modal.find('.flex-video'),
- iframe = video.find('iframe');
- if (iframe.length > 0) {
- iframe.data("src", iframe.attr("src"));
- iframe.attr("src", "");
- video.fadeOut(100);
- }
- }
-
- //
- // Bind the modal 'close' event
- //
- modal.bind( 'reveal:close.reveal', closeAnimation );
- modal.bind( 'reveal:closed.reveal', closeVideos );
- //
- // Bind the modal 'opened' + 'closed' event
- // Calls the unlockModal method.
- //
- modal.bind( 'reveal:opened.reveal reveal:closed.reveal', unlockModal );
- //
- // Bind the modal 'closed' event.
- // Calls the destroy method.
- //
- modal.bind( 'reveal:closed.reveal', destroy );
- //
- // Bind the modal 'open' event
- // Handled by the options.open property function.
- //
- modal.bind( 'reveal:open.reveal', options.open );
- //
- // Bind the modal 'opened' event.
- // Handled by the options.opened property function.
- //
- modal.bind( 'reveal:opened.reveal', options.opened );
- //
- // Bind the modal 'close' event.
- // Handled by the options.close property function.
- //
- modal.bind( 'reveal:close.reveal', options.close );
- //
- // Bind the modal 'closed' event.
- // Handled by the options.closed property function.
- //
- modal.bind( 'reveal:closed.reveal', options.closed );
-
- //
- // We're running this for the first time.
- // Trigger the modal 'open' event.
- //
- modal.trigger( 'reveal:open' );
-
- //
- // Get the closeButton variable element(s).
- //
- $closeButton = $( '.' + options.dismissModalClass )
- //
- // Bind the element 'click' event and handler.
- //
- .bind( 'click.reveal', function () {
- //
- // Trigger the modal 'close' event.
- //
- modal.trigger( 'reveal:close' );
-
- });
-
- //
- // Should we close the modal background on click?
- //
- if ( options.closeOnBackgroundClick ) {
- //
- // Yes, close the modal background on 'click'
- // Set the modal background css 'cursor' propety to pointer.
- // Adds a pointer symbol when you mouse over the modal background.
- //
- modalBg.css( { "cursor": "pointer" } );
- //
- // Bind a 'click' event handler to the modal background.
- //
- modalBg.bind( 'click.reveal', function () {
- //
- // Trigger the modal 'close' event.
- //
- modal.trigger( 'reveal:close' );
-
- });
-
- }
-
- //
- // Bind keyup functions on the body element.
- // We'll want to close the modal when the 'escape' key is hit.
- //
- $( 'body' ).bind( 'keyup.reveal', function ( event ) {
- //
- // Did the escape key get triggered?
- //
- if ( event.which === 27 ) { // 27 is the keycode for the Escape key
- //
- // Escape key was triggered.
- // Trigger the modal 'close' event.
- //
- modal.trigger( 'reveal:close' );
- }
-
- }); // end $(body)
-
- }); // end this.each
-
- }; // end $.fn
-
-} ( jQuery ) );
diff --git a/javascripts/jquery.foundation.tabs.js b/javascripts/jquery.foundation.tabs.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.tabs.js
+++ /dev/null
@@ -1,66 +0,0 @@
-;(function ($, window, document, undefined) {
- 'use strict';
-
- var settings = {
- callback: $.noop,
- deep_linking: true,
- init: false
- },
-
- methods = {
- init : function (options) {
- settings = $.extend({}, settings, options);
-
- return this.each(function () {
- if (!settings.init) methods.events();
-
- if (settings.deep_linking) methods.from_hash();
- });
- },
-
- events : function () {
- $(document).on('click.fndtn', '.tabs a', function (e) {
- methods.set_tab($(this).parent('dd, li'), e);
- });
-
- settings.init = true;
- },
-
- set_tab : function ($tab, e) {
- var $activeTab = $tab.closest('dl, ul').find('.active'),
- target = $tab.children('a').attr("href"),
- hasHash = /^#/.test(target),
- $content = $(target + 'Tab');
-
- if (hasHash && $content.length > 0) {
- // Show tab content
- if (e && !settings.deep_linking) e.preventDefault();
- $content.closest('.tabs-content').children('li').removeClass('active').hide();
- $content.css('display', 'block').addClass('active');
- }
-
- // Make active tab
- $activeTab.removeClass('active');
- $tab.addClass('active');
-
- settings.callback();
- },
-
- from_hash : function () {
- var hash = window.location.hash,
- $tab = $('a[href="' + hash + '"]');
-
- $tab.trigger('click.fndtn');
- }
- }
-
- $.fn.foundationTabs = function (method) {
- if (methods[method]) {
- return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
- } else if (typeof method === 'object' || !method) {
- return methods.init.apply(this, arguments);
- } else {
- $.error('Method ' + method + ' does not exist on jQuery.foundationTabs');
- }
- };
-}(jQuery, this, this.document));
diff --git a/javascripts/jquery.foundation.tooltips.js b/javascripts/jquery.foundation.tooltips.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.tooltips.js
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * jQuery Foundation Tooltips 2.0.2
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-
-/*jslint unparam: true, browser: true, indent: 2 */
-
-;(function ($, window, undefined) {
- 'use strict';
-
- var settings = {
- bodyHeight : 0,
- selector : '.has-tip',
- additionalInheritableClasses : [],
- tooltipClass : '.tooltip',
- tipTemplate : function (selector, content) {
- return '<span data-selector="' + selector + '" class="' + settings.tooltipClass.substring(1) + '">' + content + '<span class="nub"></span></span>';
- }
- },
- methods = {
- init : function (options) {
- settings = $.extend(settings, options);
-
- // alias the old targetClass option
- settings.selector = settings.targetClass ? settings.targetClass : settings.selector;
-
- return this.each(function () {
- var $body = $('body');
-
- if (Modernizr.touch) {
- $body.on('click.tooltip touchstart.tooltip touchend.tooltip', settings.selector, function (e) {
- e.preventDefault();
- $(settings.tooltipClass).hide();
- methods.showOrCreateTip($(this));
- });
- $body.on('click.tooltip touchstart.tooltip touchend.tooltip', settings.tooltipClass, function (e) {
- e.preventDefault();
- $(this).fadeOut(150);
- });
- } else {
- $body.on('mouseenter.tooltip mouseleave.tooltip', settings.selector, function (e) {
- var $this = $(this);
-
- if (e.type === 'mouseenter') {
- methods.showOrCreateTip($this);
- } else if (e.type === 'mouseleave') {
- methods.hide($this);
- }
- });
- }
-
- $(this).data('tooltips', true);
-
- });
- },
- showOrCreateTip : function ($target, content) {
- var $tip = methods.getTip($target);
-
- if ($tip && $tip.length > 0) {
- methods.show($target);
- } else {
- methods.create($target, content);
- }
- },
- getTip : function ($target) {
- var selector = methods.selector($target),
- tip = null;
-
- if (selector) {
- tip = $('span[data-selector=' + selector + ']' + settings.tooltipClass);
- }
- return (tip.length > 0) ? tip : false;
- },
- selector : function ($target) {
- var id = $target.attr('id'),
- dataSelector = $target.data('selector');
-
- if (id === undefined && dataSelector === undefined) {
- dataSelector = 'tooltip' + Math.random().toString(36).substring(7);
- $target.attr('data-selector', dataSelector);
- }
- return (id) ? id : dataSelector;
- },
- create : function ($target, content) {
- var $tip = $(settings.tipTemplate(methods.selector($target),
- $('<div>').html(content ? content : $target.attr('title')).html())),
- classes = methods.inheritable_classes($target);
-
- $tip.addClass(classes).appendTo('body');
- if (Modernizr.touch) {
- $tip.append('<span class="tap-to-close">tap to close </span>');
- }
- $target.removeAttr('title');
- methods.show($target);
- },
- reposition : function (target, tip, classes) {
- var width, nub, nubHeight, nubWidth, column, objPos;
-
- tip.css('visibility', 'hidden').show();
-
- width = target.data('width');
- nub = tip.children('.nub');
- nubHeight = nub.outerHeight();
- nubWidth = nub.outerWidth();
-
- objPos = function (obj, top, right, bottom, left, width) {
- return obj.css({
- 'top' : top,
- 'bottom' : bottom,
- 'left' : left,
- 'right' : right,
- 'max-width' : (width) ? width : 'auto'
- }).end();
- };
-
- objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', target.offset().left, width);
- objPos(nub, -nubHeight, 'auto', 'auto', 10);
-
- if ($(window).width() < 767) {
- column = target.closest('.columns');
-
- if (column.length < 0) {
- // if not using Foundation
- column = $('body');
- }
- tip.width(column.outerWidth() - 25).css('left', 15).addClass('tip-override');
- objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left);
- } else {
- if (classes && classes.indexOf('tip-top') > -1) {
- objPos(tip, (target.offset().top - tip.outerHeight() - nubHeight), 'auto', 'auto', target.offset().left, width)
- .removeClass('tip-override');
- objPos(nub, 'auto', 'auto', -nubHeight, 'auto');
- } else if (classes && classes.indexOf('tip-left') > -1) {
- objPos(tip, (target.offset().top + (target.outerHeight() / 2) - nubHeight), 'auto', 'auto', (target.offset().left - tip.outerWidth() - 10), width)
- .removeClass('tip-override');
- objPos(nub, (tip.outerHeight() / 2) - (nubHeight / 2), -nubHeight, 'auto', 'auto');
- } else if (classes && classes.indexOf('tip-right') > -1) {
- objPos(tip, (target.offset().top + (target.outerHeight() / 2) - nubHeight), 'auto', 'auto', (target.offset().left + target.outerWidth() + 10), width)
- .removeClass('tip-override');
- objPos(nub, (tip.outerHeight() / 2) - (nubHeight / 2), 'auto', 'auto', -nubHeight);
- } else if (classes && classes.indexOf('tip-centered-top') > -1) {
- objPos(tip, (target.offset().top - tip.outerHeight() - nubHeight), 'auto', 'auto', (target.offset().left + ((target.outerWidth() - tip.outerWidth()) / 2) ), width)
- .removeClass('tip-override');
- objPos(nub, 'auto', ((tip.outerWidth() / 2) -(nubHeight / 2)), -nubHeight, 'auto');
- } else if (classes && classes.indexOf('tip-centered-bottom') > -1) {
- objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', (target.offset().left + ((target.outerWidth() - tip.outerWidth()) / 2) ), width)
- .removeClass('tip-override');
- objPos(nub, -nubHeight, ((tip.outerWidth() / 2) -(nubHeight / 2)), 'auto', 'auto');
- }
- }
- tip.css('visibility', 'visible').hide();
- },
- inheritable_classes : function (target) {
- var inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'tip-centered-top', 'tip-centered-bottom', 'noradius'].concat(settings.additionalInheritableClasses),
- classes = target.attr('class'),
- filtered = classes ? $.map(classes.split(' '), function (el, i) {
- if ($.inArray(el, inheritables) !== -1) {
- return el;
- }
- }).join(' ') : '';
-
- return $.trim(filtered);
- },
- show : function ($target) {
- var $tip = methods.getTip($target);
-
- methods.reposition($target, $tip, $target.attr('class'));
- $tip.fadeIn(150);
- },
- hide : function ($target) {
- var $tip = methods.getTip($target);
-
- $tip.fadeOut(150);
- },
- reload : function () {
- var $self = $(this);
-
- return ($self.data('tooltips')) ? $self.foundationTooltips('destroy').foundationTooltips('init') : $self.foundationTooltips('init');
- },
- destroy : function () {
- return this.each(function () {
- $(window).off('.tooltip');
- $(settings.selector).off('.tooltip');
- $(settings.tooltipClass).each(function (i) {
- $($(settings.selector).get(i)).attr('title', $(this).text());
- }).remove();
- });
- }
- };
-
- $.fn.foundationTooltips = function (method) {
- if (methods[method]) {
- return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
- } else if (typeof method === 'object' || !method) {
- return methods.init.apply(this, arguments);
- } else {
- $.error('Method ' + method + ' does not exist on jQuery.foundationTooltips');
- }
- };
-}(jQuery, this));
diff --git a/javascripts/jquery.foundation.topbar.js b/javascripts/jquery.foundation.topbar.js
deleted file mode 100644
--- a/javascripts/jquery.foundation.topbar.js
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * jQuery Foundation Top Bar 2.0.3
- * http://foundation.zurb.com
- * Copyright 2012, ZURB
- * Free to use under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
-*/
-
-/*jslint unparam: true, browser: true, indent: 2 */
-
-;(function ($, window, undefined) {
- 'use strict';
-
- var settings = {
- index : 0,
- initialized : false
- },
-
- methods = {
- init : function (options) {
- return this.each(function () {
- settings = $.extend(settings, options);
- settings.$w = $(window),
- settings.$topbar = $('nav.top-bar'),
- settings.$section = settings.$topbar.find('section'),
- settings.$titlebar = settings.$topbar.children('ul:first');
-
- var breakpoint = $("<div class='top-bar-js-breakpoint'/>").appendTo("body");
- settings.breakPoint = breakpoint.width();
- breakpoint.remove();
-
- if (!settings.initialized) {
- methods.assemble();
- settings.initialized = true;
- }
-
- if (!settings.height) {
- methods.largestUL();
- }
-
- if (settings.$topbar.parent().hasClass('fixed')) {
- $('body').css('padding-top',settings.$topbar.outerHeight())
- }
-
- $('.top-bar .toggle-topbar').die('click.fndtn').live('click.fndtn', function (e) {
- e.preventDefault();
-
- if (methods.breakpoint()) {
- settings.$topbar.toggleClass('expanded');
- settings.$topbar.css('min-height', '');
- }
-
- if (!settings.$topbar.hasClass('expanded')) {
- settings.$section.css({left: '0%'});
- settings.$section.find('>.name').css({left: '100%'});
- settings.$section.find('li.moved').removeClass('moved');
- settings.index = 0;
- }
- });
-
- // Show the Dropdown Levels on Click
- $('.top-bar .has-dropdown>a').die('click.fndtn').live('click.fndtn', function (e) {
- if (Modernizr.touch || methods.breakpoint())
- e.preventDefault();
-
- if (methods.breakpoint()) {
- var $this = $(this),
- $selectedLi = $this.closest('li');
-
- settings.index += 1;
- $selectedLi.addClass('moved');
- settings.$section.css({left: -(100 * settings.index) + '%'});
- settings.$section.find('>.name').css({left: 100 * settings.index + '%'});
-
- $this.siblings('ul').height(settings.height + settings.$titlebar.outerHeight(true));
- settings.$topbar.css('min-height', settings.height + settings.$titlebar.outerHeight(true) * 2)
- }
- });
-
- $(window).on('resize.fndtn.topbar',function() {
- if (!methods.breakpoint()) {
- settings.$topbar.css('min-height', '');
- }
- });
-
- // Go up a level on Click
- $('.top-bar .has-dropdown .back').die('click.fndtn').live('click.fndtn', function (e) {
- e.preventDefault();
-
- var $this = $(this),
- $movedLi = $this.closest('li.moved'),
- $previousLevelUl = $movedLi.parent();
-
- settings.index -= 1;
- settings.$section.css({left: -(100 * settings.index) + '%'});
- settings.$section.find('>.name').css({'left': 100 * settings.index + '%'});
-
- if (settings.index === 0) {
- settings.$topbar.css('min-height', 0);
- }
-
- setTimeout(function () {
- $movedLi.removeClass('moved');
- }, 300);
- });
- });
- },
-
- breakpoint : function () {
- return settings.$w.width() < settings.breakPoint;
- },
-
- assemble : function () {
- // Pull element out of the DOM for manipulation
- settings.$section.detach();
-
- settings.$section.find('.has-dropdown>a').each(function () {
- var $link = $(this),
- $dropdown = $link.siblings('.dropdown'),
- $titleLi = $('<li class="title back js-generated"><h5><a href="#"></a></h5></li>');
-
- // Copy link to subnav
- $titleLi.find('h5>a').html($link.html());
- $dropdown.prepend($titleLi);
- });
-
- // Put element back in the DOM
- settings.$section.appendTo(settings.$topbar);
- },
-
- largestUL : function () {
- var uls = settings.$topbar.find('section ul ul'),
- largest = uls.first(),
- total = 0;
-
- uls.each(function () {
- if ($(this).children('li').length > largest.children('li').length) {
- largest = $(this);
- }
- });
-
- largest.children('li').each(function () { total += $(this).outerHeight(true); });
-
- settings.height = total;
- }
- };
-
- $.fn.foundationTopBar = function (method) {
- if (methods[method]) {
- return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
- } else if (typeof method === 'object' || !method) {
- return methods.init.apply(this, arguments);
- } else {
- $.error('Method ' + method + ' does not exist on jQuery.foundationTopBar');
- }
- };
-
- // Monitor scroll position for sticky
- if ($('.sticky').length > 0) {
- var distance = $('.sticky').length ? $('.sticky').offset().top: 0,
- $window = $(window);
-
- $window.scroll(function() {
- if ( $window.scrollTop() >= distance ) {
- $(".sticky").addClass("fixed");
- }
-
- else if ( $window.scrollTop() < distance ) {
- $(".sticky").removeClass("fixed");
- }
- });
- }
-
-}(jQuery, this));
diff --git a/javascripts/jquery.js b/javascripts/jquery.js
deleted file mode 100644
--- a/javascripts/jquery.js
+++ /dev/null
@@ -1,9440 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.8.2
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: Thu Sep 20 2012 21:13:05 GMT-0400 (Eastern Daylight Time)
- */
-(function( window, undefined ) {
-var
- // A central reference to the root jQuery(document)
- rootjQuery,
-
- // The deferred used on DOM ready
- readyList,
-
- // Use the correct document accordingly with window argument (sandbox)
- document = window.document,
- location = window.location,
- navigator = window.navigator,
-
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
-
- // Map over the $ in case of overwrite
- _$ = window.$,
-
- // Save a reference to some core methods
- core_push = Array.prototype.push,
- core_slice = Array.prototype.slice,
- core_indexOf = Array.prototype.indexOf,
- core_toString = Object.prototype.toString,
- core_hasOwn = Object.prototype.hasOwnProperty,
- core_trim = String.prototype.trim,
-
- // Define a local copy of jQuery
- jQuery = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context, rootjQuery );
- },
-
- // Used for matching numbers
- core_pnum = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,
-
- // Used for detecting and trimming whitespace
- core_rnotwhite = /\S/,
- core_rspace = /\s+/,
-
- // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
- rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
- // A simple way to check for HTML strings
- // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
- rquickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
-
- // Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
-
- // JSON RegExp
- rvalidchars = /^[\],:{}\s]*$/,
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
- rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
- rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,
-
- // Matches dashed string for camelizing
- rmsPrefix = /^-ms-/,
- rdashAlpha = /-([\da-z])/gi,
-
- // Used by jQuery.camelCase as callback to replace()
- fcamelCase = function( all, letter ) {
- return ( letter + "" ).toUpperCase();
- },
-
- // The ready event handler and self cleanup method
- DOMContentLoaded = function() {
- if ( document.addEventListener ) {
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- } else if ( document.readyState === "complete" ) {
- // we're here because readyState === "complete" in oldIE
- // which is good enough for us to call the dom ready!
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
- jQuery.ready();
- }
- },
-
- // [[Class]] -> type pairs
- class2type = {};
-
-jQuery.fn = jQuery.prototype = {
- constructor: jQuery,
- init: function( selector, context, rootjQuery ) {
- var match, elem, ret, doc;
-
- // Handle $(""), $(null), $(undefined), $(false)
- if ( !selector ) {
- return this;
- }
-
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
- }
-
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
- // Assume that strings that start and end with <> are HTML and skip the regex check
- match = [ null, selector, null ];
-
- } else {
- match = rquickExpr.exec( selector );
- }
-
- // Match html or make sure no context is specified for #id
- if ( match && (match[1] || !context) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[1] ) {
- context = context instanceof jQuery ? context[0] : context;
- doc = ( context && context.nodeType ? context.ownerDocument || context : document );
-
- // scripts is true for back-compat
- selector = jQuery.parseHTML( match[1], doc, true );
- if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
- this.attr.call( selector, context, true );
- }
-
- return jQuery.merge( this, selector );
-
- // HANDLE: $(#id)
- } else {
- elem = document.getElementById( match[2] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id !== match[2] ) {
- return rootjQuery.find( selector );
- }
-
- // Otherwise, we inject the element directly into the jQuery object
- this.length = 1;
- this[0] = elem;
- }
-
- this.context = document;
- this.selector = selector;
- return this;
- }
-
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return ( context || rootjQuery ).find( selector );
-
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return this.constructor( context ).find( selector );
- }
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return rootjQuery.ready( selector );
- }
-
- if ( selector.selector !== undefined ) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
-
- return jQuery.makeArray( selector, this );
- },
-
- // Start with an empty selector
- selector: "",
-
- // The current version of jQuery being used
- jquery: "1.8.2",
-
- // The default length of a jQuery object is 0
- length: 0,
-
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
- toArray: function() {
- return core_slice.call( this );
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num == null ?
-
- // Return a 'clean' array
- this.toArray() :
-
- // Return just the object
- ( num < 0 ? this[ this.length + num ] : this[ num ] );
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems, name, selector ) {
-
- // Build a new jQuery matched element set
- var ret = jQuery.merge( this.constructor(), elems );
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
-
- ret.context = this.context;
-
- if ( name === "find" ) {
- ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
- } else if ( name ) {
- ret.selector = this.selector + "." + name + "(" + selector + ")";
- }
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- return jQuery.each( this, callback, args );
- },
-
- ready: function( fn ) {
- // Add the callback
- jQuery.ready.promise().done( fn );
-
- return this;
- },
-
- eq: function( i ) {
- i = +i;
- return i === -1 ?
- this.slice( i ) :
- this.slice( i, i + 1 );
- },
-
- first: function() {
- return this.eq( 0 );
- },
-
- last: function() {
- return this.eq( -1 );
- },
-
- slice: function() {
- return this.pushStack( core_slice.apply( this, arguments ),
- "slice", core_slice.call(arguments).join(",") );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function( elem, i ) {
- return callback.call( elem, i, elem );
- }));
- },
-
- end: function() {
- return this.prevObject || this.constructor(null);
- },
-
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: core_push,
- sort: [].sort,
- splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[0] || {},
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
- target = {};
- }
-
- // extend jQuery itself if only one argument is passed
- if ( length === i ) {
- target = this;
- --i;
- }
-
- for ( ; i < length; i++ ) {
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null ) {
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
-
- // Recurse if we're merging plain objects or arrays
- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && jQuery.isArray(src) ? src : [];
-
- } else {
- clone = src && jQuery.isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
-
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
-jQuery.extend({
- noConflict: function( deep ) {
- if ( window.$ === jQuery ) {
- window.$ = _$;
- }
-
- if ( deep && window.jQuery === jQuery ) {
- window.jQuery = _jQuery;
- }
-
- return jQuery;
- },
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
-
- // A counter to track how many items to wait for before
- // the ready event fires. See #6781
- readyWait: 1,
-
- // Hold (or release) the ready event
- holdReady: function( hold ) {
- if ( hold ) {
- jQuery.readyWait++;
- } else {
- jQuery.ready( true );
- }
- },
-
- // Handle when the DOM is ready
- ready: function( wait ) {
-
- // Abort if there are pending holds or we're already ready
- if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
- return;
- }
-
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( !document.body ) {
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
-
- // If there are functions bound, to execute
- readyList.resolveWith( document, [ jQuery ] );
-
- // Trigger any bound ready events
- if ( jQuery.fn.trigger ) {
- jQuery( document ).trigger("ready").off("ready");
- }
- },
-
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- return jQuery.type(obj) === "function";
- },
-
- isArray: Array.isArray || function( obj ) {
- return jQuery.type(obj) === "array";
- },
-
- isWindow: function( obj ) {
- return obj != null && obj == obj.window;
- },
-
- isNumeric: function( obj ) {
- return !isNaN( parseFloat(obj) ) && isFinite( obj );
- },
-
- type: function( obj ) {
- return obj == null ?
- String( obj ) :
- class2type[ core_toString.call(obj) ] || "object";
- },
-
- isPlainObject: function( obj ) {
- // Must be an Object.
- // Because of IE, we also have to check the presence of the constructor property.
- // Make sure that DOM nodes and window objects don't pass through, as well
- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- try {
- // Not own constructor property must be Object
- if ( obj.constructor &&
- !core_hasOwn.call(obj, "constructor") &&
- !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
- return false;
- }
- } catch ( e ) {
- // IE8,9 Will throw exceptions on certain host objects #9897
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
-
- var key;
- for ( key in obj ) {}
-
- return key === undefined || core_hasOwn.call( obj, key );
- },
-
- isEmptyObject: function( obj ) {
- var name;
- for ( name in obj ) {
- return false;
- }
- return true;
- },
-
- error: function( msg ) {
- throw new Error( msg );
- },
-
- // data: string of html
- // context (optional): If specified, the fragment will be created in this context, defaults to document
- // scripts (optional): If true, will include scripts passed in the html string
- parseHTML: function( data, context, scripts ) {
- var parsed;
- if ( !data || typeof data !== "string" ) {
- return null;
- }
- if ( typeof context === "boolean" ) {
- scripts = context;
- context = 0;
- }
- context = context || document;
-
- // Single tag
- if ( (parsed = rsingleTag.exec( data )) ) {
- return [ context.createElement( parsed[1] ) ];
- }
-
- parsed = jQuery.buildFragment( [ data ], context, scripts ? null : [] );
- return jQuery.merge( [],
- (parsed.cacheable ? jQuery.clone( parsed.fragment ) : parsed.fragment).childNodes );
- },
-
- parseJSON: function( data ) {
- if ( !data || typeof data !== "string") {
- return null;
- }
-
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
- data = jQuery.trim( data );
-
- // Attempt to parse using the native JSON parser first
- if ( window.JSON && window.JSON.parse ) {
- return window.JSON.parse( data );
- }
-
- // Make sure the incoming data is actual JSON
- // Logic borrowed from http://json.org/json2.js
- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
- .replace( rvalidtokens, "]" )
- .replace( rvalidbraces, "")) ) {
-
- return ( new Function( "return " + data ) )();
-
- }
- jQuery.error( "Invalid JSON: " + data );
- },
-
- // Cross-browser xml parsing
- parseXML: function( data ) {
- var xml, tmp;
- if ( !data || typeof data !== "string" ) {
- return null;
- }
- try {
- if ( window.DOMParser ) { // Standard
- tmp = new DOMParser();
- xml = tmp.parseFromString( data , "text/xml" );
- } else { // IE
- xml = new ActiveXObject( "Microsoft.XMLDOM" );
- xml.async = "false";
- xml.loadXML( data );
- }
- } catch( e ) {
- xml = undefined;
- }
- if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
- jQuery.error( "Invalid XML: " + data );
- }
- return xml;
- },
-
- noop: function() {},
-
- // Evaluates a script in a global context
- // Workarounds based on findings by Jim Driscoll
- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
- globalEval: function( data ) {
- if ( data && core_rnotwhite.test( data ) ) {
- // We use execScript on Internet Explorer
- // We use an anonymous function so that context is window
- // rather than jQuery in Firefox
- ( window.execScript || function( data ) {
- window[ "eval" ].call( window, data );
- } )( data );
- }
- },
-
- // Convert dashed to camelCase; used by the css and data modules
- // Microsoft forgot to hump their vendor prefix (#9572)
- camelCase: function( string ) {
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
- },
-
- // args is for internal usage only
- each: function( obj, callback, args ) {
- var name,
- i = 0,
- length = obj.length,
- isObj = length === undefined || jQuery.isFunction( obj );
-
- if ( args ) {
- if ( isObj ) {
- for ( name in obj ) {
- if ( callback.apply( obj[ name ], args ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.apply( obj[ i++ ], args ) === false ) {
- break;
- }
- }
- }
-
- // A special, fast, case for the most common use of each
- } else {
- if ( isObj ) {
- for ( name in obj ) {
- if ( callback.call( obj[ name ], name, obj[ name ] ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {
- break;
- }
- }
- }
- }
-
- return obj;
- },
-
- // Use native String.trim function wherever possible
- trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
- function( text ) {
- return text == null ?
- "" :
- core_trim.call( text );
- } :
-
- // Otherwise use our own trimming functionality
- function( text ) {
- return text == null ?
- "" :
- ( text + "" ).replace( rtrim, "" );
- },
-
- // results is for internal usage only
- makeArray: function( arr, results ) {
- var type,
- ret = results || [];
-
- if ( arr != null ) {
- // The window, strings (and functions) also have 'length'
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
- type = jQuery.type( arr );
-
- if ( arr.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( arr ) ) {
- core_push.call( ret, arr );
- } else {
- jQuery.merge( ret, arr );
- }
- }
-
- return ret;
- },
-
- inArray: function( elem, arr, i ) {
- var len;
-
- if ( arr ) {
- if ( core_indexOf ) {
- return core_indexOf.call( arr, elem, i );
- }
-
- len = arr.length;
- i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
- for ( ; i < len; i++ ) {
- // Skip accessing in sparse arrays
- if ( i in arr && arr[ i ] === elem ) {
- return i;
- }
- }
- }
-
- return -1;
- },
-
- merge: function( first, second ) {
- var l = second.length,
- i = first.length,
- j = 0;
-
- if ( typeof l === "number" ) {
- for ( ; j < l; j++ ) {
- first[ i++ ] = second[ j ];
- }
-
- } else {
- while ( second[j] !== undefined ) {
- first[ i++ ] = second[ j++ ];
- }
- }
-
- first.length = i;
-
- return first;
- },
-
- grep: function( elems, callback, inv ) {
- var retVal,
- ret = [],
- i = 0,
- length = elems.length;
- inv = !!inv;
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( ; i < length; i++ ) {
- retVal = !!callback( elems[ i ], i );
- if ( inv !== retVal ) {
- ret.push( elems[ i ] );
- }
- }
-
- return ret;
- },
-
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- var value, key,
- ret = [],
- i = 0,
- length = elems.length,
- // jquery objects are treated as arrays
- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
-
- // Go through the array, translating each of the items to their
- if ( isArray ) {
- for ( ; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
-
- // Go through every key on the object,
- } else {
- for ( key in elems ) {
- value = callback( elems[ key ], key, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
- }
-
- // Flatten any nested arrays
- return ret.concat.apply( [], ret );
- },
-
- // A global GUID counter for objects
- guid: 1,
-
- // Bind a function to a context, optionally partially applying any
- // arguments.
- proxy: function( fn, context ) {
- var tmp, args, proxy;
-
- if ( typeof context === "string" ) {
- tmp = fn[ context ];
- context = fn;
- fn = tmp;
- }
-
- // Quick check to determine if target is callable, in the spec
- // this throws a TypeError, but we will just return undefined.
- if ( !jQuery.isFunction( fn ) ) {
- return undefined;
- }
-
- // Simulated bind
- args = core_slice.call( arguments, 2 );
- proxy = function() {
- return fn.apply( context, args.concat( core_slice.call( arguments ) ) );
- };
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
- return proxy;
- },
-
- // Multifunctional method to get and set values of a collection
- // The value/s can optionally be executed if it's a function
- access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
- var exec,
- bulk = key == null,
- i = 0,
- length = elems.length;
-
- // Sets many values
- if ( key && typeof key === "object" ) {
- for ( i in key ) {
- jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
- }
- chainable = 1;
-
- // Sets one value
- } else if ( value !== undefined ) {
- // Optionally, function values get executed if exec is true
- exec = pass === undefined && jQuery.isFunction( value );
-
- if ( bulk ) {
- // Bulk operations only iterate when executing function values
- if ( exec ) {
- exec = fn;
- fn = function( elem, key, value ) {
- return exec.call( jQuery( elem ), value );
- };
-
- // Otherwise they run against the entire set
- } else {
- fn.call( elems, value );
- fn = null;
- }
- }
-
- if ( fn ) {
- for (; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
- }
- }
-
- chainable = 1;
- }
-
- return chainable ?
- elems :
-
- // Gets
- bulk ?
- fn.call( elems ) :
- length ? fn( elems[0], key ) : emptyGet;
- },
-
- now: function() {
- return ( new Date() ).getTime();
- }
-});
-
-jQuery.ready.promise = function( obj ) {
- if ( !readyList ) {
-
- readyList = jQuery.Deferred();
-
- // Catch cases where $(document).ready() is called after the browser event has already occurred.
- // we once tried to use readyState "interactive" here, but it caused issues like the one
- // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
- if ( document.readyState === "complete" ) {
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- setTimeout( jQuery.ready, 1 );
-
- // Standards-based browsers support DOMContentLoaded
- } else if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", jQuery.ready, false );
-
- // If IE event model is used
- } else {
- // Ensure firing before onload, maybe late but safe also for iframes
- document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
- // A fallback to window.onload, that will always work
- window.attachEvent( "onload", jQuery.ready );
-
- // If IE and not a frame
- // continually check to see if the document is ready
- var top = false;
-
- try {
- top = window.frameElement == null && document.documentElement;
- } catch(e) {}
-
- if ( top && top.doScroll ) {
- (function doScrollCheck() {
- if ( !jQuery.isReady ) {
-
- try {
- // Use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- top.doScroll("left");
- } catch(e) {
- return setTimeout( doScrollCheck, 50 );
- }
-
- // and execute any waiting functions
- jQuery.ready();
- }
- })();
- }
- }
- }
- return readyList.promise( obj );
-};
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-// String to Object options format cache
-var optionsCache = {};
-
-// Convert String-formatted options into Object-formatted ones and store in cache
-function createOptions( options ) {
- var object = optionsCache[ options ] = {};
- jQuery.each( options.split( core_rspace ), function( _, flag ) {
- object[ flag ] = true;
- });
- return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- * options: an optional list of space-separated options that will change how
- * the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- * once: will ensure the callback list can only be fired once (like a Deferred)
- *
- * memory: will keep track of previous values and will call any callback added
- * after the list has been fired right away with the latest "memorized"
- * values (like a Deferred)
- *
- * unique: will ensure a callback can only be added once (no duplicate in the list)
- *
- * stopOnFalse: interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
- // Convert options from String-formatted to Object-formatted if needed
- // (we check in cache first)
- options = typeof options === "string" ?
- ( optionsCache[ options ] || createOptions( options ) ) :
- jQuery.extend( {}, options );
-
- var // Last fire value (for non-forgettable lists)
- memory,
- // Flag to know if list was already fired
- fired,
- // Flag to know if list is currently firing
- firing,
- // First callback to fire (used internally by add and fireWith)
- firingStart,
- // End of the loop when firing
- firingLength,
- // Index of currently firing callback (modified by remove if needed)
- firingIndex,
- // Actual callback list
- list = [],
- // Stack of fire calls for repeatable lists
- stack = !options.once && [],
- // Fire callbacks
- fire = function( data ) {
- memory = options.memory && data;
- fired = true;
- firingIndex = firingStart || 0;
- firingStart = 0;
- firingLength = list.length;
- firing = true;
- for ( ; list && firingIndex < firingLength; firingIndex++ ) {
- if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
- memory = false; // To prevent further calls using add
- break;
- }
- }
- firing = false;
- if ( list ) {
- if ( stack ) {
- if ( stack.length ) {
- fire( stack.shift() );
- }
- } else if ( memory ) {
- list = [];
- } else {
- self.disable();
- }
- }
- },
- // Actual Callbacks object
- self = {
- // Add a callback or a collection of callbacks to the list
- add: function() {
- if ( list ) {
- // First, we save the current length
- var start = list.length;
- (function add( args ) {
- jQuery.each( args, function( _, arg ) {
- var type = jQuery.type( arg );
- if ( type === "function" && ( !options.unique || !self.has( arg ) ) ) {
- list.push( arg );
- } else if ( arg && arg.length && type !== "string" ) {
- // Inspect recursively
- add( arg );
- }
- });
- })( arguments );
- // Do we need to add the callbacks to the
- // current firing batch?
- if ( firing ) {
- firingLength = list.length;
- // With memory, if we're not firing then
- // we should call right away
- } else if ( memory ) {
- firingStart = start;
- fire( memory );
- }
- }
- return this;
- },
- // Remove a callback from the list
- remove: function() {
- if ( list ) {
- jQuery.each( arguments, function( _, arg ) {
- var index;
- while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
- list.splice( index, 1 );
- // Handle firing indexes
- if ( firing ) {
- if ( index <= firingLength ) {
- firingLength--;
- }
- if ( index <= firingIndex ) {
- firingIndex--;
- }
- }
- }
- });
- }
- return this;
- },
- // Control if a given callback is in the list
- has: function( fn ) {
- return jQuery.inArray( fn, list ) > -1;
- },
- // Remove all callbacks from the list
- empty: function() {
- list = [];
- return this;
- },
- // Have the list do nothing anymore
- disable: function() {
- list = stack = memory = undefined;
- return this;
- },
- // Is it disabled?
- disabled: function() {
- return !list;
- },
- // Lock the list in its current state
- lock: function() {
- stack = undefined;
- if ( !memory ) {
- self.disable();
- }
- return this;
- },
- // Is it locked?
- locked: function() {
- return !stack;
- },
- // Call all callbacks with the given context and arguments
- fireWith: function( context, args ) {
- args = args || [];
- args = [ context, args.slice ? args.slice() : args ];
- if ( list && ( !fired || stack ) ) {
- if ( firing ) {
- stack.push( args );
- } else {
- fire( args );
- }
- }
- return this;
- },
- // Call all the callbacks with the given arguments
- fire: function() {
- self.fireWith( this, arguments );
- return this;
- },
- // To know if the callbacks have already been called at least once
- fired: function() {
- return !!fired;
- }
- };
-
- return self;
-};
-jQuery.extend({
-
- Deferred: function( func ) {
- var tuples = [
- // action, add listener, listener list, final state
- [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
- [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
- [ "notify", "progress", jQuery.Callbacks("memory") ]
- ],
- state = "pending",
- promise = {
- state: function() {
- return state;
- },
- always: function() {
- deferred.done( arguments ).fail( arguments );
- return this;
- },
- then: function( /* fnDone, fnFail, fnProgress */ ) {
- var fns = arguments;
- return jQuery.Deferred(function( newDefer ) {
- jQuery.each( tuples, function( i, tuple ) {
- var action = tuple[ 0 ],
- fn = fns[ i ];
- // deferred[ done | fail | progress ] for forwarding actions to newDefer
- deferred[ tuple[1] ]( jQuery.isFunction( fn ) ?
- function() {
- var returned = fn.apply( this, arguments );
- if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise()
- .done( newDefer.resolve )
- .fail( newDefer.reject )
- .progress( newDefer.notify );
- } else {
- newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
- }
- } :
- newDefer[ action ]
- );
- });
- fns = null;
- }).promise();
- },
- // Get a promise for this deferred
- // If obj is provided, the promise aspect is added to the object
- promise: function( obj ) {
- return obj != null ? jQuery.extend( obj, promise ) : promise;
- }
- },
- deferred = {};
-
- // Keep pipe for back-compat
- promise.pipe = promise.then;
-
- // Add list-specific methods
- jQuery.each( tuples, function( i, tuple ) {
- var list = tuple[ 2 ],
- stateString = tuple[ 3 ];
-
- // promise[ done | fail | progress ] = list.add
- promise[ tuple[1] ] = list.add;
-
- // Handle state
- if ( stateString ) {
- list.add(function() {
- // state = [ resolved | rejected ]
- state = stateString;
-
- // [ reject_list | resolve_list ].disable; progress_list.lock
- }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
- }
-
- // deferred[ resolve | reject | notify ] = list.fire
- deferred[ tuple[0] ] = list.fire;
- deferred[ tuple[0] + "With" ] = list.fireWith;
- });
-
- // Make the deferred a promise
- promise.promise( deferred );
-
- // Call given func if any
- if ( func ) {
- func.call( deferred, deferred );
- }
-
- // All done!
- return deferred;
- },
-
- // Deferred helper
- when: function( subordinate /* , ..., subordinateN */ ) {
- var i = 0,
- resolveValues = core_slice.call( arguments ),
- length = resolveValues.length,
-
- // the count of uncompleted subordinates
- remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
- // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
- deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
- // Update function for both resolve and progress values
- updateFunc = function( i, contexts, values ) {
- return function( value ) {
- contexts[ i ] = this;
- values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
- if( values === progressValues ) {
- deferred.notifyWith( contexts, values );
- } else if ( !( --remaining ) ) {
- deferred.resolveWith( contexts, values );
- }
- };
- },
-
- progressValues, progressContexts, resolveContexts;
-
- // add listeners to Deferred subordinates; treat others as resolved
- if ( length > 1 ) {
- progressValues = new Array( length );
- progressContexts = new Array( length );
- resolveContexts = new Array( length );
- for ( ; i < length; i++ ) {
- if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
- resolveValues[ i ].promise()
- .done( updateFunc( i, resolveContexts, resolveValues ) )
- .fail( deferred.reject )
- .progress( updateFunc( i, progressContexts, progressValues ) );
- } else {
- --remaining;
- }
- }
- }
-
- // if we're not waiting on anything, resolve the master
- if ( !remaining ) {
- deferred.resolveWith( resolveContexts, resolveValues );
- }
-
- return deferred.promise();
- }
-});
-jQuery.support = (function() {
-
- var support,
- all,
- a,
- select,
- opt,
- input,
- fragment,
- eventName,
- i,
- isSupported,
- clickFn,
- div = document.createElement("div");
-
- // Preliminary tests
- div.setAttribute( "className", "t" );
- div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
-
- all = div.getElementsByTagName("*");
- a = div.getElementsByTagName("a")[ 0 ];
- a.style.cssText = "top:1px;float:left;opacity:.5";
-
- // Can't get basic test support
- if ( !all || !all.length ) {
- return {};
- }
-
- // First batch of supports tests
- select = document.createElement("select");
- opt = select.appendChild( document.createElement("option") );
- input = div.getElementsByTagName("input")[ 0 ];
-
- support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: ( div.firstChild.nodeType === 3 ),
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText instead)
- style: /top/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: ( a.getAttribute("href") === "/a" ),
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- // Use a regex to work around a WebKit issue. See #5145
- opacity: /^0.5/.test( a.style.opacity ),
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
-
- // Make sure that if no value is specified for a checkbox
- // that it defaults to "on".
- // (WebKit defaults to "" instead)
- checkOn: ( input.value === "on" ),
-
- // Make sure that a selected-by-default option has a working selected property.
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: opt.selected,
-
- // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
- getSetAttribute: div.className !== "t",
-
- // Tests for enctype support on a form(#6743)
- enctype: !!document.createElement("form").enctype,
-
- // Makes sure cloning an html5 element does not cause problems
- // Where outerHTML is undefined, this still works
- html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
-
- // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
- boxModel: ( document.compatMode === "CSS1Compat" ),
-
- // Will be defined later
- submitBubbles: true,
- changeBubbles: true,
- focusinBubbles: false,
- deleteExpando: true,
- noCloneEvent: true,
- inlineBlockNeedsLayout: false,
- shrinkWrapBlocks: false,
- reliableMarginRight: true,
- boxSizingReliable: true,
- pixelPosition: false
- };
-
- // Make sure checked status is properly cloned
- input.checked = true;
- support.noCloneChecked = input.cloneNode( true ).checked;
-
- // Make sure that the options inside disabled selects aren't marked as disabled
- // (WebKit marks them as disabled)
- select.disabled = true;
- support.optDisabled = !opt.disabled;
-
- // Test to see if it's possible to delete an expando from an element
- // Fails in Internet Explorer
- try {
- delete div.test;
- } catch( e ) {
- support.deleteExpando = false;
- }
-
- if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
- div.attachEvent( "onclick", clickFn = function() {
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- support.noCloneEvent = false;
- });
- div.cloneNode( true ).fireEvent("onclick");
- div.detachEvent( "onclick", clickFn );
- }
-
- // Check if a radio maintains its value
- // after being appended to the DOM
- input = document.createElement("input");
- input.value = "t";
- input.setAttribute( "type", "radio" );
- support.radioValue = input.value === "t";
-
- input.setAttribute( "checked", "checked" );
-
- // #11217 - WebKit loses check when the name is after the checked attribute
- input.setAttribute( "name", "t" );
-
- div.appendChild( input );
- fragment = document.createDocumentFragment();
- fragment.appendChild( div.lastChild );
-
- // WebKit doesn't clone checked state correctly in fragments
- support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
- // Check if a disconnected checkbox will retain its checked
- // value of true after appended to the DOM (IE6/7)
- support.appendChecked = input.checked;
-
- fragment.removeChild( input );
- fragment.appendChild( div );
-
- // Technique from Juriy Zaytsev
- // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
- // We only care about the case where non-standard event systems
- // are used, namely in IE. Short-circuiting here helps us to
- // avoid an eval call (in setAttribute) which can cause CSP
- // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
- if ( div.attachEvent ) {
- for ( i in {
- submit: true,
- change: true,
- focusin: true
- }) {
- eventName = "on" + i;
- isSupported = ( eventName in div );
- if ( !isSupported ) {
- div.setAttribute( eventName, "return;" );
- isSupported = ( typeof div[ eventName ] === "function" );
- }
- support[ i + "Bubbles" ] = isSupported;
- }
- }
-
- // Run tests that need a body at doc ready
- jQuery(function() {
- var container, div, tds, marginDiv,
- divReset = "padding:0;margin:0;border:0;display:block;overflow:hidden;",
- body = document.getElementsByTagName("body")[0];
-
- if ( !body ) {
- // Return for frameset docs that don't have a body
- return;
- }
-
- container = document.createElement("div");
- container.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px";
- body.insertBefore( container, body.firstChild );
-
- // Construct the test element
- div = document.createElement("div");
- container.appendChild( div );
-
- // Check if table cells still have offsetWidth/Height when they are set
- // to display:none and there are still other visible table cells in a
- // table row; if so, offsetWidth/Height are not reliable for use when
- // determining if an element has been hidden directly using
- // display:none (it is still safe to use offsets if a parent element is
- // hidden; don safety goggles and see bug #4512 for more information).
- // (only IE 8 fails this test)
- div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
- tds = div.getElementsByTagName("td");
- tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
- tds[ 0 ].style.display = "";
- tds[ 1 ].style.display = "none";
-
- // Check if empty table cells still have offsetWidth/Height
- // (IE <= 8 fail this test)
- support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
- // Check box-sizing and margin behavior
- div.innerHTML = "";
- div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
- support.boxSizing = ( div.offsetWidth === 4 );
- support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
-
- // NOTE: To any future maintainer, we've window.getComputedStyle
- // because jsdom on node.js will break without it.
- if ( window.getComputedStyle ) {
- support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
- support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
-
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. For more
- // info see bug #3333
- // Fails in WebKit before Feb 2011 nightlies
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- marginDiv = document.createElement("div");
- marginDiv.style.cssText = div.style.cssText = divReset;
- marginDiv.style.marginRight = marginDiv.style.width = "0";
- div.style.width = "1px";
- div.appendChild( marginDiv );
- support.reliableMarginRight =
- !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
- }
-
- if ( typeof div.style.zoom !== "undefined" ) {
- // Check if natively block-level elements act like inline-block
- // elements when setting their display to 'inline' and giving
- // them layout
- // (IE < 8 does this)
- div.innerHTML = "";
- div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
-
- // Check if elements with layout shrink-wrap their children
- // (IE 6 does this)
- div.style.display = "block";
- div.style.overflow = "visible";
- div.innerHTML = "<div></div>";
- div.firstChild.style.width = "5px";
- support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
-
- container.style.zoom = 1;
- }
-
- // Null elements to avoid leaks in IE
- body.removeChild( container );
- container = div = tds = marginDiv = null;
- });
-
- // Null elements to avoid leaks in IE
- fragment.removeChild( div );
- all = a = select = opt = input = fragment = div = null;
-
- return support;
-})();
-var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
- rmultiDash = /([A-Z])/g;
-
-jQuery.extend({
- cache: {},
-
- deletedIds: [],
-
- // Remove at next major release (1.9/2.0)
- uuid: 0,
-
- // Unique for each copy of jQuery on the page
- // Non-digits removed to match rinlinejQuery
- expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
-
- // The following elements throw uncatchable exceptions if you
- // attempt to add expando properties to them.
- noData: {
- "embed": true,
- // Ban all objects except for Flash (which handle expandos)
- "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
- "applet": true
- },
-
- hasData: function( elem ) {
- elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
- return !!elem && !isEmptyDataObject( elem );
- },
-
- data: function( elem, name, data, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var thisCache, ret,
- internalKey = jQuery.expando,
- getByName = typeof name === "string",
-
- // We have to handle DOM nodes and JS objects differently because IE6-7
- // can't GC object references properly across the DOM-JS boundary
- isNode = elem.nodeType,
-
- // Only DOM nodes need the global jQuery cache; JS object data is
- // attached directly to the object so GC can occur automatically
- cache = isNode ? jQuery.cache : elem,
-
- // Only defining an ID for JS objects if its cache already exists allows
- // the code to shortcut on the same path as a DOM node with no cache
- id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
-
- // Avoid doing any more work than we need to when trying to get data on an
- // object that has no data at all
- if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
- return;
- }
-
- if ( !id ) {
- // Only DOM nodes need a new unique ID for each element since their data
- // ends up in the global cache
- if ( isNode ) {
- elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;
- } else {
- id = internalKey;
- }
- }
-
- if ( !cache[ id ] ) {
- cache[ id ] = {};
-
- // Avoids exposing jQuery metadata on plain JS objects when the object
- // is serialized using JSON.stringify
- if ( !isNode ) {
- cache[ id ].toJSON = jQuery.noop;
- }
- }
-
- // An object can be passed to jQuery.data instead of a key/value pair; this gets
- // shallow copied over onto the existing cache
- if ( typeof name === "object" || typeof name === "function" ) {
- if ( pvt ) {
- cache[ id ] = jQuery.extend( cache[ id ], name );
- } else {
- cache[ id ].data = jQuery.extend( cache[ id ].data, name );
- }
- }
-
- thisCache = cache[ id ];
-
- // jQuery data() is stored in a separate object inside the object's internal data
- // cache in order to avoid key collisions between internal data and user-defined
- // data.
- if ( !pvt ) {
- if ( !thisCache.data ) {
- thisCache.data = {};
- }
-
- thisCache = thisCache.data;
- }
-
- if ( data !== undefined ) {
- thisCache[ jQuery.camelCase( name ) ] = data;
- }
-
- // Check for both converted-to-camel and non-converted data property names
- // If a data property was specified
- if ( getByName ) {
-
- // First Try to find as-is property data
- ret = thisCache[ name ];
-
- // Test for null|undefined property data
- if ( ret == null ) {
-
- // Try to find the camelCased property
- ret = thisCache[ jQuery.camelCase( name ) ];
- }
- } else {
- ret = thisCache;
- }
-
- return ret;
- },
-
- removeData: function( elem, name, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var thisCache, i, l,
-
- isNode = elem.nodeType,
-
- // See jQuery.data for more information
- cache = isNode ? jQuery.cache : elem,
- id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
-
- // If there is already no cache entry for this object, there is no
- // purpose in continuing
- if ( !cache[ id ] ) {
- return;
- }
-
- if ( name ) {
-
- thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
- if ( thisCache ) {
-
- // Support array or space separated string names for data keys
- if ( !jQuery.isArray( name ) ) {
-
- // try the string as a key before any manipulation
- if ( name in thisCache ) {
- name = [ name ];
- } else {
-
- // split the camel cased version by spaces unless a key with the spaces exists
- name = jQuery.camelCase( name );
- if ( name in thisCache ) {
- name = [ name ];
- } else {
- name = name.split(" ");
- }
- }
- }
-
- for ( i = 0, l = name.length; i < l; i++ ) {
- delete thisCache[ name[i] ];
- }
-
- // If there is no data left in the cache, we want to continue
- // and let the cache object itself get destroyed
- if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
- return;
- }
- }
- }
-
- // See jQuery.data for more information
- if ( !pvt ) {
- delete cache[ id ].data;
-
- // Don't destroy the parent cache unless the internal data object
- // had been the only thing left in it
- if ( !isEmptyDataObject( cache[ id ] ) ) {
- return;
- }
- }
-
- // Destroy the cache
- if ( isNode ) {
- jQuery.cleanData( [ elem ], true );
-
- // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
- } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
- delete cache[ id ];
-
- // When all else fails, null
- } else {
- cache[ id ] = null;
- }
- },
-
- // For internal use only.
- _data: function( elem, name, data ) {
- return jQuery.data( elem, name, data, true );
- },
-
- // A method for determining if a DOM node can handle the data expando
- acceptData: function( elem ) {
- var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
-
- // nodes accept data unless otherwise specified; rejection can be conditional
- return !noData || noData !== true && elem.getAttribute("classid") === noData;
- }
-});
-
-jQuery.fn.extend({
- data: function( key, value ) {
- var parts, part, attr, name, l,
- elem = this[0],
- i = 0,
- data = null;
-
- // Gets all values
- if ( key === undefined ) {
- if ( this.length ) {
- data = jQuery.data( elem );
-
- if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
- attr = elem.attributes;
- for ( l = attr.length; i < l; i++ ) {
- name = attr[i].name;
-
- if ( !name.indexOf( "data-" ) ) {
- name = jQuery.camelCase( name.substring(5) );
-
- dataAttr( elem, name, data[ name ] );
- }
- }
- jQuery._data( elem, "parsedAttrs", true );
- }
- }
-
- return data;
- }
-
- // Sets multiple values
- if ( typeof key === "object" ) {
- return this.each(function() {
- jQuery.data( this, key );
- });
- }
-
- parts = key.split( ".", 2 );
- parts[1] = parts[1] ? "." + parts[1] : "";
- part = parts[1] + "!";
-
- return jQuery.access( this, function( value ) {
-
- if ( value === undefined ) {
- data = this.triggerHandler( "getData" + part, [ parts[0] ] );
-
- // Try to fetch any internally stored data first
- if ( data === undefined && elem ) {
- data = jQuery.data( elem, key );
- data = dataAttr( elem, key, data );
- }
-
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
- }
-
- parts[1] = value;
- this.each(function() {
- var self = jQuery( this );
-
- self.triggerHandler( "setData" + part, parts );
- jQuery.data( this, key, value );
- self.triggerHandler( "changeData" + part, parts );
- });
- }, null, value, arguments.length > 1, null, false );
- },
-
- removeData: function( key ) {
- return this.each(function() {
- jQuery.removeData( this, key );
- });
- }
-});
-
-function dataAttr( elem, key, data ) {
- // If nothing was found internally, try to fetch any
- // data from the HTML5 data-* attribute
- if ( data === undefined && elem.nodeType === 1 ) {
-
- var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
- data = elem.getAttribute( name );
-
- if ( typeof data === "string" ) {
- try {
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null :
- // Only convert to a number if it doesn't change the string
- +data + "" === data ? +data :
- rbrace.test( data ) ? jQuery.parseJSON( data ) :
- data;
- } catch( e ) {}
-
- // Make sure we set the data so it isn't changed later
- jQuery.data( elem, key, data );
-
- } else {
- data = undefined;
- }
- }
-
- return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
- var name;
- for ( name in obj ) {
-
- // if the public data object is empty, the private is still empty
- if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
- continue;
- }
- if ( name !== "toJSON" ) {
- return false;
- }
- }
-
- return true;
-}
-jQuery.extend({
- queue: function( elem, type, data ) {
- var queue;
-
- if ( elem ) {
- type = ( type || "fx" ) + "queue";
- queue = jQuery._data( elem, type );
-
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( data ) {
- if ( !queue || jQuery.isArray(data) ) {
- queue = jQuery._data( elem, type, jQuery.makeArray(data) );
- } else {
- queue.push( data );
- }
- }
- return queue || [];
- }
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
-
- var queue = jQuery.queue( elem, type ),
- startLength = queue.length,
- fn = queue.shift(),
- hooks = jQuery._queueHooks( elem, type ),
- next = function() {
- jQuery.dequeue( elem, type );
- };
-
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- startLength--;
- }
-
- if ( fn ) {
-
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift( "inprogress" );
- }
-
- // clear up the last queue stop function
- delete hooks.stop;
- fn.call( elem, next, hooks );
- }
-
- if ( !startLength && hooks ) {
- hooks.empty.fire();
- }
- },
-
- // not intended for public consumption - generates a queueHooks object, or returns the current one
- _queueHooks: function( elem, type ) {
- var key = type + "queueHooks";
- return jQuery._data( elem, key ) || jQuery._data( elem, key, {
- empty: jQuery.Callbacks("once memory").add(function() {
- jQuery.removeData( elem, type + "queue", true );
- jQuery.removeData( elem, key, true );
- })
- });
- }
-});
-
-jQuery.fn.extend({
- queue: function( type, data ) {
- var setter = 2;
-
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- setter--;
- }
-
- if ( arguments.length < setter ) {
- return jQuery.queue( this[0], type );
- }
-
- return data === undefined ?
- this :
- this.each(function() {
- var queue = jQuery.queue( this, type, data );
-
- // ensure a hooks for this queue
- jQuery._queueHooks( this, type );
-
- if ( type === "fx" && queue[0] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- });
- },
- dequeue: function( type ) {
- return this.each(function() {
- jQuery.dequeue( this, type );
- });
- },
- // Based off of the plugin by Clint Helfers, with permission.
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
- delay: function( time, type ) {
- time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
- type = type || "fx";
-
- return this.queue( type, function( next, hooks ) {
- var timeout = setTimeout( next, time );
- hooks.stop = function() {
- clearTimeout( timeout );
- };
- });
- },
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- },
- // Get a promise resolved when queues of a certain type
- // are emptied (fx is the type by default)
- promise: function( type, obj ) {
- var tmp,
- count = 1,
- defer = jQuery.Deferred(),
- elements = this,
- i = this.length,
- resolve = function() {
- if ( !( --count ) ) {
- defer.resolveWith( elements, [ elements ] );
- }
- };
-
- if ( typeof type !== "string" ) {
- obj = type;
- type = undefined;
- }
- type = type || "fx";
-
- while( i-- ) {
- tmp = jQuery._data( elements[ i ], type + "queueHooks" );
- if ( tmp && tmp.empty ) {
- count++;
- tmp.empty.add( resolve );
- }
- }
- resolve();
- return defer.promise( obj );
- }
-});
-var nodeHook, boolHook, fixSpecified,
- rclass = /[\t\r\n]/g,
- rreturn = /\r/g,
- rtype = /^(?:button|input)$/i,
- rfocusable = /^(?:button|input|object|select|textarea)$/i,
- rclickable = /^a(?:rea|)$/i,
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
- getSetAttribute = jQuery.support.getSetAttribute;
-
-jQuery.fn.extend({
- attr: function( name, value ) {
- return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
- },
-
- removeAttr: function( name ) {
- return this.each(function() {
- jQuery.removeAttr( this, name );
- });
- },
-
- prop: function( name, value ) {
- return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
- },
-
- removeProp: function( name ) {
- name = jQuery.propFix[ name ] || name;
- return this.each(function() {
- // try/catch handles cases where IE balks (such as removing a property on window)
- try {
- this[ name ] = undefined;
- delete this[ name ];
- } catch( e ) {}
- });
- },
-
- addClass: function( value ) {
- var classNames, i, l, elem,
- setClass, c, cl;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).addClass( value.call(this, j, this.className) );
- });
- }
-
- if ( value && typeof value === "string" ) {
- classNames = value.split( core_rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
-
- if ( elem.nodeType === 1 ) {
- if ( !elem.className && classNames.length === 1 ) {
- elem.className = value;
-
- } else {
- setClass = " " + elem.className + " ";
-
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- if ( setClass.indexOf( " " + classNames[ c ] + " " ) < 0 ) {
- setClass += classNames[ c ] + " ";
- }
- }
- elem.className = jQuery.trim( setClass );
- }
- }
- }
- }
-
- return this;
- },
-
- removeClass: function( value ) {
- var removes, className, elem, c, cl, i, l;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).removeClass( value.call(this, j, this.className) );
- });
- }
- if ( (value && typeof value === "string") || value === undefined ) {
- removes = ( value || "" ).split( core_rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
- if ( elem.nodeType === 1 && elem.className ) {
-
- className = (" " + elem.className + " ").replace( rclass, " " );
-
- // loop over each item in the removal list
- for ( c = 0, cl = removes.length; c < cl; c++ ) {
- // Remove until there is nothing to remove,
- while ( className.indexOf(" " + removes[ c ] + " ") >= 0 ) {
- className = className.replace( " " + removes[ c ] + " " , " " );
- }
- }
- elem.className = value ? jQuery.trim( className ) : "";
- }
- }
- }
-
- return this;
- },
-
- toggleClass: function( value, stateVal ) {
- var type = typeof value,
- isBool = typeof stateVal === "boolean";
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( i ) {
- jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
- });
- }
-
- return this.each(function() {
- if ( type === "string" ) {
- // toggle individual class names
- var className,
- i = 0,
- self = jQuery( this ),
- state = stateVal,
- classNames = value.split( core_rspace );
-
- while ( (className = classNames[ i++ ]) ) {
- // check each className given, space separated list
- state = isBool ? state : !self.hasClass( className );
- self[ state ? "addClass" : "removeClass" ]( className );
- }
-
- } else if ( type === "undefined" || type === "boolean" ) {
- if ( this.className ) {
- // store className if set
- jQuery._data( this, "__className__", this.className );
- }
-
- // toggle whole className
- this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
- }
- });
- },
-
- hasClass: function( selector ) {
- var className = " " + selector + " ",
- i = 0,
- l = this.length;
- for ( ; i < l; i++ ) {
- if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
- return true;
- }
- }
-
- return false;
- },
-
- val: function( value ) {
- var hooks, ret, isFunction,
- elem = this[0];
-
- if ( !arguments.length ) {
- if ( elem ) {
- hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
- return ret;
- }
-
- ret = elem.value;
-
- return typeof ret === "string" ?
- // handle most common string cases
- ret.replace(rreturn, "") :
- // handle cases where value is null/undef or number
- ret == null ? "" : ret;
- }
-
- return;
- }
-
- isFunction = jQuery.isFunction( value );
-
- return this.each(function( i ) {
- var val,
- self = jQuery(this);
-
- if ( this.nodeType !== 1 ) {
- return;
- }
-
- if ( isFunction ) {
- val = value.call( this, i, self.val() );
- } else {
- val = value;
- }
-
- // Treat null/undefined as ""; convert numbers to string
- if ( val == null ) {
- val = "";
- } else if ( typeof val === "number" ) {
- val += "";
- } else if ( jQuery.isArray( val ) ) {
- val = jQuery.map(val, function ( value ) {
- return value == null ? "" : value + "";
- });
- }
-
- hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
- // If set returns undefined, fall back to normal setting
- if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
- this.value = val;
- }
- });
- }
-});
-
-jQuery.extend({
- valHooks: {
- option: {
- get: function( elem ) {
- // attributes.value is undefined in Blackberry 4.7 but
- // uses .value. See #6932
- var val = elem.attributes.value;
- return !val || val.specified ? elem.value : elem.text;
- }
- },
- select: {
- get: function( elem ) {
- var value, i, max, option,
- index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type === "select-one";
-
- // Nothing was selected
- if ( index < 0 ) {
- return null;
- }
-
- // Loop through all the selected options
- i = one ? index : 0;
- max = one ? index + 1 : options.length;
- for ( ; i < max; i++ ) {
- option = options[ i ];
-
- // Don't return options that are disabled or in a disabled optgroup
- if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
- (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
-
- // Get the specific value for the option
- value = jQuery( option ).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
- }
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
- if ( one && !values.length && options.length ) {
- return jQuery( options[ index ] ).val();
- }
-
- return values;
- },
-
- set: function( elem, value ) {
- var values = jQuery.makeArray( value );
-
- jQuery(elem).find("option").each(function() {
- this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
- });
-
- if ( !values.length ) {
- elem.selectedIndex = -1;
- }
- return values;
- }
- }
- },
-
- // Unused in 1.8, left in so attrFn-stabbers won't die; remove in 1.9
- attrFn: {},
-
- attr: function( elem, name, value, pass ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
-
- // don't get/set attributes on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- if ( pass && jQuery.isFunction( jQuery.fn[ name ] ) ) {
- return jQuery( elem )[ name ]( value );
- }
-
- // Fallback to prop when attributes are not supported
- if ( typeof elem.getAttribute === "undefined" ) {
- return jQuery.prop( elem, name, value );
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- // All attributes are lowercase
- // Grab necessary hook if one is defined
- if ( notxml ) {
- name = name.toLowerCase();
- hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
- }
-
- if ( value !== undefined ) {
-
- if ( value === null ) {
- jQuery.removeAttr( elem, name );
- return;
-
- } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- elem.setAttribute( name, value + "" );
- return value;
- }
-
- } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
-
- ret = elem.getAttribute( name );
-
- // Non-existent attributes return null, we normalize to undefined
- return ret === null ?
- undefined :
- ret;
- }
- },
-
- removeAttr: function( elem, value ) {
- var propName, attrNames, name, isBool,
- i = 0;
-
- if ( value && elem.nodeType === 1 ) {
-
- attrNames = value.split( core_rspace );
-
- for ( ; i < attrNames.length; i++ ) {
- name = attrNames[ i ];
-
- if ( name ) {
- propName = jQuery.propFix[ name ] || name;
- isBool = rboolean.test( name );
-
- // See #9699 for explanation of this approach (setting first, then removal)
- // Do not do this for boolean attributes (see #10870)
- if ( !isBool ) {
- jQuery.attr( elem, name, "" );
- }
- elem.removeAttribute( getSetAttribute ? name : propName );
-
- // Set corresponding property to false for boolean attributes
- if ( isBool && propName in elem ) {
- elem[ propName ] = false;
- }
- }
- }
- }
- },
-
- attrHooks: {
- type: {
- set: function( elem, value ) {
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
- jQuery.error( "type property can't be changed" );
- } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
- // Setting the type on a radio button after the value resets the value in IE6-9
- // Reset value to it's default in case type is set after value
- // This is for element creation
- var val = elem.value;
- elem.setAttribute( "type", value );
- if ( val ) {
- elem.value = val;
- }
- return value;
- }
- }
- },
- // Use the value property for back compat
- // Use the nodeHook for button elements in IE6/7 (#1954)
- value: {
- get: function( elem, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.get( elem, name );
- }
- return name in elem ?
- elem.value :
- null;
- },
- set: function( elem, value, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.set( elem, value, name );
- }
- // Does not return so that setAttribute is also used
- elem.value = value;
- }
- }
- },
-
- propFix: {
- tabindex: "tabIndex",
- readonly: "readOnly",
- "for": "htmlFor",
- "class": "className",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- cellpadding: "cellPadding",
- rowspan: "rowSpan",
- colspan: "colSpan",
- usemap: "useMap",
- frameborder: "frameBorder",
- contenteditable: "contentEditable"
- },
-
- prop: function( elem, name, value ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
-
- // don't get/set properties on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- if ( notxml ) {
- // Fix name and attach hooks
- name = jQuery.propFix[ name ] || name;
- hooks = jQuery.propHooks[ name ];
- }
-
- if ( value !== undefined ) {
- if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- return ( elem[ name ] = value );
- }
-
- } else {
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
- return elem[ name ];
- }
- }
- },
-
- propHooks: {
- tabIndex: {
- get: function( elem ) {
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- var attributeNode = elem.getAttributeNode("tabindex");
-
- return attributeNode && attributeNode.specified ?
- parseInt( attributeNode.value, 10 ) :
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- undefined;
- }
- }
- }
-});
-
-// Hook for boolean attributes
-boolHook = {
- get: function( elem, name ) {
- // Align boolean attributes with corresponding properties
- // Fall back to attribute presence where some booleans are not supported
- var attrNode,
- property = jQuery.prop( elem, name );
- return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
- name.toLowerCase() :
- undefined;
- },
- set: function( elem, value, name ) {
- var propName;
- if ( value === false ) {
- // Remove boolean attributes when set to false
- jQuery.removeAttr( elem, name );
- } else {
- // value is true since we know at this point it's type boolean and not false
- // Set boolean attributes to the same name and set the DOM property
- propName = jQuery.propFix[ name ] || name;
- if ( propName in elem ) {
- // Only set the IDL specifically if it already exists on the element
- elem[ propName ] = true;
- }
-
- elem.setAttribute( name, name.toLowerCase() );
- }
- return name;
- }
-};
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
- fixSpecified = {
- name: true,
- id: true,
- coords: true
- };
-
- // Use this for any attribute in IE6/7
- // This fixes almost every IE6/7 issue
- nodeHook = jQuery.valHooks.button = {
- get: function( elem, name ) {
- var ret;
- ret = elem.getAttributeNode( name );
- return ret && ( fixSpecified[ name ] ? ret.value !== "" : ret.specified ) ?
- ret.value :
- undefined;
- },
- set: function( elem, value, name ) {
- // Set the existing or create a new attribute node
- var ret = elem.getAttributeNode( name );
- if ( !ret ) {
- ret = document.createAttribute( name );
- elem.setAttributeNode( ret );
- }
- return ( ret.value = value + "" );
- }
- };
-
- // Set width and height to auto instead of 0 on empty string( Bug #8150 )
- // This is for removals
- jQuery.each([ "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- set: function( elem, value ) {
- if ( value === "" ) {
- elem.setAttribute( name, "auto" );
- return value;
- }
- }
- });
- });
-
- // Set contenteditable to false on removals(#10429)
- // Setting to empty string throws an error as an invalid value
- jQuery.attrHooks.contenteditable = {
- get: nodeHook.get,
- set: function( elem, value, name ) {
- if ( value === "" ) {
- value = "false";
- }
- nodeHook.set( elem, value, name );
- }
- };
-}
-
-
-// Some attributes require a special call on IE
-if ( !jQuery.support.hrefNormalized ) {
- jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- get: function( elem ) {
- var ret = elem.getAttribute( name, 2 );
- return ret === null ? undefined : ret;
- }
- });
- });
-}
-
-if ( !jQuery.support.style ) {
- jQuery.attrHooks.style = {
- get: function( elem ) {
- // Return undefined in the case of empty string
- // Normalize to lowercase since IE uppercases css property names
- return elem.style.cssText.toLowerCase() || undefined;
- },
- set: function( elem, value ) {
- return ( elem.style.cssText = value + "" );
- }
- };
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
- jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
- get: function( elem ) {
- var parent = elem.parentNode;
-
- if ( parent ) {
- parent.selectedIndex;
-
- // Make sure that it also works with optgroups, see #5701
- if ( parent.parentNode ) {
- parent.parentNode.selectedIndex;
- }
- }
- return null;
- }
- });
-}
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
- jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
- jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = {
- get: function( elem ) {
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
- return elem.getAttribute("value") === null ? "on" : elem.value;
- }
- };
- });
-}
-jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
- set: function( elem, value ) {
- if ( jQuery.isArray( value ) ) {
- return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
- }
- }
- });
-});
-var rformElems = /^(?:textarea|input|select)$/i,
- rtypenamespace = /^([^\.]*|)(?:\.(.+)|)$/,
- rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
- rkeyEvent = /^key/,
- rmouseEvent = /^(?:mouse|contextmenu)|click/,
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
- hoverHack = function( events ) {
- return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
- };
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
- add: function( elem, types, handler, data, selector ) {
-
- var elemData, eventHandle, events,
- t, tns, type, namespaces, handleObj,
- handleObjIn, handlers, special;
-
- // Don't attach events to noData or text/comment nodes (allow plain objects tho)
- if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
- return;
- }
-
- // Caller can pass in an object of custom data in lieu of the handler
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- selector = handleObjIn.selector;
- }
-
- // Make sure that the handler has a unique ID, used to find/remove it later
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure and main handler, if this is the first
- events = elemData.events;
- if ( !events ) {
- elemData.events = events = {};
- }
- eventHandle = elemData.handle;
- if ( !eventHandle ) {
- elemData.handle = eventHandle = function( e ) {
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
- jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
- undefined;
- };
- // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
- eventHandle.elem = elem;
- }
-
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- types = jQuery.trim( hoverHack(types) ).split( " " );
- for ( t = 0; t < types.length; t++ ) {
-
- tns = rtypenamespace.exec( types[t] ) || [];
- type = tns[1];
- namespaces = ( tns[2] || "" ).split( "." ).sort();
-
- // If event changes its type, use the special event handlers for the changed type
- special = jQuery.event.special[ type ] || {};
-
- // If selector defined, determine special event api type, otherwise given type
- type = ( selector ? special.delegateType : special.bindType ) || type;
-
- // Update special based on newly reset type
- special = jQuery.event.special[ type ] || {};
-
- // handleObj is passed to all event handlers
- handleObj = jQuery.extend({
- type: type,
- origType: tns[1],
- data: data,
- handler: handler,
- guid: handler.guid,
- selector: selector,
- needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
- namespace: namespaces.join(".")
- }, handleObjIn );
-
- // Init the event handler queue if we're the first
- handlers = events[ type ];
- if ( !handlers ) {
- handlers = events[ type ] = [];
- handlers.delegateCount = 0;
-
- // Only use addEventListener/attachEvent if the special events handler returns false
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
- // Bind the global event handler to the element
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle, false );
-
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add to the element's handler list, delegates in front
- if ( selector ) {
- handlers.splice( handlers.delegateCount++, 0, handleObj );
- } else {
- handlers.push( handleObj );
- }
-
- // Keep track of which events have ever been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
-
- global: {},
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, selector, mappedTypes ) {
-
- var t, tns, type, origType, namespaces, origCount,
- j, events, special, eventType, handleObj,
- elemData = jQuery.hasData( elem ) && jQuery._data( elem );
-
- if ( !elemData || !(events = elemData.events) ) {
- return;
- }
-
- // Once for each type.namespace in types; type may be omitted
- types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
- for ( t = 0; t < types.length; t++ ) {
- tns = rtypenamespace.exec( types[t] ) || [];
- type = origType = tns[1];
- namespaces = tns[2];
-
- // Unbind all events (on this namespace, if provided) for the element
- if ( !type ) {
- for ( type in events ) {
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
- }
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
- type = ( selector? special.delegateType : special.bindType ) || type;
- eventType = events[ type ] || [];
- origCount = eventType.length;
- namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
-
- // Remove matching events
- for ( j = 0; j < eventType.length; j++ ) {
- handleObj = eventType[ j ];
-
- if ( ( mappedTypes || origType === handleObj.origType ) &&
- ( !handler || handler.guid === handleObj.guid ) &&
- ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
- ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
- eventType.splice( j--, 1 );
-
- if ( handleObj.selector ) {
- eventType.delegateCount--;
- }
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
- }
-
- // Remove generic event handler if we removed something and no more handlers exist
- // (avoids potential for endless recursion during removal of special event handlers)
- if ( eventType.length === 0 && origCount !== eventType.length ) {
- if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
- jQuery.removeEvent( elem, type, elemData.handle );
- }
-
- delete events[ type ];
- }
- }
-
- // Remove the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- delete elemData.handle;
-
- // removeData also checks for emptiness and clears the expando if empty
- // so use it instead of delete
- jQuery.removeData( elem, "events", true );
- }
- },
-
- // Events that are safe to short-circuit if no handlers are attached.
- // Native DOM events should not be added, they may have inline handlers.
- customEvent: {
- "getData": true,
- "setData": true,
- "changeData": true
- },
-
- trigger: function( event, data, elem, onlyHandlers ) {
- // Don't do events on text and comment nodes
- if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
- return;
- }
-
- // Event object or event type
- var cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType,
- type = event.type || event,
- namespaces = [];
-
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
- return;
- }
-
- if ( type.indexOf( "!" ) >= 0 ) {
- // Exclusive events trigger only for the exact event (no namespaces)
- type = type.slice(0, -1);
- exclusive = true;
- }
-
- if ( type.indexOf( "." ) >= 0 ) {
- // Namespaced trigger; create a regexp to match event type in handle()
- namespaces = type.split(".");
- type = namespaces.shift();
- namespaces.sort();
- }
-
- if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
- // No jQuery handlers for this event type, and it can't have inline handlers
- return;
- }
-
- // Caller can pass in an Event, Object, or just an event type string
- event = typeof event === "object" ?
- // jQuery.Event object
- event[ jQuery.expando ] ? event :
- // Object literal
- new jQuery.Event( type, event ) :
- // Just the event type (string)
- new jQuery.Event( type );
-
- event.type = type;
- event.isTrigger = true;
- event.exclusive = exclusive;
- event.namespace = namespaces.join( "." );
- event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
- ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
-
- // Handle a global trigger
- if ( !elem ) {
-
- // TODO: Stop taunting the data cache; remove global events and always attach to document
- cache = jQuery.cache;
- for ( i in cache ) {
- if ( cache[ i ].events && cache[ i ].events[ type ] ) {
- jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
- }
- }
- return;
- }
-
- // Clean up the event in case it is being reused
- event.result = undefined;
- if ( !event.target ) {
- event.target = elem;
- }
-
- // Clone any incoming data and prepend the event, creating the handler arg list
- data = data != null ? jQuery.makeArray( data ) : [];
- data.unshift( event );
-
- // Allow special events to draw outside the lines
- special = jQuery.event.special[ type ] || {};
- if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
- return;
- }
-
- // Determine event propagation path in advance, per W3C events spec (#9951)
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
- eventPath = [[ elem, special.bindType || type ]];
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
- bubbleType = special.delegateType || type;
- cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
- for ( old = elem; cur; cur = cur.parentNode ) {
- eventPath.push([ cur, bubbleType ]);
- old = cur;
- }
-
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
- if ( old === (elem.ownerDocument || document) ) {
- eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
- }
- }
-
- // Fire handlers on the event path
- for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
-
- cur = eventPath[i][0];
- event.type = eventPath[i][1];
-
- handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
- if ( handle ) {
- handle.apply( cur, data );
- }
- // Note that this is a bare JS function and not a jQuery handler
- handle = ontype && cur[ ontype ];
- if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
- event.preventDefault();
- }
- }
- event.type = type;
-
- // If nobody prevented the default action, do it now
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
- if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
- !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
-
- // Call a native DOM method on the target with the same name name as the event.
- // Can't use an .isFunction() check here because IE6/7 fails that test.
- // Don't do default actions on window, that's where global variables be (#6170)
- // IE<9 dies on focus/blur to hidden element (#1486)
- if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
-
- // Don't re-trigger an onFOO event when we call its FOO() method
- old = elem[ ontype ];
-
- if ( old ) {
- elem[ ontype ] = null;
- }
-
- // Prevent re-triggering of the same event, since we already bubbled it above
- jQuery.event.triggered = type;
- elem[ type ]();
- jQuery.event.triggered = undefined;
-
- if ( old ) {
- elem[ ontype ] = old;
- }
- }
- }
- }
-
- return event.result;
- },
-
- dispatch: function( event ) {
-
- // Make a writable jQuery.Event from the native event object
- event = jQuery.event.fix( event || window.event );
-
- var i, j, cur, ret, selMatch, matched, matches, handleObj, sel, related,
- handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
- delegateCount = handlers.delegateCount,
- args = core_slice.call( arguments ),
- run_all = !event.exclusive && !event.namespace,
- special = jQuery.event.special[ event.type ] || {},
- handlerQueue = [];
-
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
- args[0] = event;
- event.delegateTarget = this;
-
- // Call the preDispatch hook for the mapped type, and let it bail if desired
- if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
- return;
- }
-
- // Determine handlers that should run if there are delegated events
- // Avoid non-left-click bubbling in Firefox (#3861)
- if ( delegateCount && !(event.button && event.type === "click") ) {
-
- for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
-
- // Don't process clicks (ONLY) on disabled elements (#6911, #8165, #11382, #11764)
- if ( cur.disabled !== true || event.type !== "click" ) {
- selMatch = {};
- matches = [];
- for ( i = 0; i < delegateCount; i++ ) {
- handleObj = handlers[ i ];
- sel = handleObj.selector;
-
- if ( selMatch[ sel ] === undefined ) {
- selMatch[ sel ] = handleObj.needsContext ?
- jQuery( sel, this ).index( cur ) >= 0 :
- jQuery.find( sel, this, null, [ cur ] ).length;
- }
- if ( selMatch[ sel ] ) {
- matches.push( handleObj );
- }
- }
- if ( matches.length ) {
- handlerQueue.push({ elem: cur, matches: matches });
- }
- }
- }
- }
-
- // Add the remaining (directly-bound) handlers
- if ( handlers.length > delegateCount ) {
- handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
- }
-
- // Run delegates first; they may want to stop propagation beneath us
- for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
- matched = handlerQueue[ i ];
- event.currentTarget = matched.elem;
-
- for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
- handleObj = matched.matches[ j ];
-
- // Triggered event must either 1) be non-exclusive and have no namespace, or
- // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
- if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
-
- event.data = handleObj.data;
- event.handleObj = handleObj;
-
- ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
- .apply( matched.elem, args );
-
- if ( ret !== undefined ) {
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
- }
- }
- }
-
- // Call the postDispatch hook for the mapped type
- if ( special.postDispatch ) {
- special.postDispatch.call( this, event );
- }
-
- return event.result;
- },
-
- // Includes some event props shared by KeyEvent and MouseEvent
- // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
- props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
- fixHooks: {},
-
- keyHooks: {
- props: "char charCode key keyCode".split(" "),
- filter: function( event, original ) {
-
- // Add which for key events
- if ( event.which == null ) {
- event.which = original.charCode != null ? original.charCode : original.keyCode;
- }
-
- return event;
- }
- },
-
- mouseHooks: {
- props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
- filter: function( event, original ) {
- var eventDoc, doc, body,
- button = original.button,
- fromElement = original.fromElement;
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && original.clientX != null ) {
- eventDoc = event.target.ownerDocument || document;
- doc = eventDoc.documentElement;
- body = eventDoc.body;
-
- event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
- event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
- }
-
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && fromElement ) {
- event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
- }
-
- // Add which for click: 1 === left; 2 === middle; 3 === right
- // Note: button is not normalized, so don't use it
- if ( !event.which && button !== undefined ) {
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
- }
-
- return event;
- }
- },
-
- fix: function( event ) {
- if ( event[ jQuery.expando ] ) {
- return event;
- }
-
- // Create a writable copy of the event object and normalize some properties
- var i, prop,
- originalEvent = event,
- fixHook = jQuery.event.fixHooks[ event.type ] || {},
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
- event = jQuery.Event( originalEvent );
-
- for ( i = copy.length; i; ) {
- prop = copy[ --i ];
- event[ prop ] = originalEvent[ prop ];
- }
-
- // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
- if ( !event.target ) {
- event.target = originalEvent.srcElement || document;
- }
-
- // Target should not be a text node (#504, Safari)
- if ( event.target.nodeType === 3 ) {
- event.target = event.target.parentNode;
- }
-
- // For mouse/key events, metaKey==false if it's undefined (#3368, #11328; IE6/7/8)
- event.metaKey = !!event.metaKey;
-
- return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
- },
-
- special: {
- load: {
- // Prevent triggered image.load events from bubbling to window.load
- noBubble: true
- },
-
- focus: {
- delegateType: "focusin"
- },
- blur: {
- delegateType: "focusout"
- },
-
- beforeunload: {
- setup: function( data, namespaces, eventHandle ) {
- // We only want to do this special case on windows
- if ( jQuery.isWindow( this ) ) {
- this.onbeforeunload = eventHandle;
- }
- },
-
- teardown: function( namespaces, eventHandle ) {
- if ( this.onbeforeunload === eventHandle ) {
- this.onbeforeunload = null;
- }
- }
- }
- },
-
- simulate: function( type, elem, event, bubble ) {
- // Piggyback on a donor event to simulate a different one.
- // Fake originalEvent to avoid donor's stopPropagation, but if the
- // simulated event prevents default then we do the same on the donor.
- var e = jQuery.extend(
- new jQuery.Event(),
- event,
- { type: type,
- isSimulated: true,
- originalEvent: {}
- }
- );
- if ( bubble ) {
- jQuery.event.trigger( e, null, elem );
- } else {
- jQuery.event.dispatch.call( elem, e );
- }
- if ( e.isDefaultPrevented() ) {
- event.preventDefault();
- }
- }
-};
-
-// Some plugins are using, but it's undocumented/deprecated and will be removed.
-// The 1.7 special event interface should provide all the hooks needed now.
-jQuery.event.handle = jQuery.event.dispatch;
-
-jQuery.removeEvent = document.removeEventListener ?
- function( elem, type, handle ) {
- if ( elem.removeEventListener ) {
- elem.removeEventListener( type, handle, false );
- }
- } :
- function( elem, type, handle ) {
- var name = "on" + type;
-
- if ( elem.detachEvent ) {
-
- // #8545, #7054, preventing memory leaks for custom events in IE6-8 –
- // detachEvent needed property on element, by name of that event, to properly expose it to GC
- if ( typeof elem[ name ] === "undefined" ) {
- elem[ name ] = null;
- }
-
- elem.detachEvent( name, handle );
- }
- };
-
-jQuery.Event = function( src, props ) {
- // Allow instantiation without the 'new' keyword
- if ( !(this instanceof jQuery.Event) ) {
- return new jQuery.Event( src, props );
- }
-
- // Event object
- if ( src && src.type ) {
- this.originalEvent = src;
- this.type = src.type;
-
- // Events bubbling up the document may have been marked as prevented
- // by a handler lower down the tree; reflect the correct value.
- this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
- src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
-
- // Event type
- } else {
- this.type = src;
- }
-
- // Put explicitly provided properties onto the event object
- if ( props ) {
- jQuery.extend( this, props );
- }
-
- // Create a timestamp if incoming event doesn't have one
- this.timeStamp = src && src.timeStamp || jQuery.now();
-
- // Mark it as fixed
- this[ jQuery.expando ] = true;
-};
-
-function returnFalse() {
- return false;
-}
-function returnTrue() {
- return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- preventDefault: function() {
- this.isDefaultPrevented = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
-
- // if preventDefault exists run it on the original event
- if ( e.preventDefault ) {
- e.preventDefault();
-
- // otherwise set the returnValue property of the original event to false (IE)
- } else {
- e.returnValue = false;
- }
- },
- stopPropagation: function() {
- this.isPropagationStopped = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
- // if stopPropagation exists run it on the original event
- if ( e.stopPropagation ) {
- e.stopPropagation();
- }
- // otherwise set the cancelBubble property of the original event to true (IE)
- e.cancelBubble = true;
- },
- stopImmediatePropagation: function() {
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- },
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-jQuery.each({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-}, function( orig, fix ) {
- jQuery.event.special[ orig ] = {
- delegateType: fix,
- bindType: fix,
-
- handle: function( event ) {
- var ret,
- target = this,
- related = event.relatedTarget,
- handleObj = event.handleObj,
- selector = handleObj.selector;
-
- // For mousenter/leave call the handler if related is outside the target.
- // NB: No relatedTarget if the mouse left/entered the browser window
- if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
- event.type = handleObj.origType;
- ret = handleObj.handler.apply( this, arguments );
- event.type = fix;
- }
- return ret;
- }
- };
-});
-
-// IE submit delegation
-if ( !jQuery.support.submitBubbles ) {
-
- jQuery.event.special.submit = {
- setup: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Lazy-add a submit handler when a descendant form may potentially be submitted
- jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
- // Node name check avoids a VML-related crash in IE (#9807)
- var elem = e.target,
- form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
- if ( form && !jQuery._data( form, "_submit_attached" ) ) {
- jQuery.event.add( form, "submit._submit", function( event ) {
- event._submit_bubble = true;
- });
- jQuery._data( form, "_submit_attached", true );
- }
- });
- // return undefined since we don't need an event listener
- },
-
- postDispatch: function( event ) {
- // If form was submitted by the user, bubble the event up the tree
- if ( event._submit_bubble ) {
- delete event._submit_bubble;
- if ( this.parentNode && !event.isTrigger ) {
- jQuery.event.simulate( "submit", this.parentNode, event, true );
- }
- }
- },
-
- teardown: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
- jQuery.event.remove( this, "._submit" );
- }
- };
-}
-
-// IE change delegation and checkbox/radio fix
-if ( !jQuery.support.changeBubbles ) {
-
- jQuery.event.special.change = {
-
- setup: function() {
-
- if ( rformElems.test( this.nodeName ) ) {
- // IE doesn't fire change on a check/radio until blur; trigger it on click
- // after a propertychange. Eat the blur-change in special.change.handle.
- // This still fires onchange a second time for check/radio after blur.
- if ( this.type === "checkbox" || this.type === "radio" ) {
- jQuery.event.add( this, "propertychange._change", function( event ) {
- if ( event.originalEvent.propertyName === "checked" ) {
- this._just_changed = true;
- }
- });
- jQuery.event.add( this, "click._change", function( event ) {
- if ( this._just_changed && !event.isTrigger ) {
- this._just_changed = false;
- }
- // Allow triggered, simulated change events (#11500)
- jQuery.event.simulate( "change", this, event, true );
- });
- }
- return false;
- }
- // Delegated event; lazy-add a change handler on descendant inputs
- jQuery.event.add( this, "beforeactivate._change", function( e ) {
- var elem = e.target;
-
- if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "_change_attached" ) ) {
- jQuery.event.add( elem, "change._change", function( event ) {
- if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
- jQuery.event.simulate( "change", this.parentNode, event, true );
- }
- });
- jQuery._data( elem, "_change_attached", true );
- }
- });
- },
-
- handle: function( event ) {
- var elem = event.target;
-
- // Swallow native change events from checkbox/radio, we already triggered them above
- if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
- return event.handleObj.handler.apply( this, arguments );
- }
- },
-
- teardown: function() {
- jQuery.event.remove( this, "._change" );
-
- return !rformElems.test( this.nodeName );
- }
- };
-}
-
-// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusinBubbles ) {
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
- // Attach a single capturing handler while someone wants focusin/focusout
- var attaches = 0,
- handler = function( event ) {
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
- };
-
- jQuery.event.special[ fix ] = {
- setup: function() {
- if ( attaches++ === 0 ) {
- document.addEventListener( orig, handler, true );
- }
- },
- teardown: function() {
- if ( --attaches === 0 ) {
- document.removeEventListener( orig, handler, true );
- }
- }
- };
- });
-}
-
-jQuery.fn.extend({
-
- on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
- var origFn, type;
-
- // Types can be a map of types/handlers
- if ( typeof types === "object" ) {
- // ( types-Object, selector, data )
- if ( typeof selector !== "string" ) { // && selector != null
- // ( types-Object, data )
- data = data || selector;
- selector = undefined;
- }
- for ( type in types ) {
- this.on( type, selector, data, types[ type ], one );
- }
- return this;
- }
-
- if ( data == null && fn == null ) {
- // ( types, fn )
- fn = selector;
- data = selector = undefined;
- } else if ( fn == null ) {
- if ( typeof selector === "string" ) {
- // ( types, selector, fn )
- fn = data;
- data = undefined;
- } else {
- // ( types, data, fn )
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if ( fn === false ) {
- fn = returnFalse;
- } else if ( !fn ) {
- return this;
- }
-
- if ( one === 1 ) {
- origFn = fn;
- fn = function( event ) {
- // Can use an empty set, since event contains the info
- jQuery().off( event );
- return origFn.apply( this, arguments );
- };
- // Use same guid so caller can remove using origFn
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
- }
- return this.each( function() {
- jQuery.event.add( this, types, fn, data, selector );
- });
- },
- one: function( types, selector, data, fn ) {
- return this.on( types, selector, data, fn, 1 );
- },
- off: function( types, selector, fn ) {
- var handleObj, type;
- if ( types && types.preventDefault && types.handleObj ) {
- // ( event ) dispatched jQuery.Event
- handleObj = types.handleObj;
- jQuery( types.delegateTarget ).off(
- handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
- handleObj.selector,
- handleObj.handler
- );
- return this;
- }
- if ( typeof types === "object" ) {
- // ( types-object [, selector] )
- for ( type in types ) {
- this.off( type, selector, types[ type ] );
- }
- return this;
- }
- if ( selector === false || typeof selector === "function" ) {
- // ( types [, fn] )
- fn = selector;
- selector = undefined;
- }
- if ( fn === false ) {
- fn = returnFalse;
- }
- return this.each(function() {
- jQuery.event.remove( this, types, fn, selector );
- });
- },
-
- bind: function( types, data, fn ) {
- return this.on( types, null, data, fn );
- },
- unbind: function( types, fn ) {
- return this.off( types, null, fn );
- },
-
- live: function( types, data, fn ) {
- jQuery( this.context ).on( types, this.selector, data, fn );
- return this;
- },
- die: function( types, fn ) {
- jQuery( this.context ).off( types, this.selector || "**", fn );
- return this;
- },
-
- delegate: function( selector, types, data, fn ) {
- return this.on( types, selector, data, fn );
- },
- undelegate: function( selector, types, fn ) {
- // ( namespace ) or ( selector, types [, fn] )
- return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
- },
-
- trigger: function( type, data ) {
- return this.each(function() {
- jQuery.event.trigger( type, data, this );
- });
- },
- triggerHandler: function( type, data ) {
- if ( this[0] ) {
- return jQuery.event.trigger( type, data, this[0], true );
- }
- },
-
- toggle: function( fn ) {
- // Save reference to arguments for access in closure
- var args = arguments,
- guid = fn.guid || jQuery.guid++,
- i = 0,
- toggler = function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- };
-
- // link all the functions, so any of them can unbind this click handler
- toggler.guid = guid;
- while ( i < args.length ) {
- args[ i++ ].guid = guid;
- }
-
- return this.click( toggler );
- },
-
- hover: function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
- }
-});
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( data, fn ) {
- if ( fn == null ) {
- fn = data;
- data = null;
- }
-
- return arguments.length > 0 ?
- this.on( name, null, data, fn ) :
- this.trigger( name );
- };
-
- if ( rkeyEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
- }
-
- if ( rmouseEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
- }
-});
-/*!
- * Sizzle CSS Selector Engine
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license
- * http://sizzlejs.com/
- */
-(function( window, undefined ) {
-
-var cachedruns,
- assertGetIdNotName,
- Expr,
- getText,
- isXML,
- contains,
- compile,
- sortOrder,
- hasDuplicate,
- outermostContext,
-
- baseHasDuplicate = true,
- strundefined = "undefined",
-
- expando = ( "sizcache" + Math.random() ).replace( ".", "" ),
-
- Token = String,
- document = window.document,
- docElem = document.documentElement,
- dirruns = 0,
- done = 0,
- pop = [].pop,
- push = [].push,
- slice = [].slice,
- // Use a stripped-down indexOf if a native one is unavailable
- indexOf = [].indexOf || function( elem ) {
- var i = 0,
- len = this.length;
- for ( ; i < len; i++ ) {
- if ( this[i] === elem ) {
- return i;
- }
- }
- return -1;
- },
-
- // Augment a function for special use by Sizzle
- markFunction = function( fn, value ) {
- fn[ expando ] = value == null || value;
- return fn;
- },
-
- createCache = function() {
- var cache = {},
- keys = [];
-
- return markFunction(function( key, value ) {
- // Only keep the most recent entries
- if ( keys.push( key ) > Expr.cacheLength ) {
- delete cache[ keys.shift() ];
- }
-
- return (cache[ key ] = value);
- }, cache );
- },
-
- classCache = createCache(),
- tokenCache = createCache(),
- compilerCache = createCache(),
-
- // Regex
-
- // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
- whitespace = "[\\x20\\t\\r\\n\\f]",
- // http://www.w3.org/TR/css3-syntax/#characters
- characterEncoding = "(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",
-
- // Loosely modeled on CSS identifier characters
- // An unquoted value should be a CSS identifier (http://www.w3.org/TR/css3-selectors/#attribute-selectors)
- // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
- identifier = characterEncoding.replace( "w", "w#" ),
-
- // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
- operators = "([*^$|!~]?=)",
- attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
- "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
-
- // Prefer arguments not in parens/brackets,
- // then attribute selectors and non-pseudos (denoted by :),
- // then anything else
- // These preferences are here to reduce the number of selectors
- // needing tokenize in the PSEUDO preFilter
- pseudos = ":(" + characterEncoding + ")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:" + attributes + ")|[^:]|\\\\.)*|.*))\\)|)",
-
- // For matchExpr.POS and matchExpr.needsContext
- pos = ":(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
- "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)",
-
- // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
- rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
- rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
- rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
- rpseudo = new RegExp( pseudos ),
-
- // Easily-parseable/retrievable ID or TAG or CLASS selectors
- rquickExpr = /^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,
-
- rnot = /^:not/,
- rsibling = /[\x20\t\r\n\f]*[+~]/,
- rendsWithNot = /:not\($/,
-
- rheader = /h\d/i,
- rinputs = /input|select|textarea|button/i,
-
- rbackslash = /\\(?!\\)/g,
-
- matchExpr = {
- "ID": new RegExp( "^#(" + characterEncoding + ")" ),
- "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
- "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
- "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
- "ATTR": new RegExp( "^" + attributes ),
- "PSEUDO": new RegExp( "^" + pseudos ),
- "POS": new RegExp( pos, "i" ),
- "CHILD": new RegExp( "^:(only|nth|first|last)-child(?:\\(" + whitespace +
- "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
- "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
- // For use in libraries implementing .is()
- "needsContext": new RegExp( "^" + whitespace + "*[>+~]|" + pos, "i" )
- },
-
- // Support
-
- // Used for testing something on an element
- assert = function( fn ) {
- var div = document.createElement("div");
-
- try {
- return fn( div );
- } catch (e) {
- return false;
- } finally {
- // release memory in IE
- div = null;
- }
- },
-
- // Check if getElementsByTagName("*") returns only elements
- assertTagNameNoComments = assert(function( div ) {
- div.appendChild( document.createComment("") );
- return !div.getElementsByTagName("*").length;
- }),
-
- // Check if getAttribute returns normalized href attributes
- assertHrefNotNormalized = assert(function( div ) {
- div.innerHTML = "<a href='#'></a>";
- return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
- div.firstChild.getAttribute("href") === "#";
- }),
-
- // Check if attributes should be retrieved by attribute nodes
- assertAttributes = assert(function( div ) {
- div.innerHTML = "<select></select>";
- var type = typeof div.lastChild.getAttribute("multiple");
- // IE8 returns a string for some attributes even when not present
- return type !== "boolean" && type !== "string";
- }),
-
- // Check if getElementsByClassName can be trusted
- assertUsableClassName = assert(function( div ) {
- // Opera can't find a second classname (in 9.6)
- div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
- if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
- return false;
- }
-
- // Safari 3.2 caches class attributes and doesn't catch changes
- div.lastChild.className = "e";
- return div.getElementsByClassName("e").length === 2;
- }),
-
- // Check if getElementById returns elements by name
- // Check if getElementsByName privileges form controls or returns elements by ID
- assertUsableName = assert(function( div ) {
- // Inject content
- div.id = expando + 0;
- div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
- docElem.insertBefore( div, docElem.firstChild );
-
- // Test
- var pass = document.getElementsByName &&
- // buggy browsers will return fewer than the correct 2
- document.getElementsByName( expando ).length === 2 +
- // buggy browsers will return more than the correct 0
- document.getElementsByName( expando + 0 ).length;
- assertGetIdNotName = !document.getElementById( expando );
-
- // Cleanup
- docElem.removeChild( div );
-
- return pass;
- });
-
-// If slice is not available, provide a backup
-try {
- slice.call( docElem.childNodes, 0 )[0].nodeType;
-} catch ( e ) {
- slice = function( i ) {
- var elem,
- results = [];
- for ( ; (elem = this[i]); i++ ) {
- results.push( elem );
- }
- return results;
- };
-}
-
-function Sizzle( selector, context, results, seed ) {
- results = results || [];
- context = context || document;
- var match, elem, xml, m,
- nodeType = context.nodeType;
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- if ( nodeType !== 1 && nodeType !== 9 ) {
- return [];
- }
-
- xml = isXML( context );
-
- if ( !xml && !seed ) {
- if ( (match = rquickExpr.exec( selector )) ) {
- // Speed-up: Sizzle("#ID")
- if ( (m = match[1]) ) {
- if ( nodeType === 9 ) {
- elem = context.getElementById( m );
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE, Opera, and Webkit return items
- // by name instead of ID
- if ( elem.id === m ) {
- results.push( elem );
- return results;
- }
- } else {
- return results;
- }
- } else {
- // Context is not a document
- if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
- contains( context, elem ) && elem.id === m ) {
- results.push( elem );
- return results;
- }
- }
-
- // Speed-up: Sizzle("TAG")
- } else if ( match[2] ) {
- push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
- return results;
-
- // Speed-up: Sizzle(".CLASS")
- } else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {
- push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
- return results;
- }
- }
- }
-
- // All others
- return select( selector.replace( rtrim, "$1" ), context, results, seed, xml );
-}
-
-Sizzle.matches = function( expr, elements ) {
- return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
- return Sizzle( expr, null, null, [ elem ] ).length > 0;
-};
-
-// Returns a function to use in pseudos for input types
-function createInputPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === type;
- };
-}
-
-// Returns a function to use in pseudos for buttons
-function createButtonPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && elem.type === type;
- };
-}
-
-// Returns a function to use in pseudos for positionals
-function createPositionalPseudo( fn ) {
- return markFunction(function( argument ) {
- argument = +argument;
- return markFunction(function( seed, matches ) {
- var j,
- matchIndexes = fn( [], seed.length, argument ),
- i = matchIndexes.length;
-
- // Match elements found at the specified indexes
- while ( i-- ) {
- if ( seed[ (j = matchIndexes[i]) ] ) {
- seed[j] = !(matches[j] = seed[j]);
- }
- }
- });
- });
-}
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
- var node,
- ret = "",
- i = 0,
- nodeType = elem.nodeType;
-
- if ( nodeType ) {
- if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
- // Use textContent for elements
- // innerText usage removed for consistency of new lines (see #11153)
- if ( typeof elem.textContent === "string" ) {
- return elem.textContent;
- } else {
- // Traverse its children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- // Do not include comment or processing instruction nodes
- } else {
-
- // If no nodeType, this is expected to be an array
- for ( ; (node = elem[i]); i++ ) {
- // Do not traverse comment nodes
- ret += getText( node );
- }
- }
- return ret;
-};
-
-isXML = Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = elem && (elem.ownerDocument || elem).documentElement;
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-// Element contains another
-contains = Sizzle.contains = docElem.contains ?
- function( a, b ) {
- var adown = a.nodeType === 9 ? a.documentElement : a,
- bup = b && b.parentNode;
- return a === bup || !!( bup && bup.nodeType === 1 && adown.contains && adown.contains(bup) );
- } :
- docElem.compareDocumentPosition ?
- function( a, b ) {
- return b && !!( a.compareDocumentPosition( b ) & 16 );
- } :
- function( a, b ) {
- while ( (b = b.parentNode) ) {
- if ( b === a ) {
- return true;
- }
- }
- return false;
- };
-
-Sizzle.attr = function( elem, name ) {
- var val,
- xml = isXML( elem );
-
- if ( !xml ) {
- name = name.toLowerCase();
- }
- if ( (val = Expr.attrHandle[ name ]) ) {
- return val( elem );
- }
- if ( xml || assertAttributes ) {
- return elem.getAttribute( name );
- }
- val = elem.getAttributeNode( name );
- return val ?
- typeof elem[ name ] === "boolean" ?
- elem[ name ] ? name : null :
- val.specified ? val.value : null :
- null;
-};
-
-Expr = Sizzle.selectors = {
-
- // Can be adjusted by the user
- cacheLength: 50,
-
- createPseudo: markFunction,
-
- match: matchExpr,
-
- // IE6/7 return a modified href
- attrHandle: assertHrefNotNormalized ?
- {} :
- {
- "href": function( elem ) {
- return elem.getAttribute( "href", 2 );
- },
- "type": function( elem ) {
- return elem.getAttribute("type");
- }
- },
-
- find: {
- "ID": assertGetIdNotName ?
- function( id, context, xml ) {
- if ( typeof context.getElementById !== strundefined && !xml ) {
- var m = context.getElementById( id );
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- } :
- function( id, context, xml ) {
- if ( typeof context.getElementById !== strundefined && !xml ) {
- var m = context.getElementById( id );
-
- return m ?
- m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
- [m] :
- undefined :
- [];
- }
- },
-
- "TAG": assertTagNameNoComments ?
- function( tag, context ) {
- if ( typeof context.getElementsByTagName !== strundefined ) {
- return context.getElementsByTagName( tag );
- }
- } :
- function( tag, context ) {
- var results = context.getElementsByTagName( tag );
-
- // Filter out possible comments
- if ( tag === "*" ) {
- var elem,
- tmp = [],
- i = 0;
-
- for ( ; (elem = results[i]); i++ ) {
- if ( elem.nodeType === 1 ) {
- tmp.push( elem );
- }
- }
-
- return tmp;
- }
- return results;
- },
-
- "NAME": assertUsableName && function( tag, context ) {
- if ( typeof context.getElementsByName !== strundefined ) {
- return context.getElementsByName( name );
- }
- },
-
- "CLASS": assertUsableClassName && function( className, context, xml ) {
- if ( typeof context.getElementsByClassName !== strundefined && !xml ) {
- return context.getElementsByClassName( className );
- }
- }
- },
-
- relative: {
- ">": { dir: "parentNode", first: true },
- " ": { dir: "parentNode" },
- "+": { dir: "previousSibling", first: true },
- "~": { dir: "previousSibling" }
- },
-
- preFilter: {
- "ATTR": function( match ) {
- match[1] = match[1].replace( rbackslash, "" );
-
- // Move the given value to match[3] whether quoted or unquoted
- match[3] = ( match[4] || match[5] || "" ).replace( rbackslash, "" );
-
- if ( match[2] === "~=" ) {
- match[3] = " " + match[3] + " ";
- }
-
- return match.slice( 0, 4 );
- },
-
- "CHILD": function( match ) {
- /* matches from matchExpr["CHILD"]
- 1 type (only|nth|...)
- 2 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
- 3 xn-component of xn+y argument ([+-]?\d*n|)
- 4 sign of xn-component
- 5 x of xn-component
- 6 sign of y-component
- 7 y of y-component
- */
- match[1] = match[1].toLowerCase();
-
- if ( match[1] === "nth" ) {
- // nth-child requires argument
- if ( !match[2] ) {
- Sizzle.error( match[0] );
- }
-
- // numeric x and y parameters for Expr.filter.CHILD
- // remember that false/true cast respectively to 0/1
- match[3] = +( match[3] ? match[4] + (match[5] || 1) : 2 * ( match[2] === "even" || match[2] === "odd" ) );
- match[4] = +( ( match[6] + match[7] ) || match[2] === "odd" );
-
- // other types prohibit arguments
- } else if ( match[2] ) {
- Sizzle.error( match[0] );
- }
-
- return match;
- },
-
- "PSEUDO": function( match ) {
- var unquoted, excess;
- if ( matchExpr["CHILD"].test( match[0] ) ) {
- return null;
- }
-
- if ( match[3] ) {
- match[2] = match[3];
- } else if ( (unquoted = match[4]) ) {
- // Only check arguments that contain a pseudo
- if ( rpseudo.test(unquoted) &&
- // Get excess from tokenize (recursively)
- (excess = tokenize( unquoted, true )) &&
- // advance to the next closing parenthesis
- (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
- // excess is a negative index
- unquoted = unquoted.slice( 0, excess );
- match[0] = match[0].slice( 0, excess );
- }
- match[2] = unquoted;
- }
-
- // Return only captures needed by the pseudo filter method (type and argument)
- return match.slice( 0, 3 );
- }
- },
-
- filter: {
- "ID": assertGetIdNotName ?
- function( id ) {
- id = id.replace( rbackslash, "" );
- return function( elem ) {
- return elem.getAttribute("id") === id;
- };
- } :
- function( id ) {
- id = id.replace( rbackslash, "" );
- return function( elem ) {
- var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
- return node && node.value === id;
- };
- },
-
- "TAG": function( nodeName ) {
- if ( nodeName === "*" ) {
- return function() { return true; };
- }
- nodeName = nodeName.replace( rbackslash, "" ).toLowerCase();
-
- return function( elem ) {
- return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
- };
- },
-
- "CLASS": function( className ) {
- var pattern = classCache[ expando ][ className ];
- if ( !pattern ) {
- pattern = classCache( className, new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)") );
- }
- return function( elem ) {
- return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
- };
- },
-
- "ATTR": function( name, operator, check ) {
- return function( elem, context ) {
- var result = Sizzle.attr( elem, name );
-
- if ( result == null ) {
- return operator === "!=";
- }
- if ( !operator ) {
- return true;
- }
-
- result += "";
-
- return operator === "=" ? result === check :
- operator === "!=" ? result !== check :
- operator === "^=" ? check && result.indexOf( check ) === 0 :
- operator === "*=" ? check && result.indexOf( check ) > -1 :
- operator === "$=" ? check && result.substr( result.length - check.length ) === check :
- operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
- operator === "|=" ? result === check || result.substr( 0, check.length + 1 ) === check + "-" :
- false;
- };
- },
-
- "CHILD": function( type, argument, first, last ) {
-
- if ( type === "nth" ) {
- return function( elem ) {
- var node, diff,
- parent = elem.parentNode;
-
- if ( first === 1 && last === 0 ) {
- return true;
- }
-
- if ( parent ) {
- diff = 0;
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- diff++;
- if ( elem === node ) {
- break;
- }
- }
- }
- }
-
- // Incorporate the offset (or cast to NaN), then check against cycle size
- diff -= last;
- return diff === first || ( diff % first === 0 && diff / first >= 0 );
- };
- }
-
- return function( elem ) {
- var node = elem;
-
- switch ( type ) {
- case "only":
- case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- if ( type === "first" ) {
- return true;
- }
-
- node = elem;
-
- /* falls through */
- case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- return true;
- }
- };
- },
-
- "PSEUDO": function( pseudo, argument ) {
- // pseudo-class names are case-insensitive
- // http://www.w3.org/TR/selectors/#pseudo-classes
- // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
- // Remember that setFilters inherits from pseudos
- var args,
- fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
- Sizzle.error( "unsupported pseudo: " + pseudo );
-
- // The user may use createPseudo to indicate that
- // arguments are needed to create the filter function
- // just as Sizzle does
- if ( fn[ expando ] ) {
- return fn( argument );
- }
-
- // But maintain support for old signatures
- if ( fn.length > 1 ) {
- args = [ pseudo, pseudo, "", argument ];
- return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
- markFunction(function( seed, matches ) {
- var idx,
- matched = fn( seed, argument ),
- i = matched.length;
- while ( i-- ) {
- idx = indexOf.call( seed, matched[i] );
- seed[ idx ] = !( matches[ idx ] = matched[i] );
- }
- }) :
- function( elem ) {
- return fn( elem, 0, args );
- };
- }
-
- return fn;
- }
- },
-
- pseudos: {
- "not": markFunction(function( selector ) {
- // Trim the selector passed to compile
- // to avoid treating leading and trailing
- // spaces as combinators
- var input = [],
- results = [],
- matcher = compile( selector.replace( rtrim, "$1" ) );
-
- return matcher[ expando ] ?
- markFunction(function( seed, matches, context, xml ) {
- var elem,
- unmatched = matcher( seed, null, xml, [] ),
- i = seed.length;
-
- // Match elements unmatched by `matcher`
- while ( i-- ) {
- if ( (elem = unmatched[i]) ) {
- seed[i] = !(matches[i] = elem);
- }
- }
- }) :
- function( elem, context, xml ) {
- input[0] = elem;
- matcher( input, null, xml, results );
- return !results.pop();
- };
- }),
-
- "has": markFunction(function( selector ) {
- return function( elem ) {
- return Sizzle( selector, elem ).length > 0;
- };
- }),
-
- "contains": markFunction(function( text ) {
- return function( elem ) {
- return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
- };
- }),
-
- "enabled": function( elem ) {
- return elem.disabled === false;
- },
-
- "disabled": function( elem ) {
- return elem.disabled === true;
- },
-
- "checked": function( elem ) {
- // In CSS3, :checked should return both checked and selected elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- var nodeName = elem.nodeName.toLowerCase();
- return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
- },
-
- "selected": function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- "parent": function( elem ) {
- return !Expr.pseudos["empty"]( elem );
- },
-
- "empty": function( elem ) {
- // http://www.w3.org/TR/selectors/#empty-pseudo
- // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
- // not comment, processing instructions, or others
- // Thanks to Diego Perini for the nodeName shortcut
- // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
- var nodeType;
- elem = elem.firstChild;
- while ( elem ) {
- if ( elem.nodeName > "@" || (nodeType = elem.nodeType) === 3 || nodeType === 4 ) {
- return false;
- }
- elem = elem.nextSibling;
- }
- return true;
- },
-
- "header": function( elem ) {
- return rheader.test( elem.nodeName );
- },
-
- "text": function( elem ) {
- var type, attr;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" &&
- (type = elem.type) === "text" &&
- ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === type );
- },
-
- // Input types
- "radio": createInputPseudo("radio"),
- "checkbox": createInputPseudo("checkbox"),
- "file": createInputPseudo("file"),
- "password": createInputPseudo("password"),
- "image": createInputPseudo("image"),
-
- "submit": createButtonPseudo("submit"),
- "reset": createButtonPseudo("reset"),
-
- "button": function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === "button" || name === "button";
- },
-
- "input": function( elem ) {
- return rinputs.test( elem.nodeName );
- },
-
- "focus": function( elem ) {
- var doc = elem.ownerDocument;
- return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href);
- },
-
- "active": function( elem ) {
- return elem === elem.ownerDocument.activeElement;
- },
-
- // Positional types
- "first": createPositionalPseudo(function( matchIndexes, length, argument ) {
- return [ 0 ];
- }),
-
- "last": createPositionalPseudo(function( matchIndexes, length, argument ) {
- return [ length - 1 ];
- }),
-
- "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
- return [ argument < 0 ? argument + length : argument ];
- }),
-
- "even": createPositionalPseudo(function( matchIndexes, length, argument ) {
- for ( var i = 0; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "odd": createPositionalPseudo(function( matchIndexes, length, argument ) {
- for ( var i = 1; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- for ( var i = argument < 0 ? argument + length : argument; --i >= 0; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- for ( var i = argument < 0 ? argument + length : argument; ++i < length; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- })
- }
-};
-
-function siblingCheck( a, b, ret ) {
- if ( a === b ) {
- return ret;
- }
-
- var cur = a.nextSibling;
-
- while ( cur ) {
- if ( cur === b ) {
- return -1;
- }
-
- cur = cur.nextSibling;
- }
-
- return 1;
-}
-
-sortOrder = docElem.compareDocumentPosition ?
- function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- return ( !a.compareDocumentPosition || !b.compareDocumentPosition ?
- a.compareDocumentPosition :
- a.compareDocumentPosition(b) & 4
- ) ? -1 : 1;
- } :
- function( a, b ) {
- // The nodes are identical, we can exit early
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
-
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
- } else if ( a.sourceIndex && b.sourceIndex ) {
- return a.sourceIndex - b.sourceIndex;
- }
-
- var al, bl,
- ap = [],
- bp = [],
- aup = a.parentNode,
- bup = b.parentNode,
- cur = aup;
-
- // If the nodes are siblings (or identical) we can do a quick check
- if ( aup === bup ) {
- return siblingCheck( a, b );
-
- // If no parents were found then the nodes are disconnected
- } else if ( !aup ) {
- return -1;
-
- } else if ( !bup ) {
- return 1;
- }
-
- // Otherwise they're somewhere else in the tree so we need
- // to build up a full list of the parentNodes for comparison
- while ( cur ) {
- ap.unshift( cur );
- cur = cur.parentNode;
- }
-
- cur = bup;
-
- while ( cur ) {
- bp.unshift( cur );
- cur = cur.parentNode;
- }
-
- al = ap.length;
- bl = bp.length;
-
- // Start walking down the tree looking for a discrepancy
- for ( var i = 0; i < al && i < bl; i++ ) {
- if ( ap[i] !== bp[i] ) {
- return siblingCheck( ap[i], bp[i] );
- }
- }
-
- // We ended someplace up the tree so do a sibling check
- return i === al ?
- siblingCheck( a, bp[i], -1 ) :
- siblingCheck( ap[i], b, 1 );
- };
-
-// Always assume the presence of duplicates if sort doesn't
-// pass them to our comparison function (as in Google Chrome).
-[0, 0].sort( sortOrder );
-baseHasDuplicate = !hasDuplicate;
-
-// Document sorting and removing duplicates
-Sizzle.uniqueSort = function( results ) {
- var elem,
- i = 1;
-
- hasDuplicate = baseHasDuplicate;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( ; (elem = results[i]); i++ ) {
- if ( elem === results[ i - 1 ] ) {
- results.splice( i--, 1 );
- }
- }
- }
-
- return results;
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-function tokenize( selector, parseOnly ) {
- var matched, match, tokens, type, soFar, groups, preFilters,
- cached = tokenCache[ expando ][ selector ];
-
- if ( cached ) {
- return parseOnly ? 0 : cached.slice( 0 );
- }
-
- soFar = selector;
- groups = [];
- preFilters = Expr.preFilter;
-
- while ( soFar ) {
-
- // Comma and first run
- if ( !matched || (match = rcomma.exec( soFar )) ) {
- if ( match ) {
- soFar = soFar.slice( match[0].length );
- }
- groups.push( tokens = [] );
- }
-
- matched = false;
-
- // Combinators
- if ( (match = rcombinators.exec( soFar )) ) {
- tokens.push( matched = new Token( match.shift() ) );
- soFar = soFar.slice( matched.length );
-
- // Cast descendant combinators to space
- matched.type = match[0].replace( rtrim, " " );
- }
-
- // Filters
- for ( type in Expr.filter ) {
- if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
- // The last two arguments here are (context, xml) for backCompat
- (match = preFilters[ type ]( match, document, true ))) ) {
-
- tokens.push( matched = new Token( match.shift() ) );
- soFar = soFar.slice( matched.length );
- matched.type = type;
- matched.matches = match;
- }
- }
-
- if ( !matched ) {
- break;
- }
- }
-
- // Return the length of the invalid excess
- // if we're just parsing
- // Otherwise, throw an error or return tokens
- return parseOnly ?
- soFar.length :
- soFar ?
- Sizzle.error( selector ) :
- // Cache the tokens
- tokenCache( selector, groups ).slice( 0 );
-}
-
-function addCombinator( matcher, combinator, base ) {
- var dir = combinator.dir,
- checkNonElements = base && combinator.dir === "parentNode",
- doneName = done++;
-
- return combinator.first ?
- // Check against closest ancestor/preceding element
- function( elem, context, xml ) {
- while ( (elem = elem[ dir ]) ) {
- if ( checkNonElements || elem.nodeType === 1 ) {
- return matcher( elem, context, xml );
- }
- }
- } :
-
- // Check against all ancestor/preceding elements
- function( elem, context, xml ) {
- // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
- if ( !xml ) {
- var cache,
- dirkey = dirruns + " " + doneName + " ",
- cachedkey = dirkey + cachedruns;
- while ( (elem = elem[ dir ]) ) {
- if ( checkNonElements || elem.nodeType === 1 ) {
- if ( (cache = elem[ expando ]) === cachedkey ) {
- return elem.sizset;
- } else if ( typeof cache === "string" && cache.indexOf(dirkey) === 0 ) {
- if ( elem.sizset ) {
- return elem;
- }
- } else {
- elem[ expando ] = cachedkey;
- if ( matcher( elem, context, xml ) ) {
- elem.sizset = true;
- return elem;
- }
- elem.sizset = false;
- }
- }
- }
- } else {
- while ( (elem = elem[ dir ]) ) {
- if ( checkNonElements || elem.nodeType === 1 ) {
- if ( matcher( elem, context, xml ) ) {
- return elem;
- }
- }
- }
- }
- };
-}
-
-function elementMatcher( matchers ) {
- return matchers.length > 1 ?
- function( elem, context, xml ) {
- var i = matchers.length;
- while ( i-- ) {
- if ( !matchers[i]( elem, context, xml ) ) {
- return false;
- }
- }
- return true;
- } :
- matchers[0];
-}
-
-function condense( unmatched, map, filter, context, xml ) {
- var elem,
- newUnmatched = [],
- i = 0,
- len = unmatched.length,
- mapped = map != null;
-
- for ( ; i < len; i++ ) {
- if ( (elem = unmatched[i]) ) {
- if ( !filter || filter( elem, context, xml ) ) {
- newUnmatched.push( elem );
- if ( mapped ) {
- map.push( i );
- }
- }
- }
- }
-
- return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
- if ( postFilter && !postFilter[ expando ] ) {
- postFilter = setMatcher( postFilter );
- }
- if ( postFinder && !postFinder[ expando ] ) {
- postFinder = setMatcher( postFinder, postSelector );
- }
- return markFunction(function( seed, results, context, xml ) {
- // Positional selectors apply to seed elements, so it is invalid to follow them with relative ones
- if ( seed && postFinder ) {
- return;
- }
-
- var i, elem, postFilterIn,
- preMap = [],
- postMap = [],
- preexisting = results.length,
-
- // Get initial elements from seed or context
- elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [], seed ),
-
- // Prefilter to get matcher input, preserving a map for seed-results synchronization
- matcherIn = preFilter && ( seed || !selector ) ?
- condense( elems, preMap, preFilter, context, xml ) :
- elems,
-
- matcherOut = matcher ?
- // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
- postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
- // ...intermediate processing is necessary
- [] :
-
- // ...otherwise use results directly
- results :
- matcherIn;
-
- // Find primary matches
- if ( matcher ) {
- matcher( matcherIn, matcherOut, context, xml );
- }
-
- // Apply postFilter
- if ( postFilter ) {
- postFilterIn = condense( matcherOut, postMap );
- postFilter( postFilterIn, [], context, xml );
-
- // Un-match failing elements by moving them back to matcherIn
- i = postFilterIn.length;
- while ( i-- ) {
- if ( (elem = postFilterIn[i]) ) {
- matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
- }
- }
- }
-
- // Keep seed and results synchronized
- if ( seed ) {
- // Ignore postFinder because it can't coexist with seed
- i = preFilter && matcherOut.length;
- while ( i-- ) {
- if ( (elem = matcherOut[i]) ) {
- seed[ preMap[i] ] = !(results[ preMap[i] ] = elem);
- }
- }
- } else {
- matcherOut = condense(
- matcherOut === results ?
- matcherOut.splice( preexisting, matcherOut.length ) :
- matcherOut
- );
- if ( postFinder ) {
- postFinder( null, results, matcherOut, xml );
- } else {
- push.apply( results, matcherOut );
- }
- }
- });
-}
-
-function matcherFromTokens( tokens ) {
- var checkContext, matcher, j,
- len = tokens.length,
- leadingRelative = Expr.relative[ tokens[0].type ],
- implicitRelative = leadingRelative || Expr.relative[" "],
- i = leadingRelative ? 1 : 0,
-
- // The foundational matcher ensures that elements are reachable from top-level context(s)
- matchContext = addCombinator( function( elem ) {
- return elem === checkContext;
- }, implicitRelative, true ),
- matchAnyContext = addCombinator( function( elem ) {
- return indexOf.call( checkContext, elem ) > -1;
- }, implicitRelative, true ),
- matchers = [ function( elem, context, xml ) {
- return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
- (checkContext = context).nodeType ?
- matchContext( elem, context, xml ) :
- matchAnyContext( elem, context, xml ) );
- } ];
-
- for ( ; i < len; i++ ) {
- if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
- matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
- } else {
- // The concatenated values are (context, xml) for backCompat
- matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
- // Return special upon seeing a positional matcher
- if ( matcher[ expando ] ) {
- // Find the next relative operator (if any) for proper handling
- j = ++i;
- for ( ; j < len; j++ ) {
- if ( Expr.relative[ tokens[j].type ] ) {
- break;
- }
- }
- return setMatcher(
- i > 1 && elementMatcher( matchers ),
- i > 1 && tokens.slice( 0, i - 1 ).join("").replace( rtrim, "$1" ),
- matcher,
- i < j && matcherFromTokens( tokens.slice( i, j ) ),
- j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
- j < len && tokens.join("")
- );
- }
- matchers.push( matcher );
- }
- }
-
- return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
- var bySet = setMatchers.length > 0,
- byElement = elementMatchers.length > 0,
- superMatcher = function( seed, context, xml, results, expandContext ) {
- var elem, j, matcher,
- setMatched = [],
- matchedCount = 0,
- i = "0",
- unmatched = seed && [],
- outermost = expandContext != null,
- contextBackup = outermostContext,
- // We must always have either seed elements or context
- elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
- // Nested matchers should use non-integer dirruns
- dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.E);
-
- if ( outermost ) {
- outermostContext = context !== document && context;
- cachedruns = superMatcher.el;
- }
-
- // Add elements passing elementMatchers directly to results
- for ( ; (elem = elems[i]) != null; i++ ) {
- if ( byElement && elem ) {
- for ( j = 0; (matcher = elementMatchers[j]); j++ ) {
- if ( matcher( elem, context, xml ) ) {
- results.push( elem );
- break;
- }
- }
- if ( outermost ) {
- dirruns = dirrunsUnique;
- cachedruns = ++superMatcher.el;
- }
- }
-
- // Track unmatched elements for set filters
- if ( bySet ) {
- // They will have gone through all possible matchers
- if ( (elem = !matcher && elem) ) {
- matchedCount--;
- }
-
- // Lengthen the array for every element, matched or not
- if ( seed ) {
- unmatched.push( elem );
- }
- }
- }
-
- // Apply set filters to unmatched elements
- matchedCount += i;
- if ( bySet && i !== matchedCount ) {
- for ( j = 0; (matcher = setMatchers[j]); j++ ) {
- matcher( unmatched, setMatched, context, xml );
- }
-
- if ( seed ) {
- // Reintegrate element matches to eliminate the need for sorting
- if ( matchedCount > 0 ) {
- while ( i-- ) {
- if ( !(unmatched[i] || setMatched[i]) ) {
- setMatched[i] = pop.call( results );
- }
- }
- }
-
- // Discard index placeholder values to get only actual matches
- setMatched = condense( setMatched );
- }
-
- // Add matches to results
- push.apply( results, setMatched );
-
- // Seedless set matches succeeding multiple successful matchers stipulate sorting
- if ( outermost && !seed && setMatched.length > 0 &&
- ( matchedCount + setMatchers.length ) > 1 ) {
-
- Sizzle.uniqueSort( results );
- }
- }
-
- // Override manipulation of globals by nested matchers
- if ( outermost ) {
- dirruns = dirrunsUnique;
- outermostContext = contextBackup;
- }
-
- return unmatched;
- };
-
- superMatcher.el = 0;
- return bySet ?
- markFunction( superMatcher ) :
- superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
- var i,
- setMatchers = [],
- elementMatchers = [],
- cached = compilerCache[ expando ][ selector ];
-
- if ( !cached ) {
- // Generate a function of recursive functions that can be used to check each element
- if ( !group ) {
- group = tokenize( selector );
- }
- i = group.length;
- while ( i-- ) {
- cached = matcherFromTokens( group[i] );
- if ( cached[ expando ] ) {
- setMatchers.push( cached );
- } else {
- elementMatchers.push( cached );
- }
- }
-
- // Cache the compiled function
- cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
- }
- return cached;
-};
-
-function multipleContexts( selector, contexts, results, seed ) {
- var i = 0,
- len = contexts.length;
- for ( ; i < len; i++ ) {
- Sizzle( selector, contexts[i], results, seed );
- }
- return results;
-}
-
-function select( selector, context, results, seed, xml ) {
- var i, tokens, token, type, find,
- match = tokenize( selector ),
- j = match.length;
-
- if ( !seed ) {
- // Try to minimize operations if there is only one group
- if ( match.length === 1 ) {
-
- // Take a shortcut and set the context if the root selector is an ID
- tokens = match[0] = match[0].slice( 0 );
- if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
- context.nodeType === 9 && !xml &&
- Expr.relative[ tokens[1].type ] ) {
-
- context = Expr.find["ID"]( token.matches[0].replace( rbackslash, "" ), context, xml )[0];
- if ( !context ) {
- return results;
- }
-
- selector = selector.slice( tokens.shift().length );
- }
-
- // Fetch a seed set for right-to-left matching
- for ( i = matchExpr["POS"].test( selector ) ? -1 : tokens.length - 1; i >= 0; i-- ) {
- token = tokens[i];
-
- // Abort if we hit a combinator
- if ( Expr.relative[ (type = token.type) ] ) {
- break;
- }
- if ( (find = Expr.find[ type ]) ) {
- // Search, expanding context for leading sibling combinators
- if ( (seed = find(
- token.matches[0].replace( rbackslash, "" ),
- rsibling.test( tokens[0].type ) && context.parentNode || context,
- xml
- )) ) {
-
- // If seed is empty or no tokens remain, we can return early
- tokens.splice( i, 1 );
- selector = seed.length && tokens.join("");
- if ( !selector ) {
- push.apply( results, slice.call( seed, 0 ) );
- return results;
- }
-
- break;
- }
- }
- }
- }
- }
-
- // Compile and execute a filtering function
- // Provide `match` to avoid retokenization if we modified the selector above
- compile( selector, match )(
- seed,
- context,
- xml,
- results,
- rsibling.test( selector )
- );
- return results;
-}
-
-if ( document.querySelectorAll ) {
- (function() {
- var disconnectedMatch,
- oldSelect = select,
- rescape = /'|\\/g,
- rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
-
- // qSa(:focus) reports false when true (Chrome 21),
- // A support test would require too much code (would include document ready)
- rbuggyQSA = [":focus"],
-
- // matchesSelector(:focus) reports false when true (Chrome 21),
- // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
- // A support test would require too much code (would include document ready)
- // just skip matchesSelector for :active
- rbuggyMatches = [ ":active", ":focus" ],
- matches = docElem.matchesSelector ||
- docElem.mozMatchesSelector ||
- docElem.webkitMatchesSelector ||
- docElem.oMatchesSelector ||
- docElem.msMatchesSelector;
-
- // Build QSA regex
- // Regex strategy adopted from Diego Perini
- assert(function( div ) {
- // Select is set to empty string on purpose
- // This is to test IE's treatment of not explictly
- // setting a boolean content attribute,
- // since its presence should be enough
- // http://bugs.jquery.com/ticket/12359
- div.innerHTML = "<select><option selected=''></option></select>";
-
- // IE8 - Some boolean attributes are not treated correctly
- if ( !div.querySelectorAll("[selected]").length ) {
- rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
- }
-
- // Webkit/Opera - :checked should return selected option elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- // IE8 throws error here (do not put tests after this one)
- if ( !div.querySelectorAll(":checked").length ) {
- rbuggyQSA.push(":checked");
- }
- });
-
- assert(function( div ) {
-
- // Opera 10-12/IE9 - ^= $= *= and empty values
- // Should not select anything
- div.innerHTML = "<p test=''></p>";
- if ( div.querySelectorAll("[test^='']").length ) {
- rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
- }
-
- // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
- // IE8 throws error here (do not put tests after this one)
- div.innerHTML = "<input type='hidden'/>";
- if ( !div.querySelectorAll(":enabled").length ) {
- rbuggyQSA.push(":enabled", ":disabled");
- }
- });
-
- // rbuggyQSA always contains :focus, so no need for a length check
- rbuggyQSA = /* rbuggyQSA.length && */ new RegExp( rbuggyQSA.join("|") );
-
- select = function( selector, context, results, seed, xml ) {
- // Only use querySelectorAll when not filtering,
- // when this is not xml,
- // and when no QSA bugs apply
- if ( !seed && !xml && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
- var groups, i,
- old = true,
- nid = expando,
- newContext = context,
- newSelector = context.nodeType === 9 && selector;
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- groups = tokenize( selector );
-
- if ( (old = context.getAttribute("id")) ) {
- nid = old.replace( rescape, "\\$&" );
- } else {
- context.setAttribute( "id", nid );
- }
- nid = "[id='" + nid + "'] ";
-
- i = groups.length;
- while ( i-- ) {
- groups[i] = nid + groups[i].join("");
- }
- newContext = rsibling.test( selector ) && context.parentNode || context;
- newSelector = groups.join(",");
- }
-
- if ( newSelector ) {
- try {
- push.apply( results, slice.call( newContext.querySelectorAll(
- newSelector
- ), 0 ) );
- return results;
- } catch(qsaError) {
- } finally {
- if ( !old ) {
- context.removeAttribute("id");
- }
- }
- }
- }
-
- return oldSelect( selector, context, results, seed, xml );
- };
-
- if ( matches ) {
- assert(function( div ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9)
- disconnectedMatch = matches.call( div, "div" );
-
- // This should fail with an exception
- // Gecko does not error, returns false instead
- try {
- matches.call( div, "[test!='']:sizzle" );
- rbuggyMatches.push( "!=", pseudos );
- } catch ( e ) {}
- });
-
- // rbuggyMatches always contains :active and :focus, so no need for a length check
- rbuggyMatches = /* rbuggyMatches.length && */ new RegExp( rbuggyMatches.join("|") );
-
- Sizzle.matchesSelector = function( elem, expr ) {
- // Make sure that attribute selectors are quoted
- expr = expr.replace( rattributeQuotes, "='$1']" );
-
- // rbuggyMatches always contains :active, so no need for an existence check
- if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && (!rbuggyQSA || !rbuggyQSA.test( expr )) ) {
- try {
- var ret = matches.call( elem, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9
- elem.document && elem.document.nodeType !== 11 ) {
- return ret;
- }
- } catch(e) {}
- }
-
- return Sizzle( expr, null, null, [ elem ] ).length > 0;
- };
- }
- })();
-}
-
-// Deprecated
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Back-compat
-function setFilters() {}
-Expr.filters = setFilters.prototype = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-// Override sizzle attribute retrieval
-Sizzle.attr = jQuery.attr;
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.pseudos;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})( window );
-var runtil = /Until$/,
- rparentsprev = /^(?:parents|prev(?:Until|All))/,
- isSimple = /^.[^:#\[\.,]*$/,
- rneedsContext = jQuery.expr.match.needsContext,
- // methods guaranteed to produce a unique set when starting from a unique set
- guaranteedUnique = {
- children: true,
- contents: true,
- next: true,
- prev: true
- };
-
-jQuery.fn.extend({
- find: function( selector ) {
- var i, l, length, n, r, ret,
- self = this;
-
- if ( typeof selector !== "string" ) {
- return jQuery( selector ).filter(function() {
- for ( i = 0, l = self.length; i < l; i++ ) {
- if ( jQuery.contains( self[ i ], this ) ) {
- return true;
- }
- }
- });
- }
-
- ret = this.pushStack( "", "find", selector );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- length = ret.length;
- jQuery.find( selector, this[i], ret );
-
- if ( i > 0 ) {
- // Make sure that the results are unique
- for ( n = length; n < ret.length; n++ ) {
- for ( r = 0; r < length; r++ ) {
- if ( ret[r] === ret[n] ) {
- ret.splice(n--, 1);
- break;
- }
- }
- }
- }
- }
-
- return ret;
- },
-
- has: function( target ) {
- var i,
- targets = jQuery( target, this ),
- len = targets.length;
-
- return this.filter(function() {
- for ( i = 0; i < len; i++ ) {
- if ( jQuery.contains( this, targets[i] ) ) {
- return true;
- }
- }
- });
- },
-
- not: function( selector ) {
- return this.pushStack( winnow(this, selector, false), "not", selector);
- },
-
- filter: function( selector ) {
- return this.pushStack( winnow(this, selector, true), "filter", selector );
- },
-
- is: function( selector ) {
- return !!selector && (
- typeof selector === "string" ?
- // If this is a positional/relative selector, check membership in the returned set
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
- rneedsContext.test( selector ) ?
- jQuery( selector, this.context ).index( this[0] ) >= 0 :
- jQuery.filter( selector, this ).length > 0 :
- this.filter( selector ).length > 0 );
- },
-
- closest: function( selectors, context ) {
- var cur,
- i = 0,
- l = this.length,
- ret = [],
- pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
- jQuery( selectors, context || this.context ) :
- 0;
-
- for ( ; i < l; i++ ) {
- cur = this[i];
-
- while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {
- if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
- ret.push( cur );
- break;
- }
- cur = cur.parentNode;
- }
- }
-
- ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
-
- return this.pushStack( ret, "closest", selectors );
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
-
- // No argument, return index in parent
- if ( !elem ) {
- return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
- }
-
- // index in selector
- if ( typeof elem === "string" ) {
- return jQuery.inArray( this[0], jQuery( elem ) );
- }
-
- // Locate the position of the desired element
- return jQuery.inArray(
- // If it receives a jQuery object, the first element is used
- elem.jquery ? elem[0] : elem, this );
- },
-
- add: function( selector, context ) {
- var set = typeof selector === "string" ?
- jQuery( selector, context ) :
- jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
- all = jQuery.merge( this.get(), set );
-
- return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
- all :
- jQuery.unique( all ) );
- },
-
- addBack: function( selector ) {
- return this.add( selector == null ?
- this.prevObject : this.prevObject.filter(selector)
- );
- }
-});
-
-jQuery.fn.andSelf = jQuery.fn.addBack;
-
-// A painfully simple check to see if an element is disconnected
-// from a document (should be improved, where feasible).
-function isDisconnected( node ) {
- return !node || !node.parentNode || node.parentNode.nodeType === 11;
-}
-
-function sibling( cur, dir ) {
- do {
- cur = cur[ dir ];
- } while ( cur && cur.nodeType !== 1 );
-
- return cur;
-}
-
-jQuery.each({
- parent: function( elem ) {
- var parent = elem.parentNode;
- return parent && parent.nodeType !== 11 ? parent : null;
- },
- parents: function( elem ) {
- return jQuery.dir( elem, "parentNode" );
- },
- parentsUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "parentNode", until );
- },
- next: function( elem ) {
- return sibling( elem, "nextSibling" );
- },
- prev: function( elem ) {
- return sibling( elem, "previousSibling" );
- },
- nextAll: function( elem ) {
- return jQuery.dir( elem, "nextSibling" );
- },
- prevAll: function( elem ) {
- return jQuery.dir( elem, "previousSibling" );
- },
- nextUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "nextSibling", until );
- },
- prevUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "previousSibling", until );
- },
- siblings: function( elem ) {
- return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
- },
- children: function( elem ) {
- return jQuery.sibling( elem.firstChild );
- },
- contents: function( elem ) {
- return jQuery.nodeName( elem, "iframe" ) ?
- elem.contentDocument || elem.contentWindow.document :
- jQuery.merge( [], elem.childNodes );
- }
-}, function( name, fn ) {
- jQuery.fn[ name ] = function( until, selector ) {
- var ret = jQuery.map( this, fn, until );
-
- if ( !runtil.test( name ) ) {
- selector = until;
- }
-
- if ( selector && typeof selector === "string" ) {
- ret = jQuery.filter( selector, ret );
- }
-
- ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
-
- if ( this.length > 1 && rparentsprev.test( name ) ) {
- ret = ret.reverse();
- }
-
- return this.pushStack( ret, name, core_slice.call( arguments ).join(",") );
- };
-});
-
-jQuery.extend({
- filter: function( expr, elems, not ) {
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- return elems.length === 1 ?
- jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
- jQuery.find.matches(expr, elems);
- },
-
- dir: function( elem, dir, until ) {
- var matched = [],
- cur = elem[ dir ];
-
- while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
- if ( cur.nodeType === 1 ) {
- matched.push( cur );
- }
- cur = cur[dir];
- }
- return matched;
- },
-
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType === 1 && n !== elem ) {
- r.push( n );
- }
- }
-
- return r;
- }
-});
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, keep ) {
-
- // Can't pass null or undefined to indexOf in Firefox 4
- // Set to 0 to skip string check
- qualifier = qualifier || 0;
-
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep(elements, function( elem, i ) {
- var retVal = !!qualifier.call( elem, i, elem );
- return retVal === keep;
- });
-
- } else if ( qualifier.nodeType ) {
- return jQuery.grep(elements, function( elem, i ) {
- return ( elem === qualifier ) === keep;
- });
-
- } else if ( typeof qualifier === "string" ) {
- var filtered = jQuery.grep(elements, function( elem ) {
- return elem.nodeType === 1;
- });
-
- if ( isSimple.test( qualifier ) ) {
- return jQuery.filter(qualifier, filtered, !keep);
- } else {
- qualifier = jQuery.filter( qualifier, filtered );
- }
- }
-
- return jQuery.grep(elements, function( elem, i ) {
- return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
- });
-}
-function createSafeFragment( document ) {
- var list = nodeNames.split( "|" ),
- safeFrag = document.createDocumentFragment();
-
- if ( safeFrag.createElement ) {
- while ( list.length ) {
- safeFrag.createElement(
- list.pop()
- );
- }
- }
- return safeFrag;
-}
-
-var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
- "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
- rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
- rleadingWhitespace = /^\s+/,
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
- rtagName = /<([\w:]+)/,
- rtbody = /<tbody/i,
- rhtml = /<|&#?\w+;/,
- rnoInnerhtml = /<(?:script|style|link)/i,
- rnocache = /<(?:script|object|embed|option|style)/i,
- rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
- rcheckableType = /^(?:checkbox|radio)$/,
- // checked="checked" or checked
- rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
- rscriptType = /\/(java|ecma)script/i,
- rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,
- wrapMap = {
- option: [ 1, "<select multiple='multiple'>", "</select>" ],
- legend: [ 1, "<fieldset>", "</fieldset>" ],
- thead: [ 1, "<table>", "</table>" ],
- tr: [ 2, "<table><tbody>", "</tbody></table>" ],
- td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
- col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
- area: [ 1, "<map>", "</map>" ],
- _default: [ 0, "", "" ]
- },
- safeFragment = createSafeFragment( document ),
- fragmentDiv = safeFragment.appendChild( document.createElement("div") );
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
-// unless wrapped in a div with non-breaking characters in front of it.
-if ( !jQuery.support.htmlSerialize ) {
- wrapMap._default = [ 1, "X<div>", "</div>" ];
-}
-
-jQuery.fn.extend({
- text: function( value ) {
- return jQuery.access( this, function( value ) {
- return value === undefined ?
- jQuery.text( this ) :
- this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
- }, null, value, arguments.length );
- },
-
- wrapAll: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapAll( html.call(this, i) );
- });
- }
-
- if ( this[0] ) {
- // The elements to wrap the target around
- var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
-
- if ( this[0].parentNode ) {
- wrap.insertBefore( this[0] );
- }
-
- wrap.map(function() {
- var elem = this;
-
- while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
- elem = elem.firstChild;
- }
-
- return elem;
- }).append( this );
- }
-
- return this;
- },
-
- wrapInner: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapInner( html.call(this, i) );
- });
- }
-
- return this.each(function() {
- var self = jQuery( this ),
- contents = self.contents();
-
- if ( contents.length ) {
- contents.wrapAll( html );
-
- } else {
- self.append( html );
- }
- });
- },
-
- wrap: function( html ) {
- var isFunction = jQuery.isFunction( html );
-
- return this.each(function(i) {
- jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
- });
- },
-
- unwrap: function() {
- return this.parent().each(function() {
- if ( !jQuery.nodeName( this, "body" ) ) {
- jQuery( this ).replaceWith( this.childNodes );
- }
- }).end();
- },
-
- append: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 || this.nodeType === 11 ) {
- this.appendChild( elem );
- }
- });
- },
-
- prepend: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 || this.nodeType === 11 ) {
- this.insertBefore( elem, this.firstChild );
- }
- });
- },
-
- before: function() {
- if ( !isDisconnected( this[0] ) ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this );
- });
- }
-
- if ( arguments.length ) {
- var set = jQuery.clean( arguments );
- return this.pushStack( jQuery.merge( set, this ), "before", this.selector );
- }
- },
-
- after: function() {
- if ( !isDisconnected( this[0] ) ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this.nextSibling );
- });
- }
-
- if ( arguments.length ) {
- var set = jQuery.clean( arguments );
- return this.pushStack( jQuery.merge( this, set ), "after", this.selector );
- }
- },
-
- // keepData is for internal use only--do not document
- remove: function( selector, keepData ) {
- var elem,
- i = 0;
-
- for ( ; (elem = this[i]) != null; i++ ) {
- if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
- if ( !keepData && elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- jQuery.cleanData( [ elem ] );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
- }
- }
-
- return this;
- },
-
- empty: function() {
- var elem,
- i = 0;
-
- for ( ; (elem = this[i]) != null; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- }
-
- // Remove any remaining nodes
- while ( elem.firstChild ) {
- elem.removeChild( elem.firstChild );
- }
- }
-
- return this;
- },
-
- clone: function( dataAndEvents, deepDataAndEvents ) {
- dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
- deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
- return this.map( function () {
- return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
- });
- },
-
- html: function( value ) {
- return jQuery.access( this, function( value ) {
- var elem = this[0] || {},
- i = 0,
- l = this.length;
-
- if ( value === undefined ) {
- return elem.nodeType === 1 ?
- elem.innerHTML.replace( rinlinejQuery, "" ) :
- undefined;
- }
-
- // See if we can take a shortcut and just use innerHTML
- if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
- ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&
- ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
- !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
-
- value = value.replace( rxhtmlTag, "<$1></$2>" );
-
- try {
- for (; i < l; i++ ) {
- // Remove element nodes and prevent memory leaks
- elem = this[i] || {};
- if ( elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName( "*" ) );
- elem.innerHTML = value;
- }
- }
-
- elem = 0;
-
- // If using innerHTML throws an exception, use the fallback method
- } catch(e) {}
- }
-
- if ( elem ) {
- this.empty().append( value );
- }
- }, null, value, arguments.length );
- },
-
- replaceWith: function( value ) {
- if ( !isDisconnected( this[0] ) ) {
- // Make sure that the elements are removed from the DOM before they are inserted
- // this can help fix replacing a parent with child elements
- if ( jQuery.isFunction( value ) ) {
- return this.each(function(i) {
- var self = jQuery(this), old = self.html();
- self.replaceWith( value.call( this, i, old ) );
- });
- }
-
- if ( typeof value !== "string" ) {
- value = jQuery( value ).detach();
- }
-
- return this.each(function() {
- var next = this.nextSibling,
- parent = this.parentNode;
-
- jQuery( this ).remove();
-
- if ( next ) {
- jQuery(next).before( value );
- } else {
- jQuery(parent).append( value );
- }
- });
- }
-
- return this.length ?
- this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
- this;
- },
-
- detach: function( selector ) {
- return this.remove( selector, true );
- },
-
- domManip: function( args, table, callback ) {
-
- // Flatten any nested arrays
- args = [].concat.apply( [], args );
-
- var results, first, fragment, iNoClone,
- i = 0,
- value = args[0],
- scripts = [],
- l = this.length;
-
- // We can't cloneNode fragments that contain checked, in WebKit
- if ( !jQuery.support.checkClone && l > 1 && typeof value === "string" && rchecked.test( value ) ) {
- return this.each(function() {
- jQuery(this).domManip( args, table, callback );
- });
- }
-
- if ( jQuery.isFunction(value) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- args[0] = value.call( this, i, table ? self.html() : undefined );
- self.domManip( args, table, callback );
- });
- }
-
- if ( this[0] ) {
- results = jQuery.buildFragment( args, this, scripts );
- fragment = results.fragment;
- first = fragment.firstChild;
-
- if ( fragment.childNodes.length === 1 ) {
- fragment = first;
- }
-
- if ( first ) {
- table = table && jQuery.nodeName( first, "tr" );
-
- // Use the original fragment for the last item instead of the first because it can end up
- // being emptied incorrectly in certain situations (#8070).
- // Fragments from the fragment cache must always be cloned and never used in place.
- for ( iNoClone = results.cacheable || l - 1; i < l; i++ ) {
- callback.call(
- table && jQuery.nodeName( this[i], "table" ) ?
- findOrAppend( this[i], "tbody" ) :
- this[i],
- i === iNoClone ?
- fragment :
- jQuery.clone( fragment, true, true )
- );
- }
- }
-
- // Fix #11809: Avoid leaking memory
- fragment = first = null;
-
- if ( scripts.length ) {
- jQuery.each( scripts, function( i, elem ) {
- if ( elem.src ) {
- if ( jQuery.ajax ) {
- jQuery.ajax({
- url: elem.src,
- type: "GET",
- dataType: "script",
- async: false,
- global: false,
- "throws": true
- });
- } else {
- jQuery.error("no ajax");
- }
- } else {
- jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "" ) );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
- });
- }
- }
-
- return this;
- }
-});
-
-function findOrAppend( elem, tag ) {
- return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );
-}
-
-function cloneCopyEvent( src, dest ) {
-
- if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
- return;
- }
-
- var type, i, l,
- oldData = jQuery._data( src ),
- curData = jQuery._data( dest, oldData ),
- events = oldData.events;
-
- if ( events ) {
- delete curData.handle;
- curData.events = {};
-
- for ( type in events ) {
- for ( i = 0, l = events[ type ].length; i < l; i++ ) {
- jQuery.event.add( dest, type, events[ type ][ i ] );
- }
- }
- }
-
- // make the cloned public data object a copy from the original
- if ( curData.data ) {
- curData.data = jQuery.extend( {}, curData.data );
- }
-}
-
-function cloneFixAttributes( src, dest ) {
- var nodeName;
-
- // We do not need to do anything for non-Elements
- if ( dest.nodeType !== 1 ) {
- return;
- }
-
- // clearAttributes removes the attributes, which we don't want,
- // but also removes the attachEvent events, which we *do* want
- if ( dest.clearAttributes ) {
- dest.clearAttributes();
- }
-
- // mergeAttributes, in contrast, only merges back on the
- // original attributes, not the events
- if ( dest.mergeAttributes ) {
- dest.mergeAttributes( src );
- }
-
- nodeName = dest.nodeName.toLowerCase();
-
- if ( nodeName === "object" ) {
- // IE6-10 improperly clones children of object elements using classid.
- // IE10 throws NoModificationAllowedError if parent is null, #12132.
- if ( dest.parentNode ) {
- dest.outerHTML = src.outerHTML;
- }
-
- // This path appears unavoidable for IE9. When cloning an object
- // element in IE9, the outerHTML strategy above is not sufficient.
- // If the src has innerHTML and the destination does not,
- // copy the src.innerHTML into the dest.innerHTML. #10324
- if ( jQuery.support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML)) ) {
- dest.innerHTML = src.innerHTML;
- }
-
- } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
- // IE6-8 fails to persist the checked state of a cloned checkbox
- // or radio button. Worse, IE6-7 fail to give the cloned element
- // a checked appearance if the defaultChecked value isn't also set
-
- dest.defaultChecked = dest.checked = src.checked;
-
- // IE6-7 get confused and end up setting the value of a cloned
- // checkbox/radio button to an empty string instead of "on"
- if ( dest.value !== src.value ) {
- dest.value = src.value;
- }
-
- // IE6-8 fails to return the selected option to the default selected
- // state when cloning options
- } else if ( nodeName === "option" ) {
- dest.selected = src.defaultSelected;
-
- // IE6-8 fails to set the defaultValue to the correct value when
- // cloning other types of input fields
- } else if ( nodeName === "input" || nodeName === "textarea" ) {
- dest.defaultValue = src.defaultValue;
-
- // IE blanks contents when cloning scripts
- } else if ( nodeName === "script" && dest.text !== src.text ) {
- dest.text = src.text;
- }
-
- // Event data gets referenced instead of copied if the expando
- // gets copied too
- dest.removeAttribute( jQuery.expando );
-}
-
-jQuery.buildFragment = function( args, context, scripts ) {
- var fragment, cacheable, cachehit,
- first = args[ 0 ];
-
- // Set context from what may come in as undefined or a jQuery collection or a node
- // Updated to fix #12266 where accessing context[0] could throw an exception in IE9/10 &
- // also doubles as fix for #8950 where plain objects caused createDocumentFragment exception
- context = context || document;
- context = !context.nodeType && context[0] || context;
- context = context.ownerDocument || context;
-
- // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
- // Cloning options loses the selected state, so don't cache them
- // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
- // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
- // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
- if ( args.length === 1 && typeof first === "string" && first.length < 512 && context === document &&
- first.charAt(0) === "<" && !rnocache.test( first ) &&
- (jQuery.support.checkClone || !rchecked.test( first )) &&
- (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
-
- // Mark cacheable and look for a hit
- cacheable = true;
- fragment = jQuery.fragments[ first ];
- cachehit = fragment !== undefined;
- }
-
- if ( !fragment ) {
- fragment = context.createDocumentFragment();
- jQuery.clean( args, context, fragment, scripts );
-
- // Update the cache, but only store false
- // unless this is a second parsing of the same content
- if ( cacheable ) {
- jQuery.fragments[ first ] = cachehit && fragment;
- }
- }
-
- return { fragment: fragment, cacheable: cacheable };
-};
-
-jQuery.fragments = {};
-
-jQuery.each({
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function( name, original ) {
- jQuery.fn[ name ] = function( selector ) {
- var elems,
- i = 0,
- ret = [],
- insert = jQuery( selector ),
- l = insert.length,
- parent = this.length === 1 && this[0].parentNode;
-
- if ( (parent == null || parent && parent.nodeType === 11 && parent.childNodes.length === 1) && l === 1 ) {
- insert[ original ]( this[0] );
- return this;
- } else {
- for ( ; i < l; i++ ) {
- elems = ( i > 0 ? this.clone(true) : this ).get();
- jQuery( insert[i] )[ original ]( elems );
- ret = ret.concat( elems );
- }
-
- return this.pushStack( ret, name, insert.selector );
- }
- };
-});
-
-function getAll( elem ) {
- if ( typeof elem.getElementsByTagName !== "undefined" ) {
- return elem.getElementsByTagName( "*" );
-
- } else if ( typeof elem.querySelectorAll !== "undefined" ) {
- return elem.querySelectorAll( "*" );
-
- } else {
- return [];
- }
-}
-
-// Used in clean, fixes the defaultChecked property
-function fixDefaultChecked( elem ) {
- if ( rcheckableType.test( elem.type ) ) {
- elem.defaultChecked = elem.checked;
- }
-}
-
-jQuery.extend({
- clone: function( elem, dataAndEvents, deepDataAndEvents ) {
- var srcElements,
- destElements,
- i,
- clone;
-
- if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
- clone = elem.cloneNode( true );
-
- // IE<=8 does not properly clone detached, unknown element nodes
- } else {
- fragmentDiv.innerHTML = elem.outerHTML;
- fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
- }
-
- if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
- (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
- // IE copies events bound via attachEvent when using cloneNode.
- // Calling detachEvent on the clone will also remove the events
- // from the original. In order to get around this, we use some
- // proprietary methods to clear the events. Thanks to MooTools
- // guys for this hotness.
-
- cloneFixAttributes( elem, clone );
-
- // Using Sizzle here is crazy slow, so we use getElementsByTagName instead
- srcElements = getAll( elem );
- destElements = getAll( clone );
-
- // Weird iteration because IE will replace the length property
- // with an element if you are cloning the body and one of the
- // elements on the page has a name or id of "length"
- for ( i = 0; srcElements[i]; ++i ) {
- // Ensure that the destination node is not null; Fixes #9587
- if ( destElements[i] ) {
- cloneFixAttributes( srcElements[i], destElements[i] );
- }
- }
- }
-
- // Copy the events from the original to the clone
- if ( dataAndEvents ) {
- cloneCopyEvent( elem, clone );
-
- if ( deepDataAndEvents ) {
- srcElements = getAll( elem );
- destElements = getAll( clone );
-
- for ( i = 0; srcElements[i]; ++i ) {
- cloneCopyEvent( srcElements[i], destElements[i] );
- }
- }
- }
-
- srcElements = destElements = null;
-
- // Return the cloned set
- return clone;
- },
-
- clean: function( elems, context, fragment, scripts ) {
- var i, j, elem, tag, wrap, depth, div, hasBody, tbody, len, handleScript, jsTags,
- safe = context === document && safeFragment,
- ret = [];
-
- // Ensure that context is a document
- if ( !context || typeof context.createDocumentFragment === "undefined" ) {
- context = document;
- }
-
- // Use the already-created safe fragment if context permits
- for ( i = 0; (elem = elems[i]) != null; i++ ) {
- if ( typeof elem === "number" ) {
- elem += "";
- }
-
- if ( !elem ) {
- continue;
- }
-
- // Convert html string into DOM nodes
- if ( typeof elem === "string" ) {
- if ( !rhtml.test( elem ) ) {
- elem = context.createTextNode( elem );
- } else {
- // Ensure a safe container in which to render the html
- safe = safe || createSafeFragment( context );
- div = context.createElement("div");
- safe.appendChild( div );
-
- // Fix "XHTML"-style tags in all browsers
- elem = elem.replace(rxhtmlTag, "<$1></$2>");
-
- // Go to html and back, then peel off extra wrappers
- tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
- wrap = wrapMap[ tag ] || wrapMap._default;
- depth = wrap[0];
- div.innerHTML = wrap[1] + elem + wrap[2];
-
- // Move to the right depth
- while ( depth-- ) {
- div = div.lastChild;
- }
-
- // Remove IE's autoinserted <tbody> from table fragments
- if ( !jQuery.support.tbody ) {
-
- // String was a <table>, *may* have spurious <tbody>
- hasBody = rtbody.test(elem);
- tbody = tag === "table" && !hasBody ?
- div.firstChild && div.firstChild.childNodes :
-
- // String was a bare <thead> or <tfoot>
- wrap[1] === "<table>" && !hasBody ?
- div.childNodes :
- [];
-
- for ( j = tbody.length - 1; j >= 0 ; --j ) {
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
- }
- }
- }
-
- // IE completely kills leading whitespace when innerHTML is used
- if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
- div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
- }
-
- elem = div.childNodes;
-
- // Take out of fragment container (we need a fresh div each time)
- div.parentNode.removeChild( div );
- }
- }
-
- if ( elem.nodeType ) {
- ret.push( elem );
- } else {
- jQuery.merge( ret, elem );
- }
- }
-
- // Fix #11356: Clear elements from safeFragment
- if ( div ) {
- elem = div = safe = null;
- }
-
- // Reset defaultChecked for any radios and checkboxes
- // about to be appended to the DOM in IE 6/7 (#8060)
- if ( !jQuery.support.appendChecked ) {
- for ( i = 0; (elem = ret[i]) != null; i++ ) {
- if ( jQuery.nodeName( elem, "input" ) ) {
- fixDefaultChecked( elem );
- } else if ( typeof elem.getElementsByTagName !== "undefined" ) {
- jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
- }
- }
- }
-
- // Append elements to a provided document fragment
- if ( fragment ) {
- // Special handling of each script element
- handleScript = function( elem ) {
- // Check if we consider it executable
- if ( !elem.type || rscriptType.test( elem.type ) ) {
- // Detach the script and store it in the scripts array (if provided) or the fragment
- // Return truthy to indicate that it has been handled
- return scripts ?
- scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
- fragment.appendChild( elem );
- }
- };
-
- for ( i = 0; (elem = ret[i]) != null; i++ ) {
- // Check if we're done after handling an executable script
- if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
- // Append to fragment and handle embedded scripts
- fragment.appendChild( elem );
- if ( typeof elem.getElementsByTagName !== "undefined" ) {
- // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
- jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
-
- // Splice the scripts into ret after their former ancestor and advance our index beyond them
- ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
- i += jsTags.length;
- }
- }
- }
- }
-
- return ret;
- },
-
- cleanData: function( elems, /* internal */ acceptData ) {
- var data, id, elem, type,
- i = 0,
- internalKey = jQuery.expando,
- cache = jQuery.cache,
- deleteExpando = jQuery.support.deleteExpando,
- special = jQuery.event.special;
-
- for ( ; (elem = elems[i]) != null; i++ ) {
-
- if ( acceptData || jQuery.acceptData( elem ) ) {
-
- id = elem[ internalKey ];
- data = id && cache[ id ];
-
- if ( data ) {
- if ( data.events ) {
- for ( type in data.events ) {
- if ( special[ type ] ) {
- jQuery.event.remove( elem, type );
-
- // This is a shortcut to avoid jQuery.event.remove's overhead
- } else {
- jQuery.removeEvent( elem, type, data.handle );
- }
- }
- }
-
- // Remove cache only if it was not already removed by jQuery.event.remove
- if ( cache[ id ] ) {
-
- delete cache[ id ];
-
- // IE does not allow us to delete expando properties from nodes,
- // nor does it have a removeAttribute function on Document nodes;
- // we must handle all of these cases
- if ( deleteExpando ) {
- delete elem[ internalKey ];
-
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( internalKey );
-
- } else {
- elem[ internalKey ] = null;
- }
-
- jQuery.deletedIds.push( id );
- }
- }
- }
- }
- }
-});
-// Limit scope pollution from any deprecated API
-(function() {
-
-var matched, browser;
-
-// Use of jQuery.browser is frowned upon.
-// More details: http://api.jquery.com/jQuery.browser
-// jQuery.uaMatch maintained for back-compat
-jQuery.uaMatch = function( ua ) {
- ua = ua.toLowerCase();
-
- var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
- /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
- /(msie) ([\w.]+)/.exec( ua ) ||
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
- [];
-
- return {
- browser: match[ 1 ] || "",
- version: match[ 2 ] || "0"
- };
-};
-
-matched = jQuery.uaMatch( navigator.userAgent );
-browser = {};
-
-if ( matched.browser ) {
- browser[ matched.browser ] = true;
- browser.version = matched.version;
-}
-
-// Chrome is Webkit, but Webkit is also Safari.
-if ( browser.chrome ) {
- browser.webkit = true;
-} else if ( browser.webkit ) {
- browser.safari = true;
-}
-
-jQuery.browser = browser;
-
-jQuery.sub = function() {
- function jQuerySub( selector, context ) {
- return new jQuerySub.fn.init( selector, context );
- }
- jQuery.extend( true, jQuerySub, this );
- jQuerySub.superclass = this;
- jQuerySub.fn = jQuerySub.prototype = this();
- jQuerySub.fn.constructor = jQuerySub;
- jQuerySub.sub = this.sub;
- jQuerySub.fn.init = function init( selector, context ) {
- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
- context = jQuerySub( context );
- }
-
- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
- };
- jQuerySub.fn.init.prototype = jQuerySub.fn;
- var rootjQuerySub = jQuerySub(document);
- return jQuerySub;
-};
-
-})();
-var curCSS, iframe, iframeDoc,
- ralpha = /alpha\([^)]*\)/i,
- ropacity = /opacity=([^)]*)/,
- rposition = /^(top|right|bottom|left)$/,
- // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
- // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
- rdisplayswap = /^(none|table(?!-c[ea]).+)/,
- rmargin = /^margin/,
- rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
- rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
- rrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ),
- elemdisplay = {},
-
- cssShow = { position: "absolute", visibility: "hidden", display: "block" },
- cssNormalTransform = {
- letterSpacing: 0,
- fontWeight: 400
- },
-
- cssExpand = [ "Top", "Right", "Bottom", "Left" ],
- cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
-
- eventsToggle = jQuery.fn.toggle;
-
-// return a css property mapped to a potentially vendor prefixed property
-function vendorPropName( style, name ) {
-
- // shortcut for names that are not vendor prefixed
- if ( name in style ) {
- return name;
- }
-
- // check for vendor prefixed names
- var capName = name.charAt(0).toUpperCase() + name.slice(1),
- origName = name,
- i = cssPrefixes.length;
-
- while ( i-- ) {
- name = cssPrefixes[ i ] + capName;
- if ( name in style ) {
- return name;
- }
- }
-
- return origName;
-}
-
-function isHidden( elem, el ) {
- elem = el || elem;
- return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
-}
-
-function showHide( elements, show ) {
- var elem, display,
- values = [],
- index = 0,
- length = elements.length;
-
- for ( ; index < length; index++ ) {
- elem = elements[ index ];
- if ( !elem.style ) {
- continue;
- }
- values[ index ] = jQuery._data( elem, "olddisplay" );
- if ( show ) {
- // Reset the inline display of this element to learn if it is
- // being hidden by cascaded rules or not
- if ( !values[ index ] && elem.style.display === "none" ) {
- elem.style.display = "";
- }
-
- // Set elements which have been overridden with display: none
- // in a stylesheet to whatever the default browser style is
- // for such an element
- if ( elem.style.display === "" && isHidden( elem ) ) {
- values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
- }
- } else {
- display = curCSS( elem, "display" );
-
- if ( !values[ index ] && display !== "none" ) {
- jQuery._data( elem, "olddisplay", display );
- }
- }
- }
-
- // Set the display of most of the elements in a second loop
- // to avoid the constant reflow
- for ( index = 0; index < length; index++ ) {
- elem = elements[ index ];
- if ( !elem.style ) {
- continue;
- }
- if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
- elem.style.display = show ? values[ index ] || "" : "none";
- }
- }
-
- return elements;
-}
-
-jQuery.fn.extend({
- css: function( name, value ) {
- return jQuery.access( this, function( elem, name, value ) {
- return value !== undefined ?
- jQuery.style( elem, name, value ) :
- jQuery.css( elem, name );
- }, name, value, arguments.length > 1 );
- },
- show: function() {
- return showHide( this, true );
- },
- hide: function() {
- return showHide( this );
- },
- toggle: function( state, fn2 ) {
- var bool = typeof state === "boolean";
-
- if ( jQuery.isFunction( state ) && jQuery.isFunction( fn2 ) ) {
- return eventsToggle.apply( this, arguments );
- }
-
- return this.each(function() {
- if ( bool ? state : isHidden( this ) ) {
- jQuery( this ).show();
- } else {
- jQuery( this ).hide();
- }
- });
- }
-});
-
-jQuery.extend({
- // Add in style property hooks for overriding the default
- // behavior of getting and setting a style property
- cssHooks: {
- opacity: {
- get: function( elem, computed ) {
- if ( computed ) {
- // We should always get a number back from opacity
- var ret = curCSS( elem, "opacity" );
- return ret === "" ? "1" : ret;
-
- }
- }
- }
- },
-
- // Exclude the following css properties to add px
- cssNumber: {
- "fillOpacity": true,
- "fontWeight": true,
- "lineHeight": true,
- "opacity": true,
- "orphans": true,
- "widows": true,
- "zIndex": true,
- "zoom": true
- },
-
- // Add in properties whose names you wish to fix before
- // setting or getting the value
- cssProps: {
- // normalize float css property
- "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
- },
-
- // Get and set the style property on a DOM Node
- style: function( elem, name, value, extra ) {
- // Don't set styles on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
- return;
- }
-
- // Make sure that we're working with the right name
- var ret, type, hooks,
- origName = jQuery.camelCase( name ),
- style = elem.style;
-
- name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
-
- // gets hook for the prefixed version
- // followed by the unprefixed version
- hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
- // Check if we're setting a value
- if ( value !== undefined ) {
- type = typeof value;
-
- // convert relative number strings (+= or -=) to relative numbers. #7345
- if ( type === "string" && (ret = rrelNum.exec( value )) ) {
- value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
- // Fixes bug #9237
- type = "number";
- }
-
- // Make sure that NaN and null values aren't set. See: #7116
- if ( value == null || type === "number" && isNaN( value ) ) {
- return;
- }
-
- // If a number was passed in, add 'px' to the (except for certain CSS properties)
- if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
- value += "px";
- }
-
- // If a hook was provided, use that value, otherwise just set the specified value
- if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
- // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
- // Fixes bug #5509
- try {
- style[ name ] = value;
- } catch(e) {}
- }
-
- } else {
- // If a hook was provided get the non-computed value from there
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
- return ret;
- }
-
- // Otherwise just get the value from the style object
- return style[ name ];
- }
- },
-
- css: function( elem, name, numeric, extra ) {
- var val, num, hooks,
- origName = jQuery.camelCase( name );
-
- // Make sure that we're working with the right name
- name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
-
- // gets hook for the prefixed version
- // followed by the unprefixed version
- hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
- // If a hook was provided get the computed value from there
- if ( hooks && "get" in hooks ) {
- val = hooks.get( elem, true, extra );
- }
-
- // Otherwise, if a way to get the computed value exists, use that
- if ( val === undefined ) {
- val = curCSS( elem, name );
- }
-
- //convert "normal" to computed value
- if ( val === "normal" && name in cssNormalTransform ) {
- val = cssNormalTransform[ name ];
- }
-
- // Return, converting to number if forced or a qualifier was provided and val looks numeric
- if ( numeric || extra !== undefined ) {
- num = parseFloat( val );
- return numeric || jQuery.isNumeric( num ) ? num || 0 : val;
- }
- return val;
- },
-
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
- var ret, name,
- old = {};
-
- // Remember the old values, and insert the new ones
- for ( name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- ret = callback.call( elem );
-
- // Revert the old values
- for ( name in options ) {
- elem.style[ name ] = old[ name ];
- }
-
- return ret;
- }
-});
-
-// NOTE: To any future maintainer, we've window.getComputedStyle
-// because jsdom on node.js will break without it.
-if ( window.getComputedStyle ) {
- curCSS = function( elem, name ) {
- var ret, width, minWidth, maxWidth,
- computed = window.getComputedStyle( elem, null ),
- style = elem.style;
-
- if ( computed ) {
-
- ret = computed[ name ];
- if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
- ret = jQuery.style( elem, name );
- }
-
- // A tribute to the "awesome hack by Dean Edwards"
- // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
- // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
- // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
- if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
- width = style.width;
- minWidth = style.minWidth;
- maxWidth = style.maxWidth;
-
- style.minWidth = style.maxWidth = style.width = ret;
- ret = computed.width;
-
- style.width = width;
- style.minWidth = minWidth;
- style.maxWidth = maxWidth;
- }
- }
-
- return ret;
- };
-} else if ( document.documentElement.currentStyle ) {
- curCSS = function( elem, name ) {
- var left, rsLeft,
- ret = elem.currentStyle && elem.currentStyle[ name ],
- style = elem.style;
-
- // Avoid setting ret to empty string here
- // so we don't default to auto
- if ( ret == null && style && style[ name ] ) {
- ret = style[ name ];
- }
-
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- // but not position css attributes, as those are proportional to the parent element instead
- // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
- if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
-
- // Remember the original values
- left = style.left;
- rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
-
- // Put in the new values to get a computed value out
- if ( rsLeft ) {
- elem.runtimeStyle.left = elem.currentStyle.left;
- }
- style.left = name === "fontSize" ? "1em" : ret;
- ret = style.pixelLeft + "px";
-
- // Revert the changed values
- style.left = left;
- if ( rsLeft ) {
- elem.runtimeStyle.left = rsLeft;
- }
- }
-
- return ret === "" ? "auto" : ret;
- };
-}
-
-function setPositiveNumber( elem, value, subtract ) {
- var matches = rnumsplit.exec( value );
- return matches ?
- Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
- value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox ) {
- var i = extra === ( isBorderBox ? "border" : "content" ) ?
- // If we already have the right measurement, avoid augmentation
- 4 :
- // Otherwise initialize for horizontal or vertical properties
- name === "width" ? 1 : 0,
-
- val = 0;
-
- for ( ; i < 4; i += 2 ) {
- // both box models exclude margin, so add it if we want it
- if ( extra === "margin" ) {
- // we use jQuery.css instead of curCSS here
- // because of the reliableMarginRight CSS hook!
- val += jQuery.css( elem, extra + cssExpand[ i ], true );
- }
-
- // From this point on we use curCSS for maximum performance (relevant in animations)
- if ( isBorderBox ) {
- // border-box includes padding, so remove it if we want content
- if ( extra === "content" ) {
- val -= parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0;
- }
-
- // at this point, extra isn't border nor margin, so remove border
- if ( extra !== "margin" ) {
- val -= parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
- }
- } else {
- // at this point, extra isn't content, so add padding
- val += parseFloat( curCSS( elem, "padding" + cssExpand[ i ] ) ) || 0;
-
- // at this point, extra isn't content nor padding, so add border
- if ( extra !== "padding" ) {
- val += parseFloat( curCSS( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
- }
- }
- }
-
- return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
- // Start with offset property, which is equivalent to the border-box value
- var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
- valueIsBorderBox = true,
- isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box";
-
- // some non-html elements return undefined for offsetWidth, so check for null/undefined
- // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
- // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
- if ( val <= 0 || val == null ) {
- // Fall back to computed then uncomputed css if necessary
- val = curCSS( elem, name );
- if ( val < 0 || val == null ) {
- val = elem.style[ name ];
- }
-
- // Computed unit is not pixels. Stop here and return.
- if ( rnumnonpx.test(val) ) {
- return val;
- }
-
- // we need the check for style in case a browser which returns unreliable values
- // for getComputedStyle silently falls back to the reliable elem.style
- valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
-
- // Normalize "", auto, and prepare for extra
- val = parseFloat( val ) || 0;
- }
-
- // use the active box-sizing model to add/subtract irrelevant styles
- return ( val +
- augmentWidthOrHeight(
- elem,
- name,
- extra || ( isBorderBox ? "border" : "content" ),
- valueIsBorderBox
- )
- ) + "px";
-}
-
-
-// Try to determine the default display value of an element
-function css_defaultDisplay( nodeName ) {
- if ( elemdisplay[ nodeName ] ) {
- return elemdisplay[ nodeName ];
- }
-
- var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ),
- display = elem.css("display");
- elem.remove();
-
- // If the simple way fails,
- // get element's real default display by attaching it to a temp iframe
- if ( display === "none" || display === "" ) {
- // Use the already-created iframe if possible
- iframe = document.body.appendChild(
- iframe || jQuery.extend( document.createElement("iframe"), {
- frameBorder: 0,
- width: 0,
- height: 0
- })
- );
-
- // Create a cacheable copy of the iframe document on first call.
- // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
- // document to it; WebKit & Firefox won't allow reusing the iframe document.
- if ( !iframeDoc || !iframe.createElement ) {
- iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
- iframeDoc.write("<!doctype html><html><body>");
- iframeDoc.close();
- }
-
- elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );
-
- display = curCSS( elem, "display" );
- document.body.removeChild( iframe );
- }
-
- // Store the correct default display
- elemdisplay[ nodeName ] = display;
-
- return display;
-}
-
-jQuery.each([ "height", "width" ], function( i, name ) {
- jQuery.cssHooks[ name ] = {
- get: function( elem, computed, extra ) {
- if ( computed ) {
- // certain elements can have dimension info if we invisibly show them
- // however, it must have a current display style that would benefit from this
- if ( elem.offsetWidth === 0 && rdisplayswap.test( curCSS( elem, "display" ) ) ) {
- return jQuery.swap( elem, cssShow, function() {
- return getWidthOrHeight( elem, name, extra );
- });
- } else {
- return getWidthOrHeight( elem, name, extra );
- }
- }
- },
-
- set: function( elem, value, extra ) {
- return setPositiveNumber( elem, value, extra ?
- augmentWidthOrHeight(
- elem,
- name,
- extra,
- jQuery.support.boxSizing && jQuery.css( elem, "boxSizing" ) === "border-box"
- ) : 0
- );
- }
- };
-});
-
-if ( !jQuery.support.opacity ) {
- jQuery.cssHooks.opacity = {
- get: function( elem, computed ) {
- // IE uses filters for opacity
- return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
- ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
- computed ? "1" : "";
- },
-
- set: function( elem, value ) {
- var style = elem.style,
- currentStyle = elem.currentStyle,
- opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
- filter = currentStyle && currentStyle.filter || style.filter || "";
-
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- style.zoom = 1;
-
- // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
- if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
- style.removeAttribute ) {
-
- // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
- // if "filter:" is present at all, clearType is disabled, we want to avoid this
- // style.removeAttribute is IE Only, but so apparently is this code path...
- style.removeAttribute( "filter" );
-
- // if there there is no filter style applied in a css rule, we are done
- if ( currentStyle && !currentStyle.filter ) {
- return;
- }
- }
-
- // otherwise, set new filter values
- style.filter = ralpha.test( filter ) ?
- filter.replace( ralpha, opacity ) :
- filter + " " + opacity;
- }
- };
-}
-
-// These hooks cannot be added until DOM ready because the support test
-// for it is not run until after DOM ready
-jQuery(function() {
- if ( !jQuery.support.reliableMarginRight ) {
- jQuery.cssHooks.marginRight = {
- get: function( elem, computed ) {
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- // Work around by temporarily setting element display to inline-block
- return jQuery.swap( elem, { "display": "inline-block" }, function() {
- if ( computed ) {
- return curCSS( elem, "marginRight" );
- }
- });
- }
- };
- }
-
- // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
- // getComputedStyle returns percent when specified for top/left/bottom/right
- // rather than make the css module depend on the offset module, we just check for it here
- if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
- jQuery.each( [ "top", "left" ], function( i, prop ) {
- jQuery.cssHooks[ prop ] = {
- get: function( elem, computed ) {
- if ( computed ) {
- var ret = curCSS( elem, prop );
- // if curCSS returns percentage, fallback to offset
- return rnumnonpx.test( ret ) ? jQuery( elem ).position()[ prop ] + "px" : ret;
- }
- }
- };
- });
- }
-
-});
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.hidden = function( elem ) {
- return ( elem.offsetWidth === 0 && elem.offsetHeight === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || curCSS( elem, "display" )) === "none");
- };
-
- jQuery.expr.filters.visible = function( elem ) {
- return !jQuery.expr.filters.hidden( elem );
- };
-}
-
-// These hooks are used by animate to expand properties
-jQuery.each({
- margin: "",
- padding: "",
- border: "Width"
-}, function( prefix, suffix ) {
- jQuery.cssHooks[ prefix + suffix ] = {
- expand: function( value ) {
- var i,
-
- // assumes a single number if not a string
- parts = typeof value === "string" ? value.split(" ") : [ value ],
- expanded = {};
-
- for ( i = 0; i < 4; i++ ) {
- expanded[ prefix + cssExpand[ i ] + suffix ] =
- parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
- }
-
- return expanded;
- }
- };
-
- if ( !rmargin.test( prefix ) ) {
- jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
- }
-});
-var r20 = /%20/g,
- rbracket = /\[\]$/,
- rCRLF = /\r?\n/g,
- rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
- rselectTextarea = /^(?:select|textarea)/i;
-
-jQuery.fn.extend({
- serialize: function() {
- return jQuery.param( this.serializeArray() );
- },
- serializeArray: function() {
- return this.map(function(){
- return this.elements ? jQuery.makeArray( this.elements ) : this;
- })
- .filter(function(){
- return this.name && !this.disabled &&
- ( this.checked || rselectTextarea.test( this.nodeName ) ||
- rinput.test( this.type ) );
- })
- .map(function( i, elem ){
- var val = jQuery( this ).val();
-
- return val == null ?
- null :
- jQuery.isArray( val ) ?
- jQuery.map( val, function( val, i ){
- return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }) :
- { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }).get();
- }
-});
-
-//Serialize an array of form elements or a set of
-//key/values into a query string
-jQuery.param = function( a, traditional ) {
- var prefix,
- s = [],
- add = function( key, value ) {
- // If value is a function, invoke it and return its value
- value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
- s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
- };
-
- // Set traditional to true for jQuery <= 1.3.2 behavior.
- if ( traditional === undefined ) {
- traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
- }
-
- // If an array was passed in, assume that it is an array of form elements.
- if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
- // Serialize the form elements
- jQuery.each( a, function() {
- add( this.name, this.value );
- });
-
- } else {
- // If traditional, encode the "old" way (the way 1.3.2 or older
- // did it), otherwise encode params recursively.
- for ( prefix in a ) {
- buildParams( prefix, a[ prefix ], traditional, add );
- }
- }
-
- // Return the resulting serialization
- return s.join( "&" ).replace( r20, "+" );
-};
-
-function buildParams( prefix, obj, traditional, add ) {
- var name;
-
- if ( jQuery.isArray( obj ) ) {
- // Serialize array item.
- jQuery.each( obj, function( i, v ) {
- if ( traditional || rbracket.test( prefix ) ) {
- // Treat each array item as a scalar.
- add( prefix, v );
-
- } else {
- // If array item is non-scalar (array or object), encode its
- // numeric index to resolve deserialization ambiguity issues.
- // Note that rack (as of 1.0.0) can't currently deserialize
- // nested arrays properly, and attempting to do so may cause
- // a server error. Possible fixes are to modify rack's
- // deserialization algorithm or to provide an option or flag
- // to force array serialization to be shallow.
- buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
- }
- });
-
- } else if ( !traditional && jQuery.type( obj ) === "object" ) {
- // Serialize object item.
- for ( name in obj ) {
- buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
- }
-
- } else {
- // Serialize scalar item.
- add( prefix, obj );
- }
-}
-var
- // Document location
- ajaxLocParts,
- ajaxLocation,
-
- rhash = /#.*$/,
- rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
- // #7653, #8125, #8152: local protocol detection
- rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
- rnoContent = /^(?:GET|HEAD)$/,
- rprotocol = /^\/\//,
- rquery = /\?/,
- rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
- rts = /([?&])_=[^&]*/,
- rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
-
- // Keep a copy of the old load method
- _load = jQuery.fn.load,
-
- /* Prefilters
- * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
- * 2) These are called:
- * - BEFORE asking for a transport
- * - AFTER param serialization (s.data is a string if s.processData is true)
- * 3) key is the dataType
- * 4) the catchall symbol "*" can be used
- * 5) execution will start with transport dataType and THEN continue down to "*" if needed
- */
- prefilters = {},
-
- /* Transports bindings
- * 1) key is the dataType
- * 2) the catchall symbol "*" can be used
- * 3) selection will start with transport dataType and THEN go to "*" if needed
- */
- transports = {},
-
- // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
- allTypes = ["*/"] + ["*"];
-
-// #8138, IE may throw an exception when accessing
-// a field from window.location if document.domain has been set
-try {
- ajaxLocation = location.href;
-} catch( e ) {
- // Use the href attribute of an A element
- // since IE will modify it given document.location
- ajaxLocation = document.createElement( "a" );
- ajaxLocation.href = "";
- ajaxLocation = ajaxLocation.href;
-}
-
-// Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
- // dataTypeExpression is optional and defaults to "*"
- return function( dataTypeExpression, func ) {
-
- if ( typeof dataTypeExpression !== "string" ) {
- func = dataTypeExpression;
- dataTypeExpression = "*";
- }
-
- var dataType, list, placeBefore,
- dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ),
- i = 0,
- length = dataTypes.length;
-
- if ( jQuery.isFunction( func ) ) {
- // For each dataType in the dataTypeExpression
- for ( ; i < length; i++ ) {
- dataType = dataTypes[ i ];
- // We control if we're asked to add before
- // any existing element
- placeBefore = /^\+/.test( dataType );
- if ( placeBefore ) {
- dataType = dataType.substr( 1 ) || "*";
- }
- list = structure[ dataType ] = structure[ dataType ] || [];
- // then we add to the structure accordingly
- list[ placeBefore ? "unshift" : "push" ]( func );
- }
- }
- };
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
- dataType /* internal */, inspected /* internal */ ) {
-
- dataType = dataType || options.dataTypes[ 0 ];
- inspected = inspected || {};
-
- inspected[ dataType ] = true;
-
- var selection,
- list = structure[ dataType ],
- i = 0,
- length = list ? list.length : 0,
- executeOnly = ( structure === prefilters );
-
- for ( ; i < length && ( executeOnly || !selection ); i++ ) {
- selection = list[ i ]( options, originalOptions, jqXHR );
- // If we got redirected to another dataType
- // we try there if executing only and not done already
- if ( typeof selection === "string" ) {
- if ( !executeOnly || inspected[ selection ] ) {
- selection = undefined;
- } else {
- options.dataTypes.unshift( selection );
- selection = inspectPrefiltersOrTransports(
- structure, options, originalOptions, jqXHR, selection, inspected );
- }
- }
- }
- // If we're only executing or nothing was selected
- // we try the catchall dataType if not done already
- if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
- selection = inspectPrefiltersOrTransports(
- structure, options, originalOptions, jqXHR, "*", inspected );
- }
- // unnecessary when only executing (prefilters)
- // but it'll be ignored by the caller in that case
- return selection;
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
- var key, deep,
- flatOptions = jQuery.ajaxSettings.flatOptions || {};
- for ( key in src ) {
- if ( src[ key ] !== undefined ) {
- ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
- }
- }
- if ( deep ) {
- jQuery.extend( true, target, deep );
- }
-}
-
-jQuery.fn.load = function( url, params, callback ) {
- if ( typeof url !== "string" && _load ) {
- return _load.apply( this, arguments );
- }
-
- // Don't do a request if no elements are being requested
- if ( !this.length ) {
- return this;
- }
-
- var selector, type, response,
- self = this,
- off = url.indexOf(" ");
-
- if ( off >= 0 ) {
- selector = url.slice( off, url.length );
- url = url.slice( 0, off );
- }
-
- // If it's a function
- if ( jQuery.isFunction( params ) ) {
-
- // We assume that it's the callback
- callback = params;
- params = undefined;
-
- // Otherwise, build a param string
- } else if ( params && typeof params === "object" ) {
- type = "POST";
- }
-
- // Request the remote document
- jQuery.ajax({
- url: url,
-
- // if "type" variable is undefined, then "GET" method will be used
- type: type,
- dataType: "html",
- data: params,
- complete: function( jqXHR, status ) {
- if ( callback ) {
- self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
- }
- }
- }).done(function( responseText ) {
-
- // Save response for use in complete callback
- response = arguments;
-
- // See if a selector was specified
- self.html( selector ?
-
- // Create a dummy div to hold the results
- jQuery("<div>")
-
- // inject the contents of the document in, removing the scripts
- // to avoid any 'Permission Denied' errors in IE
- .append( responseText.replace( rscript, "" ) )
-
- // Locate the specified elements
- .find( selector ) :
-
- // If not, just inject the full result
- responseText );
-
- });
-
- return this;
-};
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
- jQuery.fn[ o ] = function( f ){
- return this.on( o, f );
- };
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
- jQuery[ method ] = function( url, data, callback, type ) {
- // shift arguments if data argument was omitted
- if ( jQuery.isFunction( data ) ) {
- type = type || callback;
- callback = data;
- data = undefined;
- }
-
- return jQuery.ajax({
- type: method,
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- };
-});
-
-jQuery.extend({
-
- getScript: function( url, callback ) {
- return jQuery.get( url, undefined, callback, "script" );
- },
-
- getJSON: function( url, data, callback ) {
- return jQuery.get( url, data, callback, "json" );
- },
-
- // Creates a full fledged settings object into target
- // with both ajaxSettings and settings fields.
- // If target is omitted, writes into ajaxSettings.
- ajaxSetup: function( target, settings ) {
- if ( settings ) {
- // Building a settings object
- ajaxExtend( target, jQuery.ajaxSettings );
- } else {
- // Extending ajaxSettings
- settings = target;
- target = jQuery.ajaxSettings;
- }
- ajaxExtend( target, settings );
- return target;
- },
-
- ajaxSettings: {
- url: ajaxLocation,
- isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
- global: true,
- type: "GET",
- contentType: "application/x-www-form-urlencoded; charset=UTF-8",
- processData: true,
- async: true,
- /*
- timeout: 0,
- data: null,
- dataType: null,
- username: null,
- password: null,
- cache: null,
- throws: false,
- traditional: false,
- headers: {},
- */
-
- accepts: {
- xml: "application/xml, text/xml",
- html: "text/html",
- text: "text/plain",
- json: "application/json, text/javascript",
- "*": allTypes
- },
-
- contents: {
- xml: /xml/,
- html: /html/,
- json: /json/
- },
-
- responseFields: {
- xml: "responseXML",
- text: "responseText"
- },
-
- // List of data converters
- // 1) key format is "source_type destination_type" (a single space in-between)
- // 2) the catchall symbol "*" can be used for source_type
- converters: {
-
- // Convert anything to text
- "* text": window.String,
-
- // Text to html (true = no transformation)
- "text html": true,
-
- // Evaluate text as a json expression
- "text json": jQuery.parseJSON,
-
- // Parse text as xml
- "text xml": jQuery.parseXML
- },
-
- // For options that shouldn't be deep extended:
- // you can add your own custom options here if
- // and when you create one that shouldn't be
- // deep extended (see ajaxExtend)
- flatOptions: {
- context: true,
- url: true
- }
- },
-
- ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
- ajaxTransport: addToPrefiltersOrTransports( transports ),
-
- // Main method
- ajax: function( url, options ) {
-
- // If url is an object, simulate pre-1.5 signature
- if ( typeof url === "object" ) {
- options = url;
- url = undefined;
- }
-
- // Force options to be an object
- options = options || {};
-
- var // ifModified key
- ifModifiedKey,
- // Response headers
- responseHeadersString,
- responseHeaders,
- // transport
- transport,
- // timeout handle
- timeoutTimer,
- // Cross-domain detection vars
- parts,
- // To know if global events are to be dispatched
- fireGlobals,
- // Loop variable
- i,
- // Create the final options object
- s = jQuery.ajaxSetup( {}, options ),
- // Callbacks context
- callbackContext = s.context || s,
- // Context for global events
- // It's the callbackContext if one was provided in the options
- // and if it's a DOM node or a jQuery collection
- globalEventContext = callbackContext !== s &&
- ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
- jQuery( callbackContext ) : jQuery.event,
- // Deferreds
- deferred = jQuery.Deferred(),
- completeDeferred = jQuery.Callbacks( "once memory" ),
- // Status-dependent callbacks
- statusCode = s.statusCode || {},
- // Headers (they are sent all at once)
- requestHeaders = {},
- requestHeadersNames = {},
- // The jqXHR state
- state = 0,
- // Default abort message
- strAbort = "canceled",
- // Fake xhr
- jqXHR = {
-
- readyState: 0,
-
- // Caches the header
- setRequestHeader: function( name, value ) {
- if ( !state ) {
- var lname = name.toLowerCase();
- name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
- requestHeaders[ name ] = value;
- }
- return this;
- },
-
- // Raw string
- getAllResponseHeaders: function() {
- return state === 2 ? responseHeadersString : null;
- },
-
- // Builds headers hashtable if needed
- getResponseHeader: function( key ) {
- var match;
- if ( state === 2 ) {
- if ( !responseHeaders ) {
- responseHeaders = {};
- while( ( match = rheaders.exec( responseHeadersString ) ) ) {
- responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
- }
- }
- match = responseHeaders[ key.toLowerCase() ];
- }
- return match === undefined ? null : match;
- },
-
- // Overrides response content-type header
- overrideMimeType: function( type ) {
- if ( !state ) {
- s.mimeType = type;
- }
- return this;
- },
-
- // Cancel the request
- abort: function( statusText ) {
- statusText = statusText || strAbort;
- if ( transport ) {
- transport.abort( statusText );
- }
- done( 0, statusText );
- return this;
- }
- };
-
- // Callback for when everything is done
- // It is defined here because jslint complains if it is declared
- // at the end of the function (which would be more logical and readable)
- function done( status, nativeStatusText, responses, headers ) {
- var isSuccess, success, error, response, modified,
- statusText = nativeStatusText;
-
- // Called once
- if ( state === 2 ) {
- return;
- }
-
- // State is "done" now
- state = 2;
-
- // Clear timeout if it exists
- if ( timeoutTimer ) {
- clearTimeout( timeoutTimer );
- }
-
- // Dereference transport for early garbage collection
- // (no matter how long the jqXHR object will be used)
- transport = undefined;
-
- // Cache response headers
- responseHeadersString = headers || "";
-
- // Set readyState
- jqXHR.readyState = status > 0 ? 4 : 0;
-
- // Get response data
- if ( responses ) {
- response = ajaxHandleResponses( s, jqXHR, responses );
- }
-
- // If successful, handle type chaining
- if ( status >= 200 && status < 300 || status === 304 ) {
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
-
- modified = jqXHR.getResponseHeader("Last-Modified");
- if ( modified ) {
- jQuery.lastModified[ ifModifiedKey ] = modified;
- }
- modified = jqXHR.getResponseHeader("Etag");
- if ( modified ) {
- jQuery.etag[ ifModifiedKey ] = modified;
- }
- }
-
- // If not modified
- if ( status === 304 ) {
-
- statusText = "notmodified";
- isSuccess = true;
-
- // If we have data
- } else {
-
- isSuccess = ajaxConvert( s, response );
- statusText = isSuccess.state;
- success = isSuccess.data;
- error = isSuccess.error;
- isSuccess = !error;
- }
- } else {
- // We extract error from statusText
- // then normalize statusText and status for non-aborts
- error = statusText;
- if ( !statusText || status ) {
- statusText = "error";
- if ( status < 0 ) {
- status = 0;
- }
- }
- }
-
- // Set data for the fake xhr object
- jqXHR.status = status;
- jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
- // Success/Error
- if ( isSuccess ) {
- deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
- } else {
- deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
- }
-
- // Status-dependent callbacks
- jqXHR.statusCode( statusCode );
- statusCode = undefined;
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
- [ jqXHR, s, isSuccess ? success : error ] );
- }
-
- // Complete
- completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
- // Handle the global AJAX counter
- if ( !( --jQuery.active ) ) {
- jQuery.event.trigger( "ajaxStop" );
- }
- }
- }
-
- // Attach deferreds
- deferred.promise( jqXHR );
- jqXHR.success = jqXHR.done;
- jqXHR.error = jqXHR.fail;
- jqXHR.complete = completeDeferred.add;
-
- // Status-dependent callbacks
- jqXHR.statusCode = function( map ) {
- if ( map ) {
- var tmp;
- if ( state < 2 ) {
- for ( tmp in map ) {
- statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
- }
- } else {
- tmp = map[ jqXHR.status ];
- jqXHR.always( tmp );
- }
- }
- return this;
- };
-
- // Remove hash character (#7531: and string promotion)
- // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
- // We also use the url parameter if available
- s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
- // Extract dataTypes list
- s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace );
-
- // A cross-domain request is in order when we have a protocol:host:port mismatch
- if ( s.crossDomain == null ) {
- parts = rurl.exec( s.url.toLowerCase() ) || false;
- s.crossDomain = parts && ( parts.join(":") + ( parts[ 3 ] ? "" : parts[ 1 ] === "http:" ? 80 : 443 ) ) !==
- ( ajaxLocParts.join(":") + ( ajaxLocParts[ 3 ] ? "" : ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) );
- }
-
- // Convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" ) {
- s.data = jQuery.param( s.data, s.traditional );
- }
-
- // Apply prefilters
- inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
- // If request was aborted inside a prefilter, stop there
- if ( state === 2 ) {
- return jqXHR;
- }
-
- // We can fire global events as of now if asked to
- fireGlobals = s.global;
-
- // Uppercase the type
- s.type = s.type.toUpperCase();
-
- // Determine if request has content
- s.hasContent = !rnoContent.test( s.type );
-
- // Watch for a new set of requests
- if ( fireGlobals && jQuery.active++ === 0 ) {
- jQuery.event.trigger( "ajaxStart" );
- }
-
- // More options handling for requests with no content
- if ( !s.hasContent ) {
-
- // If data is available, append data to url
- if ( s.data ) {
- s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
- // #9682: remove data so that it's not used in an eventual retry
- delete s.data;
- }
-
- // Get ifModifiedKey before adding the anti-cache parameter
- ifModifiedKey = s.url;
-
- // Add anti-cache in url if needed
- if ( s.cache === false ) {
-
- var ts = jQuery.now(),
- // try replacing _= if it is there
- ret = s.url.replace( rts, "$1_=" + ts );
-
- // if nothing was replaced, add timestamp to the end
- s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
- }
- }
-
- // Set the correct header, if data is being sent
- if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
- jqXHR.setRequestHeader( "Content-Type", s.contentType );
- }
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- ifModifiedKey = ifModifiedKey || s.url;
- if ( jQuery.lastModified[ ifModifiedKey ] ) {
- jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
- }
- if ( jQuery.etag[ ifModifiedKey ] ) {
- jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
- }
- }
-
- // Set the Accepts header for the server, depending on the dataType
- jqXHR.setRequestHeader(
- "Accept",
- s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
- s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
- s.accepts[ "*" ]
- );
-
- // Check for headers option
- for ( i in s.headers ) {
- jqXHR.setRequestHeader( i, s.headers[ i ] );
- }
-
- // Allow custom headers/mimetypes and early abort
- if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
- // Abort if not done already and return
- return jqXHR.abort();
-
- }
-
- // aborting is no longer a cancellation
- strAbort = "abort";
-
- // Install callbacks on deferreds
- for ( i in { success: 1, error: 1, complete: 1 } ) {
- jqXHR[ i ]( s[ i ] );
- }
-
- // Get transport
- transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
- // If no transport, we auto-abort
- if ( !transport ) {
- done( -1, "No Transport" );
- } else {
- jqXHR.readyState = 1;
- // Send global event
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
- }
- // Timeout
- if ( s.async && s.timeout > 0 ) {
- timeoutTimer = setTimeout( function(){
- jqXHR.abort( "timeout" );
- }, s.timeout );
- }
-
- try {
- state = 1;
- transport.send( requestHeaders, done );
- } catch (e) {
- // Propagate exception as error if not done
- if ( state < 2 ) {
- done( -1, e );
- // Simply rethrow otherwise
- } else {
- throw e;
- }
- }
- }
-
- return jqXHR;
- },
-
- // Counter for holding the number of active queries
- active: 0,
-
- // Last-Modified header cache for next request
- lastModified: {},
- etag: {}
-
-});
-
-/* Handles responses to an ajax request:
- * - sets all responseXXX fields accordingly
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-
- var ct, type, finalDataType, firstDataType,
- contents = s.contents,
- dataTypes = s.dataTypes,
- responseFields = s.responseFields;
-
- // Fill responseXXX fields
- for ( type in responseFields ) {
- if ( type in responses ) {
- jqXHR[ responseFields[type] ] = responses[ type ];
- }
- }
-
- // Remove auto dataType and get content-type in the process
- while( dataTypes[ 0 ] === "*" ) {
- dataTypes.shift();
- if ( ct === undefined ) {
- ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
- }
- }
-
- // Check if we're dealing with a known content-type
- if ( ct ) {
- for ( type in contents ) {
- if ( contents[ type ] && contents[ type ].test( ct ) ) {
- dataTypes.unshift( type );
- break;
- }
- }
- }
-
- // Check to see if we have a response for the expected dataType
- if ( dataTypes[ 0 ] in responses ) {
- finalDataType = dataTypes[ 0 ];
- } else {
- // Try convertible dataTypes
- for ( type in responses ) {
- if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
- finalDataType = type;
- break;
- }
- if ( !firstDataType ) {
- firstDataType = type;
- }
- }
- // Or just use first one
- finalDataType = finalDataType || firstDataType;
- }
-
- // If we found a dataType
- // We add the dataType to the list if needed
- // and return the corresponding response
- if ( finalDataType ) {
- if ( finalDataType !== dataTypes[ 0 ] ) {
- dataTypes.unshift( finalDataType );
- }
- return responses[ finalDataType ];
- }
-}
-
-// Chain conversions given the request and the original response
-function ajaxConvert( s, response ) {
-
- var conv, conv2, current, tmp,
- // Work with a copy of dataTypes in case we need to modify it for conversion
- dataTypes = s.dataTypes.slice(),
- prev = dataTypes[ 0 ],
- converters = {},
- i = 0;
-
- // Apply the dataFilter if provided
- if ( s.dataFilter ) {
- response = s.dataFilter( response, s.dataType );
- }
-
- // Create converters map with lowercased keys
- if ( dataTypes[ 1 ] ) {
- for ( conv in s.converters ) {
- converters[ conv.toLowerCase() ] = s.converters[ conv ];
- }
- }
-
- // Convert to each sequential dataType, tolerating list modification
- for ( ; (current = dataTypes[++i]); ) {
-
- // There's only work to do if current dataType is non-auto
- if ( current !== "*" ) {
-
- // Convert response if prev dataType is non-auto and differs from current
- if ( prev !== "*" && prev !== current ) {
-
- // Seek a direct converter
- conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
- // If none found, seek a pair
- if ( !conv ) {
- for ( conv2 in converters ) {
-
- // If conv2 outputs current
- tmp = conv2.split(" ");
- if ( tmp[ 1 ] === current ) {
-
- // If prev can be converted to accepted input
- conv = converters[ prev + " " + tmp[ 0 ] ] ||
- converters[ "* " + tmp[ 0 ] ];
- if ( conv ) {
- // Condense equivalence converters
- if ( conv === true ) {
- conv = converters[ conv2 ];
-
- // Otherwise, insert the intermediate dataType
- } else if ( converters[ conv2 ] !== true ) {
- current = tmp[ 0 ];
- dataTypes.splice( i--, 0, current );
- }
-
- break;
- }
- }
- }
- }
-
- // Apply converter (if not an equivalence)
- if ( conv !== true ) {
-
- // Unless errors are allowed to bubble, catch and return them
- if ( conv && s["throws"] ) {
- response = conv( response );
- } else {
- try {
- response = conv( response );
- } catch ( e ) {
- return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
- }
- }
- }
- }
-
- // Update prev for next iteration
- prev = current;
- }
- }
-
- return { state: "success", data: response };
-}
-var oldCallbacks = [],
- rquestion = /\?/,
- rjsonp = /(=)\?(?=&|$)|\?\?/,
- nonce = jQuery.now();
-
-// Default jsonp settings
-jQuery.ajaxSetup({
- jsonp: "callback",
- jsonpCallback: function() {
- var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
- this[ callback ] = true;
- return callback;
- }
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
- var callbackName, overwritten, responseContainer,
- data = s.data,
- url = s.url,
- hasCallback = s.jsonp !== false,
- replaceInUrl = hasCallback && rjsonp.test( url ),
- replaceInData = hasCallback && !replaceInUrl && typeof data === "string" &&
- !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") &&
- rjsonp.test( data );
-
- // Handle iff the expected data type is "jsonp" or we have a parameter to set
- if ( s.dataTypes[ 0 ] === "jsonp" || replaceInUrl || replaceInData ) {
-
- // Get callback name, remembering preexisting value associated with it
- callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
- s.jsonpCallback() :
- s.jsonpCallback;
- overwritten = window[ callbackName ];
-
- // Insert callback into url or form data
- if ( replaceInUrl ) {
- s.url = url.replace( rjsonp, "$1" + callbackName );
- } else if ( replaceInData ) {
- s.data = data.replace( rjsonp, "$1" + callbackName );
- } else if ( hasCallback ) {
- s.url += ( rquestion.test( url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
- }
-
- // Use data converter to retrieve json after script execution
- s.converters["script json"] = function() {
- if ( !responseContainer ) {
- jQuery.error( callbackName + " was not called" );
- }
- return responseContainer[ 0 ];
- };
-
- // force json dataType
- s.dataTypes[ 0 ] = "json";
-
- // Install callback
- window[ callbackName ] = function() {
- responseContainer = arguments;
- };
-
- // Clean-up function (fires after converters)
- jqXHR.always(function() {
- // Restore preexisting value
- window[ callbackName ] = overwritten;
-
- // Save back as free
- if ( s[ callbackName ] ) {
- // make sure that re-using the options doesn't screw things around
- s.jsonpCallback = originalSettings.jsonpCallback;
-
- // save the callback name for future use
- oldCallbacks.push( callbackName );
- }
-
- // Call if it was a function and we have a response
- if ( responseContainer && jQuery.isFunction( overwritten ) ) {
- overwritten( responseContainer[ 0 ] );
- }
-
- responseContainer = overwritten = undefined;
- });
-
- // Delegate to script
- return "script";
- }
-});
-// Install script dataType
-jQuery.ajaxSetup({
- accepts: {
- script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
- },
- contents: {
- script: /javascript|ecmascript/
- },
- converters: {
- "text script": function( text ) {
- jQuery.globalEval( text );
- return text;
- }
- }
-});
-
-// Handle cache's special case and global
-jQuery.ajaxPrefilter( "script", function( s ) {
- if ( s.cache === undefined ) {
- s.cache = false;
- }
- if ( s.crossDomain ) {
- s.type = "GET";
- s.global = false;
- }
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function(s) {
-
- // This transport only deals with cross domain requests
- if ( s.crossDomain ) {
-
- var script,
- head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
-
- return {
-
- send: function( _, callback ) {
-
- script = document.createElement( "script" );
-
- script.async = "async";
-
- if ( s.scriptCharset ) {
- script.charset = s.scriptCharset;
- }
-
- script.src = s.url;
-
- // Attach handlers for all browsers
- script.onload = script.onreadystatechange = function( _, isAbort ) {
-
- if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
-
- // Handle memory leak in IE
- script.onload = script.onreadystatechange = null;
-
- // Remove the script
- if ( head && script.parentNode ) {
- head.removeChild( script );
- }
-
- // Dereference the script
- script = undefined;
-
- // Callback if not abort
- if ( !isAbort ) {
- callback( 200, "success" );
- }
- }
- };
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709 and #4378).
- head.insertBefore( script, head.firstChild );
- },
-
- abort: function() {
- if ( script ) {
- script.onload( 0, 1 );
- }
- }
- };
- }
-});
-var xhrCallbacks,
- // #5280: Internet Explorer will keep connections alive if we don't abort on unload
- xhrOnUnloadAbort = window.ActiveXObject ? function() {
- // Abort all pending requests
- for ( var key in xhrCallbacks ) {
- xhrCallbacks[ key ]( 0, 1 );
- }
- } : false,
- xhrId = 0;
-
-// Functions to create xhrs
-function createStandardXHR() {
- try {
- return new window.XMLHttpRequest();
- } catch( e ) {}
-}
-
-function createActiveXHR() {
- try {
- return new window.ActiveXObject( "Microsoft.XMLHTTP" );
- } catch( e ) {}
-}
-
-// Create the request object
-// (This is still attached to ajaxSettings for backward compatibility)
-jQuery.ajaxSettings.xhr = window.ActiveXObject ?
- /* Microsoft failed to properly
- * implement the XMLHttpRequest in IE7 (can't request local files),
- * so we use the ActiveXObject when it is available
- * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
- * we need a fallback.
- */
- function() {
- return !this.isLocal && createStandardXHR() || createActiveXHR();
- } :
- // For all other browsers, use the standard XMLHttpRequest object
- createStandardXHR;
-
-// Determine support properties
-(function( xhr ) {
- jQuery.extend( jQuery.support, {
- ajax: !!xhr,
- cors: !!xhr && ( "withCredentials" in xhr )
- });
-})( jQuery.ajaxSettings.xhr() );
-
-// Create transport if the browser can provide an xhr
-if ( jQuery.support.ajax ) {
-
- jQuery.ajaxTransport(function( s ) {
- // Cross domain only allowed if supported through XMLHttpRequest
- if ( !s.crossDomain || jQuery.support.cors ) {
-
- var callback;
-
- return {
- send: function( headers, complete ) {
-
- // Get a new xhr
- var handle, i,
- xhr = s.xhr();
-
- // Open the socket
- // Passing null username, generates a login popup on Opera (#2865)
- if ( s.username ) {
- xhr.open( s.type, s.url, s.async, s.username, s.password );
- } else {
- xhr.open( s.type, s.url, s.async );
- }
-
- // Apply custom fields if provided
- if ( s.xhrFields ) {
- for ( i in s.xhrFields ) {
- xhr[ i ] = s.xhrFields[ i ];
- }
- }
-
- // Override mime type if needed
- if ( s.mimeType && xhr.overrideMimeType ) {
- xhr.overrideMimeType( s.mimeType );
- }
-
- // X-Requested-With header
- // For cross-domain requests, seeing as conditions for a preflight are
- // akin to a jigsaw puzzle, we simply never set it to be sure.
- // (it can always be set on a per-request basis or even using ajaxSetup)
- // For same-domain requests, won't change header if already provided.
- if ( !s.crossDomain && !headers["X-Requested-With"] ) {
- headers[ "X-Requested-With" ] = "XMLHttpRequest";
- }
-
- // Need an extra try/catch for cross domain requests in Firefox 3
- try {
- for ( i in headers ) {
- xhr.setRequestHeader( i, headers[ i ] );
- }
- } catch( _ ) {}
-
- // Do send the request
- // This may raise an exception which is actually
- // handled in jQuery.ajax (so no try/catch here)
- xhr.send( ( s.hasContent && s.data ) || null );
-
- // Listener
- callback = function( _, isAbort ) {
-
- var status,
- statusText,
- responseHeaders,
- responses,
- xml;
-
- // Firefox throws exceptions when accessing properties
- // of an xhr when a network error occurred
- // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
- try {
-
- // Was never called and is aborted or complete
- if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
-
- // Only called once
- callback = undefined;
-
- // Do not keep as active anymore
- if ( handle ) {
- xhr.onreadystatechange = jQuery.noop;
- if ( xhrOnUnloadAbort ) {
- delete xhrCallbacks[ handle ];
- }
- }
-
- // If it's an abort
- if ( isAbort ) {
- // Abort it manually if needed
- if ( xhr.readyState !== 4 ) {
- xhr.abort();
- }
- } else {
- status = xhr.status;
- responseHeaders = xhr.getAllResponseHeaders();
- responses = {};
- xml = xhr.responseXML;
-
- // Construct response list
- if ( xml && xml.documentElement /* #4958 */ ) {
- responses.xml = xml;
- }
-
- // When requesting binary data, IE6-9 will throw an exception
- // on any attempt to access responseText (#11426)
- try {
- responses.text = xhr.responseText;
- } catch( _ ) {
- }
-
- // Firefox throws an exception when accessing
- // statusText for faulty cross-domain requests
- try {
- statusText = xhr.statusText;
- } catch( e ) {
- // We normalize with Webkit giving an empty statusText
- statusText = "";
- }
-
- // Filter status for non standard behaviors
-
- // If the request is local and we have data: assume a success
- // (success with no data won't get notified, that's the best we
- // can do given current implementations)
- if ( !status && s.isLocal && !s.crossDomain ) {
- status = responses.text ? 200 : 404;
- // IE - #1450: sometimes returns 1223 when it should be 204
- } else if ( status === 1223 ) {
- status = 204;
- }
- }
- }
- } catch( firefoxAccessException ) {
- if ( !isAbort ) {
- complete( -1, firefoxAccessException );
- }
- }
-
- // Call complete if needed
- if ( responses ) {
- complete( status, statusText, responses, responseHeaders );
- }
- };
-
- if ( !s.async ) {
- // if we're in sync mode we fire the callback
- callback();
- } else if ( xhr.readyState === 4 ) {
- // (IE6 & IE7) if it's in cache and has been
- // retrieved directly we need to fire the callback
- setTimeout( callback, 0 );
- } else {
- handle = ++xhrId;
- if ( xhrOnUnloadAbort ) {
- // Create the active xhrs callbacks list if needed
- // and attach the unload handler
- if ( !xhrCallbacks ) {
- xhrCallbacks = {};
- jQuery( window ).unload( xhrOnUnloadAbort );
- }
- // Add to list of active xhrs callbacks
- xhrCallbacks[ handle ] = callback;
- }
- xhr.onreadystatechange = callback;
- }
- },
-
- abort: function() {
- if ( callback ) {
- callback(0,1);
- }
- }
- };
- }
- });
-}
-var fxNow, timerId,
- rfxtypes = /^(?:toggle|show|hide)$/,
- rfxnum = new RegExp( "^(?:([-+])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
- rrun = /queueHooks$/,
- animationPrefilters = [ defaultPrefilter ],
- tweeners = {
- "*": [function( prop, value ) {
- var end, unit,
- tween = this.createTween( prop, value ),
- parts = rfxnum.exec( value ),
- target = tween.cur(),
- start = +target || 0,
- scale = 1,
- maxIterations = 20;
-
- if ( parts ) {
- end = +parts[2];
- unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );
-
- // We need to compute starting value
- if ( unit !== "px" && start ) {
- // Iteratively approximate from a nonzero starting point
- // Prefer the current property, because this process will be trivial if it uses the same units
- // Fallback to end or a simple constant
- start = jQuery.css( tween.elem, prop, true ) || end || 1;
-
- do {
- // If previous iteration zeroed out, double until we get *something*
- // Use a string for doubling factor so we don't accidentally see scale as unchanged below
- scale = scale || ".5";
-
- // Adjust and apply
- start = start / scale;
- jQuery.style( tween.elem, prop, start + unit );
-
- // Update scale, tolerating zero or NaN from tween.cur()
- // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
- } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
- }
-
- tween.unit = unit;
- tween.start = start;
- // If a +=/-= token was provided, we're doing a relative animation
- tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;
- }
- return tween;
- }]
- };
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
- setTimeout(function() {
- fxNow = undefined;
- }, 0 );
- return ( fxNow = jQuery.now() );
-}
-
-function createTweens( animation, props ) {
- jQuery.each( props, function( prop, value ) {
- var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
- index = 0,
- length = collection.length;
- for ( ; index < length; index++ ) {
- if ( collection[ index ].call( animation, prop, value ) ) {
-
- // we're done with this property
- return;
- }
- }
- });
-}
-
-function Animation( elem, properties, options ) {
- var result,
- index = 0,
- tweenerIndex = 0,
- length = animationPrefilters.length,
- deferred = jQuery.Deferred().always( function() {
- // don't match elem in the :animated selector
- delete tick.elem;
- }),
- tick = function() {
- var currentTime = fxNow || createFxNow(),
- remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
- percent = 1 - ( remaining / animation.duration || 0 ),
- index = 0,
- length = animation.tweens.length;
-
- for ( ; index < length ; index++ ) {
- animation.tweens[ index ].run( percent );
- }
-
- deferred.notifyWith( elem, [ animation, percent, remaining ]);
-
- if ( percent < 1 && length ) {
- return remaining;
- } else {
- deferred.resolveWith( elem, [ animation ] );
- return false;
- }
- },
- animation = deferred.promise({
- elem: elem,
- props: jQuery.extend( {}, properties ),
- opts: jQuery.extend( true, { specialEasing: {} }, options ),
- originalProperties: properties,
- originalOptions: options,
- startTime: fxNow || createFxNow(),
- duration: options.duration,
- tweens: [],
- createTween: function( prop, end, easing ) {
- var tween = jQuery.Tween( elem, animation.opts, prop, end,
- animation.opts.specialEasing[ prop ] || animation.opts.easing );
- animation.tweens.push( tween );
- return tween;
- },
- stop: function( gotoEnd ) {
- var index = 0,
- // if we are going to the end, we want to run all the tweens
- // otherwise we skip this part
- length = gotoEnd ? animation.tweens.length : 0;
-
- for ( ; index < length ; index++ ) {
- animation.tweens[ index ].run( 1 );
- }
-
- // resolve when we played the last frame
- // otherwise, reject
- if ( gotoEnd ) {
- deferred.resolveWith( elem, [ animation, gotoEnd ] );
- } else {
- deferred.rejectWith( elem, [ animation, gotoEnd ] );
- }
- return this;
- }
- }),
- props = animation.props;
-
- propFilter( props, animation.opts.specialEasing );
-
- for ( ; index < length ; index++ ) {
- result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
- if ( result ) {
- return result;
- }
- }
-
- createTweens( animation, props );
-
- if ( jQuery.isFunction( animation.opts.start ) ) {
- animation.opts.start.call( elem, animation );
- }
-
- jQuery.fx.timer(
- jQuery.extend( tick, {
- anim: animation,
- queue: animation.opts.queue,
- elem: elem
- })
- );
-
- // attach callbacks from options
- return animation.progress( animation.opts.progress )
- .done( animation.opts.done, animation.opts.complete )
- .fail( animation.opts.fail )
- .always( animation.opts.always );
-}
-
-function propFilter( props, specialEasing ) {
- var index, name, easing, value, hooks;
-
- // camelCase, specialEasing and expand cssHook pass
- for ( index in props ) {
- name = jQuery.camelCase( index );
- easing = specialEasing[ name ];
- value = props[ index ];
- if ( jQuery.isArray( value ) ) {
- easing = value[ 1 ];
- value = props[ index ] = value[ 0 ];
- }
-
- if ( index !== name ) {
- props[ name ] = value;
- delete props[ index ];
- }
-
- hooks = jQuery.cssHooks[ name ];
- if ( hooks && "expand" in hooks ) {
- value = hooks.expand( value );
- delete props[ name ];
-
- // not quite $.extend, this wont overwrite keys already present.
- // also - reusing 'index' from above because we have the correct "name"
- for ( index in value ) {
- if ( !( index in props ) ) {
- props[ index ] = value[ index ];
- specialEasing[ index ] = easing;
- }
- }
- } else {
- specialEasing[ name ] = easing;
- }
- }
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
-
- tweener: function( props, callback ) {
- if ( jQuery.isFunction( props ) ) {
- callback = props;
- props = [ "*" ];
- } else {
- props = props.split(" ");
- }
-
- var prop,
- index = 0,
- length = props.length;
-
- for ( ; index < length ; index++ ) {
- prop = props[ index ];
- tweeners[ prop ] = tweeners[ prop ] || [];
- tweeners[ prop ].unshift( callback );
- }
- },
-
- prefilter: function( callback, prepend ) {
- if ( prepend ) {
- animationPrefilters.unshift( callback );
- } else {
- animationPrefilters.push( callback );
- }
- }
-});
-
-function defaultPrefilter( elem, props, opts ) {
- var index, prop, value, length, dataShow, tween, hooks, oldfire,
- anim = this,
- style = elem.style,
- orig = {},
- handled = [],
- hidden = elem.nodeType && isHidden( elem );
-
- // handle queue: false promises
- if ( !opts.queue ) {
- hooks = jQuery._queueHooks( elem, "fx" );
- if ( hooks.unqueued == null ) {
- hooks.unqueued = 0;
- oldfire = hooks.empty.fire;
- hooks.empty.fire = function() {
- if ( !hooks.unqueued ) {
- oldfire();
- }
- };
- }
- hooks.unqueued++;
-
- anim.always(function() {
- // doing this makes sure that the complete handler will be called
- // before this completes
- anim.always(function() {
- hooks.unqueued--;
- if ( !jQuery.queue( elem, "fx" ).length ) {
- hooks.empty.fire();
- }
- });
- });
- }
-
- // height/width overflow pass
- if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
- // Make sure that nothing sneaks out
- // Record all 3 overflow attributes because IE does not
- // change the overflow attribute when overflowX and
- // overflowY are set to the same value
- opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
- // Set display property to inline-block for height/width
- // animations on inline elements that are having width/height animated
- if ( jQuery.css( elem, "display" ) === "inline" &&
- jQuery.css( elem, "float" ) === "none" ) {
-
- // inline-level elements accept inline-block;
- // block-level elements need to be inline with layout
- if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
- style.display = "inline-block";
-
- } else {
- style.zoom = 1;
- }
- }
- }
-
- if ( opts.overflow ) {
- style.overflow = "hidden";
- if ( !jQuery.support.shrinkWrapBlocks ) {
- anim.done(function() {
- style.overflow = opts.overflow[ 0 ];
- style.overflowX = opts.overflow[ 1 ];
- style.overflowY = opts.overflow[ 2 ];
- });
- }
- }
-
-
- // show/hide pass
- for ( index in props ) {
- value = props[ index ];
- if ( rfxtypes.exec( value ) ) {
- delete props[ index ];
- if ( value === ( hidden ? "hide" : "show" ) ) {
- continue;
- }
- handled.push( index );
- }
- }
-
- length = handled.length;
- if ( length ) {
- dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
- if ( hidden ) {
- jQuery( elem ).show();
- } else {
- anim.done(function() {
- jQuery( elem ).hide();
- });
- }
- anim.done(function() {
- var prop;
- jQuery.removeData( elem, "fxshow", true );
- for ( prop in orig ) {
- jQuery.style( elem, prop, orig[ prop ] );
- }
- });
- for ( index = 0 ; index < length ; index++ ) {
- prop = handled[ index ];
- tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );
- orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );
-
- if ( !( prop in dataShow ) ) {
- dataShow[ prop ] = tween.start;
- if ( hidden ) {
- tween.end = tween.start;
- tween.start = prop === "width" || prop === "height" ? 1 : 0;
- }
- }
- }
- }
-}
-
-function Tween( elem, options, prop, end, easing ) {
- return new Tween.prototype.init( elem, options, prop, end, easing );
-}
-jQuery.Tween = Tween;
-
-Tween.prototype = {
- constructor: Tween,
- init: function( elem, options, prop, end, easing, unit ) {
- this.elem = elem;
- this.prop = prop;
- this.easing = easing || "swing";
- this.options = options;
- this.start = this.now = this.cur();
- this.end = end;
- this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
- },
- cur: function() {
- var hooks = Tween.propHooks[ this.prop ];
-
- return hooks && hooks.get ?
- hooks.get( this ) :
- Tween.propHooks._default.get( this );
- },
- run: function( percent ) {
- var eased,
- hooks = Tween.propHooks[ this.prop ];
-
- if ( this.options.duration ) {
- this.pos = eased = jQuery.easing[ this.easing ](
- percent, this.options.duration * percent, 0, 1, this.options.duration
- );
- } else {
- this.pos = eased = percent;
- }
- this.now = ( this.end - this.start ) * eased + this.start;
-
- if ( this.options.step ) {
- this.options.step.call( this.elem, this.now, this );
- }
-
- if ( hooks && hooks.set ) {
- hooks.set( this );
- } else {
- Tween.propHooks._default.set( this );
- }
- return this;
- }
-};
-
-Tween.prototype.init.prototype = Tween.prototype;
-
-Tween.propHooks = {
- _default: {
- get: function( tween ) {
- var result;
-
- if ( tween.elem[ tween.prop ] != null &&
- (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
- return tween.elem[ tween.prop ];
- }
-
- // passing any value as a 4th parameter to .css will automatically
- // attempt a parseFloat and fallback to a string if the parse fails
- // so, simple values such as "10px" are parsed to Float.
- // complex values such as "rotate(1rad)" are returned as is.
- result = jQuery.css( tween.elem, tween.prop, false, "" );
- // Empty strings, null, undefined and "auto" are converted to 0.
- return !result || result === "auto" ? 0 : result;
- },
- set: function( tween ) {
- // use step hook for back compat - use cssHook if its there - use .style if its
- // available and use plain properties where available
- if ( jQuery.fx.step[ tween.prop ] ) {
- jQuery.fx.step[ tween.prop ]( tween );
- } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
- jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
- } else {
- tween.elem[ tween.prop ] = tween.now;
- }
- }
- }
-};
-
-// Remove in 2.0 - this supports IE8's panic based approach
-// to setting things on disconnected nodes
-
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
- set: function( tween ) {
- if ( tween.elem.nodeType && tween.elem.parentNode ) {
- tween.elem[ tween.prop ] = tween.now;
- }
- }
-};
-
-jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
- var cssFn = jQuery.fn[ name ];
- jQuery.fn[ name ] = function( speed, easing, callback ) {
- return speed == null || typeof speed === "boolean" ||
- // special check for .toggle( handler, handler, ... )
- ( !i && jQuery.isFunction( speed ) && jQuery.isFunction( easing ) ) ?
- cssFn.apply( this, arguments ) :
- this.animate( genFx( name, true ), speed, easing, callback );
- };
-});
-
-jQuery.fn.extend({
- fadeTo: function( speed, to, easing, callback ) {
-
- // show any hidden elements after setting opacity to 0
- return this.filter( isHidden ).css( "opacity", 0 ).show()
-
- // animate to the value specified
- .end().animate({ opacity: to }, speed, easing, callback );
- },
- animate: function( prop, speed, easing, callback ) {
- var empty = jQuery.isEmptyObject( prop ),
- optall = jQuery.speed( speed, easing, callback ),
- doAnimation = function() {
- // Operate on a copy of prop so per-property easing won't be lost
- var anim = Animation( this, jQuery.extend( {}, prop ), optall );
-
- // Empty animations resolve immediately
- if ( empty ) {
- anim.stop( true );
- }
- };
-
- return empty || optall.queue === false ?
- this.each( doAnimation ) :
- this.queue( optall.queue, doAnimation );
- },
- stop: function( type, clearQueue, gotoEnd ) {
- var stopQueue = function( hooks ) {
- var stop = hooks.stop;
- delete hooks.stop;
- stop( gotoEnd );
- };
-
- if ( typeof type !== "string" ) {
- gotoEnd = clearQueue;
- clearQueue = type;
- type = undefined;
- }
- if ( clearQueue && type !== false ) {
- this.queue( type || "fx", [] );
- }
-
- return this.each(function() {
- var dequeue = true,
- index = type != null && type + "queueHooks",
- timers = jQuery.timers,
- data = jQuery._data( this );
-
- if ( index ) {
- if ( data[ index ] && data[ index ].stop ) {
- stopQueue( data[ index ] );
- }
- } else {
- for ( index in data ) {
- if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
- stopQueue( data[ index ] );
- }
- }
- }
-
- for ( index = timers.length; index--; ) {
- if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
- timers[ index ].anim.stop( gotoEnd );
- dequeue = false;
- timers.splice( index, 1 );
- }
- }
-
- // start the next in the queue if the last step wasn't forced
- // timers currently will call their complete callbacks, which will dequeue
- // but only if they were gotoEnd
- if ( dequeue || !gotoEnd ) {
- jQuery.dequeue( this, type );
- }
- });
- }
-});
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
- var which,
- attrs = { height: type },
- i = 0;
-
- // if we include width, step value is 1 to do all cssExpand values,
- // if we don't include width, step value is 2 to skip over Left and Right
- includeWidth = includeWidth? 1 : 0;
- for( ; i < 4 ; i += 2 - includeWidth ) {
- which = cssExpand[ i ];
- attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
- }
-
- if ( includeWidth ) {
- attrs.opacity = attrs.width = type;
- }
-
- return attrs;
-}
-
-// Generate shortcuts for custom animations
-jQuery.each({
- slideDown: genFx("show"),
- slideUp: genFx("hide"),
- slideToggle: genFx("toggle"),
- fadeIn: { opacity: "show" },
- fadeOut: { opacity: "hide" },
- fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
- jQuery.fn[ name ] = function( speed, easing, callback ) {
- return this.animate( props, speed, easing, callback );
- };
-});
-
-jQuery.speed = function( speed, easing, fn ) {
- var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
- complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
- duration: speed,
- easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
- };
-
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
- opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
- // normalize opt.queue - true/undefined/null -> "fx"
- if ( opt.queue == null || opt.queue === true ) {
- opt.queue = "fx";
- }
-
- // Queueing
- opt.old = opt.complete;
-
- opt.complete = function() {
- if ( jQuery.isFunction( opt.old ) ) {
- opt.old.call( this );
- }
-
- if ( opt.queue ) {
- jQuery.dequeue( this, opt.queue );
- }
- };
-
- return opt;
-};
-
-jQuery.easing = {
- linear: function( p ) {
- return p;
- },
- swing: function( p ) {
- return 0.5 - Math.cos( p*Math.PI ) / 2;
- }
-};
-
-jQuery.timers = [];
-jQuery.fx = Tween.prototype.init;
-jQuery.fx.tick = function() {
- var timer,
- timers = jQuery.timers,
- i = 0;
-
- for ( ; i < timers.length; i++ ) {
- timer = timers[ i ];
- // Checks the timer has not already been removed
- if ( !timer() && timers[ i ] === timer ) {
- timers.splice( i--, 1 );
- }
- }
-
- if ( !timers.length ) {
- jQuery.fx.stop();
- }
-};
-
-jQuery.fx.timer = function( timer ) {
- if ( timer() && jQuery.timers.push( timer ) && !timerId ) {
- timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
- }
-};
-
-jQuery.fx.interval = 13;
-
-jQuery.fx.stop = function() {
- clearInterval( timerId );
- timerId = null;
-};
-
-jQuery.fx.speeds = {
- slow: 600,
- fast: 200,
- // Default speed
- _default: 400
-};
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.animated = function( elem ) {
- return jQuery.grep(jQuery.timers, function( fn ) {
- return elem === fn.elem;
- }).length;
- };
-}
-var rroot = /^(?:body|html)$/i;
-
-jQuery.fn.offset = function( options ) {
- if ( arguments.length ) {
- return options === undefined ?
- this :
- this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- var docElem, body, win, clientTop, clientLeft, scrollTop, scrollLeft,
- box = { top: 0, left: 0 },
- elem = this[ 0 ],
- doc = elem && elem.ownerDocument;
-
- if ( !doc ) {
- return;
- }
-
- if ( (body = doc.body) === elem ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
- docElem = doc.documentElement;
-
- // Make sure it's not a disconnected DOM node
- if ( !jQuery.contains( docElem, elem ) ) {
- return box;
- }
-
- // If we don't have gBCR, just use 0,0 rather than error
- // BlackBerry 5, iOS 3 (original iPhone)
- if ( typeof elem.getBoundingClientRect !== "undefined" ) {
- box = elem.getBoundingClientRect();
- }
- win = getWindow( doc );
- clientTop = docElem.clientTop || body.clientTop || 0;
- clientLeft = docElem.clientLeft || body.clientLeft || 0;
- scrollTop = win.pageYOffset || docElem.scrollTop;
- scrollLeft = win.pageXOffset || docElem.scrollLeft;
- return {
- top: box.top + scrollTop - clientTop,
- left: box.left + scrollLeft - clientLeft
- };
-};
-
-jQuery.offset = {
-
- bodyOffset: function( body ) {
- var top = body.offsetTop,
- left = body.offsetLeft;
-
- if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
- top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
- left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
- }
-
- return { top: top, left: left };
- },
-
- setOffset: function( elem, options, i ) {
- var position = jQuery.css( elem, "position" );
-
- // set position first, in-case top/left are set even on static elem
- if ( position === "static" ) {
- elem.style.position = "relative";
- }
-
- var curElem = jQuery( elem ),
- curOffset = curElem.offset(),
- curCSSTop = jQuery.css( elem, "top" ),
- curCSSLeft = jQuery.css( elem, "left" ),
- calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
- props = {}, curPosition = {}, curTop, curLeft;
-
- // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
- if ( calculatePosition ) {
- curPosition = curElem.position();
- curTop = curPosition.top;
- curLeft = curPosition.left;
- } else {
- curTop = parseFloat( curCSSTop ) || 0;
- curLeft = parseFloat( curCSSLeft ) || 0;
- }
-
- if ( jQuery.isFunction( options ) ) {
- options = options.call( elem, i, curOffset );
- }
-
- if ( options.top != null ) {
- props.top = ( options.top - curOffset.top ) + curTop;
- }
- if ( options.left != null ) {
- props.left = ( options.left - curOffset.left ) + curLeft;
- }
-
- if ( "using" in options ) {
- options.using.call( elem, props );
- } else {
- curElem.css( props );
- }
- }
-};
-
-
-jQuery.fn.extend({
-
- position: function() {
- if ( !this[0] ) {
- return;
- }
-
- var elem = this[0],
-
- // Get *real* offsetParent
- offsetParent = this.offsetParent(),
-
- // Get correct offsets
- offset = this.offset(),
- parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
-
- // Subtract element margins
- // note: when an element has margin: auto the offsetLeft and marginLeft
- // are the same in Safari causing offset.left to incorrectly be 0
- offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
- offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
-
- // Add offsetParent borders
- parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
- parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
-
- // Subtract the two offsets
- return {
- top: offset.top - parentOffset.top,
- left: offset.left - parentOffset.left
- };
- },
-
- offsetParent: function() {
- return this.map(function() {
- var offsetParent = this.offsetParent || document.body;
- while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
- offsetParent = offsetParent.offsetParent;
- }
- return offsetParent || document.body;
- });
- }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
- var top = /Y/.test( prop );
-
- jQuery.fn[ method ] = function( val ) {
- return jQuery.access( this, function( elem, method, val ) {
- var win = getWindow( elem );
-
- if ( val === undefined ) {
- return win ? (prop in win) ? win[ prop ] :
- win.document.documentElement[ method ] :
- elem[ method ];
- }
-
- if ( win ) {
- win.scrollTo(
- !top ? val : jQuery( win ).scrollLeft(),
- top ? val : jQuery( win ).scrollTop()
- );
-
- } else {
- elem[ method ] = val;
- }
- }, method, val, arguments.length, null );
- };
-});
-
-function getWindow( elem ) {
- return jQuery.isWindow( elem ) ?
- elem :
- elem.nodeType === 9 ?
- elem.defaultView || elem.parentWindow :
- false;
-}
-// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
-jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
- jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
- // margin is only for outerHeight, outerWidth
- jQuery.fn[ funcName ] = function( margin, value ) {
- var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
- extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
-
- return jQuery.access( this, function( elem, type, value ) {
- var doc;
-
- if ( jQuery.isWindow( elem ) ) {
- // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
- // isn't a whole lot we can do. See pull request at this URL for discussion:
- // https://github.com/jquery/jquery/pull/764
- return elem.document.documentElement[ "client" + name ];
- }
-
- // Get document width or height
- if ( elem.nodeType === 9 ) {
- doc = elem.documentElement;
-
- // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
- // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
- return Math.max(
- elem.body[ "scroll" + name ], doc[ "scroll" + name ],
- elem.body[ "offset" + name ], doc[ "offset" + name ],
- doc[ "client" + name ]
- );
- }
-
- return value === undefined ?
- // Get width or height on the element, requesting but not forcing parseFloat
- jQuery.css( elem, type, value, extra ) :
-
- // Set width or height on the element
- jQuery.style( elem, type, value, extra );
- }, type, chainable ? margin : undefined, chainable, null );
- };
- });
-});
-// Expose jQuery to the global object
-window.jQuery = window.$ = jQuery;
-
-// Expose jQuery as an AMD module, but only for AMD loaders that
-// understand the issues with loading multiple versions of jQuery
-// in a page that all might call define(). The loader will indicate
-// they have special allowances for multiple jQuery versions by
-// specifying define.amd.jQuery = true. Register as a named module,
-// since jQuery can be concatenated with other files that may use define,
-// but not use a proper concatenation script that understands anonymous
-// AMD modules. A named AMD is safest and most robust way to register.
-// Lowercase jquery is used because AMD module names are derived from
-// file names, and jQuery is normally delivered in a lowercase file name.
-// Do this after creating the global so that if an AMD module wants to call
-// noConflict to hide this version of jQuery, it will work.
-if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
- define( "jquery", [], function () { return jQuery; } );
-}
-
-})( window );
diff --git a/javascripts/jquery.placeholder.js b/javascripts/jquery.placeholder.js
deleted file mode 100644
--- a/javascripts/jquery.placeholder.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/*! http://mths.be/placeholder v2.0.7 by @mathias */
-;(function(window, document, $) {
-
- var isInputSupported = 'placeholder' in document.createElement('input'),
- isTextareaSupported = 'placeholder' in document.createElement('textarea'),
- prototype = $.fn,
- valHooks = $.valHooks,
- hooks,
- placeholder;
-
- if (isInputSupported && isTextareaSupported) {
-
- placeholder = prototype.placeholder = function() {
- return this;
- };
-
- placeholder.input = placeholder.textarea = true;
-
- } else {
-
- placeholder = prototype.placeholder = function() {
- var $this = this;
- $this
- .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
- .not('.placeholder')
- .bind({
- 'focus.placeholder': clearPlaceholder,
- 'blur.placeholder': setPlaceholder
- })
- .data('placeholder-enabled', true)
- .trigger('blur.placeholder');
- return $this;
- };
-
- placeholder.input = isInputSupported;
- placeholder.textarea = isTextareaSupported;
-
- hooks = {
- 'get': function(element) {
- var $element = $(element);
- return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
- },
- 'set': function(element, value) {
- var $element = $(element);
- if (!$element.data('placeholder-enabled')) {
- return element.value = value;
- }
- if (value == '') {
- element.value = value;
- // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
- if (element != document.activeElement) {
- // We can't use `triggerHandler` here because of dummy text/password inputs :(
- setPlaceholder.call(element);
- }
- } else if ($element.hasClass('placeholder')) {
- clearPlaceholder.call(element, true, value) || (element.value = value);
- } else {
- element.value = value;
- }
- // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
- return $element;
- }
- };
-
- isInputSupported || (valHooks.input = hooks);
- isTextareaSupported || (valHooks.textarea = hooks);
-
- $(function() {
- // Look for forms
- $(document).delegate('form', 'submit.placeholder', function() {
- // Clear the placeholder values so they don't get submitted
- var $inputs = $('.placeholder', this).each(clearPlaceholder);
- setTimeout(function() {
- $inputs.each(setPlaceholder);
- }, 10);
- });
- });
-
- // Clear placeholder values upon page reload
- $(window).bind('beforeunload.placeholder', function() {
- $('.placeholder').each(function() {
- this.value = '';
- });
- });
-
- }
-
- function args(elem) {
- // Return an object of element attributes
- var newAttrs = {},
- rinlinejQuery = /^jQuery\d+$/;
- $.each(elem.attributes, function(i, attr) {
- if (attr.specified && !rinlinejQuery.test(attr.name)) {
- newAttrs[attr.name] = attr.value;
- }
- });
- return newAttrs;
- }
-
- function clearPlaceholder(event, value) {
- var input = this,
- $input = $(input);
- if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
- if ($input.data('placeholder-password')) {
- $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
- // If `clearPlaceholder` was called from `$.valHooks.input.set`
- if (event === true) {
- return $input[0].value = value;
- }
- $input.focus();
- } else {
- input.value = '';
- $input.removeClass('placeholder');
- input == document.activeElement && input.select();
- }
- }
- }
-
- function setPlaceholder() {
- var $replacement,
- input = this,
- $input = $(input),
- $origInput = $input,
- id = this.id;
- if (input.value == '') {
- if (input.type == 'password') {
- if (!$input.data('placeholder-textinput')) {
- try {
- $replacement = $input.clone().attr({ 'type': 'text' });
- } catch(e) {
- $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
- }
- $replacement
- .removeAttr('name')
- .data({
- 'placeholder-password': true,
- 'placeholder-id': id
- })
- .bind('focus.placeholder', clearPlaceholder);
- $input
- .data({
- 'placeholder-textinput': $replacement,
- 'placeholder-id': id
- })
- .before($replacement);
- }
- $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
- // Note: `$input[0] != input` now!
- }
- $input.addClass('placeholder');
- $input[0].value = $input.attr('placeholder');
- } else {
- $input.removeClass('placeholder');
- }
- }
-
-}(this, document, jQuery));
diff --git a/javascripts/modernizr.foundation.js b/javascripts/modernizr.foundation.js
deleted file mode 100644
--- a/javascripts/modernizr.foundation.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
- * Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load
- */
-;window.Modernizr=function(a,b,c){function y(a){j.cssText=a}function z(a,b){return y(m.join(a+";")+(b||""))}function A(a,b){return typeof a===b}function B(a,b){return!!~(""+a).indexOf(b)}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:A(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={svg:"http://www.w3.org/2000/svg"},o={},p={},q={},r=[],s=r.slice,t,u=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},v=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return u("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},w={}.hasOwnProperty,x;!A(w,"undefined")&&!A(w.call,"undefined")?x=function(a,b){return w.call(a,b)}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(s.call(arguments)))};return e}),o.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:u(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},o.svg=function(){return!!b.createElementNS&&!!b.createElementNS(n.svg,"svg").createSVGRect},o.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==n.svg},o.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(l.call(b.createElementNS(n.svg,"clipPath")))};for(var D in o)x(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)x(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},y(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e.mq=v,e.testStyles=u,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+r.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))},Modernizr.addTest("ie8compat",function(){return!window.addEventListener&&document.documentMode&&document.documentMode===7});
diff --git a/javascripts/vendor/foundation.js b/javascripts/vendor/foundation.js
new file mode 100644
--- /dev/null
+++ b/javascripts/vendor/foundation.js
@@ -0,0 +1,7795 @@
+!function($) {
+"use strict";
+
+var FOUNDATION_VERSION = '6.1.2';
+
+// Global Foundation object
+// This is attached to the window, or used as a module for AMD/Browserify
+var Foundation = {
+ version: FOUNDATION_VERSION,
+
+ /**
+ * Stores initialized plugins.
+ */
+ _plugins: {},
+
+ /**
+ * Stores generated unique ids for plugin instances
+ */
+ _uuids: [],
+
+ /**
+ * Returns a boolean for RTL support
+ */
+ rtl: function(){
+ return $('html').attr('dir') === 'rtl';
+ },
+ /**
+ * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.
+ * @param {Object} plugin - The constructor of the plugin.
+ */
+ plugin: function(plugin, name) {
+ // Object key to use when adding to global Foundation object
+ // Examples: Foundation.Reveal, Foundation.OffCanvas
+ var className = (name || functionName(plugin));
+ // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin
+ // Examples: data-reveal, data-off-canvas
+ var attrName = hyphenate(className);
+
+ // Add to the Foundation object and the plugins list (for reflowing)
+ this._plugins[attrName] = this[className] = plugin;
+ },
+ /**
+ * @function
+ * Populates the _uuids array with pointers to each individual plugin instance.
+ * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.
+ * Also fires the initialization event for each plugin, consolidating repeditive code.
+ * @param {Object} plugin - an instance of a plugin, usually `this` in context.
+ * @param {String} name - the name of the plugin, passed as a camelCased string.
+ * @fires Plugin#init
+ */
+ registerPlugin: function(plugin, name){
+ var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();
+ plugin.uuid = this.GetYoDigits(6, pluginName);
+
+ if(!plugin.$element.attr('data-' + pluginName)){ plugin.$element.attr('data-' + pluginName, plugin.uuid); }
+ if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }
+ /**
+ * Fires when the plugin has initialized.
+ * @event Plugin#init
+ */
+ plugin.$element.trigger('init.zf.' + pluginName);
+
+ this._uuids.push(plugin.uuid);
+
+ return;
+ },
+ /**
+ * @function
+ * Removes the plugins uuid from the _uuids array.
+ * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.
+ * Also fires the destroyed event for the plugin, consolidating repeditive code.
+ * @param {Object} plugin - an instance of a plugin, usually `this` in context.
+ * @fires Plugin#destroyed
+ */
+ unregisterPlugin: function(plugin){
+ var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));
+
+ this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);
+ plugin.$element.removeAttr('data-' + pluginName).removeData('zfPlugin')
+ /**
+ * Fires when the plugin has been destroyed.
+ * @event Plugin#destroyed
+ */
+ .trigger('destroyed.zf.' + pluginName);
+ for(var prop in plugin){
+ plugin[prop] = null;//clean up script to prep for garbage collection.
+ }
+ return;
+ },
+
+ /**
+ * @function
+ * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.
+ * @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'`
+ * @default If no argument is passed, reflow all currently active plugins.
+ */
+ reInit: function(plugins){
+ var isJQ = plugins instanceof $;
+ try{
+ if(isJQ){
+ plugins.each(function(){
+ $(this).data('zfPlugin')._init();
+ });
+ }else{
+ var type = typeof plugins,
+ _this = this,
+ fns = {
+ 'object': function(plgs){
+ plgs.forEach(function(p){
+ $('[data-'+ p +']').foundation('_init');
+ });
+ },
+ 'string': function(){
+ $('[data-'+ plugins +']').foundation('_init');
+ },
+ 'undefined': function(){
+ this['object'](Object.keys(_this._plugins));
+ }
+ };
+ fns[type](plugins);
+ }
+ }catch(err){
+ console.error(err);
+ }finally{
+ return plugins;
+ }
+ },
+
+ /**
+ * returns a random base-36 uid with namespacing
+ * @function
+ * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.
+ * @param {String} namespace - name of plugin to be incorporated in uid, optional.
+ * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.
+ * @returns {String} - unique id
+ */
+ GetYoDigits: function(length, namespace){
+ length = length || 6;
+ return Math.round((Math.pow(36, length + 1) - Math.random() * Math.pow(36, length))).toString(36).slice(1) + (namespace ? '-' + namespace : '');
+ },
+ /**
+ * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.
+ * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.
+ * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.
+ */
+ reflow: function(elem, plugins) {
+
+ // If plugins is undefined, just grab everything
+ if (typeof plugins === 'undefined') {
+ plugins = Object.keys(this._plugins);
+ }
+ // If plugins is a string, convert it to an array with one item
+ else if (typeof plugins === 'string') {
+ plugins = [plugins];
+ }
+
+ var _this = this;
+
+ // Iterate through each plugin
+ $.each(plugins, function(i, name) {
+ // Get the current plugin
+ var plugin = _this._plugins[name];
+
+ // Localize the search to all elements inside elem, as well as elem itself, unless elem === document
+ var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']');
+
+ // For each plugin found, initialize it
+ $elem.each(function() {
+ var $el = $(this),
+ opts = {};
+ // Don't double-dip on plugins
+ if ($el.data('zfPlugin')) {
+ console.warn("Tried to initialize "+name+" on an element that already has a Foundation plugin.");
+ return;
+ }
+
+ if($el.attr('data-options')){
+ var thing = $el.attr('data-options').split(';').forEach(function(e, i){
+ var opt = e.split(':').map(function(el){ return el.trim(); });
+ if(opt[0]) opts[opt[0]] = parseValue(opt[1]);
+ });
+ }
+ try{
+ $el.data('zfPlugin', new plugin($(this), opts));
+ }catch(er){
+ console.error(er);
+ }finally{
+ return;
+ }
+ });
+ });
+ },
+ getFnName: functionName,
+ transitionend: function($elem){
+ var transitions = {
+ 'transition': 'transitionend',
+ 'WebkitTransition': 'webkitTransitionEnd',
+ 'MozTransition': 'transitionend',
+ 'OTransition': 'otransitionend'
+ };
+ var elem = document.createElement('div'),
+ end;
+
+ for (var t in transitions){
+ if (typeof elem.style[t] !== 'undefined'){
+ end = transitions[t];
+ }
+ }
+ if(end){
+ return end;
+ }else{
+ end = setTimeout(function(){
+ $elem.triggerHandler('transitionend', [$elem]);
+ }, 1);
+ return 'transitionend';
+ }
+ }
+};
+
+
+Foundation.util = {
+ /**
+ * Function for applying a debounce effect to a function call.
+ * @function
+ * @param {Function} func - Function to be called at end of timeout.
+ * @param {Number} delay - Time in ms to delay the call of `func`.
+ * @returns function
+ */
+ throttle: function (func, delay) {
+ var timer = null;
+
+ return function () {
+ var context = this, args = arguments;
+
+ if (timer === null) {
+ timer = setTimeout(function () {
+ func.apply(context, args);
+ timer = null;
+ }, delay);
+ }
+ };
+ }
+};
+
+// TODO: consider not making this a jQuery function
+// TODO: need way to reflow vs. re-initialize
+/**
+ * The Foundation jQuery method.
+ * @param {String|Array} method - An action to perform on the current jQuery object.
+ */
+var foundation = function(method) {
+ var type = typeof method,
+ $meta = $('meta.foundation-mq'),
+ $noJS = $('.no-js');
+
+ if(!$meta.length){
+ $('<meta class="foundation-mq">').appendTo(document.head);
+ }
+ if($noJS.length){
+ $noJS.removeClass('no-js');
+ }
+
+ if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.
+ Foundation.MediaQuery._init();
+ Foundation.reflow(this);
+ }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins
+ var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary
+ var plugClass = this.data('zfPlugin');//determine the class of plugin
+
+ if(plugClass !== undefined && plugClass[method] !== undefined){//make sure both the class and method exist
+ if(this.length === 1){//if there's only one, call it directly.
+ plugClass[method].apply(plugClass, args);
+ }else{
+ this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each
+ plugClass[method].apply($(el).data('zfPlugin'), args);
+ });
+ }
+ }else{//error for no class or no method
+ throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.');
+ }
+ }else{//error for invalid argument type
+ throw new TypeError("We're sorry, '" + type + "' is not a valid parameter. You must use a string representing the method you wish to invoke.");
+ }
+ return this;
+};
+
+window.Foundation = Foundation;
+$.fn.foundation = foundation;
+
+// Polyfill for requestAnimationFrame
+(function() {
+ if (!Date.now || !window.Date.now)
+ window.Date.now = Date.now = function() { return new Date().getTime(); };
+
+ var vendors = ['webkit', 'moz'];
+ for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
+ var vp = vendors[i];
+ window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];
+ window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']
+ || window[vp+'CancelRequestAnimationFrame']);
+ }
+ if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)
+ || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
+ var lastTime = 0;
+ window.requestAnimationFrame = function(callback) {
+ var now = Date.now();
+ var nextTime = Math.max(lastTime + 16, now);
+ return setTimeout(function() { callback(lastTime = nextTime); },
+ nextTime - now);
+ };
+ window.cancelAnimationFrame = clearTimeout;
+ }
+ /**
+ * Polyfill for performance.now, required by rAF
+ */
+ if(!window.performance || !window.performance.now){
+ window.performance = {
+ start: Date.now(),
+ now: function(){ return Date.now() - this.start; }
+ };
+ }
+})();
+if (!Function.prototype.bind) {
+ Function.prototype.bind = function(oThis) {
+ if (typeof this !== 'function') {
+ // closest thing possible to the ECMAScript 5
+ // internal IsCallable function
+ throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
+ }
+
+ var aArgs = Array.prototype.slice.call(arguments, 1),
+ fToBind = this,
+ fNOP = function() {},
+ fBound = function() {
+ return fToBind.apply(this instanceof fNOP
+ ? this
+ : oThis,
+ aArgs.concat(Array.prototype.slice.call(arguments)));
+ };
+
+ if (this.prototype) {
+ // native functions don't have a prototype
+ fNOP.prototype = this.prototype;
+ }
+ fBound.prototype = new fNOP();
+
+ return fBound;
+ };
+}
+// Polyfill to get the name of a function in IE9
+function functionName(fn) {
+ if (Function.prototype.name === undefined) {
+ var funcNameRegex = /function\s([^(]{1,})\(/;
+ var results = (funcNameRegex).exec((fn).toString());
+ return (results && results.length > 1) ? results[1].trim() : "";
+ }
+ else if (fn.prototype === undefined) {
+ return fn.constructor.name;
+ }
+ else {
+ return fn.prototype.constructor.name;
+ }
+}
+function parseValue(str){
+ if(/true/.test(str)) return true;
+ else if(/false/.test(str)) return false;
+ else if(!isNaN(str * 1)) return parseFloat(str);
+ return str;
+}
+// Convert PascalCase to kebab-case
+// Thank you: http://stackoverflow.com/a/8955580
+function hyphenate(str) {
+ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
+}
+
+}(jQuery);
+
+!function(Foundation, window){
+ /**
+ * Compares the dimensions of an element to a container and determines collision events with container.
+ * @function
+ * @param {jQuery} element - jQuery object to test for collisions.
+ * @param {jQuery} parent - jQuery object to use as bounding container.
+ * @param {Boolean} lrOnly - set to true to check left and right values only.
+ * @param {Boolean} tbOnly - set to true to check top and bottom values only.
+ * @default if no parent object passed, detects collisions with `window`.
+ * @returns {Boolean} - true if collision free, false if a collision in any direction.
+ */
+ var ImNotTouchingYou = function(element, parent, lrOnly, tbOnly){
+ var eleDims = GetDimensions(element),
+ top, bottom, left, right;
+
+ if(parent){
+ var parDims = GetDimensions(parent);
+
+ bottom = (eleDims.offset.top + eleDims.height <= parDims.height + parDims.offset.top);
+ top = (eleDims.offset.top >= parDims.offset.top);
+ left = (eleDims.offset.left >= parDims.offset.left);
+ right = (eleDims.offset.left + eleDims.width <= parDims.width);
+ }else{
+ bottom = (eleDims.offset.top + eleDims.height <= eleDims.windowDims.height + eleDims.windowDims.offset.top);
+ top = (eleDims.offset.top >= eleDims.windowDims.offset.top);
+ left = (eleDims.offset.left >= eleDims.windowDims.offset.left);
+ right = (eleDims.offset.left + eleDims.width <= eleDims.windowDims.width);
+ }
+ var allDirs = [bottom, top, left, right];
+
+ if(lrOnly){ return left === right === true; }
+ if(tbOnly){ return top === bottom === true; }
+
+ return allDirs.indexOf(false) === -1;
+ };
+
+ /**
+ * Uses native methods to return an object of dimension values.
+ * @function
+ * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.
+ * @returns {Object} - nested object of integer pixel values
+ * TODO - if element is window, return only those values.
+ */
+ var GetDimensions = function(elem, test){
+ elem = elem.length ? elem[0] : elem;
+
+ if(elem === window || elem === document){ throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); }
+
+ var rect = elem.getBoundingClientRect(),
+ parRect = elem.parentNode.getBoundingClientRect(),
+ winRect = document.body.getBoundingClientRect(),
+ winY = window.pageYOffset,
+ winX = window.pageXOffset;
+
+ return {
+ width: rect.width,
+ height: rect.height,
+ offset: {
+ top: rect.top + winY,
+ left: rect.left + winX
+ },
+ parentDims: {
+ width: parRect.width,
+ height: parRect.height,
+ offset: {
+ top: parRect.top + winY,
+ left: parRect.left + winX
+ }
+ },
+ windowDims: {
+ width: winRect.width,
+ height: winRect.height,
+ offset: {
+ top: winY,
+ left: winX
+ }
+ }
+ };
+ };
+ /**
+ * Returns an object of top and left integer pixel values for dynamically rendered elements,
+ * such as: Tooltip, Reveal, and Dropdown
+ * @function
+ * @param {jQuery} element - jQuery object for the element being positioned.
+ * @param {jQuery} anchor - jQuery object for the element's anchor point.
+ * @param {String} position - a string relating to the desired position of the element, relative to it's anchor
+ * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.
+ * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.
+ * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.
+ * TODO alter/rewrite to work with `em` values as well/instead of pixels
+ */
+ var GetOffsets = function(element, anchor, position, vOffset, hOffset, isOverflow){
+ var $eleDims = GetDimensions(element),
+ // var $eleDims = GetDimensions(element),
+ $anchorDims = anchor ? GetDimensions(anchor) : null;
+ // $anchorDims = anchor ? GetDimensions(anchor) : null;
+ switch(position){
+ case 'top':
+ return {
+ left: $anchorDims.offset.left,
+ top: $anchorDims.offset.top - ($eleDims.height + vOffset)
+ };
+ break;
+ case 'left':
+ return {
+ left: $anchorDims.offset.left - ($eleDims.width + hOffset),
+ top: $anchorDims.offset.top
+ };
+ break;
+ case 'right':
+ return {
+ left: $anchorDims.offset.left + $anchorDims.width + hOffset,
+ top: $anchorDims.offset.top
+ };
+ break;
+ case 'center top':
+ return {
+ left: ($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2),
+ top: $anchorDims.offset.top - ($eleDims.height + vOffset)
+ };
+ break;
+ case 'center bottom':
+ return {
+ left: isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)),
+ top: $anchorDims.offset.top + $anchorDims.height + vOffset
+ };
+ break;
+ case 'center left':
+ return {
+ left: $anchorDims.offset.left - ($eleDims.width + hOffset),
+ top: ($anchorDims.offset.top + ($anchorDims.height / 2)) - ($eleDims.height / 2)
+ };
+ break;
+ case 'center right':
+ return {
+ left: $anchorDims.offset.left + $anchorDims.width + hOffset + 1,
+ top: ($anchorDims.offset.top + ($anchorDims.height / 2)) - ($eleDims.height / 2)
+ };
+ break;
+ case 'center':
+ return {
+ left: ($eleDims.windowDims.offset.left + ($eleDims.windowDims.width / 2)) - ($eleDims.width / 2),
+ top: ($eleDims.windowDims.offset.top + ($eleDims.windowDims.height / 2)) - ($eleDims.height / 2)
+ };
+ break;
+ case 'reveal':
+ return {
+ left: ($eleDims.windowDims.width - $eleDims.width) / 2,
+ top: $eleDims.windowDims.offset.top + vOffset
+ };
+ case 'reveal full':
+ return {
+ left: $eleDims.windowDims.offset.left,
+ top: $eleDims.windowDims.offset.top
+ };
+ break;
+ default:
+ return {
+ left: $anchorDims.offset.left,
+ top: $anchorDims.offset.top + $anchorDims.height + vOffset
+ };
+ }
+ };
+ Foundation.Box = {
+ ImNotTouchingYou: ImNotTouchingYou,
+ GetDimensions: GetDimensions,
+ GetOffsets: GetOffsets
+ };
+}(window.Foundation, window);
+
+/*******************************************
+ * *
+ * This util was created by Marius Olbertz *
+ * Please thank Marius on GitHub /owlbertz *
+ * or the web http://www.mariusolbertz.de/ *
+ * *
+ ******************************************/
+!function($, Foundation){
+ 'use strict';
+ Foundation.Keyboard = {};
+
+ var keyCodes = {
+ 9: 'TAB',
+ 13: 'ENTER',
+ 27: 'ESCAPE',
+ 32: 'SPACE',
+ 37: 'ARROW_LEFT',
+ 38: 'ARROW_UP',
+ 39: 'ARROW_RIGHT',
+ 40: 'ARROW_DOWN'
+ };
+
+ /*
+ * Constants for easier comparing.
+ * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
+ */
+ var keys = (function(kcs) {
+ var k = {};
+ for (var kc in kcs) k[kcs[kc]] = kcs[kc];
+ return k;
+ })(keyCodes);
+
+ Foundation.Keyboard.keys = keys;
+
+ /**
+ * Parses the (keyboard) event and returns a String that represents its key
+ * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
+ * @param {Event} event - the event generated by the event handler
+ * @return String key - String that represents the key pressed
+ */
+ var parseKey = function(event) {
+ var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();
+ if (event.shiftKey) key = 'SHIFT_' + key;
+ if (event.ctrlKey) key = 'CTRL_' + key;
+ if (event.altKey) key = 'ALT_' + key;
+ return key;
+ };
+ Foundation.Keyboard.parseKey = parseKey;
+
+
+ // plain commands per component go here, ltr and rtl are merged based on orientation
+ var commands = {};
+
+ /**
+ * Handles the given (keyboard) event
+ * @param {Event} event - the event generated by the event handler
+ * @param {String} component - Foundation component's name, e.g. Slider or Reveal
+ * @param {Objects} functions - collection of functions that are to be executed
+ */
+ var handleKey = function(event, component, functions) {
+ var commandList = commands[component],
+ keyCode = parseKey(event),
+ cmds,
+ command,
+ fn;
+ if (!commandList) return console.warn('Component not defined!');
+
+ if (typeof commandList.ltr === 'undefined') { // this component does not differentiate between ltr and rtl
+ cmds = commandList; // use plain list
+ } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa
+ if (Foundation.rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);
+
+ else cmds = $.extend({}, commandList.rtl, commandList.ltr);
+ }
+ command = cmds[keyCode];
+
+
+ fn = functions[command];
+ if (fn && typeof fn === 'function') { // execute function if exists
+ fn.apply();
+ if (functions.handled || typeof functions.handled === 'function') { // execute function when event was handled
+ functions.handled.apply();
+ }
+ } else {
+ if (functions.unhandled || typeof functions.unhandled === 'function') { // execute function when event was not handled
+ functions.unhandled.apply();
+ }
+ }
+ };
+ Foundation.Keyboard.handleKey = handleKey;
+
+ /**
+ * Finds all focusable elements within the given `$element`
+ * @param {jQuery} $element - jQuery object to search within
+ * @return {jQuery} $focusable - all focusable elements within `$element`
+ */
+ var findFocusable = function($element) {
+ 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() {
+ if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0
+ return true;
+ });
+ };
+ Foundation.Keyboard.findFocusable = findFocusable;
+
+ /**
+ * Returns the component name name
+ * @param {Object} component - Foundation component, e.g. Slider or Reveal
+ * @return String componentName
+ */
+
+ var register = function(componentName, cmds) {
+ commands[componentName] = cmds;
+ };
+ Foundation.Keyboard.register = register;
+}(jQuery, window.Foundation);
+
+!function($, Foundation) {
+
+// Default set of media queries
+var defaultQueries = {
+ 'default' : 'only screen',
+ landscape : 'only screen and (orientation: landscape)',
+ portrait : 'only screen and (orientation: portrait)',
+ 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)'
+};
+
+var MediaQuery = {
+ queries: [],
+ current: '',
+
+ /**
+ * Checks if the screen is at least as wide as a breakpoint.
+ * @function
+ * @param {String} size - Name of the breakpoint to check.
+ * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.
+ */
+ atLeast: function(size) {
+ var query = this.get(size);
+
+ if (query) {
+ return window.matchMedia(query).matches;
+ }
+
+ return false;
+ },
+
+ /**
+ * Gets the media query of a breakpoint.
+ * @function
+ * @param {String} size - Name of the breakpoint to get.
+ * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.
+ */
+ get: function(size) {
+ for (var i in this.queries) {
+ var query = this.queries[i];
+ if (size === query.name) return query.value;
+ }
+
+ return null;
+ },
+
+ /**
+ * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.
+ * @function
+ * @private
+ */
+ _init: function() {
+ var self = this;
+ var extractedStyles = $('.foundation-mq').css('font-family');
+ var namedQueries;
+
+ namedQueries = parseStyleToObject(extractedStyles);
+
+ for (var key in namedQueries) {
+ self.queries.push({
+ name: key,
+ value: 'only screen and (min-width: ' + namedQueries[key] + ')'
+ });
+ }
+
+ this.current = this._getCurrentSize();
+
+ this._watcher();
+
+ // Extend default queries
+ // namedQueries = $.extend(defaultQueries, namedQueries);
+ },
+
+ /**
+ * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).
+ * @function
+ * @private
+ * @returns {String} Name of the current breakpoint.
+ */
+ _getCurrentSize: function() {
+ var matched;
+
+ for (var i in this.queries) {
+ var query = this.queries[i];
+
+ if (window.matchMedia(query.value).matches) {
+ matched = query;
+ }
+ }
+
+ if(typeof matched === 'object') {
+ return matched.name;
+ } else {
+ return matched;
+ }
+ },
+
+ /**
+ * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.
+ * @function
+ * @private
+ */
+ _watcher: function() {
+ var _this = this;
+
+ $(window).on('resize.zf.mediaquery', function() {
+ var newSize = _this._getCurrentSize();
+
+ if (newSize !== _this.current) {
+ // Broadcast the media query change on the window
+ $(window).trigger('changed.zf.mediaquery', [newSize, _this.current]);
+
+ // Change the current media query
+ _this.current = newSize;
+ }
+ });
+ }
+};
+
+Foundation.MediaQuery = MediaQuery;
+
+// matchMedia() polyfill - Test a CSS media type/query in JS.
+// Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license
+window.matchMedia || (window.matchMedia = function() {
+ 'use strict';
+
+ // For browsers that support matchMedium api such as IE 9 and webkit
+ var styleMedia = (window.styleMedia || window.media);
+
+ // For those that don't support matchMedium
+ if (!styleMedia) {
+ var style = document.createElement('style'),
+ script = document.getElementsByTagName('script')[0],
+ info = null;
+
+ style.type = 'text/css';
+ style.id = 'matchmediajs-test';
+
+ script.parentNode.insertBefore(style, script);
+
+ // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
+ info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;
+
+ styleMedia = {
+ matchMedium: function(media) {
+ var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';
+
+ // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
+ if (style.styleSheet) {
+ style.styleSheet.cssText = text;
+ } else {
+ style.textContent = text;
+ }
+
+ // Test if media query is true or false
+ return info.width === '1px';
+ }
+ };
+ }
+
+ return function(media) {
+ return {
+ matches: styleMedia.matchMedium(media || 'all'),
+ media: media || 'all'
+ };
+ };
+}());
+
+// Thank you: https://github.com/sindresorhus/query-string
+function parseStyleToObject(str) {
+ var styleObject = {};
+
+ if (typeof str !== 'string') {
+ return styleObject;
+ }
+
+ str = str.trim().slice(1, -1); // browsers re-quote string style values
+
+ if (!str) {
+ return styleObject;
+ }
+
+ styleObject = str.split('&').reduce(function(ret, param) {
+ var parts = param.replace(/\+/g, ' ').split('=');
+ var key = parts[0];
+ var val = parts[1];
+ key = decodeURIComponent(key);
+
+ // missing `=` should be `null`:
+ // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
+ val = val === undefined ? null : decodeURIComponent(val);
+
+ if (!ret.hasOwnProperty(key)) {
+ ret[key] = val;
+ } else if (Array.isArray(ret[key])) {
+ ret[key].push(val);
+ } else {
+ ret[key] = [ret[key], val];
+ }
+ return ret;
+ }, {});
+
+ return styleObject;
+}
+
+}(jQuery, Foundation);
+
+/**
+ * Motion module.
+ * @module foundation.motion
+ */
+!function($, Foundation) {
+
+var initClasses = ['mui-enter', 'mui-leave'];
+var activeClasses = ['mui-enter-active', 'mui-leave-active'];
+
+function animate(isIn, element, animation, cb) {
+ element = $(element).eq(0);
+
+ if (!element.length) return;
+
+ var initClass = isIn ? initClasses[0] : initClasses[1];
+ var activeClass = isIn ? activeClasses[0] : activeClasses[1];
+
+ // Set up the animation
+ reset();
+ element.addClass(animation)
+ .css('transition', 'none');
+ // .addClass(initClass);
+ // if(isIn) element.show();
+ requestAnimationFrame(function() {
+ element.addClass(initClass);
+ if (isIn) element.show();
+ });
+ // Start the animation
+ requestAnimationFrame(function() {
+ element[0].offsetWidth;
+ element.css('transition', '');
+ element.addClass(activeClass);
+ });
+ // Move(500, element, function(){
+ // // element[0].offsetWidth;
+ // element.css('transition', '');
+ // element.addClass(activeClass);
+ // });
+
+ // Clean up the animation when it finishes
+ element.one(Foundation.transitionend(element), finish);//.one('finished.zf.animate', finish);
+
+ // Hides the element (for out animations), resets the element, and runs a callback
+ function finish() {
+ if (!isIn) element.hide();
+ reset();
+ if (cb) cb.apply(element);
+ }
+
+ // Resets transitions and removes motion-specific classes
+ function reset() {
+ element[0].style.transitionDuration = 0;
+ element.removeClass(initClass + ' ' + activeClass + ' ' + animation);
+ }
+}
+
+var Motion = {
+ animateIn: function(element, animation, /*duration,*/ cb) {
+ animate(true, element, animation, cb);
+ },
+
+ animateOut: function(element, animation, /*duration,*/ cb) {
+ animate(false, element, animation, cb);
+ }
+};
+
+var Move = function(duration, elem, fn){
+ var anim, prog, start = null;
+ // console.log('called');
+
+ function move(ts){
+ if(!start) start = window.performance.now();
+ // console.log(start, ts);
+ prog = ts - start;
+ fn.apply(elem);
+
+ if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }
+ else{
+ window.cancelAnimationFrame(anim);
+ elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
+ }
+ }
+ anim = window.requestAnimationFrame(move);
+};
+
+Foundation.Move = Move;
+Foundation.Motion = Motion;
+
+}(jQuery, Foundation);
+
+!function($, Foundation){
+ 'use strict';
+ Foundation.Nest = {
+ Feather: function(menu, type){
+ menu.attr('role', 'menubar');
+ type = type || 'zf';
+ var items = menu.find('li').attr({'role': 'menuitem'}),
+ subMenuClass = 'is-' + type + '-submenu',
+ subItemClass = subMenuClass + '-item',
+ hasSubClass = 'is-' + type + '-submenu-parent';
+ menu.find('a:first').attr('tabindex', 0);
+ items.each(function(){
+ var $item = $(this),
+ $sub = $item.children('ul');
+ if($sub.length){
+ $item.addClass(hasSubClass)
+ .attr({
+ 'aria-haspopup': true,
+ 'aria-expanded': false,
+ 'aria-label': $item.children('a:first').text()
+ });
+ $sub.addClass('submenu ' + subMenuClass)
+ .attr({
+ 'data-submenu': '',
+ 'aria-hidden': true,
+ 'role': 'menu'
+ });
+ }
+ if($item.parent('[data-submenu]').length){
+ $item.addClass('is-submenu-item ' + subItemClass);
+ }
+ });
+ return;
+ },
+ Burn: function(menu, type){
+ var items = menu.find('li').removeAttr('tabindex'),
+ subMenuClass = 'is-' + type + '-submenu',
+ subItemClass = subMenuClass + '-item',
+ hasSubClass = 'is-' + type + '-submenu-parent';
+
+ // menu.find('.is-active').removeClass('is-active');
+ menu.find('*')
+ // menu.find('.' + subMenuClass + ', .' + subItemClass + ', .is-active, .has-submenu, .is-submenu-item, .submenu, [data-submenu]')
+ .removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active')
+ .removeAttr('data-submenu').css('display', '');
+
+ // console.log( menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]')
+ // .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu')
+ // .removeAttr('data-submenu'));
+ // items.each(function(){
+ // var $item = $(this),
+ // $sub = $item.children('ul');
+ // if($item.parent('[data-submenu]').length){
+ // $item.removeClass('is-submenu-item ' + subItemClass);
+ // }
+ // if($sub.length){
+ // $item.removeClass('has-submenu');
+ // $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu');
+ // }
+ // });
+ }
+ };
+}(jQuery, window.Foundation);
+
+!function($, Foundation){
+ 'use strict';
+ var Timer = function(elem, options, cb){
+ var _this = this,
+ duration = options.duration,//options is an object for easily adding features later.
+ nameSpace = Object.keys(elem.data())[0] || 'timer',
+ remain = -1,
+ start,
+ timer;
+
+ this.isPaused = false;
+
+ this.restart = function(){
+ remain = -1;
+ clearTimeout(timer);
+ this.start();
+ };
+
+ this.start = function(){
+ this.isPaused = false
+ // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
+ clearTimeout(timer);
+ remain = remain <= 0 ? duration : remain;
+ elem.data('paused', false);
+ start = Date.now();
+ timer = setTimeout(function(){
+ if(options.infinite){
+ _this.restart();//rerun the timer.
+ }
+ cb();
+ }, remain);
+ elem.trigger('timerstart.zf.' + nameSpace);
+ };
+
+ this.pause = function(){
+ this.isPaused = true;
+ //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
+ clearTimeout(timer);
+ elem.data('paused', true);
+ var end = Date.now();
+ remain = remain - (end - start);
+ elem.trigger('timerpaused.zf.' + nameSpace);
+ };
+ };
+ /**
+ * Runs a callback function when images are fully loaded.
+ * @param {Object} images - Image(s) to check if loaded.
+ * @param {Func} callback - Function to execute when image is fully loaded.
+ */
+ var onImagesLoaded = function(images, callback){
+ var self = this,
+ unloaded = images.length;
+
+ if (unloaded === 0) {
+ callback();
+ }
+
+ var singleImageLoaded = function() {
+ unloaded--;
+ if (unloaded === 0) {
+ callback();
+ }
+ };
+
+ images.each(function() {
+ if (this.complete) {
+ singleImageLoaded();
+ }
+ else if (typeof this.naturalWidth !== 'undefined' && this.naturalWidth > 0) {
+ singleImageLoaded();
+ }
+ else {
+ $(this).one('load', function() {
+ singleImageLoaded();
+ });
+ }
+ });
+ };
+
+ Foundation.Timer = Timer;
+ Foundation.onImagesLoaded = onImagesLoaded;
+}(jQuery, window.Foundation);
+
+//**************************************************
+//**Work inspired by multiple jquery swipe plugins**
+//**Done by Yohai Ararat ***************************
+//**************************************************
+(function($) {
+
+ $.spotSwipe = {
+ version: '1.0.0',
+ enabled: 'ontouchstart' in document.documentElement,
+ preventDefault: false,
+ moveThreshold: 75,
+ timeThreshold: 200
+ };
+
+ var startPosX,
+ startPosY,
+ startTime,
+ elapsedTime,
+ isMoving = false;
+
+ function onTouchEnd() {
+ // alert(this);
+ this.removeEventListener('touchmove', onTouchMove);
+ this.removeEventListener('touchend', onTouchEnd);
+ isMoving = false;
+ }
+
+ function onTouchMove(e) {
+ if ($.spotSwipe.preventDefault) { e.preventDefault(); }
+ if(isMoving) {
+ var x = e.touches[0].pageX;
+ var y = e.touches[0].pageY;
+ var dx = startPosX - x;
+ var dy = startPosY - y;
+ var dir;
+ elapsedTime = new Date().getTime() - startTime;
+ if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {
+ dir = dx > 0 ? 'left' : 'right';
+ }
+ // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {
+ // dir = dy > 0 ? 'down' : 'up';
+ // }
+ if(dir) {
+ e.preventDefault();
+ onTouchEnd.call(this);
+ $(this).trigger('swipe', dir).trigger('swipe' + dir);
+ }
+ }
+ }
+
+ function onTouchStart(e) {
+ if (e.touches.length == 1) {
+ startPosX = e.touches[0].pageX;
+ startPosY = e.touches[0].pageY;
+ isMoving = true;
+ startTime = new Date().getTime();
+ this.addEventListener('touchmove', onTouchMove, false);
+ this.addEventListener('touchend', onTouchEnd, false);
+ }
+ }
+
+ function init() {
+ this.addEventListener && this.addEventListener('touchstart', onTouchStart, false);
+ }
+
+ function teardown() {
+ this.removeEventListener('touchstart', onTouchStart);
+ }
+
+ $.event.special.swipe = { setup: init };
+
+ $.each(['left', 'up', 'down', 'right'], function () {
+ $.event.special['swipe' + this] = { setup: function(){
+ $(this).on('swipe', $.noop);
+ } };
+ });
+})(jQuery);
+/****************************************************
+ * Method for adding psuedo drag events to elements *
+ ***************************************************/
+!function($){
+ $.fn.addTouch = function(){
+ this.each(function(i,el){
+ $(el).bind('touchstart touchmove touchend touchcancel',function(){
+ //we pass the original event object because the jQuery event
+ //object is normalized to w3c specs and does not provide the TouchList
+ handleTouch(event);
+ });
+ });
+
+ var handleTouch = function(event){
+ var touches = event.changedTouches,
+ first = touches[0],
+ eventTypes = {
+ touchstart: 'mousedown',
+ touchmove: 'mousemove',
+ touchend: 'mouseup'
+ },
+ type = eventTypes[event.type],
+ simulatedEvent
+ ;
+
+ if('MouseEvent' in window && typeof window.MouseEvent === 'function') {
+ simulatedEvent = window.MouseEvent(type, {
+ 'bubbles': true,
+ 'cancelable': true,
+ 'screenX': first.screenX,
+ 'screenY': first.screenY,
+ 'clientX': first.clientX,
+ 'clientY': first.clientY
+ });
+ } else {
+ simulatedEvent = document.createEvent('MouseEvent');
+ simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);
+ }
+ first.target.dispatchEvent(simulatedEvent);
+ };
+ };
+}(jQuery);
+
+
+//**********************************
+//**From the jQuery Mobile Library**
+//**need to recreate functionality**
+//**and try to improve if possible**
+//**********************************
+
+/* Removing the jQuery function ****
+************************************
+
+(function( $, window, undefined ) {
+
+ var $document = $( document ),
+ // supportTouch = $.mobile.support.touch,
+ touchStartEvent = 'touchstart'//supportTouch ? "touchstart" : "mousedown",
+ touchStopEvent = 'touchend'//supportTouch ? "touchend" : "mouseup",
+ touchMoveEvent = 'touchmove'//supportTouch ? "touchmove" : "mousemove";
+
+ // setup new event shortcuts
+ $.each( ( "touchstart touchmove touchend " +
+ "swipe swipeleft swiperight" ).split( " " ), function( i, name ) {
+
+ $.fn[ name ] = function( fn ) {
+ return fn ? this.bind( name, fn ) : this.trigger( name );
+ };
+
+ // jQuery < 1.8
+ if ( $.attrFn ) {
+ $.attrFn[ name ] = true;
+ }
+ });
+
+ function triggerCustomEvent( obj, eventType, event, bubble ) {
+ var originalType = event.type;
+ event.type = eventType;
+ if ( bubble ) {
+ $.event.trigger( event, undefined, obj );
+ } else {
+ $.event.dispatch.call( obj, event );
+ }
+ event.type = originalType;
+ }
+
+ // also handles taphold
+
+ // Also handles swipeleft, swiperight
+ $.event.special.swipe = {
+
+ // More than this horizontal displacement, and we will suppress scrolling.
+ scrollSupressionThreshold: 30,
+
+ // More time than this, and it isn't a swipe.
+ durationThreshold: 1000,
+
+ // Swipe horizontal displacement must be more than this.
+ horizontalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30,
+
+ // Swipe vertical displacement must be less than this.
+ verticalDistanceThreshold: window.devicePixelRatio >= 2 ? 15 : 30,
+
+ getLocation: function ( event ) {
+ var winPageX = window.pageXOffset,
+ winPageY = window.pageYOffset,
+ x = event.clientX,
+ y = event.clientY;
+
+ if ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) ||
+ event.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) {
+
+ // iOS4 clientX/clientY have the value that should have been
+ // in pageX/pageY. While pageX/page/ have the value 0
+ x = x - winPageX;
+ y = y - winPageY;
+ } else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) {
+
+ // Some Android browsers have totally bogus values for clientX/Y
+ // when scrolling/zooming a page. Detectable since clientX/clientY
+ // should never be smaller than pageX/pageY minus page scroll
+ x = event.pageX - winPageX;
+ y = event.pageY - winPageY;
+ }
+
+ return {
+ x: x,
+ y: y
+ };
+ },
+
+ start: function( event ) {
+ var data = event.originalEvent.touches ?
+ event.originalEvent.touches[ 0 ] : event,
+ location = $.event.special.swipe.getLocation( data );
+ return {
+ time: ( new Date() ).getTime(),
+ coords: [ location.x, location.y ],
+ origin: $( event.target )
+ };
+ },
+
+ stop: function( event ) {
+ var data = event.originalEvent.touches ?
+ event.originalEvent.touches[ 0 ] : event,
+ location = $.event.special.swipe.getLocation( data );
+ return {
+ time: ( new Date() ).getTime(),
+ coords: [ location.x, location.y ]
+ };
+ },
+
+ handleSwipe: function( start, stop, thisObject, origTarget ) {
+ if ( stop.time - start.time < $.event.special.swipe.durationThreshold &&
+ Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold &&
+ Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) {
+ var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight";
+
+ triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }), true );
+ triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true );
+ return true;
+ }
+ return false;
+
+ },
+
+ // This serves as a flag to ensure that at most one swipe event event is
+ // in work at any given time
+ eventInProgress: false,
+
+ setup: function() {
+ var events,
+ thisObject = this,
+ $this = $( thisObject ),
+ context = {};
+
+ // Retrieve the events data for this element and add the swipe context
+ events = $.data( this, "mobile-events" );
+ if ( !events ) {
+ events = { length: 0 };
+ $.data( this, "mobile-events", events );
+ }
+ events.length++;
+ events.swipe = context;
+
+ context.start = function( event ) {
+
+ // Bail if we're already working on a swipe event
+ if ( $.event.special.swipe.eventInProgress ) {
+ return;
+ }
+ $.event.special.swipe.eventInProgress = true;
+
+ var stop,
+ start = $.event.special.swipe.start( event ),
+ origTarget = event.target,
+ emitted = false;
+
+ context.move = function( event ) {
+ if ( !start || event.isDefaultPrevented() ) {
+ return;
+ }
+
+ stop = $.event.special.swipe.stop( event );
+ if ( !emitted ) {
+ emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget );
+ if ( emitted ) {
+
+ // Reset the context to make way for the next swipe event
+ $.event.special.swipe.eventInProgress = false;
+ }
+ }
+ // prevent scrolling
+ if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) {
+ event.preventDefault();
+ }
+ };
+
+ context.stop = function() {
+ emitted = true;
+
+ // Reset the context to make way for the next swipe event
+ $.event.special.swipe.eventInProgress = false;
+ $document.off( touchMoveEvent, context.move );
+ context.move = null;
+ };
+
+ $document.on( touchMoveEvent, context.move )
+ .one( touchStopEvent, context.stop );
+ };
+ $this.on( touchStartEvent, context.start );
+ },
+
+ teardown: function() {
+ var events, context;
+
+ events = $.data( this, "mobile-events" );
+ if ( events ) {
+ context = events.swipe;
+ delete events.swipe;
+ events.length--;
+ if ( events.length === 0 ) {
+ $.removeData( this, "mobile-events" );
+ }
+ }
+
+ if ( context ) {
+ if ( context.start ) {
+ $( this ).off( touchStartEvent, context.start );
+ }
+ if ( context.move ) {
+ $document.off( touchMoveEvent, context.move );
+ }
+ if ( context.stop ) {
+ $document.off( touchStopEvent, context.stop );
+ }
+ }
+ }
+ };
+ $.each({
+ swipeleft: "swipe.left",
+ swiperight: "swipe.right"
+ }, function( event, sourceEvent ) {
+
+ $.event.special[ event ] = {
+ setup: function() {
+ $( this ).bind( sourceEvent, $.noop );
+ },
+ teardown: function() {
+ $( this ).unbind( sourceEvent );
+ }
+ };
+ });
+})( jQuery, this );
+*/
+
+!function(Foundation, $) {
+ 'use strict';
+ // Elements with [data-open] will reveal a plugin that supports it when clicked.
+ $(document).on('click.zf.trigger', '[data-open]', function() {
+ var id = $(this).data('open');
+ $('#' + id).triggerHandler('open.zf.trigger', [$(this)]);
+ });
+
+ // Elements with [data-close] will close a plugin that supports it when clicked.
+ // If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
+ $(document).on('click.zf.trigger', '[data-close]', function() {
+ var id = $(this).data('close');
+ if (id) {
+ $('#' + id).triggerHandler('close.zf.trigger', [$(this)]);
+ }
+ else {
+ $(this).trigger('close.zf.trigger');
+ }
+ });
+
+ // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
+ $(document).on('click.zf.trigger', '[data-toggle]', function() {
+ var id = $(this).data('toggle');
+ $('#' + id).triggerHandler('toggle.zf.trigger', [$(this)]);
+ });
+
+ // Elements with [data-closable] will respond to close.zf.trigger events.
+ $(document).on('close.zf.trigger', '[data-closable]', function(e){
+ e.stopPropagation();
+ var animation = $(this).data('closable');
+
+ if(animation !== ''){
+ Foundation.Motion.animateOut($(this), animation, function() {
+ $(this).trigger('closed.zf');
+ });
+ }else{
+ $(this).fadeOut().trigger('closed.zf');
+ }
+ });
+
+ var MutationObserver = (function () {
+ var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
+ for (var i=0; i < prefixes.length; i++) {
+ if (prefixes[i] + 'MutationObserver' in window) {
+ return window[prefixes[i] + 'MutationObserver'];
+ }
+ }
+ return false;
+ }());
+
+
+ var checkListeners = function(){
+ eventsListener();
+ resizeListener();
+ scrollListener();
+ closemeListener();
+ };
+ /**
+ * Fires once after all other scripts have loaded
+ * @function
+ * @private
+ */
+ $(window).load(function(){
+ checkListeners();
+ });
+
+ //******** only fires this function once on load, if there's something to watch ********
+ var closemeListener = function(pluginName){
+ var yetiBoxes = $('[data-yeti-box]'),
+ plugNames = ['dropdown', 'tooltip', 'reveal'];
+
+ if(pluginName){
+ if(typeof pluginName === 'string'){
+ plugNames.push(pluginName);
+ }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){
+ plugNames.concat(pluginName);
+ }else{
+ console.error('Plugin names must be strings');
+ }
+ }
+ if(yetiBoxes.length){
+ var listeners = plugNames.map(function(name){
+ return 'closeme.zf.' + name;
+ }).join(' ');
+
+ $(window).off(listeners).on(listeners, function(e, pluginId){
+ var plugin = e.namespace.split('.')[0];
+ var plugins = $('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]');
+
+ plugins.each(function(){
+ var _this = $(this);
+
+ _this.triggerHandler('close.zf.trigger', [_this]);
+ });
+ });
+ }
+ };
+ var resizeListener = function(debounce){
+ var timer,
+ $nodes = $('[data-resize]');
+ if($nodes.length){
+ $(window).off('resize.zf.trigger')
+ .on('resize.zf.trigger', function(e) {
+ if (timer) { clearTimeout(timer); }
+
+ timer = setTimeout(function(){
+
+ if(!MutationObserver){//fallback for IE 9
+ $nodes.each(function(){
+ $(this).triggerHandler('resizeme.zf.trigger');
+ });
+ }
+ //trigger all listening elements and signal a resize event
+ $nodes.attr('data-events', "resize");
+ }, debounce || 10);//default time to emit resize event
+ });
+ }
+ };
+ var scrollListener = function(debounce){
+ var timer,
+ $nodes = $('[data-scroll]');
+ if($nodes.length){
+ $(window).off('scroll.zf.trigger')
+ .on('scroll.zf.trigger', function(e){
+ if(timer){ clearTimeout(timer); }
+
+ timer = setTimeout(function(){
+
+ if(!MutationObserver){//fallback for IE 9
+ $nodes.each(function(){
+ $(this).triggerHandler('scrollme.zf.trigger');
+ });
+ }
+ //trigger all listening elements and signal a scroll event
+ $nodes.attr('data-events', "scroll");
+ }, debounce || 10);//default time to emit scroll event
+ });
+ }
+ };
+ // function domMutationObserver(debounce) {
+ // // !!! This is coming soon and needs more work; not active !!! //
+ // var timer,
+ // nodes = document.querySelectorAll('[data-mutate]');
+ // //
+ // if (nodes.length) {
+ // // var MutationObserver = (function () {
+ // // var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
+ // // for (var i=0; i < prefixes.length; i++) {
+ // // if (prefixes[i] + 'MutationObserver' in window) {
+ // // return window[prefixes[i] + 'MutationObserver'];
+ // // }
+ // // }
+ // // return false;
+ // // }());
+ //
+ //
+ // //for the body, we need to listen for all changes effecting the style and class attributes
+ // var bodyObserver = new MutationObserver(bodyMutation);
+ // bodyObserver.observe(document.body, { attributes: true, childList: true, characterData: false, subtree:true, attributeFilter:["style", "class"]});
+ //
+ //
+ // //body callback
+ // function bodyMutation(mutate) {
+ // //trigger all listening elements and signal a mutation event
+ // if (timer) { clearTimeout(timer); }
+ //
+ // timer = setTimeout(function() {
+ // bodyObserver.disconnect();
+ // $('[data-mutate]').attr('data-events',"mutate");
+ // }, debounce || 150);
+ // }
+ // }
+ // }
+ var eventsListener = function() {
+ if(!MutationObserver){ return false; }
+ var nodes = document.querySelectorAll('[data-resize], [data-scroll], [data-mutate]');
+
+ //element callback
+ var listeningElementsMutation = function(mutationRecordsList) {
+ var $target = $(mutationRecordsList[0].target);
+ //trigger the event handler for the element depending on type
+ switch ($target.attr("data-events")) {
+
+ case "resize" :
+ $target.triggerHandler('resizeme.zf.trigger', [$target]);
+ break;
+
+ case "scroll" :
+ $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
+ break;
+
+ // case "mutate" :
+ // console.log('mutate', $target);
+ // $target.triggerHandler('mutate.zf.trigger');
+ //
+ // //make sure we don't get stuck in an infinite loop from sloppy codeing
+ // if ($target.index('[data-mutate]') == $("[data-mutate]").length-1) {
+ // domMutationObserver();
+ // }
+ // break;
+
+ default :
+ return false;
+ //nothing
+ }
+ }
+
+ if(nodes.length){
+ //for each element that needs to listen for resizing, scrolling, (or coming soon mutation) add a single observer
+ for (var i = 0; i <= nodes.length-1; i++) {
+ var elementObserver = new MutationObserver(listeningElementsMutation);
+ elementObserver.observe(nodes[i], { attributes: true, childList: false, characterData: false, subtree:false, attributeFilter:["data-events"]});
+ }
+ }
+ };
+ // ------------------------------------
+
+ // [PH]
+ // Foundation.CheckWatchers = checkWatchers;
+ Foundation.IHearYou = checkListeners;
+ // Foundation.ISeeYou = scrollListener;
+ // Foundation.IFeelYou = closemeListener;
+
+}(window.Foundation, window.jQuery);
+
+!function(Foundation, $) {
+ 'use strict';
+
+ /**
+ * Creates a new instance of Abide.
+ * @class
+ * @fires Abide#init
+ * @param {Object} element - jQuery object to add the trigger to.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Abide(element, options) {
+ this.$element = element;
+ this.options = $.extend({}, Abide.defaults, this.$element.data(), options);
+
+ this._init();
+
+ Foundation.registerPlugin(this, 'Abide');
+ }
+
+ /**
+ * Default settings for plugin
+ */
+ Abide.defaults = {
+ /**
+ * The default event to validate inputs. Checkboxes and radios validate immediately.
+ * Remove or change this value for manual validation.
+ * @option
+ * @example 'fieldChange'
+ */
+ validateOn: 'fieldChange',
+ /**
+ * Class to be applied to input labels on failed validation.
+ * @option
+ * @example 'is-invalid-label'
+ */
+ labelErrorClass: 'is-invalid-label',
+ /**
+ * Class to be applied to inputs on failed validation.
+ * @option
+ * @example 'is-invalid-input'
+ */
+ inputErrorClass: 'is-invalid-input',
+ /**
+ * Class selector to use to target Form Errors for show/hide.
+ * @option
+ * @example '.form-error'
+ */
+ formErrorSelector: '.form-error',
+ /**
+ * Class added to Form Errors on failed validation.
+ * @option
+ * @example 'is-visible'
+ */
+ formErrorClass: 'is-visible',
+ /**
+ * Set to true to validate text inputs on any value change.
+ * @option
+ * @example false
+ */
+ liveValidate: false,
+
+ patterns: {
+ alpha : /^[a-zA-Z]+$/,
+ alpha_numeric : /^[a-zA-Z0-9]+$/,
+ integer : /^[-+]?\d+$/,
+ number : /^[-+]?\d*(?:[\.\,]\d+)?$/,
+
+ // amex, visa, diners
+ card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
+ cvv : /^([0-9]){3,4}$/,
+
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
+ email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
+
+ url : /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,
+ // abc.de
+ domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
+
+ datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
+ // YYYY-MM-DD
+ date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
+ // HH:MM:SS
+ time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
+ dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
+ // MM/DD/YYYY
+ month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
+ // DD/MM/YYYY
+ day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
+
+ // #FFF or #FFFFFF
+ color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
+ },
+ /**
+ * Optional validation functions to be used. `equalTo` being the only default included function.
+ * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:
+ * el : The jQuery element to validate.
+ * required : Boolean value of the required attribute be present or not.
+ * parent : The direct parent of the input.
+ * @option
+ */
+ validators: {
+ equalTo: function (el, required, parent) {
+ return $('#' + el.attr('data-equalto')).val() === el.val();
+ }
+ }
+ };
+
+
+ /**
+ * Initializes the Abide plugin and calls functions to get Abide functioning on load.
+ * @private
+ */
+ Abide.prototype._init = function(){
+ this.$inputs = this.$element.find('input, textarea, select').not('[data-abide-ignore]');
+
+ this._events();
+ };
+
+ /**
+ * Initializes events for Abide.
+ * @private
+ */
+ Abide.prototype._events = function() {
+ var _this = this;
+
+ this.$element.off('.abide')
+ .on('reset.zf.abide', function(e){
+ _this.resetForm();
+ })
+ .on('submit.zf.abide', function(e){
+ return _this.validateForm();
+ });
+
+ if(this.options.validateOn === 'fieldChange'){
+ this.$inputs.off('change.zf.abide')
+ .on('change.zf.abide', function(e){
+ _this.validateInput($(this));
+ });
+ }
+
+ if(this.options.liveValidate){
+ this.$inputs.off('input.zf.abide')
+ .on('input.zf.abide', function(e){
+ _this.validateInput($(this));
+ });
+ }
+ },
+ /**
+ * Calls necessary functions to update Abide upon DOM change
+ * @private
+ */
+ Abide.prototype._reflow = function() {
+ this._init();
+ };
+ /**
+ * Checks whether or not a form element has the required attribute and if it's checked or not
+ * @param {Object} element - jQuery object to check for required attribute
+ * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
+ */
+ Abide.prototype.requiredCheck = function($el) {
+ if(!$el.attr('required')) return true;
+ var isGood = true;
+ switch ($el[0].type) {
+
+ case 'checkbox':
+ case 'radio':
+ isGood = $el[0].checked;
+ break;
+
+ case 'select':
+ case 'select-one':
+ case 'select-multiple':
+ var opt = $el.find('option:selected');
+ if(!opt.length || !opt.val()) isGood = false;
+ break;
+
+ default:
+ if(!$el.val() || !$el.val().length) isGood = false;
+ }
+ return isGood;
+ };
+ /**
+ * Based on $el, get the first element with selector in this order:
+ * 1. The element's direct sibling('s).
+ * 3. The element's parent's children.
+ *
+ * This allows for multiple form errors per input, though if none are found, no form errors will be shown.
+ *
+ * @param {Object} $el - jQuery object to use as reference to find the form error selector.
+ * @returns {Object} jQuery object with the selector.
+ */
+ Abide.prototype.findFormError = function($el){
+ var $error = $el.siblings(this.options.formErrorSelector);
+ if(!$error.length){
+ $error = $el.parent().find(this.options.formErrorSelector);
+ }
+ return $error;
+ };
+ /**
+ * Get the first element in this order:
+ * 2. The <label> with the attribute `[for="someInputId"]`
+ * 3. The `.closest()` <label>
+ *
+ * @param {Object} $el - jQuery object to check for required attribute
+ * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
+ */
+ Abide.prototype.findLabel = function($el) {
+ var $label = this.$element.find('label[for="' + $el[0].id + '"]');
+ if(!$label.length){
+ return $el.closest('label');
+ }
+ return $label;
+ };
+ /**
+ * Adds the CSS error class as specified by the Abide settings to the label, input, and the form
+ * @param {Object} $el - jQuery object to add the class to
+ */
+ Abide.prototype.addErrorClasses = function($el){
+ var $label = this.findLabel($el),
+ $formError = this.findFormError($el);
+
+ if($label.length){
+ $label.addClass(this.options.labelErrorClass);
+ }
+ if($formError.length){
+ $formError.addClass(this.options.formErrorClass);
+ }
+ $el.addClass(this.options.inputErrorClass).attr('data-invalid', '');
+ };
+ /**
+ * Removes CSS error class as specified by the Abide settings from the label, input, and the form
+ * @param {Object} $el - jQuery object to remove the class from
+ */
+ Abide.prototype.removeErrorClasses = function($el){
+ var $label = this.findLabel($el),
+ $formError = this.findFormError($el);
+
+ if($label.length){
+ $label.removeClass(this.options.labelErrorClass);
+ }
+ if($formError.length){
+ $formError.removeClass(this.options.formErrorClass);
+ }
+ $el.removeClass(this.options.inputErrorClass).removeAttr('data-invalid');
+ };
+ /**
+ * Goes through a form to find inputs and proceeds to validate them in ways specific to their type
+ * @fires Abide#invalid
+ * @fires Abide#valid
+ * @param {Object} element - jQuery object to validate, should be an HTML input
+ * @returns {Boolean} goodToGo - If the input is valid or not.
+ */
+ Abide.prototype.validateInput = function($el){
+ var clearRequire = this.requiredCheck($el),
+ validated = false,
+ customValidator = true,
+ validator = $el.attr('data-validator'),
+ equalTo = true;
+
+ switch ($el[0].type) {
+
+ case 'radio':
+ validated = this.validateRadio($el.attr('name'));
+ break;
+
+ case 'checkbox':
+ validated = clearRequire;
+ break;
+
+ case 'select':
+ case 'select-one':
+ case 'select-multiple':
+ validated = clearRequire;
+ break;
+
+ default:
+ validated = this.validateText($el);
+ }
+
+ if(validator){ customValidator = this.matchValidation($el, validator, $el.attr('required')); }
+ if($el.attr('data-equalto')){ equalTo = this.options.validators.equalTo($el); }
+
+ var goodToGo = [clearRequire, validated, customValidator, equalTo].indexOf(false) === -1,
+ message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';
+
+ this[goodToGo ? 'removeErrorClasses' : 'addErrorClasses']($el);
+
+ /**
+ * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`
+ * Trigger includes the DOM element of the input.
+ * @event Abide#valid
+ * @event Abide#invalid
+ */
+ $el.trigger(message, [$el]);
+
+ return goodToGo;
+ };
+ /**
+ * Goes through a form and if there are any invalid inputs, it will display the form error element
+ * @returns {Boolean} noError - true if no errors were detected...
+ * @fires Abide#formvalid
+ * @fires Abide#forminvalid
+ */
+ Abide.prototype.validateForm = function(){
+ var acc = [],
+ _this = this;
+
+ this.$inputs.each(function(){
+ acc.push(_this.validateInput($(this)));
+ });
+
+ var noError = acc.indexOf(false) === -1;
+
+ this.$element.find('[data-abide-error]').css('display', (noError ? 'none' : 'block'));
+ /**
+ * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.
+ * Trigger includes the element of the form.
+ * @event Abide#formvalid
+ * @event Abide#forminvalid
+ */
+ this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);
+
+ return noError;
+ };
+ /**
+ * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.
+ * @param {Object} $el - jQuery object to validate, should be a text input HTML element
+ * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns
+ * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified
+ */
+ Abide.prototype.validateText = function($el, pattern){
+ // pattern = pattern ? pattern : $el.attr('pattern') ? $el.attr('pattern') : $el.attr('type');
+ pattern = (pattern || $el.attr('pattern') || $el.attr('type'));
+ var inputText = $el.val();
+
+ return inputText.length ?//if text, check if the pattern exists, if so, test it, if no text or no pattern, return true.
+ this.options.patterns.hasOwnProperty(pattern) ? this.options.patterns[pattern].test(inputText) :
+ pattern && pattern !== $el.attr('type') ? new RegExp(pattern).test(inputText) : true : true;
+ }; /**
+ * Determines whether or a not a radio input is valid based on whether or not it is required and selected
+ * @param {String} groupName - A string that specifies the name of a radio button group
+ * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)
+ */
+ Abide.prototype.validateRadio = function(groupName){
+ var $group = this.$element.find(':radio[name="' + groupName + '"]'),
+ counter = [],
+ _this = this;
+
+ $group.each(function(){
+ var rdio = $(this),
+ clear = _this.requiredCheck(rdio);
+ counter.push(clear);
+ if(clear) _this.removeErrorClasses(rdio);
+ });
+
+ return counter.indexOf(false) === -1;
+ };
+ /**
+ * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed.
+ * @param {Object} $el - jQuery input element.
+ * @param {String} validators - a string of function names matching functions in the Abide.options.validators object.
+ * @param {Boolean} required - self explanatory?
+ * @returns {Boolean} - true if validations passed.
+ */
+ Abide.prototype.matchValidation = function($el, validators, required){
+ var _this = this;
+ required = required ? true : false;
+ var clear = validators.split(' ').map(function(v){
+ return _this.options.validators[v]($el, required, $el.parent());
+ });
+ return clear.indexOf(false) === -1;
+ };
+ /**
+ * Resets form inputs and styles
+ * @fires Abide#formreset
+ */
+ Abide.prototype.resetForm = function() {
+ var $form = this.$element,
+ opts = this.options;
+
+ $('.' + opts.labelErrorClass, $form).not('small').removeClass(opts.labelErrorClass);
+ $('.' + opts.inputErrorClass, $form).not('small').removeClass(opts.inputErrorClass);
+ $(opts.formErrorSelector + '.' + opts.formErrorClass).removeClass(opts.formErrorClass);
+ $form.find('[data-abide-error]').css('display', 'none');
+ $(':input', $form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr('data-invalid');
+ /**
+ * Fires when the form has been reset.
+ * @event Abide#formreset
+ */
+ $form.trigger('formreset.zf.abide', [$form]);
+ };
+ /**
+ * Destroys an instance of Abide.
+ * Removes error styles and classes from elements, without resetting their values.
+ */
+ Abide.prototype.destroy = function(){
+ var _this = this;
+ this.$element.off('.abide')
+ .find('[data-abide-error]').css('display', 'none');
+ this.$inputs.off('.abide')
+ .each(function(){
+ _this.removeErrorClasses($(this));
+ });
+
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(Abide, 'Abide');
+
+ // Exports for AMD/Browserify
+ if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
+ module.exports = Abide;
+ if (typeof define === 'function')
+ define(['foundation'], function() {
+ return Abide;
+ });
+
+}(Foundation, jQuery);
+
+/**
+ * Accordion module.
+ * @module foundation.accordion
+ * @requires foundation.util.keyboard
+ * @requires foundation.util.motion
+ */
+!function($, Foundation) {
+ 'use strict';
+
+ /**
+ * Creates a new instance of an accordion.
+ * @class
+ * @fires Accordion#init
+ * @param {jQuery} element - jQuery object to make into an accordion.
+ * @param {Object} options - a plain object with settings to override the default options.
+ */
+ function Accordion(element, options){
+ this.$element = element;
+ this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);
+
+ this._init();
+
+ Foundation.registerPlugin(this, 'Accordion');
+ Foundation.Keyboard.register('Accordion', {
+ 'ENTER': 'toggle',
+ 'SPACE': 'toggle',
+ 'ARROW_DOWN': 'next',
+ 'ARROW_UP': 'previous'
+ });
+ }
+
+ Accordion.defaults = {
+ /**
+ * Amount of time to animate the opening of an accordion pane.
+ * @option
+ * @example 250
+ */
+ slideSpeed: 250,
+ /**
+ * Allow the accordion to have multiple open panes.
+ * @option
+ * @example false
+ */
+ multiExpand: false,
+ /**
+ * Allow the accordion to close all panes.
+ * @option
+ * @example false
+ */
+ allowAllClosed: false
+ };
+
+ /**
+ * Initializes the accordion by animating the preset active pane(s).
+ * @private
+ */
+ Accordion.prototype._init = function() {
+ this.$element.attr('role', 'tablist');
+ this.$tabs = this.$element.children('li');
+ if (this.$tabs.length === 0) {
+ this.$tabs = this.$element.children('[data-accordion-item]');
+ }
+ this.$tabs.each(function(idx, el){
+
+ var $el = $(el),
+ $content = $el.find('[data-tab-content]'),
+ id = $content[0].id || Foundation.GetYoDigits(6, 'accordion'),
+ linkId = el.id || id + '-label';
+
+ $el.find('a:first').attr({
+ 'aria-controls': id,
+ 'role': 'tab',
+ 'id': linkId,
+ 'aria-expanded': false,
+ 'aria-selected': false
+ });
+ $content.attr({'role': 'tabpanel', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});
+ });
+ var $initActive = this.$element.find('.is-active').children('[data-tab-content]');
+ if($initActive.length){
+ this.down($initActive, true);
+ }
+ this._events();
+ };
+
+ /**
+ * Adds event handlers for items within the accordion.
+ * @private
+ */
+ Accordion.prototype._events = function() {
+ var _this = this;
+
+ this.$tabs.each(function(){
+ var $elem = $(this);
+ var $tabContent = $elem.children('[data-tab-content]');
+ if ($tabContent.length) {
+ $elem.children('a').off('click.zf.accordion keydown.zf.accordion')
+ .on('click.zf.accordion', function(e){
+ // $(this).children('a').on('click.zf.accordion', function(e) {
+ e.preventDefault();
+ if ($elem.hasClass('is-active')) {
+ if(_this.options.allowAllClosed || $elem.siblings().hasClass('is-active')){
+ _this.up($tabContent);
+ }
+ }
+ else {
+ _this.down($tabContent);
+ }
+ }).on('keydown.zf.accordion', function(e){
+ Foundation.Keyboard.handleKey(e, 'Accordion', {
+ toggle: function() {
+ _this.toggle($tabContent);
+ },
+ next: function() {
+ $elem.next().find('a').focus().trigger('click.zf.accordion');
+ },
+ previous: function() {
+ $elem.prev().find('a').focus().trigger('click.zf.accordion');
+ },
+ handled: function() {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ });
+ });
+ }
+ });
+ };
+ /**
+ * Toggles the selected content pane's open/close state.
+ * @param {jQuery} $target - jQuery object of the pane to toggle.
+ * @function
+ */
+ Accordion.prototype.toggle = function($target){
+ if($target.parent().hasClass('is-active')){
+ if(this.options.allowAllClosed || $target.parent().siblings().hasClass('is-active')){
+ this.up($target);
+ }else{ return; }
+ }else{
+ this.down($target);
+ }
+ };
+ /**
+ * Opens the accordion tab defined by `$target`.
+ * @param {jQuery} $target - Accordion pane to open.
+ * @param {Boolean} firstTime - flag to determine if reflow should happen.
+ * @fires Accordion#down
+ * @function
+ */
+ Accordion.prototype.down = function($target, firstTime) {
+ var _this = this;
+ if(!this.options.multiExpand && !firstTime){
+ var $currentActive = this.$element.find('.is-active').children('[data-tab-content]');
+ if($currentActive.length){
+ this.up($currentActive);
+ }
+ }
+
+ $target
+ .attr('aria-hidden', false)
+ .parent('[data-tab-content]')
+ .addBack()
+ .parent().addClass('is-active');
+
+ // Foundation.Move(_this.options.slideSpeed, $target, function(){
+ $target.slideDown(_this.options.slideSpeed, function () {
+ /**
+ * Fires when the tab is done opening.
+ * @event Accordion#down
+ */
+ _this.$element.trigger('down.zf.accordion', [$target]);
+ });
+ // });
+
+ // if(!firstTime){
+ // Foundation._reflow(this.$element.attr('data-accordion'));
+ // }
+ $('#' + $target.attr('aria-labelledby')).attr({
+ 'aria-expanded': true,
+ 'aria-selected': true
+ });
+ };
+
+ /**
+ * Closes the tab defined by `$target`.
+ * @param {jQuery} $target - Accordion tab to close.
+ * @fires Accordion#up
+ * @function
+ */
+ Accordion.prototype.up = function($target) {
+ var $aunts = $target.parent().siblings(),
+ _this = this;
+ var canClose = this.options.multiExpand ? $aunts.hasClass('is-active') : $target.parent().hasClass('is-active');
+
+ if(!this.options.allowAllClosed && !canClose){
+ return;
+ }
+
+ // Foundation.Move(this.options.slideSpeed, $target, function(){
+ $target.slideUp(_this.options.slideSpeed, function () {
+ /**
+ * Fires when the tab is done collapsing up.
+ * @event Accordion#up
+ */
+ _this.$element.trigger('up.zf.accordion', [$target]);
+ });
+ // });
+
+ $target.attr('aria-hidden', true)
+ .parent().removeClass('is-active');
+
+ $('#' + $target.attr('aria-labelledby')).attr({
+ 'aria-expanded': false,
+ 'aria-selected': false
+ });
+ };
+
+ /**
+ * Destroys an instance of an accordion.
+ * @fires Accordion#destroyed
+ * @function
+ */
+ Accordion.prototype.destroy = function() {
+ this.$element.find('[data-tab-content]').slideUp(0).css('display', '');
+ this.$element.find('a').off('.zf.accordion');
+
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(Accordion, 'Accordion');
+}(jQuery, window.Foundation);
+
+/**
+ * AccordionMenu module.
+ * @module foundation.accordionMenu
+ * @requires foundation.util.keyboard
+ * @requires foundation.util.motion
+ * @requires foundation.util.nest
+ */
+!function($) {
+ 'use strict';
+
+ /**
+ * Creates a new instance of an accordion menu.
+ * @class
+ * @fires AccordionMenu#init
+ * @param {jQuery} element - jQuery object to make into an accordion menu.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function AccordionMenu(element, options) {
+ this.$element = element;
+ this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);
+
+ Foundation.Nest.Feather(this.$element, 'accordion');
+
+ this._init();
+
+ Foundation.registerPlugin(this, 'AccordionMenu');
+ Foundation.Keyboard.register('AccordionMenu', {
+ 'ENTER': 'toggle',
+ 'SPACE': 'toggle',
+ 'ARROW_RIGHT': 'open',
+ 'ARROW_UP': 'up',
+ 'ARROW_DOWN': 'down',
+ 'ARROW_LEFT': 'close',
+ 'ESCAPE': 'closeAll',
+ 'TAB': 'down',
+ 'SHIFT_TAB': 'up'
+ });
+ }
+
+ AccordionMenu.defaults = {
+ /**
+ * Amount of time to animate the opening of a submenu in ms.
+ * @option
+ * @example 250
+ */
+ slideSpeed: 250,
+ /**
+ * Allow the menu to have multiple open panes.
+ * @option
+ * @example true
+ */
+ multiOpen: true
+ };
+
+ /**
+ * Initializes the accordion menu by hiding all nested menus.
+ * @private
+ */
+ AccordionMenu.prototype._init = function() {
+ this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem');
+ this.$element.attr({
+ 'role': 'tablist',
+ 'aria-multiselectable': this.options.multiOpen
+ });
+
+ this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');
+ this.$menuLinks.each(function(){
+ var linkId = this.id || Foundation.GetYoDigits(6, 'acc-menu-link'),
+ $elem = $(this),
+ $sub = $elem.children('[data-submenu]'),
+ subId = $sub[0].id || Foundation.GetYoDigits(6, 'acc-menu'),
+ isActive = $sub.hasClass('is-active');
+ $elem.attr({
+ 'aria-controls': subId,
+ 'aria-expanded': isActive,
+ 'role': 'tab',
+ 'id': linkId
+ });
+ $sub.attr({
+ 'aria-labelledby': linkId,
+ 'aria-hidden': !isActive,
+ 'role': 'tabpanel',
+ 'id': subId
+ });
+ });
+ var initPanes = this.$element.find('.is-active');
+ if(initPanes.length){
+ var _this = this;
+ initPanes.each(function(){
+ _this.down($(this));
+ });
+ }
+ this._events();
+ };
+
+ /**
+ * Adds event handlers for items within the menu.
+ * @private
+ */
+ AccordionMenu.prototype._events = function() {
+ var _this = this;
+
+ this.$element.find('li').each(function() {
+ var $submenu = $(this).children('[data-submenu]');
+
+ if ($submenu.length) {
+ $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {
+ e.preventDefault();
+
+ _this.toggle($submenu);
+ });
+ }
+ }).on('keydown.zf.accordionmenu', function(e){
+ var $element = $(this),
+ $elements = $element.parent('ul').children('li'),
+ $prevElement,
+ $nextElement,
+ $target = $element.children('[data-submenu]');
+
+ $elements.each(function(i) {
+ if ($(this).is($element)) {
+ $prevElement = $elements.eq(Math.max(0, i-1));
+ $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));
+
+ if ($(this).children('[data-submenu]:visible').length) { // has open sub menu
+ $nextElement = $element.find('li:first-child');
+ }
+ if ($(this).is(':first-child')) { // is first element of sub menu
+ $prevElement = $element.parents('li').first();
+ } else if ($prevElement.children('[data-submenu]:visible').length) { // if previous element has open sub menu
+ $prevElement = $prevElement.find('li:last-child');
+ }
+ if ($(this).is(':last-child')) { // is last element of sub menu
+ $nextElement = $element.parents('li').first().next('li');
+ }
+
+ return;
+ }
+ });
+ Foundation.Keyboard.handleKey(e, 'AccordionMenu', {
+ open: function() {
+ if ($target.is(':hidden')) {
+ _this.down($target);
+ $target.find('li').first().focus();
+ }
+ },
+ close: function() {
+ if ($target.length && !$target.is(':hidden')) { // close active sub of this item
+ _this.up($target);
+ } else if ($element.parent('[data-submenu]').length) { // close currently open sub
+ _this.up($element.parent('[data-submenu]'));
+ $element.parents('li').first().focus();
+ }
+ },
+ up: function() {
+ $prevElement.focus();
+ },
+ down: function() {
+ $nextElement.focus();
+ },
+ toggle: function() {
+ if ($element.children('[data-submenu]').length) {
+ _this.toggle($element.children('[data-submenu]'));
+ }
+ },
+ closeAll: function() {
+ _this.hideAll();
+ },
+ handled: function() {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+ }
+ });
+ });//.attr('tabindex', 0);
+ };
+ /**
+ * Closes all panes of the menu.
+ * @function
+ */
+ AccordionMenu.prototype.hideAll = function(){
+ this.$element.find('[data-submenu]').slideUp(this.options.slideSpeed);
+ };
+ /**
+ * Toggles the open/close state of a submenu.
+ * @function
+ * @param {jQuery} $target - the submenu to toggle
+ */
+ AccordionMenu.prototype.toggle = function($target){
+ if(!$target.is(':animated')) {
+ if (!$target.is(':hidden')) {
+ this.up($target);
+ }
+ else {
+ this.down($target);
+ }
+ }
+ };
+ /**
+ * Opens the sub-menu defined by `$target`.
+ * @param {jQuery} $target - Sub-menu to open.
+ * @fires AccordionMenu#down
+ */
+ AccordionMenu.prototype.down = function($target) {
+ var _this = this;
+
+ if(!this.options.multiOpen){
+ this.up(this.$element.find('.is-active').not($target.parentsUntil(this.$element).add($target)));
+ }
+
+ $target.addClass('is-active').attr({'aria-hidden': false})
+ .parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});
+
+ Foundation.Move(this.options.slideSpeed, $target, function(){
+ $target.slideDown(_this.options.slideSpeed, function () {
+ /**
+ * Fires when the menu is done opening.
+ * @event AccordionMenu#down
+ */
+ _this.$element.trigger('down.zf.accordionMenu', [$target]);
+ });
+ });
+ };
+
+ /**
+ * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.
+ * @param {jQuery} $target - Sub-menu to close.
+ * @fires AccordionMenu#up
+ */
+ AccordionMenu.prototype.up = function($target) {
+ var _this = this;
+ Foundation.Move(this.options.slideSpeed, $target, function(){
+ $target.slideUp(_this.options.slideSpeed, function () {
+ /**
+ * Fires when the menu is done collapsing up.
+ * @event AccordionMenu#up
+ */
+ _this.$element.trigger('up.zf.accordionMenu', [$target]);
+ });
+ });
+
+ var $menus = $target.find('[data-submenu]').slideUp(0).addBack().attr('aria-hidden', true);
+
+ $menus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);
+ };
+
+ /**
+ * Destroys an instance of accordion menu.
+ * @fires AccordionMenu#destroyed
+ */
+ AccordionMenu.prototype.destroy = function(){
+ this.$element.find('[data-submenu]').slideDown(0).css('display', '');
+ this.$element.find('a').off('click.zf.accordionMenu');
+
+ Foundation.Nest.Burn(this.$element, 'accordion');
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(AccordionMenu, 'AccordionMenu');
+}(jQuery, window.Foundation);
+
+/**
+ * Drilldown module.
+ * @module foundation.drilldown
+ * @requires foundation.util.keyboard
+ * @requires foundation.util.motion
+ * @requires foundation.util.nest
+ */
+!function($, Foundation){
+ 'use strict';
+
+ /**
+ * Creates a new instance of a drilldown menu.
+ * @class
+ * @param {jQuery} element - jQuery object to make into an accordion menu.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Drilldown(element, options){
+ this.$element = element;
+ this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options);
+
+ Foundation.Nest.Feather(this.$element, 'drilldown');
+
+ this._init();
+
+ Foundation.registerPlugin(this, 'Drilldown');
+ Foundation.Keyboard.register('Drilldown', {
+ 'ENTER': 'open',
+ 'SPACE': 'open',
+ 'ARROW_RIGHT': 'next',
+ 'ARROW_UP': 'up',
+ 'ARROW_DOWN': 'down',
+ 'ARROW_LEFT': 'previous',
+ 'ESCAPE': 'close',
+ 'TAB': 'down',
+ 'SHIFT_TAB': 'up'
+ });
+ }
+ Drilldown.defaults = {
+ /**
+ * Markup used for JS generated back button. Prepended to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\`) if copy and pasting.
+ * @option
+ * @example '<\li><\a>Back<\/a><\/li>'
+ */
+ backButton: '<li class="js-drilldown-back"><a>Back</a></li>',
+ /**
+ * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\`) if copy and pasting.
+ * @option
+ * @example '<\div class="is-drilldown"><\/div>'
+ */
+ wrapper: '<div></div>',
+ /**
+ * Allow the menu to return to root list on body click.
+ * @option
+ * @example false
+ */
+ closeOnClick: false
+ // holdOpen: false
+ };
+ /**
+ * Initializes the drilldown by creating jQuery collections of elements
+ * @private
+ */
+ Drilldown.prototype._init = function(){
+ this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent');
+ this.$submenus = this.$submenuAnchors.children('[data-submenu]');
+ this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'menuitem');
+
+ this._prepareMenu();
+
+ this._keyboardEvents();
+ };
+ /**
+ * prepares drilldown menu by setting attributes to links and elements
+ * sets a min height to prevent content jumping
+ * wraps the element if not already wrapped
+ * @private
+ * @function
+ */
+ Drilldown.prototype._prepareMenu = function(){
+ var _this = this;
+ // if(!this.options.holdOpen){
+ // this._menuLinkEvents();
+ // }
+ this.$submenuAnchors.each(function(){
+ var $sub = $(this);
+ var $link = $sub.find('a:first');
+ $link.data('savedHref', $link.attr('href')).removeAttr('href');
+ $sub.children('[data-submenu]')
+ .attr({
+ 'aria-hidden': true,
+ 'tabindex': 0,
+ 'role': 'menu'
+ });
+ _this._events($sub);
+ });
+ this.$submenus.each(function(){
+ var $menu = $(this),
+ $back = $menu.find('.js-drilldown-back');
+ if(!$back.length){
+ $menu.prepend(_this.options.backButton);
+ }
+ _this._back($menu);
+ });
+ if(!this.$element.parent().hasClass('is-drilldown')){
+ this.$wrapper = $(this.options.wrapper).addClass('is-drilldown').css(this._getMaxDims());
+ this.$element.wrap(this.$wrapper);
+ }
+
+ };
+ /**
+ * Adds event handlers to elements in the menu.
+ * @function
+ * @private
+ * @param {jQuery} $elem - the current menu item to add handlers to.
+ */
+ Drilldown.prototype._events = function($elem){
+ var _this = this;
+
+ $elem.off('click.zf.drilldown')
+ .on('click.zf.drilldown', function(e){
+ if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){
+ e.stopImmediatePropagation();
+ e.preventDefault();
+ }
+
+ // if(e.target !== e.currentTarget.firstElementChild){
+ // return false;
+ // }
+ _this._show($elem);
+
+ if(_this.options.closeOnClick){
+ var $body = $('body').not(_this.$wrapper);
+ $body.off('.zf.drilldown').on('click.zf.drilldown', function(e){
+ e.preventDefault();
+ _this._hideAll();
+ $body.off('.zf.drilldown');
+ });
+ }
+ });
+ };
+ /**
+ * Adds keydown event listener to `li`'s in the menu.
+ * @private
+ */
+ Drilldown.prototype._keyboardEvents = function() {
+ var _this = this;
+ this.$menuItems.add(this.$element.find('.js-drilldown-back')).on('keydown.zf.drilldown', function(e){
+ var $element = $(this),
+ $elements = $element.parent('ul').children('li'),
+ $prevElement,
+ $nextElement;
+
+ $elements.each(function(i) {
+ if ($(this).is($element)) {
+ $prevElement = $elements.eq(Math.max(0, i-1));
+ $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));
+ return;
+ }
+ });
+ Foundation.Keyboard.handleKey(e, 'Drilldown', {
+ next: function() {
+ if ($element.is(_this.$submenuAnchors)) {
+ _this._show($element);
+ $element.on(Foundation.transitionend($element), function(){
+ $element.find('ul li').filter(_this.$menuItems).first().focus();
+ });
+ }
+ },
+ previous: function() {
+ _this._hide($element.parent('ul'));
+ $element.parent('ul').on(Foundation.transitionend($element), function(){
+ setTimeout(function() {
+ $element.parent('ul').parent('li').focus();
+ }, 1);
+ });
+ },
+ up: function() {
+ $prevElement.focus();
+ },
+ down: function() {
+ $nextElement.focus();
+ },
+ close: function() {
+ _this._back();
+ //_this.$menuItems.first().focus(); // focus to first element
+ },
+ open: function() {
+ if (!$element.is(_this.$menuItems)) { // not menu item means back button
+ _this._hide($element.parent('ul'));
+ setTimeout(function(){$element.parent('ul').parent('li').focus();}, 1);
+ } else if ($element.is(_this.$submenuAnchors)) {
+ _this._show($element);
+ setTimeout(function(){$element.find('ul li').filter(_this.$menuItems).first().focus();}, 1);
+ }
+ },
+ handled: function() {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+ }
+ });
+ }); // end keyboardAccess
+ };
+
+ /**
+ * Closes all open elements, and returns to root menu.
+ * @function
+ * @fires Drilldown#closed
+ */
+ Drilldown.prototype._hideAll = function(){
+ var $elem = this.$element.find('.is-drilldown-submenu.is-active').addClass('is-closing');
+ $elem.one(Foundation.transitionend($elem), function(e){
+ $elem.removeClass('is-active is-closing');
+ });
+ /**
+ * Fires when the menu is fully closed.
+ * @event Drilldown#closed
+ */
+ this.$element.trigger('closed.zf.drilldown');
+ };
+ /**
+ * Adds event listener for each `back` button, and closes open menus.
+ * @function
+ * @fires Drilldown#back
+ * @param {jQuery} $elem - the current sub-menu to add `back` event.
+ */
+ Drilldown.prototype._back = function($elem){
+ var _this = this;
+ $elem.off('click.zf.drilldown');
+ $elem.children('.js-drilldown-back')
+ .on('click.zf.drilldown', function(e){
+ e.stopImmediatePropagation();
+ // console.log('mouseup on back');
+ _this._hide($elem);
+ });
+ };
+ /**
+ * Adds event listener to menu items w/o submenus to close open menus on click.
+ * @function
+ * @private
+ */
+ Drilldown.prototype._menuLinkEvents = function(){
+ var _this = this;
+ this.$menuItems.not('.is-drilldown-submenu-parent')
+ .off('click.zf.drilldown')
+ .on('click.zf.drilldown', function(e){
+ // e.stopImmediatePropagation();
+ setTimeout(function(){
+ _this._hideAll();
+ }, 0);
+ });
+ };
+ /**
+ * Opens a submenu.
+ * @function
+ * @fires Drilldown#open
+ * @param {jQuery} $elem - the current element with a submenu to open.
+ */
+ Drilldown.prototype._show = function($elem){
+ $elem.children('[data-submenu]').addClass('is-active');
+
+ this.$element.trigger('open.zf.drilldown', [$elem]);
+ };
+ /**
+ * Hides a submenu
+ * @function
+ * @fires Drilldown#hide
+ * @param {jQuery} $elem - the current sub-menu to hide.
+ */
+ Drilldown.prototype._hide = function($elem){
+ var _this = this;
+ $elem.addClass('is-closing')
+ .one(Foundation.transitionend($elem), function(){
+ $elem.removeClass('is-active is-closing');
+ });
+ /**
+ * Fires when the submenu is has closed.
+ * @event Drilldown#hide
+ */
+ $elem.trigger('hide.zf.drilldown', [$elem]);
+
+ };
+ /**
+ * Iterates through the nested menus to calculate the min-height, and max-width for the menu.
+ * Prevents content jumping.
+ * @function
+ * @private
+ */
+ Drilldown.prototype._getMaxDims = function(){
+ var max = 0, result = {};
+ this.$submenus.add(this.$element).each(function(){
+ var numOfElems = $(this).children('li').length;
+ max = numOfElems > max ? numOfElems : max;
+ });
+
+ result.height = max * this.$menuItems[0].getBoundingClientRect().height + 'px';
+ result.width = this.$element[0].getBoundingClientRect().width + 'px';
+
+ return result;
+ };
+ /**
+ * Destroys the Drilldown Menu
+ * @function
+ */
+ Drilldown.prototype.destroy = function(){
+ this._hideAll();
+ Foundation.Nest.Burn(this.$element, 'drilldown');
+ this.$element.unwrap()
+ .find('.js-drilldown-back').remove()
+ .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu')
+ .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role')
+ .off('.zf.drilldown').end().off('zf.drilldown');
+ this.$element.find('a').each(function(){
+ var $link = $(this);
+ if($link.data('savedHref')){
+ $link.attr('href', $link.data('savedHref')).removeData('savedHref');
+ }else{ return; }
+ });
+ Foundation.unregisterPlugin(this);
+ };
+ Foundation.plugin(Drilldown, 'Drilldown');
+}(jQuery, window.Foundation);
+
+/**
+ * Dropdown module.
+ * @module foundation.dropdown
+ * @requires foundation.util.keyboard
+ * @requires foundation.util.box
+ * @requires foundation.util.triggers
+ */
+!function($, Foundation){
+ 'use strict';
+ /**
+ * Creates a new instance of a dropdown.
+ * @class
+ * @param {jQuery} element - jQuery object to make into a dropdown.
+ * Object should be of the dropdown panel, rather than its anchor.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Dropdown(element, options){
+ this.$element = element;
+ this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);
+ this._init();
+
+ Foundation.registerPlugin(this, 'Dropdown');
+ Foundation.Keyboard.register('Dropdown', {
+ 'ENTER': 'open',
+ 'SPACE': 'open',
+ 'ESCAPE': 'close',
+ 'TAB': 'tab_forward',
+ 'SHIFT_TAB': 'tab_backward'
+ });
+ }
+
+ Dropdown.defaults = {
+ /**
+ * Amount of time to delay opening a submenu on hover event.
+ * @option
+ * @example 250
+ */
+ hoverDelay: 250,
+ /**
+ * Allow submenus to open on hover events
+ * @option
+ * @example false
+ */
+ hover: false,
+ /**
+ * Don't close dropdown when hovering over dropdown pane
+ * @option
+ * @example true
+ */
+ hoverPane: false,
+ /**
+ * Number of pixels between the dropdown pane and the triggering element on open.
+ * @option
+ * @example 1
+ */
+ vOffset: 1,
+ /**
+ * Number of pixels between the dropdown pane and the triggering element on open.
+ * @option
+ * @example 1
+ */
+ hOffset: 1,
+ /**
+ * Class applied to adjust open position. JS will test and fill this in.
+ * @option
+ * @example 'top'
+ */
+ positionClass: '',
+ /**
+ * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.
+ * @option
+ * @example false
+ */
+ trapFocus: false,
+ /**
+ * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.
+ * @option
+ * @example true
+ */
+ autoFocus: false,
+ /**
+ * Allows a click on the body to close the dropdown.
+ * @option
+ * @example false
+ */
+ closeOnClick: false
+ };
+ /**
+ * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.
+ * @function
+ * @private
+ */
+ Dropdown.prototype._init = function(){
+ var $id = this.$element.attr('id');
+
+ this.$anchor = $('[data-toggle="' + $id + '"]') || $('[data-open="' + $id + '"]');
+ this.$anchor.attr({
+ 'aria-controls': $id,
+ 'data-is-focus': false,
+ 'data-yeti-box': $id,
+ 'aria-haspopup': true,
+ 'aria-expanded': false
+ // 'data-resize': $id
+ });
+
+ this.options.positionClass = this.getPositionClass();
+ this.counter = 4;
+ this.usedPositions = [];
+ this.$element.attr({
+ 'aria-hidden': 'true',
+ 'data-yeti-box': $id,
+ 'data-resize': $id,
+ 'aria-labelledby': this.$anchor[0].id || Foundation.GetYoDigits(6, 'dd-anchor')
+ });
+ this._events();
+ };
+ /**
+ * Helper function to determine current orientation of dropdown pane.
+ * @function
+ * @returns {String} position - string value of a position class.
+ */
+ Dropdown.prototype.getPositionClass = function(){
+ var position = this.$element[0].className.match(/\b(top|left|right)\b/g);
+ position = position ? position[0] : '';
+ return position;
+ };
+ /**
+ * Adjusts the dropdown panes orientation by adding/removing positioning classes.
+ * @function
+ * @private
+ * @param {String} position - position class to remove.
+ */
+ Dropdown.prototype._reposition = function(position){
+ this.usedPositions.push(position ? position : 'bottom');
+ //default, try switching to opposite side
+ if(!position && (this.usedPositions.indexOf('top') < 0)){
+ this.$element.addClass('top');
+ }else if(position === 'top' && (this.usedPositions.indexOf('bottom') < 0)){
+ this.$element.removeClass(position);
+ }else if(position === 'left' && (this.usedPositions.indexOf('right') < 0)){
+ this.$element.removeClass(position)
+ .addClass('right');
+ }else if(position === 'right' && (this.usedPositions.indexOf('left') < 0)){
+ this.$element.removeClass(position)
+ .addClass('left');
+ }
+
+ //if default change didn't work, try bottom or left first
+ else if(!position && (this.usedPositions.indexOf('top') > -1) && (this.usedPositions.indexOf('left') < 0)){
+ this.$element.addClass('left');
+ }else if(position === 'top' && (this.usedPositions.indexOf('bottom') > -1) && (this.usedPositions.indexOf('left') < 0)){
+ this.$element.removeClass(position)
+ .addClass('left');
+ }else if(position === 'left' && (this.usedPositions.indexOf('right') > -1) && (this.usedPositions.indexOf('bottom') < 0)){
+ this.$element.removeClass(position);
+ }else if(position === 'right' && (this.usedPositions.indexOf('left') > -1) && (this.usedPositions.indexOf('bottom') < 0)){
+ this.$element.removeClass(position);
+ }
+ //if nothing cleared, set to bottom
+ else{
+ this.$element.removeClass(position);
+ }
+ this.classChanged = true;
+ this.counter--;
+ };
+ /**
+ * Sets the position and orientation of the dropdown pane, checks for collisions.
+ * Recursively calls itself if a collision is detected, with a new position class.
+ * @function
+ * @private
+ */
+ Dropdown.prototype._setPosition = function(){
+ if(this.$anchor.attr('aria-expanded') === 'false'){ return false; }
+ var position = this.getPositionClass(),
+ $eleDims = Foundation.Box.GetDimensions(this.$element),
+ $anchorDims = Foundation.Box.GetDimensions(this.$anchor),
+ _this = this,
+ direction = (position === 'left' ? 'left' : ((position === 'right') ? 'left' : 'top')),
+ param = (direction === 'top') ? 'height' : 'width',
+ offset = (param === 'height') ? this.options.vOffset : this.options.hOffset;
+
+ if(($eleDims.width >= $eleDims.windowDims.width) || (!this.counter && !Foundation.Box.ImNotTouchingYou(this.$element))){
+ this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({
+ 'width': $eleDims.windowDims.width - (this.options.hOffset * 2),
+ 'height': 'auto'
+ });
+ this.classChanged = true;
+ return false;
+ }
+
+ this.$element.offset(Foundation.Box.GetOffsets(this.$element, this.$anchor, position, this.options.vOffset, this.options.hOffset));
+
+ while(!Foundation.Box.ImNotTouchingYou(this.$element) && this.counter){
+ this._reposition(position);
+ this._setPosition();
+ }
+ };
+ /**
+ * Adds event listeners to the element utilizing the triggers utility library.
+ * @function
+ * @private
+ */
+ Dropdown.prototype._events = function(){
+ var _this = this;
+ this.$element.on({
+ 'open.zf.trigger': this.open.bind(this),
+ 'close.zf.trigger': this.close.bind(this),
+ 'toggle.zf.trigger': this.toggle.bind(this),
+ 'resizeme.zf.trigger': this._setPosition.bind(this)
+ });
+
+ if(this.options.hover){
+ this.$anchor.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')
+ .on('mouseenter.zf.dropdown', function(){
+ clearTimeout(_this.timeout);
+ _this.timeout = setTimeout(function(){
+ _this.open();
+ _this.$anchor.data('hover', true);
+ }, _this.options.hoverDelay);
+ }).on('mouseleave.zf.dropdown', function(){
+ clearTimeout(_this.timeout);
+ _this.timeout = setTimeout(function(){
+ _this.close();
+ _this.$anchor.data('hover', false);
+ }, _this.options.hoverDelay);
+ });
+ if(this.options.hoverPane){
+ this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')
+ .on('mouseenter.zf.dropdown', function(){
+ clearTimeout(_this.timeout);
+ }).on('mouseleave.zf.dropdown', function(){
+ clearTimeout(_this.timeout);
+ _this.timeout = setTimeout(function(){
+ _this.close();
+ _this.$anchor.data('hover', false);
+ }, _this.options.hoverDelay);
+ });
+ }
+ }
+ this.$anchor.add(this.$element).on('keydown.zf.dropdown', function(e) {
+
+ var $target = $(this),
+ visibleFocusableElements = Foundation.Keyboard.findFocusable(_this.$element);
+
+ Foundation.Keyboard.handleKey(e, 'Dropdown', {
+ tab_forward: function() {
+ if (_this.$element.find(':focus').is(visibleFocusableElements.eq(-1))) { // left modal downwards, setting focus to first element
+ if (_this.options.trapFocus) { // if focus shall be trapped
+ visibleFocusableElements.eq(0).focus();
+ e.preventDefault();
+ } else { // if focus is not trapped, close dropdown on focus out
+ _this.close();
+ }
+ }
+ },
+ tab_backward: function() {
+ if (_this.$element.find(':focus').is(visibleFocusableElements.eq(0)) || _this.$element.is(':focus')) { // left modal upwards, setting focus to last element
+ if (_this.options.trapFocus) { // if focus shall be trapped
+ visibleFocusableElements.eq(-1).focus();
+ e.preventDefault();
+ } else { // if focus is not trapped, close dropdown on focus out
+ _this.close();
+ }
+ }
+ },
+ open: function() {
+ if ($target.is(_this.$anchor)) {
+ _this.open();
+ _this.$element.attr('tabindex', -1).focus();
+ e.preventDefault();
+ }
+ },
+ close: function() {
+ _this.close();
+ _this.$anchor.focus();
+ }
+ });
+ });
+ };
+ /**
+ * Adds an event handler to the body to close any dropdowns on a click.
+ * @function
+ * @private
+ */
+ Dropdown.prototype._addBodyHandler = function(){
+ var $body = $(document.body).not(this.$element),
+ _this = this;
+ $body.off('click.zf.dropdown')
+ .on('click.zf.dropdown', function(e){
+ if(_this.$anchor.is(e.target) || _this.$anchor.find(e.target).length) {
+ return;
+ }
+ if(_this.$element.find(e.target).length) {
+ return;
+ }
+ _this.close();
+ $body.off('click.zf.dropdown');
+ });
+ };
+ /**
+ * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.
+ * @function
+ * @fires Dropdown#closeme
+ * @fires Dropdown#show
+ */
+ Dropdown.prototype.open = function(){
+ // var _this = this;
+ /**
+ * Fires to close other open dropdowns
+ * @event Dropdown#closeme
+ */
+ this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));
+ this.$anchor.addClass('hover')
+ .attr({'aria-expanded': true});
+ // this.$element/*.show()*/;
+ this._setPosition();
+ this.$element.addClass('is-open')
+ .attr({'aria-hidden': false});
+
+ if(this.options.autoFocus){
+ var $focusable = Foundation.Keyboard.findFocusable(this.$element);
+ if($focusable.length){
+ $focusable.eq(0).focus();
+ }
+ }
+
+ if(this.options.closeOnClick){ this._addBodyHandler(); }
+
+ /**
+ * Fires once the dropdown is visible.
+ * @event Dropdown#show
+ */
+ this.$element.trigger('show.zf.dropdown', [this.$element]);
+ //why does this not work correctly for this plugin?
+ // Foundation.reflow(this.$element, 'dropdown');
+ // Foundation._reflow(this.$element.attr('data-dropdown'));
+ };
+
+ /**
+ * Closes the open dropdown pane.
+ * @function
+ * @fires Dropdown#hide
+ */
+ Dropdown.prototype.close = function(){
+ if(!this.$element.hasClass('is-open')){
+ return false;
+ }
+ this.$element.removeClass('is-open')
+ .attr({'aria-hidden': true});
+
+ this.$anchor.removeClass('hover')
+ .attr('aria-expanded', false);
+
+ if(this.classChanged){
+ var curPositionClass = this.getPositionClass();
+ if(curPositionClass){
+ this.$element.removeClass(curPositionClass);
+ }
+ this.$element.addClass(this.options.positionClass)
+ /*.hide()*/.css({height: '', width: ''});
+ this.classChanged = false;
+ this.counter = 4;
+ this.usedPositions.length = 0;
+ }
+ this.$element.trigger('hide.zf.dropdown', [this.$element]);
+ // Foundation.reflow(this.$element, 'dropdown');
+ };
+ /**
+ * Toggles the dropdown pane's visibility.
+ * @function
+ */
+ Dropdown.prototype.toggle = function(){
+ if(this.$element.hasClass('is-open')){
+ if(this.$anchor.data('hover')) return;
+ this.close();
+ }else{
+ this.open();
+ }
+ };
+ /**
+ * Destroys the dropdown.
+ * @function
+ */
+ Dropdown.prototype.destroy = function(){
+ this.$element.off('.zf.trigger').hide();
+ this.$anchor.off('.zf.dropdown');
+
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(Dropdown, 'Dropdown');
+}(jQuery, window.Foundation);
+
+/**
+ * DropdownMenu module.
+ * @module foundation.dropdown-menu
+ * @requires foundation.util.keyboard
+ * @requires foundation.util.box
+ * @requires foundation.util.nest
+ */
+!function($, Foundation){
+ 'use strict';
+
+ /**
+ * Creates a new instance of DropdownMenu.
+ * @class
+ * @fires DropdownMenu#init
+ * @param {jQuery} element - jQuery object to make into a dropdown menu.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function DropdownMenu(element, options){
+ this.$element = element;
+ this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);
+
+ Foundation.Nest.Feather(this.$element, 'dropdown');
+ this._init();
+
+ Foundation.registerPlugin(this, 'DropdownMenu');
+ Foundation.Keyboard.register('DropdownMenu', {
+ 'ENTER': 'open',
+ 'SPACE': 'open',
+ 'ARROW_RIGHT': 'next',
+ 'ARROW_UP': 'up',
+ 'ARROW_DOWN': 'down',
+ 'ARROW_LEFT': 'previous',
+ 'ESCAPE': 'close'
+ });
+ }
+
+ /**
+ * Default settings for plugin
+ */
+ DropdownMenu.defaults = {
+ /**
+ * Disallows hover events from opening submenus
+ * @option
+ * @example false
+ */
+ disableHover: false,
+ /**
+ * Allow a submenu to automatically close on a mouseleave event, if not clicked open.
+ * @option
+ * @example true
+ */
+ autoclose: true,
+ /**
+ * Amount of time to delay opening a submenu on hover event.
+ * @option
+ * @example 50
+ */
+ hoverDelay: 50,
+ /**
+ * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.
+ * @option
+ * @example true
+ */
+ clickOpen: false,
+ /**
+ * Amount of time to delay closing a submenu on a mouseleave event.
+ * @option
+ * @example 500
+ */
+
+ closingTime: 500,
+ /**
+ * Position of the menu relative to what direction the submenus should open. Handled by JS.
+ * @option
+ * @example 'left'
+ */
+ alignment: 'left',
+ /**
+ * Allow clicks on the body to close any open submenus.
+ * @option
+ * @example true
+ */
+ closeOnClick: true,
+ /**
+ * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.
+ * @option
+ * @example 'vertical'
+ */
+ verticalClass: 'vertical',
+ /**
+ * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.
+ * @option
+ * @example 'align-right'
+ */
+ rightClass: 'align-right',
+ /**
+ * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.
+ * @option
+ * @example false
+ */
+ forceFollow: true
+ };
+ /**
+ * Initializes the plugin, and calls _prepareMenu
+ * @private
+ * @function
+ */
+ DropdownMenu.prototype._init = function(){
+ var subs = this.$element.find('li.is-dropdown-submenu-parent');
+ this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');
+
+ this.$menuItems = this.$element.find('[role="menuitem"]');
+ this.$tabs = this.$element.children('[role="menuitem"]');
+ this.isVert = this.$element.hasClass(this.options.verticalClass);
+ this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);
+
+ if(this.$element.hasClass(this.options.rightClass) || this.options.alignment === 'right' || Foundation.rtl()){
+ this.options.alignment = 'right';
+ subs.addClass('is-left-arrow opens-left');
+ }else{
+ subs.addClass('is-right-arrow opens-right');
+ }
+ if(!this.isVert){
+ this.$tabs.filter('.is-dropdown-submenu-parent').removeClass('is-right-arrow is-left-arrow opens-right opens-left')
+ .addClass('is-down-arrow');
+ }
+ this.changed = false;
+ this._events();
+ };
+ /**
+ * Adds event listeners to elements within the menu
+ * @private
+ * @function
+ */
+ DropdownMenu.prototype._events = function(){
+ var _this = this,
+ hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),
+ parClass = 'is-dropdown-submenu-parent';
+
+ if(this.options.clickOpen || hasTouch){
+ this.$menuItems.on('click.zf.dropdownmenu touchstart.zf.dropdownmenu', function(e){
+ var $elem = $(e.target).parentsUntil('ul', '.' + parClass),
+ hasSub = $elem.hasClass(parClass),
+ hasClicked = $elem.attr('data-is-click') === 'true',
+ $sub = $elem.children('.is-dropdown-submenu');
+
+ if(hasSub){
+ if(hasClicked){
+ if(!_this.options.closeOnClick || (!_this.options.clickOpen && !hasTouch) || (_this.options.forceFollow && hasTouch)){ return; }
+ else{
+ e.stopImmediatePropagation();
+ e.preventDefault();
+ _this._hide($elem);
+ }
+ }else{
+ e.preventDefault();
+ e.stopImmediatePropagation();
+ _this._show($elem.children('.is-dropdown-submenu'));
+ $elem.add($elem.parentsUntil(_this.$element, '.' + parClass)).attr('data-is-click', true);
+ }
+ }else{ return; }
+ });
+ }
+
+ if(!this.options.disableHover){
+ this.$menuItems.on('mouseenter.zf.dropdownmenu', function(e){
+ e.stopImmediatePropagation();
+ var $elem = $(this),
+ hasSub = $elem.hasClass(parClass);
+
+ if(hasSub){
+ clearTimeout(_this.delay);
+ _this.delay = setTimeout(function(){
+ _this._show($elem.children('.is-dropdown-submenu'));
+ }, _this.options.hoverDelay);
+ }
+ }).on('mouseleave.zf.dropdownmenu', function(e){
+ var $elem = $(this),
+ hasSub = $elem.hasClass(parClass);
+ if(hasSub && _this.options.autoclose){
+ if($elem.attr('data-is-click') === 'true' && _this.options.clickOpen){ return false; }
+
+ clearTimeout(_this.delay);
+ _this.delay = setTimeout(function(){
+ _this._hide($elem);
+ }, _this.options.closingTime);
+ }
+ });
+ }
+ this.$menuItems.on('keydown.zf.dropdownmenu', function(e){
+ var $element = $(e.target).parentsUntil('ul', '[role="menuitem"]'),
+ isTab = _this.$tabs.index($element) > -1,
+ $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),
+ $prevElement,
+ $nextElement;
+
+ $elements.each(function(i) {
+ if ($(this).is($element)) {
+ $prevElement = $elements.eq(i-1);
+ $nextElement = $elements.eq(i+1);
+ return;
+ }
+ });
+
+ var nextSibling = function() {
+ if (!$element.is(':last-child')) $nextElement.children('a:first').focus();
+ }, prevSibling = function() {
+ $prevElement.children('a:first').focus();
+ }, openSub = function() {
+ var $sub = $element.children('ul.is-dropdown-submenu');
+ if($sub.length){
+ _this._show($sub);
+ $element.find('li > a:first').focus();
+ }else{ return; }
+ }, closeSub = function() {
+ //if ($element.is(':first-child')) {
+ var close = $element.parent('ul').parent('li');
+ close.children('a:first').focus();
+ _this._hide(close);
+ //}
+ };
+ var functions = {
+ open: openSub,
+ close: function() {
+ _this._hide(_this.$element);
+ _this.$menuItems.find('a:first').focus(); // focus to first element
+ },
+ handled: function() {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+ }
+ };
+
+ if (isTab) {
+ if (_this.vertical) { // vertical menu
+ if (_this.options.alignment === 'left') { // left aligned
+ $.extend(functions, {
+ down: nextSibling,
+ up: prevSibling,
+ next: openSub,
+ previous: closeSub
+ });
+ } else { // right aligned
+ $.extend(functions, {
+ down: nextSibling,
+ up: prevSibling,
+ next: closeSub,
+ previous: openSub
+ });
+ }
+ } else { // horizontal menu
+ $.extend(functions, {
+ next: nextSibling,
+ previous: prevSibling,
+ down: openSub,
+ up: closeSub
+ });
+ }
+ } else { // not tabs -> one sub
+ if (_this.options.alignment === 'left') { // left aligned
+ $.extend(functions, {
+ next: openSub,
+ previous: closeSub,
+ down: nextSibling,
+ up: prevSibling
+ });
+ } else { // right aligned
+ $.extend(functions, {
+ next: closeSub,
+ previous: openSub,
+ down: nextSibling,
+ up: prevSibling
+ });
+ }
+ }
+ Foundation.Keyboard.handleKey(e, 'DropdownMenu', functions);
+
+ });
+ };
+ /**
+ * Adds an event handler to the body to close any dropdowns on a click.
+ * @function
+ * @private
+ */
+ DropdownMenu.prototype._addBodyHandler = function(){
+ var $body = $(document.body),
+ _this = this;
+ $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu')
+ .on('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu', function(e){
+ var $link = _this.$element.find(e.target);
+ if($link.length){ return; }
+
+ _this._hide();
+ $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu');
+ });
+ };
+ /**
+ * Opens a dropdown pane, and checks for collisions first.
+ * @param {jQuery} $sub - ul element that is a submenu to show
+ * @function
+ * @private
+ * @fires DropdownMenu#show
+ */
+ DropdownMenu.prototype._show = function($sub){
+ var idx = this.$tabs.index(this.$tabs.filter(function(i, el){
+ return $(el).find($sub).length > 0;
+ }));
+ var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');
+ this._hide($sibs, idx);
+ $sub.css('visibility', 'hidden').addClass('js-dropdown-active').attr({'aria-hidden': false})
+ .parent('li.is-dropdown-submenu-parent').addClass('is-active')
+ .attr({'aria-expanded': true});
+ var clear = Foundation.Box.ImNotTouchingYou($sub, null, true);
+ if(!clear){
+ var oldClass = this.options.alignment === 'left' ? '-right' : '-left',
+ $parentLi = $sub.parent('.is-dropdown-submenu-parent');
+ $parentLi.removeClass('opens' + oldClass).addClass('opens-' + this.options.alignment);
+ clear = Foundation.Box.ImNotTouchingYou($sub, null, true);
+ if(!clear){
+ $parentLi.removeClass('opens-' + this.options.alignment).addClass('opens-inner');
+ }
+ this.changed = true;
+ }
+ $sub.css('visibility', '');
+ if(this.options.closeOnClick){ this._addBodyHandler(); }
+ /**
+ * Fires when the new dropdown pane is visible.
+ * @event DropdownMenu#show
+ */
+ this.$element.trigger('show.zf.dropdownmenu', [$sub]);
+ };
+ /**
+ * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.
+ * @function
+ * @param {jQuery} $elem - element with a submenu to hide
+ * @param {Number} idx - index of the $tabs collection to hide
+ * @private
+ */
+ DropdownMenu.prototype._hide = function($elem, idx){
+ var $toClose;
+ if($elem && $elem.length){
+ $toClose = $elem;
+ }else if(idx !== undefined){
+ $toClose = this.$tabs.not(function(i, el){
+ return i === idx;
+ });
+ }
+ else{
+ $toClose = this.$element;
+ }
+ var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;
+
+ if(somethingToClose){
+ $toClose.find('li.is-active').add($toClose).attr({
+ 'aria-expanded': false,
+ 'data-is-click': false
+ }).removeClass('is-active');
+
+ $toClose.find('ul.js-dropdown-active').attr({
+ 'aria-hidden': true
+ }).removeClass('js-dropdown-active');
+
+ if(this.changed || $toClose.find('opens-inner').length){
+ var oldClass = this.options.alignment === 'left' ? 'right' : 'left';
+ $toClose.find('li.is-dropdown-submenu-parent').add($toClose)
+ .removeClass('opens-inner opens-' + this.options.alignment)
+ .addClass('opens-' + oldClass);
+ this.changed = false;
+ }
+ /**
+ * Fires when the open menus are closed.
+ * @event DropdownMenu#hide
+ */
+ this.$element.trigger('hide.zf.dropdownmenu', [$toClose]);
+ }
+ };
+ /**
+ * Destroys the plugin.
+ * @function
+ */
+ DropdownMenu.prototype.destroy = function(){
+ this.$menuItems.off('.zf.dropdownmenu').removeAttr('data-is-click')
+ .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');
+ $(document.body).off('.zf.dropdownmenu');
+ Foundation.Nest.Burn(this.$element, 'dropdown');
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(DropdownMenu, 'DropdownMenu');
+}(jQuery, window.Foundation);
+
+!function(Foundation, $) {
+ 'use strict';
+
+ /**
+ * Creates a new instance of Equalizer.
+ * @class
+ * @fires Equalizer#init
+ * @param {Object} element - jQuery object to add the trigger to.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Equalizer(element, options){
+ this.$element = element;
+ this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options);
+
+ this._init();
+
+ Foundation.registerPlugin(this, 'Equalizer');
+ }
+
+ /**
+ * Default settings for plugin
+ */
+ Equalizer.defaults = {
+ /**
+ * Enable height equalization when stacked on smaller screens.
+ * @option
+ * @example true
+ */
+ equalizeOnStack: true,
+ /**
+ * Enable height equalization row by row.
+ * @option
+ * @example false
+ */
+ equalizeByRow: false,
+ /**
+ * String representing the minimum breakpoint size the plugin should equalize heights on.
+ * @option
+ * @example 'medium'
+ */
+ equalizeOn: ''
+ };
+
+ /**
+ * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.
+ * @private
+ */
+ Equalizer.prototype._init = function(){
+ var eqId = this.$element.attr('data-equalizer') || '';
+ var $watched = this.$element.find('[data-equalizer-watch="' + eqId + '"]');
+
+ this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');
+ this.$element.attr('data-resize', (eqId || Foundation.GetYoDigits(6, 'eq')));
+
+ this.hasNested = this.$element.find('[data-equalizer]').length > 0;
+ this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;
+ this.isOn = false;
+
+ var imgs = this.$element.find('img');
+ var tooSmall;
+ if(this.options.equalizeOn){
+ tooSmall = this._checkMQ();
+ $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));
+ }else{
+ this._events();
+ }
+ if((tooSmall !== undefined && tooSmall === false) || tooSmall === undefined){
+ if(imgs.length){
+ Foundation.onImagesLoaded(imgs, this._reflow.bind(this));
+ }else{
+ this._reflow();
+ }
+ }
+
+ };
+ /**
+ * Removes event listeners if the breakpoint is too small.
+ * @private
+ */
+ Equalizer.prototype._pauseEvents = function(){
+ this.isOn = false;
+ this.$element.off('.zf.equalizer resizeme.zf.trigger');
+ };
+ /**
+ * Initializes events for Equalizer.
+ * @private
+ */
+ Equalizer.prototype._events = function(){
+ var _this = this;
+ this._pauseEvents();
+ if(this.hasNested){
+ this.$element.on('postequalized.zf.equalizer', function(e){
+ if(e.target !== _this.$element[0]){ _this._reflow(); }
+ });
+ }else{
+ this.$element.on('resizeme.zf.trigger', this._reflow.bind(this));
+ }
+ this.isOn = true;
+ };
+ /**
+ * Checks the current breakpoint to the minimum required size.
+ * @private
+ */
+ Equalizer.prototype._checkMQ = function(){
+ var tooSmall = !Foundation.MediaQuery.atLeast(this.options.equalizeOn);
+ if(tooSmall){
+ if(this.isOn){
+ this._pauseEvents();
+ this.$watched.css('height', 'auto');
+ }
+ }else{
+ if(!this.isOn){
+ this._events();
+ }
+ }
+ return tooSmall;
+ };
+ /**
+ * A noop version for the plugin
+ * @private
+ */
+ Equalizer.prototype._killswitch = function(){
+ return;
+ };
+ /**
+ * Calls necessary functions to update Equalizer upon DOM change
+ * @private
+ */
+ Equalizer.prototype._reflow = function(){
+ if(!this.options.equalizeOnStack){
+ if(this._isStacked()){
+ this.$watched.css('height', 'auto');
+ return false;
+ }
+ }
+ if (this.options.equalizeByRow) {
+ this.getHeightsByRow(this.applyHeightByRow.bind(this));
+ }else{
+ this.getHeights(this.applyHeight.bind(this));
+ }
+ };
+ /**
+ * Manually determines if the first 2 elements are *NOT* stacked.
+ * @private
+ */
+ Equalizer.prototype._isStacked = function(){
+ return this.$watched[0].offsetTop !== this.$watched[1].offsetTop;
+ };
+ /**
+ * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
+ * @param {Function} cb - A non-optional callback to return the heights array to.
+ * @returns {Array} heights - An array of heights of children within Equalizer container
+ */
+ Equalizer.prototype.getHeights = function(cb){
+ var heights = [];
+ for(var i = 0, len = this.$watched.length; i < len; i++){
+ this.$watched[i].style.height = 'auto';
+ heights.push(this.$watched[i].offsetHeight);
+ }
+ cb(heights);
+ };
+ /**
+ * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
+ * @param {Function} cb - A non-optional callback to return the heights array to.
+ * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
+ */
+ Equalizer.prototype.getHeightsByRow = function(cb) {
+ var lastElTopOffset = this.$watched.first().offset().top,
+ groups = [],
+ group = 0;
+ //group by Row
+ groups[group] = [];
+ for(var i = 0, len = this.$watched.length; i < len; i++){
+ this.$watched[i].style.height = 'auto';
+ //maybe could use this.$watched[i].offsetTop
+ var elOffsetTop = $(this.$watched[i]).offset().top;
+ if (elOffsetTop!=lastElTopOffset) {
+ group++;
+ groups[group] = [];
+ lastElTopOffset=elOffsetTop;
+ }
+ groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);
+ }
+
+ for (var j = 0, ln = groups.length; j < ln; j++) {
+ var heights = $(groups[j]).map(function(){ return this[1]; }).get();
+ var max = Math.max.apply(null, heights);
+ groups[j].push(max);
+ }
+ cb(groups);
+ };
+ /**
+ * Changes the CSS height property of each child in an Equalizer parent to match the tallest
+ * @param {array} heights - An array of heights of children within Equalizer container
+ * @fires Equalizer#preequalized
+ * @fires Equalizer#postequalized
+ */
+ Equalizer.prototype.applyHeight = function(heights){
+ var max = Math.max.apply(null, heights);
+ /**
+ * Fires before the heights are applied
+ * @event Equalizer#preequalized
+ */
+ this.$element.trigger('preequalized.zf.equalizer');
+
+ this.$watched.css('height', max);
+
+ /**
+ * Fires when the heights have been applied
+ * @event Equalizer#postequalized
+ */
+ this.$element.trigger('postequalized.zf.equalizer');
+ };
+ /**
+ * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row
+ * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
+ * @fires Equalizer#preequalized
+ * @fires Equalizer#preequalizedRow
+ * @fires Equalizer#postequalizedRow
+ * @fires Equalizer#postequalized
+ */
+ Equalizer.prototype.applyHeightByRow = function(groups){
+ /**
+ * Fires before the heights are applied
+ */
+ this.$element.trigger('preequalized.zf.equalizer');
+ for (var i = 0, len = groups.length; i < len ; i++) {
+ var groupsILength = groups[i].length,
+ max = groups[i][groupsILength - 1];
+ if (groupsILength<=2) {
+ $(groups[i][0][0]).css({'height':'auto'});
+ continue;
+ }
+ /**
+ * Fires before the heights per row are applied
+ * @event Equalizer#preequalizedRow
+ */
+ this.$element.trigger('preequalizedrow.zf.equalizer');
+ for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) {
+ $(groups[i][j][0]).css({'height':max});
+ }
+ /**
+ * Fires when the heights per row have been applied
+ * @event Equalizer#postequalizedRow
+ */
+ this.$element.trigger('postequalizedrow.zf.equalizer');
+ }
+ /**
+ * Fires when the heights have been applied
+ */
+ this.$element.trigger('postequalized.zf.equalizer');
+ };
+ /**
+ * Destroys an instance of Equalizer.
+ * @function
+ */
+ Equalizer.prototype.destroy = function(){
+ this._pauseEvents();
+ this.$watched.css('height', 'auto');
+
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(Equalizer, 'Equalizer');
+
+ // Exports for AMD/Browserify
+ if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
+ module.exports = Equalizer;
+ if (typeof define === 'function')
+ define(['foundation'], function() {
+ return Equalizer;
+ });
+
+}(Foundation, jQuery);
+
+/**
+ * Interchange module.
+ * @module foundation.interchange
+ * @requires foundation.util.mediaQuery
+ * @requires foundation.util.timerAndImageLoader
+ */
+!function(Foundation, $) {
+ 'use strict';
+
+ /**
+ * Creates a new instance of Interchange.
+ * @class
+ * @fires Interchange#init
+ * @param {Object} element - jQuery object to add the trigger to.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Interchange(element, options) {
+ this.$element = element;
+ this.options = $.extend({}, Interchange.defaults, options);
+ this.rules = [];
+ this.currentPath = '';
+
+ this._init();
+ this._events();
+
+ Foundation.registerPlugin(this, 'Interchange');
+ }
+
+ /**
+ * Default settings for plugin
+ */
+ Interchange.defaults = {
+ /**
+ * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation.
+ * @option
+ */
+ rules: null
+ };
+
+ Interchange.SPECIAL_QUERIES = {
+ 'landscape': 'screen and (orientation: landscape)',
+ 'portrait': 'screen and (orientation: portrait)',
+ '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)'
+ };
+
+ /**
+ * Initializes the Interchange plugin and calls functions to get interchange functioning on load.
+ * @function
+ * @private
+ */
+ Interchange.prototype._init = function() {
+ this._addBreakpoints();
+ this._generateRules();
+ this._reflow();
+ };
+
+ /**
+ * Initializes events for Interchange.
+ * @function
+ * @private
+ */
+ Interchange.prototype._events = function() {
+ $(window).on('resize.zf.interchange', Foundation.util.throttle(this._reflow.bind(this), 50));
+ };
+
+ /**
+ * Calls necessary functions to update Interchange upon DOM change
+ * @function
+ * @private
+ */
+ Interchange.prototype._reflow = function() {
+ var match;
+
+ // Iterate through each rule, but only save the last match
+ for (var i in this.rules) {
+ var rule = this.rules[i];
+
+ if (window.matchMedia(rule.query).matches) {
+ match = rule;
+ }
+ }
+
+ if (match) {
+ this.replace(match.path);
+ }
+ };
+
+ /**
+ * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object.
+ * @function
+ * @private
+ */
+ Interchange.prototype._addBreakpoints = function() {
+ for (var i in Foundation.MediaQuery.queries) {
+ var query = Foundation.MediaQuery.queries[i];
+ Interchange.SPECIAL_QUERIES[query.name] = query.value;
+ }
+ };
+
+ /**
+ * Checks the Interchange element for the provided media query + content pairings
+ * @function
+ * @private
+ * @param {Object} element - jQuery object that is an Interchange instance
+ * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys
+ */
+ Interchange.prototype._generateRules = function() {
+ var rulesList = [];
+ var rules;
+
+ if (this.options.rules) {
+ rules = this.options.rules;
+ }
+ else {
+ rules = this.$element.data('interchange').match(/\[.*?\]/g);
+ }
+
+ for (var i in rules) {
+ var rule = rules[i].slice(1, -1).split(', ');
+ var path = rule.slice(0, -1).join('');
+ var query = rule[rule.length - 1];
+
+ if (Interchange.SPECIAL_QUERIES[query]) {
+ query = Interchange.SPECIAL_QUERIES[query];
+ }
+
+ rulesList.push({
+ path: path,
+ query: query
+ });
+ }
+
+ this.rules = rulesList;
+ };
+
+ /**
+ * Update the `src` property of an image, or change the HTML of a container, to the specified path.
+ * @function
+ * @param {String} path - Path to the image or HTML partial.
+ * @fires Interchange#replaced
+ */
+ Interchange.prototype.replace = function(path) {
+ if (this.currentPath === path) return;
+
+ var _this = this,
+ trigger = 'replaced.zf.interchange';
+
+ // Replacing images
+ if (this.$element[0].nodeName === 'IMG') {
+ this.$element.attr('src', path).load(function() {
+ _this.currentPath = path;
+ })
+ .trigger(trigger);
+ }
+ // Replacing background images
+ else if (path.match(/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i)) {
+ this.$element.css({ 'background-image': 'url('+path+')' })
+ .trigger(trigger);
+ }
+ // Replacing HTML
+ else {
+ $.get(path, function(response) {
+ _this.$element.html(response)
+ .trigger(trigger);
+ $(response).foundation();
+ _this.currentPath = path;
+ });
+ }
+
+ /**
+ * Fires when content in an Interchange element is done being loaded.
+ * @event Interchange#replaced
+ */
+ // this.$element.trigger('replaced.zf.interchange');
+ };
+ /**
+ * Destroys an instance of interchange.
+ * @function
+ */
+ Interchange.prototype.destroy = function(){
+ //TODO this.
+ };
+ Foundation.plugin(Interchange, 'Interchange');
+
+ // Exports for AMD/Browserify
+ if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
+ module.exports = Interchange;
+ if (typeof define === 'function')
+ define(['foundation'], function() {
+ return Interchange;
+ });
+
+}(Foundation, jQuery);
+
+/**
+ * Magellan module.
+ * @module foundation.magellan
+ */
+!function(Foundation, $) {
+ 'use strict';
+
+ /**
+ * Creates a new instance of Magellan.
+ * @class
+ * @fires Magellan#init
+ * @param {Object} element - jQuery object to add the trigger to.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Magellan(element, options) {
+ this.$element = element;
+ this.options = $.extend({}, Magellan.defaults, this.$element.data(), options);
+
+ this._init();
+
+ Foundation.registerPlugin(this, 'Magellan');
+ }
+
+ /**
+ * Default settings for plugin
+ */
+ Magellan.defaults = {
+ /**
+ * Amount of time, in ms, the animated scrolling should take between locations.
+ * @option
+ * @example 500
+ */
+ animationDuration: 500,
+ /**
+ * Animation style to use when scrolling between locations.
+ * @option
+ * @example 'ease-in-out'
+ */
+ animationEasing: 'linear',
+ /**
+ * Number of pixels to use as a marker for location changes.
+ * @option
+ * @example 50
+ */
+ threshold: 50,
+ /**
+ * Class applied to the active locations link on the magellan container.
+ * @option
+ * @example 'active'
+ */
+ activeClass: 'active',
+ /**
+ * Allows the script to manipulate the url of the current page, and if supported, alter the history.
+ * @option
+ * @example true
+ */
+ deepLinking: false,
+ /**
+ * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.
+ * @option
+ * @example 25
+ */
+ barOffset: 0
+ };
+
+ /**
+ * Initializes the Magellan plugin and calls functions to get equalizer functioning on load.
+ * @private
+ */
+ Magellan.prototype._init = function() {
+ var id = this.$element[0].id || Foundation.GetYoDigits(6, 'magellan'),
+ _this = this;
+ this.$targets = $('[data-magellan-target]');
+ this.$links = this.$element.find('a');
+ this.$element.attr({
+ 'data-resize': id,
+ 'data-scroll': id,
+ 'id': id
+ });
+ this.$active = $();
+ this.scrollPos = parseInt(window.pageYOffset, 10);
+
+ this._events();
+ };
+ /**
+ * Calculates an array of pixel values that are the demarcation lines between locations on the page.
+ * Can be invoked if new elements are added or the size of a location changes.
+ * @function
+ */
+ Magellan.prototype.calcPoints = function(){
+ var _this = this,
+ body = document.body,
+ html = document.documentElement;
+
+ this.points = [];
+ this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight));
+ this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight));
+
+ this.$targets.each(function(){
+ var $tar = $(this),
+ pt = Math.round($tar.offset().top - _this.options.threshold);
+ $tar.targetPoint = pt;
+ _this.points.push(pt);
+ });
+ };
+ /**
+ * Initializes events for Magellan.
+ * @private
+ */
+ Magellan.prototype._events = function() {
+ var _this = this,
+ $body = $('html, body'),
+ opts = {
+ duration: _this.options.animationDuration,
+ easing: _this.options.animationEasing
+ };
+ $(window).one('load', function(){
+ if(_this.options.deepLinking){
+ if(location.hash){
+ _this.scrollToLoc(location.hash);
+ }
+ }
+ _this.calcPoints();
+ _this._updateActive();
+ });
+
+ this.$element.on({
+ 'resizeme.zf.trigger': this.reflow.bind(this),
+ 'scrollme.zf.trigger': this._updateActive.bind(this)
+ }).on('click.zf.magellan', 'a[href^="#"]', function(e) {
+ e.preventDefault();
+ var arrival = this.getAttribute('href');
+ _this.scrollToLoc(arrival);
+ });
+ };
+ /**
+ * Function to scroll to a given location on the page.
+ * @param {String} loc - a properly formatted jQuery id selector.
+ * @example '#foo'
+ * @function
+ */
+ Magellan.prototype.scrollToLoc = function(loc){
+ var scrollPos = $(loc).offset().top - this.options.threshold / 2 - this.options.barOffset;
+
+ $(document.body).stop(true).animate({
+ scrollTop: scrollPos
+ },
+ {
+ duration: this.options.animationDuration,
+ easiing: this.options.animationEasing
+ });
+ };
+ /**
+ * Calls necessary functions to update Magellan upon DOM change
+ * @function
+ */
+ Magellan.prototype.reflow = function(){
+ this.calcPoints();
+ this._updateActive();
+ };
+ /**
+ * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled.
+ * @private
+ * @function
+ * @fires Magellan#update
+ */
+ Magellan.prototype._updateActive = function(/*evt, elem, scrollPos*/){
+ var winPos = /*scrollPos ||*/ parseInt(window.pageYOffset, 10),
+ curIdx;
+
+ if(winPos + this.winHeight === this.docHeight){ curIdx = this.points.length - 1; }
+ else if(winPos < this.points[0]){ curIdx = 0; }
+ else{
+ var isDown = this.scrollPos < winPos,
+ _this = this,
+ curVisible = this.points.filter(function(p, i){
+ return isDown ? p <= winPos : p - _this.options.threshold <= winPos;//&& winPos >= _this.points[i -1] - _this.options.threshold;
+ });
+ curIdx = curVisible.length ? curVisible.length - 1 : 0;
+ }
+
+ this.$active.removeClass(this.options.activeClass);
+ this.$active = this.$links.eq(curIdx).addClass(this.options.activeClass);
+
+ if(this.options.deepLinking){
+ var hash = this.$active[0].getAttribute('href');
+ if(window.history.pushState){
+ window.history.pushState(null, null, hash);
+ }else{
+ window.location.hash = hash;
+ }
+ }
+
+ this.scrollPos = winPos;
+ /**
+ * Fires when magellan is finished updating to the new active element.
+ * @event Magellan#update
+ */
+ this.$element.trigger('update.zf.magellan', [this.$active]);
+ };
+ /**
+ * Destroys an instance of Magellan and resets the url of the window.
+ * @function
+ */
+ Magellan.prototype.destroy = function(){
+ this.$element.off('.zf.trigger .zf.magellan')
+ .find('.' + this.options.activeClass).removeClass(this.options.activeClass);
+
+ if(this.options.deepLinking){
+ var hash = this.$active[0].getAttribute('href');
+ window.location.hash.replace(hash, '');
+ }
+
+ Foundation.unregisterPlugin(this);
+ };
+ Foundation.plugin(Magellan, 'Magellan');
+
+ // Exports for AMD/Browserify
+ if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
+ module.exports = Magellan;
+ if (typeof define === 'function')
+ define(['foundation'], function() {
+ return Magellan;
+ });
+
+}(Foundation, jQuery);
+
+/**
+ * OffCanvas module.
+ * @module foundation.offcanvas
+ * @requires foundation.util.mediaQuery
+ * @requires foundation.util.triggers
+ * @requires foundation.util.motion
+ */
+!function($, Foundation) {
+
+'use strict';
+
+/**
+ * Creates a new instance of an off-canvas wrapper.
+ * @class
+ * @fires OffCanvas#init
+ * @param {Object} element - jQuery object to initialize.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+function OffCanvas(element, options) {
+ this.$element = element;
+ this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options);
+ this.$lastTrigger = $();
+
+ this._init();
+ this._events();
+
+ Foundation.registerPlugin(this, 'OffCanvas');
+}
+
+OffCanvas.defaults = {
+ /**
+ * Allow the user to click outside of the menu to close it.
+ * @option
+ * @example true
+ */
+ closeOnClick: true,
+ /**
+ * Amount of time in ms the open and close transition requires. If none selected, pulls from body style.
+ * @option
+ * @example 500
+ */
+ transitionTime: 0,
+ /**
+ * Direction the offcanvas opens from. Determines class applied to body.
+ * @option
+ * @example left
+ */
+ position: 'left',
+ /**
+ * Force the page to scroll to top on open.
+ */
+ forceTop: true,
+ /**
+ * Allow the offcanvas to be sticky while open. Does nothing if Sass option `$maincontent-prevent-scroll === true`.
+ * Performance in Safari OSX/iOS is not great.
+ */
+ // isSticky: false,
+ /**
+ * Allow the offcanvas to remain open for certain breakpoints.
+ * @option
+ * @example false
+ */
+ isRevealed: false,
+ /**
+ * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class @`revealClass`.
+ * @option
+ * @example reveal-for-large
+ */
+ revealOn: null,
+ /**
+ * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.
+ * @option
+ * @example true
+ */
+ autoFocus: true,
+ /**
+ * Class used to force an offcanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.
+ * @option
+ * TODO improve the regex testing for this.
+ * @example reveal-for-large
+ */
+ revealClass: 'reveal-for-',
+ /**
+ * Triggers optional focus trapping when opening an offcanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.
+ * @option
+ * @example true
+ */
+ trapFocus: false
+};
+
+/**
+ * Initializes the off-canvas wrapper by adding the exit overlay (if needed).
+ * @function
+ * @private
+ */
+OffCanvas.prototype._init = function() {
+ var id = this.$element.attr('id');
+
+ this.$element.attr('aria-hidden', 'true');
+
+ // Find triggers that affect this element and add aria-expanded to them
+ $(document)
+ .find('[data-open="'+id+'"], [data-close="'+id+'"], [data-toggle="'+id+'"]')
+ .attr('aria-expanded', 'false')
+ .attr('aria-controls', id);
+
+ // Add a close trigger over the body if necessary
+ if (this.options.closeOnClick){
+ if($('.js-off-canvas-exit').length){
+ this.$exiter = $('.js-off-canvas-exit');
+ }else{
+ var exiter = document.createElement('div');
+ exiter.setAttribute('class', 'js-off-canvas-exit');
+ $('[data-off-canvas-content]').append(exiter);
+
+ this.$exiter = $(exiter);
+ }
+ }
+
+ this.options.isRevealed = this.options.isRevealed || new RegExp(this.options.revealClass, 'g').test(this.$element[0].className);
+
+ if(this.options.isRevealed){
+ this.options.revealOn = this.options.revealOn || this.$element[0].className.match(/(reveal-for-medium|reveal-for-large)/g)[0].split('-')[2];
+ this._setMQChecker();
+ }
+ if(!this.options.transitionTime){
+ this.options.transitionTime = parseFloat(window.getComputedStyle($('[data-off-canvas-wrapper]')[0]).transitionDuration) * 1000;
+ }
+};
+
+/**
+ * Adds event handlers to the off-canvas wrapper and the exit overlay.
+ * @function
+ * @private
+ */
+OffCanvas.prototype._events = function() {
+ this.$element.off('.zf.trigger .zf.offcanvas').on({
+ 'open.zf.trigger': this.open.bind(this),
+ 'close.zf.trigger': this.close.bind(this),
+ 'toggle.zf.trigger': this.toggle.bind(this),
+ 'keydown.zf.offcanvas': this._handleKeyboard.bind(this)
+ });
+
+ if (this.options.closeOnClick && this.$exiter.length) {
+ this.$exiter.on({'click.zf.offcanvas': this.close.bind(this)});
+ }
+};
+/**
+ * Applies event listener for elements that will reveal at certain breakpoints.
+ * @private
+ */
+OffCanvas.prototype._setMQChecker = function(){
+ var _this = this;
+
+ $(window).on('changed.zf.mediaquery', function(){
+ if(Foundation.MediaQuery.atLeast(_this.options.revealOn)){
+ _this.reveal(true);
+ }else{
+ _this.reveal(false);
+ }
+ }).one('load.zf.offcanvas', function(){
+ if(Foundation.MediaQuery.atLeast(_this.options.revealOn)){
+ _this.reveal(true);
+ }
+ });
+};
+/**
+ * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.
+ * @param {Boolean} isRevealed - true if element should be revealed.
+ * @function
+ */
+OffCanvas.prototype.reveal = function(isRevealed){
+ var $closer = this.$element.find('[data-close]');
+ if(isRevealed){
+ this.close();
+ this.isRevealed = true;
+ // if(!this.options.forceTop){
+ // var scrollPos = parseInt(window.pageYOffset);
+ // this.$element[0].style.transform = 'translate(0,' + scrollPos + 'px)';
+ // }
+ // if(this.options.isSticky){ this._stick(); }
+ this.$element.off('open.zf.trigger toggle.zf.trigger');
+ if($closer.length){ $closer.hide(); }
+ }else{
+ this.isRevealed = false;
+ // if(this.options.isSticky || !this.options.forceTop){
+ // this.$element[0].style.transform = '';
+ // $(window).off('scroll.zf.offcanvas');
+ // }
+ this.$element.on({
+ 'open.zf.trigger': this.open.bind(this),
+ 'toggle.zf.trigger': this.toggle.bind(this)
+ });
+ if($closer.length){
+ $closer.show();
+ }
+ }
+};
+
+/**
+ * Opens the off-canvas menu.
+ * @function
+ * @param {Object} event - Event object passed from listener.
+ * @param {jQuery} trigger - element that triggered the off-canvas to open.
+ * @fires OffCanvas#opened
+ */
+OffCanvas.prototype.open = function(event, trigger) {
+ if (this.$element.hasClass('is-open') || this.isRevealed){ return; }
+ var _this = this,
+ $body = $(document.body);
+ $('body').scrollTop(0);
+ // window.pageYOffset = 0;
+
+ // if(!this.options.forceTop){
+ // var scrollPos = parseInt(window.pageYOffset);
+ // this.$element[0].style.transform = 'translate(0,' + scrollPos + 'px)';
+ // if(this.$exiter.length){
+ // this.$exiter[0].style.transform = 'translate(0,' + scrollPos + 'px)';
+ // }
+ // }
+ /**
+ * Fires when the off-canvas menu opens.
+ * @event OffCanvas#opened
+ */
+ Foundation.Move(this.options.transitionTime, this.$element, function(){
+ $('[data-off-canvas-wrapper]').addClass('is-off-canvas-open is-open-'+ _this.options.position);
+
+ _this.$element
+ .addClass('is-open')
+
+ // if(_this.options.isSticky){
+ // _this._stick();
+ // }
+ });
+ this.$element.attr('aria-hidden', 'false')
+ .trigger('opened.zf.offcanvas');
+
+ if(this.options.closeOnClick){
+ this.$exiter.addClass('is-visible');
+ }
+ if(trigger){
+ this.$lastTrigger = trigger.attr('aria-expanded', 'true');
+ }
+ if(this.options.autoFocus){
+ this.$element.one('finished.zf.animate', function(){
+ _this.$element.find('a, button').eq(0).focus();
+ });
+ }
+ if(this.options.trapFocus){
+ $('[data-off-canvas-content]').attr('tabindex', '-1');
+ this._trapFocus();
+ }
+};
+/**
+ * Traps focus within the offcanvas on open.
+ * @private
+ */
+OffCanvas.prototype._trapFocus = function(){
+ var focusable = Foundation.Keyboard.findFocusable(this.$element),
+ first = focusable.eq(0),
+ last = focusable.eq(-1);
+
+ focusable.off('.zf.offcanvas').on('keydown.zf.offcanvas', function(e){
+ if(e.which === 9 || e.keycode === 9){
+ if(e.target === last[0] && !e.shiftKey){
+ e.preventDefault();
+ first.focus();
+ }
+ if(e.target === first[0] && e.shiftKey){
+ e.preventDefault();
+ last.focus();
+ }
+ }
+ });
+};
+/**
+ * Allows the offcanvas to appear sticky utilizing translate properties.
+ * @private
+ */
+// OffCanvas.prototype._stick = function(){
+// var elStyle = this.$element[0].style;
+//
+// if(this.options.closeOnClick){
+// var exitStyle = this.$exiter[0].style;
+// }
+//
+// $(window).on('scroll.zf.offcanvas', function(e){
+// console.log(e);
+// var pageY = window.pageYOffset;
+// elStyle.transform = 'translate(0,' + pageY + 'px)';
+// if(exitStyle !== undefined){ exitStyle.transform = 'translate(0,' + pageY + 'px)'; }
+// });
+// // this.$element.trigger('stuck.zf.offcanvas');
+// };
+/**
+ * Closes the off-canvas menu.
+ * @function
+ * @param {Function} cb - optional cb to fire after closure.
+ * @fires OffCanvas#closed
+ */
+OffCanvas.prototype.close = function(cb) {
+ if(!this.$element.hasClass('is-open') || this.isRevealed){ return; }
+
+ var _this = this;
+
+ // Foundation.Move(this.options.transitionTime, this.$element, function(){
+ $('[data-off-canvas-wrapper]').removeClass('is-off-canvas-open is-open-' + _this.options.position);
+ _this.$element.removeClass('is-open');
+ // Foundation._reflow();
+ // });
+ this.$element.attr('aria-hidden', 'true')
+ /**
+ * Fires when the off-canvas menu opens.
+ * @event OffCanvas#closed
+ */
+ .trigger('closed.zf.offcanvas');
+ // if(_this.options.isSticky || !_this.options.forceTop){
+ // setTimeout(function(){
+ // _this.$element[0].style.transform = '';
+ // $(window).off('scroll.zf.offcanvas');
+ // }, this.options.transitionTime);
+ // }
+ if(this.options.closeOnClick){
+ this.$exiter.removeClass('is-visible');
+ }
+
+ this.$lastTrigger.attr('aria-expanded', 'false');
+ if(this.options.trapFocus){
+ $('[data-off-canvas-content]').removeAttr('tabindex');
+ }
+
+};
+
+/**
+ * Toggles the off-canvas menu open or closed.
+ * @function
+ * @param {Object} event - Event object passed from listener.
+ * @param {jQuery} trigger - element that triggered the off-canvas to open.
+ */
+OffCanvas.prototype.toggle = function(event, trigger) {
+ if (this.$element.hasClass('is-open')) {
+ this.close(event, trigger);
+ }
+ else {
+ this.open(event, trigger);
+ }
+};
+
+/**
+ * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.
+ * @function
+ * @private
+ */
+OffCanvas.prototype._handleKeyboard = function(event) {
+ if (event.which !== 27) return;
+
+ event.stopPropagation();
+ event.preventDefault();
+ this.close();
+ this.$lastTrigger.focus();
+};
+/**
+ * Destroys the offcanvas plugin.
+ * @function
+ */
+OffCanvas.prototype.destroy = function(){
+ this.close();
+ this.$element.off('.zf.trigger .zf.offcanvas');
+ this.$exiter.off('.zf.offcanvas');
+
+ Foundation.unregisterPlugin(this);
+};
+
+Foundation.plugin(OffCanvas, 'OffCanvas');
+
+}(jQuery, Foundation);
+
+/**
+* Orbit module.
+* @module foundation.orbit
+* @requires foundation.util.keyboard
+* @requires foundation.util.motion
+* @requires foundation.util.timerAndImageLoader
+* @requires foundation.util.touch
+*/
+!function($, Foundation){
+ 'use strict';
+ /**
+ * Creates a new instance of an orbit carousel.
+ * @class
+ * @param {jQuery} element - jQuery object to make into an Orbit Carousel.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Orbit(element, options){
+ this.$element = element;
+ this.options = $.extend({}, Orbit.defaults, this.$element.data(), options);
+
+ this._init();
+
+ Foundation.registerPlugin(this, 'Orbit');
+ Foundation.Keyboard.register('Orbit', {
+ 'ltr': {
+ 'ARROW_RIGHT': 'next',
+ 'ARROW_LEFT': 'previous'
+ },
+ 'rtl': {
+ 'ARROW_LEFT': 'next',
+ 'ARROW_RIGHT': 'previous'
+ }
+ });
+ }
+ Orbit.defaults = {
+ /**
+ * Tells the JS to loadBullets.
+ * @option
+ * @example true
+ */
+ bullets: true,
+ /**
+ * Tells the JS to apply event listeners to nav buttons
+ * @option
+ * @example true
+ */
+ navButtons: true,
+ /**
+ * motion-ui animation class to apply
+ * @option
+ * @example 'slide-in-right'
+ */
+ animInFromRight: 'slide-in-right',
+ /**
+ * motion-ui animation class to apply
+ * @option
+ * @example 'slide-out-right'
+ */
+ animOutToRight: 'slide-out-right',
+ /**
+ * motion-ui animation class to apply
+ * @option
+ * @example 'slide-in-left'
+ *
+ */
+ animInFromLeft: 'slide-in-left',
+ /**
+ * motion-ui animation class to apply
+ * @option
+ * @example 'slide-out-left'
+ */
+ animOutToLeft: 'slide-out-left',
+ /**
+ * Allows Orbit to automatically animate on page load.
+ * @option
+ * @example true
+ */
+ autoPlay: true,
+ /**
+ * Amount of time, in ms, between slide transitions
+ * @option
+ * @example 5000
+ */
+ timerDelay: 5000,
+ /**
+ * Allows Orbit to infinitely loop through the slides
+ * @option
+ * @example true
+ */
+ infiniteWrap: true,
+ /**
+ * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library
+ * @option
+ * @example true
+ */
+ swipe: true,
+ /**
+ * Allows the timing function to pause animation on hover.
+ * @option
+ * @example true
+ */
+ pauseOnHover: true,
+ /**
+ * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys
+ * @option
+ * @example true
+ */
+ accessible: true,
+ /**
+ * Class applied to the container of Orbit
+ * @option
+ * @example 'orbit-container'
+ */
+ containerClass: 'orbit-container',
+ /**
+ * Class applied to individual slides.
+ * @option
+ * @example 'orbit-slide'
+ */
+ slideClass: 'orbit-slide',
+ /**
+ * Class applied to the bullet container. You're welcome.
+ * @option
+ * @example 'orbit-bullets'
+ */
+ boxOfBullets: 'orbit-bullets',
+ /**
+ * Class applied to the `next` navigation button.
+ * @option
+ * @example 'orbit-next'
+ */
+ nextClass: 'orbit-next',
+ /**
+ * Class applied to the `previous` navigation button.
+ * @option
+ * @example 'orbit-previous'
+ */
+ prevClass: 'orbit-previous',
+ /**
+ * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatability.
+ * @option
+ * @example true
+ */
+ useMUI: true
+ };
+ /**
+ * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.
+ * @function
+ * @private
+ */
+ Orbit.prototype._init = function(){
+ this.$wrapper = this.$element.find('.' + this.options.containerClass);
+ this.$slides = this.$element.find('.' + this.options.slideClass);
+ var $images = this.$element.find('img'),
+ initActive = this.$slides.filter('.is-active');
+
+ if(!initActive.length){
+ this.$slides.eq(0).addClass('is-active');
+ }
+ if(!this.options.useMUI){
+ this.$slides.addClass('no-motionui');
+ }
+ if($images.length){
+ Foundation.onImagesLoaded($images, this._prepareForOrbit.bind(this));
+ }else{
+ this._prepareForOrbit();//hehe
+ }
+
+ if(this.options.bullets){
+ this._loadBullets();
+ }
+
+ this._events();
+
+ if(this.options.autoPlay && this.$slides.length > 1){
+ this.geoSync();
+ }
+ if(this.options.accessible){ // allow wrapper to be focusable to enable arrow navigation
+ this.$wrapper.attr('tabindex', 0);
+ }
+ };
+ /**
+ * Creates a jQuery collection of bullets, if they are being used.
+ * @function
+ * @private
+ */
+ Orbit.prototype._loadBullets = function(){
+ this.$bullets = this.$element.find('.' + this.options.boxOfBullets).find('button');
+ };
+ /**
+ * Sets a `timer` object on the orbit, and starts the counter for the next slide.
+ * @function
+ */
+ Orbit.prototype.geoSync = function(){
+ var _this = this;
+ this.timer = new Foundation.Timer(
+ this.$element,
+ {duration: this.options.timerDelay,
+ infinite: false},
+ function(){
+ _this.changeSlide(true);
+ });
+ this.timer.start();
+ };
+ /**
+ * Sets wrapper and slide heights for the orbit.
+ * @function
+ * @private
+ */
+ Orbit.prototype._prepareForOrbit = function(){
+ var _this = this;
+ this._setWrapperHeight(function(max){
+ _this._setSlideHeight(max);
+ });
+ };
+ /**
+ * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.
+ * @function
+ * @private
+ * @param {Function} cb - a callback function to fire when complete.
+ */
+ Orbit.prototype._setWrapperHeight = function(cb){//rewrite this to `for` loop
+ var max = 0, temp, counter = 0;
+
+ this.$slides.each(function(){
+ temp = this.getBoundingClientRect().height;
+ $(this).attr('data-slide', counter);
+
+ if(counter){//if not the first slide, set css position and display property
+ $(this).css({'position': 'relative', 'display': 'none'});
+ }
+ max = temp > max ? temp : max;
+ counter++;
+ });
+
+ if(counter === this.$slides.length){
+ this.$wrapper.css({'height': max});//only change the wrapper height property once.
+ cb(max);//fire callback with max height dimension.
+ }
+ };
+ /**
+ * Sets the max-height of each slide.
+ * @function
+ * @private
+ */
+ Orbit.prototype._setSlideHeight = function(height){
+ this.$slides.each(function(){
+ $(this).css('max-height', height);
+ });
+ };
+ /**
+ * Adds event listeners to basically everything within the element.
+ * @function
+ * @private
+ */
+ Orbit.prototype._events = function(){
+ var _this = this;
+
+ //***************************************
+ //**Now using custom event - thanks to:**
+ //** Yohai Ararat of Toronto **
+ //***************************************
+ if(this.$slides.length > 1){
+
+ if(this.options.swipe){
+ this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit')
+ .on('swipeleft.zf.orbit', function(e){
+ e.preventDefault();
+ _this.changeSlide(true);
+ }).on('swiperight.zf.orbit', function(e){
+ e.preventDefault();
+ _this.changeSlide(false);
+ });
+ }
+ //***************************************
+
+ if(this.options.autoPlay){
+ this.$slides.on('click.zf.orbit', function(){
+ _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);
+ _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();
+ });
+ if(this.options.pauseOnHover){
+ this.$element.on('mouseenter.zf.orbit', function(){
+ _this.timer.pause();
+ }).on('mouseleave.zf.orbit', function(){
+ if(!_this.$element.data('clickedOn')){
+ _this.timer.start();
+ }
+ });
+ }
+ }
+
+ if(this.options.navButtons){
+ var $controls = this.$element.find('.' + this.options.nextClass + ', .' + this.options.prevClass);
+ $controls.attr('tabindex', 0)
+ //also need to handle enter/return and spacebar key presses
+ .on('click.zf.orbit touchend.zf.orbit', function(){
+ _this.changeSlide($(this).hasClass(_this.options.nextClass));
+ });
+ }
+
+ if(this.options.bullets){
+ this.$bullets.on('click.zf.orbit touchend.zf.orbit', function(){
+ if(/is-active/g.test(this.className)){ return false; }//if this is active, kick out of function.
+ var idx = $(this).data('slide'),
+ ltr = idx > _this.$slides.filter('.is-active').data('slide'),
+ $slide = _this.$slides.eq(idx);
+
+ _this.changeSlide(ltr, $slide, idx);
+ });
+ }
+
+ this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e){
+ // handle keyboard event with keyboard util
+ Foundation.Keyboard.handleKey(e, 'Orbit', {
+ next: function() {
+ _this.changeSlide(true);
+ },
+ previous: function() {
+ _this.changeSlide(false);
+ },
+ handled: function() { // if bullet is focused, make sure focus moves
+ if ($(e.target).is(_this.$bullets)) {
+ _this.$bullets.filter('.is-active').focus();
+ }
+ }
+ });
+ });
+ }
+ };
+ /**
+ * Changes the current slide to a new one.
+ * @function
+ * @param {Boolean} isLTR - flag if the slide should move left to right.
+ * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.
+ * @param {Number} idx - the index of the new slide in its collection, if one chosen.
+ * @fires Orbit#slidechange
+ */
+ Orbit.prototype.changeSlide = function(isLTR, chosenSlide, idx){
+ var $curSlide = this.$slides.filter('.is-active').eq(0);
+
+ if(/mui/g.test($curSlide[0].className)){ return false; }//if the slide is currently animating, kick out of the function
+
+ var $firstSlide = this.$slides.first(),
+ $lastSlide = this.$slides.last(),
+ dirIn = isLTR ? 'Right' : 'Left',
+ dirOut = isLTR ? 'Left' : 'Right',
+ _this = this,
+ $newSlide;
+
+ if(!chosenSlide){//most of the time, this will be auto played or clicked from the navButtons.
+ $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!
+ (this.options.infiniteWrap ? $curSlide.next('.' + this.options.slideClass).length ? $curSlide.next('.' + this.options.slideClass) : $firstSlide : $curSlide.next('.' + this.options.slideClass))//pick next slide if moving left to right
+ :
+ (this.options.infiniteWrap ? $curSlide.prev('.' + this.options.slideClass).length ? $curSlide.prev('.' + this.options.slideClass) : $lastSlide : $curSlide.prev('.' + this.options.slideClass));//pick prev slide if moving right to left
+ }else{
+ $newSlide = chosenSlide;
+ }
+ if($newSlide.length){
+ if(this.options.bullets){
+ idx = idx || this.$slides.index($newSlide);//grab index to update bullets
+ this._updateBullets(idx);
+ }
+ if(this.options.useMUI){
+
+ Foundation.Motion.animateIn(
+ $newSlide.addClass('is-active').css({'position': 'absolute', 'top': 0}),
+ this.options['animInFrom' + dirIn],
+ function(){
+ $newSlide.css({'position': 'relative', 'display': 'block'})
+ .attr('aria-live', 'polite');
+ });
+
+ Foundation.Motion.animateOut(
+ $curSlide.removeClass('is-active'),
+ this.options['animOutTo' + dirOut],
+ function(){
+ $curSlide.removeAttr('aria-live');
+ if(_this.options.autoPlay && !_this.timer.isPaused){
+ _this.timer.restart();
+ }
+ //do stuff?
+ });
+ }else{
+ $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();
+ $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();
+ if(this.options.autoPlay && !this.timer.isPaused){
+ this.timer.restart();
+ }
+ }
+ /**
+ * Triggers when the slide has finished animating in.
+ * @event Orbit#slidechange
+ */
+ this.$element.trigger('slidechange.zf.orbit', [$newSlide]);
+ }
+ };
+ /**
+ * Updates the active state of the bullets, if displayed.
+ * @function
+ * @private
+ * @param {Number} idx - the index of the current slide.
+ */
+ Orbit.prototype._updateBullets = function(idx){
+ var $oldBullet = this.$element.find('.' + this.options.boxOfBullets)
+ .find('.is-active').removeClass('is-active').blur(),
+ span = $oldBullet.find('span:last').detach(),
+ $newBullet = this.$bullets.eq(idx).addClass('is-active').append(span);
+ };
+ /**
+ * Destroys the carousel and hides the element.
+ * @function
+ */
+ Orbit.prototype.destroy = function(){
+ this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(Orbit, 'Orbit');
+
+ }(jQuery, window.Foundation);
+
+/**
+ * ResponsiveMenu module.
+ * @module foundation.responsiveMenu
+ * @requires foundation.util.triggers
+ * @requires foundation.util.mediaQuery
+ * @requires foundation.util.accordionMenu
+ * @requires foundation.util.drilldown
+ * @requires foundation.util.dropdown-menu
+ */
+!function(Foundation, $) {
+ 'use strict';
+
+ // The plugin matches the plugin classes with these plugin instances.
+ var MenuPlugins = {
+ dropdown: {
+ cssClass: 'dropdown',
+ plugin: Foundation._plugins['dropdown-menu'] || null
+ },
+ drilldown: {
+ cssClass: 'drilldown',
+ plugin: Foundation._plugins['drilldown'] || null
+ },
+ accordion: {
+ cssClass: 'accordion-menu',
+ plugin: Foundation._plugins['accordion-menu'] || null
+ }
+ };
+
+ /**
+ * Creates a new instance of a responsive menu.
+ * @class
+ * @fires ResponsiveMenu#init
+ * @param {jQuery} element - jQuery object to make into a dropdown menu.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function ResponsiveMenu(element) {
+ this.$element = $(element);
+ this.rules = this.$element.data('responsive-menu');
+ this.currentMq = null;
+ this.currentPlugin = null;
+
+ this._init();
+ this._events();
+
+ Foundation.registerPlugin(this, 'ResponsiveMenu');
+ }
+
+ ResponsiveMenu.defaults = {};
+
+ /**
+ * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.
+ * @function
+ * @private
+ */
+ ResponsiveMenu.prototype._init = function() {
+ var rulesTree = {};
+
+ // Parse rules from "classes" in data attribute
+ var rules = this.rules.split(' ');
+
+ // Iterate through every rule found
+ for (var i = 0; i < rules.length; i++) {
+ var rule = rules[i].split('-');
+ var ruleSize = rule.length > 1 ? rule[0] : 'small';
+ var rulePlugin = rule.length > 1 ? rule[1] : rule[0];
+
+ if (MenuPlugins[rulePlugin] !== null) {
+ rulesTree[ruleSize] = MenuPlugins[rulePlugin];
+ }
+ }
+
+ this.rules = rulesTree;
+
+ if (!$.isEmptyObject(rulesTree)) {
+ this._checkMediaQueries();
+ }
+ };
+
+ /**
+ * Initializes events for the Menu.
+ * @function
+ * @private
+ */
+ ResponsiveMenu.prototype._events = function() {
+ var _this = this;
+
+ $(window).on('changed.zf.mediaquery', function() {
+ _this._checkMediaQueries();
+ });
+ // $(window).on('resize.zf.ResponsiveMenu', function() {
+ // _this._checkMediaQueries();
+ // });
+ };
+
+ /**
+ * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.
+ * @function
+ * @private
+ */
+ ResponsiveMenu.prototype._checkMediaQueries = function() {
+ var matchedMq, _this = this;
+ // Iterate through each rule and find the last matching rule
+ $.each(this.rules, function(key) {
+ if (Foundation.MediaQuery.atLeast(key)) {
+ matchedMq = key;
+ }
+ });
+
+ // No match? No dice
+ if (!matchedMq) return;
+
+ // Plugin already initialized? We good
+ if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;
+
+ // Remove existing plugin-specific CSS classes
+ $.each(MenuPlugins, function(key, value) {
+ _this.$element.removeClass(value.cssClass);
+ });
+
+ // Add the CSS class for the new plugin
+ this.$element.addClass(this.rules[matchedMq].cssClass);
+
+ // Create an instance of the new plugin
+ if (this.currentPlugin) this.currentPlugin.destroy();
+ this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});
+ };
+
+ /**
+ * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.
+ * @function
+ */
+ ResponsiveMenu.prototype.destroy = function() {
+ this.currentPlugin.destroy();
+ $(window).off('.zf.ResponsiveMenu');
+ Foundation.unregisterPlugin(this);
+ };
+ Foundation.plugin(ResponsiveMenu, 'ResponsiveMenu');
+
+}(Foundation, jQuery);
+
+/**
+ * ResponsiveToggle module.
+ * @module foundation.responsiveToggle
+ * @requires foundation.util.mediaQuery
+ */
+!function($, Foundation) {
+
+'use strict';
+
+/**
+ * Creates a new instance of Tab Bar.
+ * @class
+ * @fires ResponsiveToggle#init
+ * @param {jQuery} element - jQuery object to attach tab bar functionality to.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+function ResponsiveToggle(element, options) {
+ this.$element = $(element);
+ this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);
+
+ this._init();
+ this._events();
+
+ Foundation.registerPlugin(this, 'ResponsiveToggle');
+}
+
+ResponsiveToggle.defaults = {
+ /**
+ * The breakpoint after which the menu is always shown, and the tab bar is hidden.
+ * @option
+ * @example 'medium'
+ */
+ hideFor: 'medium'
+};
+
+/**
+ * Initializes the tab bar by finding the target element, toggling element, and running update().
+ * @function
+ * @private
+ */
+ResponsiveToggle.prototype._init = function() {
+ var targetID = this.$element.data('responsive-toggle');
+ if (!targetID) {
+ console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');
+ }
+
+ this.$targetMenu = $('#'+targetID);
+ this.$toggler = this.$element.find('[data-toggle]');
+
+ this._update();
+};
+
+/**
+ * Adds necessary event handlers for the tab bar to work.
+ * @function
+ * @private
+ */
+ResponsiveToggle.prototype._events = function() {
+ var _this = this;
+
+ $(window).on('changed.zf.mediaquery', this._update.bind(this));
+
+ this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));
+};
+
+/**
+ * Checks the current media query to determine if the tab bar should be visible or hidden.
+ * @function
+ * @private
+ */
+ResponsiveToggle.prototype._update = function() {
+ // Mobile
+ if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) {
+ this.$element.show();
+ this.$targetMenu.hide();
+ }
+
+ // Desktop
+ else {
+ this.$element.hide();
+ this.$targetMenu.show();
+ }
+};
+
+/**
+ * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.
+ * @function
+ * @fires ResponsiveToggle#toggled
+ */
+ResponsiveToggle.prototype.toggleMenu = function() {
+ if (!Foundation.MediaQuery.atLeast(this.options.hideFor)) {
+ this.$targetMenu.toggle(0);
+
+ /**
+ * Fires when the element attached to the tab bar toggles.
+ * @event ResponsiveToggle#toggled
+ */
+ this.$element.trigger('toggled.zf.responsiveToggle');
+ }
+};
+ResponsiveToggle.prototype.destroy = function(){
+ //TODO this...
+};
+Foundation.plugin(ResponsiveToggle, 'ResponsiveToggle');
+
+}(jQuery, Foundation);
+
+/**
+ * Reveal module.
+ * @module foundation.reveal
+ * @requires foundation.util.keyboard
+ * @requires foundation.util.box
+ * @requires foundation.util.triggers
+ * @requires foundation.util.mediaQuery
+ * @requires foundation.util.motion if using animations
+ */
+!function(Foundation, $) {
+ 'use strict';
+
+ /**
+ * Creates a new instance of Reveal.
+ * @class
+ * @param {jQuery} element - jQuery object to use for the modal.
+ * @param {Object} options - optional parameters.
+ */
+
+ function Reveal(element, options) {
+ this.$element = element;
+ this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);
+ this._init();
+
+ Foundation.registerPlugin(this, 'Reveal');
+ Foundation.Keyboard.register('Reveal', {
+ 'ENTER': 'open',
+ 'SPACE': 'open',
+ 'ESCAPE': 'close',
+ 'TAB': 'tab_forward',
+ 'SHIFT_TAB': 'tab_backward'
+ });
+ }
+
+ Reveal.defaults = {
+ /**
+ * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
+ * @option
+ * @example 'slide-in-left'
+ */
+ animationIn: '',
+ /**
+ * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
+ * @option
+ * @example 'slide-out-right'
+ */
+ animationOut: '',
+ /**
+ * Time, in ms, to delay the opening of a modal after a click if no animation used.
+ * @option
+ * @example 10
+ */
+ showDelay: 0,
+ /**
+ * Time, in ms, to delay the closing of a modal after a click if no animation used.
+ * @option
+ * @example 10
+ */
+ hideDelay: 0,
+ /**
+ * Allows a click on the body/overlay to close the modal.
+ * @option
+ * @example true
+ */
+ closeOnClick: true,
+ /**
+ * Allows the modal to close if the user presses the `ESCAPE` key.
+ * @option
+ * @example true
+ */
+ closeOnEsc: true,
+ /**
+ * If true, allows multiple modals to be displayed at once.
+ * @option
+ * @example false
+ */
+ multipleOpened: false,
+ /**
+ * Distance, in pixels, the modal should push down from the top of the screen.
+ * @option
+ * @example 100
+ */
+ vOffset: 100,
+ /**
+ * Distance, in pixels, the modal should push in from the side of the screen.
+ * @option
+ * @example 0
+ */
+ hOffset: 0,
+ /**
+ * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.
+ * @option
+ * @example false
+ */
+ fullScreen: false,
+ /**
+ * Percentage of screen height the modal should push up from the bottom of the view.
+ * @option
+ * @example 10
+ */
+ btmOffsetPct: 10,
+ /**
+ * Allows the modal to generate an overlay div, which will cover the view when modal opens.
+ * @option
+ * @example true
+ */
+ overlay: true,
+ /**
+ * 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.
+ * @option
+ * @example false
+ */
+ resetOnClose: false,
+ /**
+ * 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.
+ * @option
+ * @example false
+ */
+ deepLink: false
+ };
+
+ /**
+ * Initializes the modal by adding the overlay and close buttons, (if selected).
+ * @private
+ */
+ Reveal.prototype._init = function(){
+ this.id = this.$element.attr('id');
+ this.isActive = false;
+
+ this.$anchor = $('[data-open="' + this.id + '"]').length ? $('[data-open="' + this.id + '"]') : $('[data-toggle="' + this.id + '"]');
+
+ if(this.$anchor.length){
+ var anchorId = this.$anchor[0].id || Foundation.GetYoDigits(6, 'reveal');
+
+ this.$anchor.attr({
+ 'aria-controls': this.id,
+ 'id': anchorId,
+ 'aria-haspopup': true,
+ 'tabindex': 0
+ });
+ this.$element.attr({'aria-labelledby': anchorId});
+ }
+
+ // this.options.fullScreen = this.$element.hasClass('full');
+ if(this.options.fullScreen || this.$element.hasClass('full')){
+ this.options.fullScreen = true;
+ this.options.overlay = false;
+ }
+ if(this.options.overlay && !this.$overlay){
+ this.$overlay = this._makeOverlay(this.id);
+ }
+
+ this.$element.attr({
+ 'role': 'dialog',
+ 'aria-hidden': true,
+ 'data-yeti-box': this.id,
+ 'data-resize': this.id
+ });
+
+ this._events();
+ if(this.options.deepLink && window.location.hash === ( '#' + this.id)){
+ $(window).one('load.zf.reveal', this.open.bind(this));
+ }
+ };
+
+ /**
+ * Creates an overlay div to display behind the modal.
+ * @private
+ */
+ Reveal.prototype._makeOverlay = function(id){
+ var $overlay = $('<div></div>')
+ .addClass('reveal-overlay')
+ .attr({'tabindex': -1, 'aria-hidden': true})
+ .appendTo('body');
+ if(this.options.closeOnClick){
+ $overlay.attr({
+ 'data-close': id
+ });
+ }
+ return $overlay;
+ };
+
+ /**
+ * Adds event handlers for the modal.
+ * @private
+ */
+ Reveal.prototype._events = function(){
+ var _this = this;
+
+ this.$element.on({
+ 'open.zf.trigger': this.open.bind(this),
+ 'close.zf.trigger': this.close.bind(this),
+ 'toggle.zf.trigger': this.toggle.bind(this),
+ 'resizeme.zf.trigger': function(){
+ if(_this.$element.is(':visible')){
+ _this._setPosition(function(){});
+ }
+ }
+ });
+
+ if(this.$anchor.length){
+ this.$anchor.on('keydown.zf.reveal', function(e){
+ if(e.which === 13 || e.which === 32){
+ e.stopPropagation();
+ e.preventDefault();
+ _this.open();
+ }
+ });
+ }
+
+
+ if(this.options.closeOnClick && this.options.overlay){
+ this.$overlay.off('.zf.reveal').on('click.zf.reveal', this.close.bind(this));
+ }
+ if(this.options.deepLink){
+ $(window).on('popstate.zf.reveal:' + this.id, this._handleState.bind(this));
+ }
+ };
+ /**
+ * Handles modal methods on back/forward button clicks or any other event that triggers popstate.
+ * @private
+ */
+ Reveal.prototype._handleState = function(e){
+ if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }
+ else{ this.close(); }
+ };
+ /**
+ * Sets the position of the modal before opening
+ * @param {Function} cb - a callback function to execute when positioning is complete.
+ * @private
+ */
+ Reveal.prototype._setPosition = function(cb){
+ var eleDims = Foundation.Box.GetDimensions(this.$element);
+ var elePos = this.options.fullScreen ? 'reveal full' : (eleDims.height >= (0.5 * eleDims.windowDims.height)) ? 'reveal' : 'center';
+
+ if(elePos === 'reveal full'){
+ //set to full height/width
+ this.$element
+ .offset(Foundation.Box.GetOffsets(this.$element, null, elePos, this.options.vOffset))
+ .css({
+ 'height': eleDims.windowDims.height,
+ 'width': eleDims.windowDims.width
+ });
+ }else if(!Foundation.MediaQuery.atLeast('medium') || !Foundation.Box.ImNotTouchingYou(this.$element, null, true, false)){
+ //if smaller than medium, resize to 100% width minus any custom L/R margin
+ this.$element
+ .css({
+ 'width': eleDims.windowDims.width - (this.options.hOffset * 2)
+ })
+ .offset(Foundation.Box.GetOffsets(this.$element, null, 'center', this.options.vOffset, this.options.hOffset));
+ //flag a boolean so we can reset the size after the element is closed.
+ this.changedSize = true;
+ }else{
+ this.$element
+ .css({
+ 'max-height': eleDims.windowDims.height - (this.options.vOffset * (this.options.btmOffsetPct / 100 + 1)),
+ 'width': ''
+ })
+ .offset(Foundation.Box.GetOffsets(this.$element, null, elePos, this.options.vOffset));
+ //the max height based on a percentage of vertical offset plus vertical offset
+ }
+
+ cb();
+ };
+
+ /**
+ * Opens the modal controlled by `this.$anchor`, and closes all others by default.
+ * @function
+ * @fires Reveal#closeme
+ * @fires Reveal#open
+ */
+ Reveal.prototype.open = function(){
+ if(this.options.deepLink){
+ var hash = '#' + this.id;
+
+ if(window.history.pushState){
+ window.history.pushState(null, null, hash);
+ }else{
+ window.location.hash = hash;
+ }
+ }
+
+ var _this = this;
+ this.isActive = true;
+ //make element invisible, but remove display: none so we can get size and positioning
+ this.$element
+ .css({'visibility': 'hidden'})
+ .show()
+ .scrollTop(0);
+
+ this._setPosition(function(){
+ _this.$element.hide()
+ .css({'visibility': ''});
+ if(!_this.options.multipleOpened){
+ /**
+ * Fires immediately before the modal opens.
+ * Closes any other modals that are currently open
+ * @event Reveal#closeme
+ */
+ _this.$element.trigger('closeme.zf.reveal', _this.id);
+ }
+ if(_this.options.animationIn){
+ if(_this.options.overlay){
+ Foundation.Motion.animateIn(_this.$overlay, 'fade-in', function(){
+ Foundation.Motion.animateIn(_this.$element, _this.options.animationIn, function(){
+ _this.focusableElements = Foundation.Keyboard.findFocusable(_this.$element);
+ });
+ });
+ }else{
+ Foundation.Motion.animateIn(_this.$element, _this.options.animationIn, function(){
+ _this.focusableElements = Foundation.Keyboard.findFocusable(_this.$element);
+ });
+ }
+ }else{
+ if(_this.options.overlay){
+ _this.$overlay.show(0, function(){
+ _this.$element.show(_this.options.showDelay, function(){
+ });
+ });
+ }else{
+ _this.$element.show(_this.options.showDelay, function(){
+ });
+ }
+ }
+ });
+
+
+ // handle accessibility
+ this.$element.attr({'aria-hidden': false}).attr('tabindex', -1).focus()
+ /**
+ * Fires when the modal has successfully opened.
+ * @event Reveal#open
+ */
+ .trigger('open.zf.reveal');
+
+ $('body').addClass('is-reveal-open')
+ .attr({'aria-hidden': (this.options.overlay || this.options.fullScreen) ? true : false});
+ setTimeout(function(){
+ _this._extraHandlers();
+ }, 0);
+ };
+
+ /**
+ * Adds extra event handlers for the body and window if necessary.
+ * @private
+ */
+ Reveal.prototype._extraHandlers = function(){
+ var _this = this;
+ this.focusableElements = Foundation.Keyboard.findFocusable(this.$element);
+
+ if(!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen){
+ $('body').on('click.zf.reveal', function(e){
+ if(e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)){ return; }
+ _this.close();
+ });
+ }
+ if(this.options.closeOnEsc){
+ $(window).on('keydown.zf.reveal', function(e){
+ Foundation.Keyboard.handleKey(e, 'Reveal', {
+ close: function() {
+ if (_this.options.closeOnEsc) {
+ _this.close();
+ _this.$anchor.focus();
+ }
+ }
+ });
+ if (_this.focusableElements.length === 0) { // no focusable elements inside the modal at all, prevent tabbing in general
+ e.preventDefault();
+ }
+ });
+ }
+
+ // lock focus within modal while tabbing
+ this.$element.on('keydown.zf.reveal', function(e) {
+ var $target = $(this);
+ // handle keyboard event with keyboard util
+ Foundation.Keyboard.handleKey(e, 'Reveal', {
+ tab_forward: function() {
+ if (_this.$element.find(':focus').is(_this.focusableElements.eq(-1))) { // left modal downwards, setting focus to first element
+ _this.focusableElements.eq(0).focus();
+ e.preventDefault();
+ }
+ },
+ tab_backward: function() {
+ if (_this.$element.find(':focus').is(_this.focusableElements.eq(0)) || _this.$element.is(':focus')) { // left modal upwards, setting focus to last element
+ _this.focusableElements.eq(-1).focus();
+ e.preventDefault();
+ }
+ },
+ open: function() {
+ if (_this.$element.find(':focus').is(_this.$element.find('[data-close]'))) {
+ setTimeout(function() { // set focus back to anchor if close button has been activated
+ _this.$anchor.focus();
+ }, 1);
+ } else if ($target.is(_this.focusableElements)) { // dont't trigger if acual element has focus (i.e. inputs, links, ...)
+ _this.open();
+ }
+ },
+ close: function() {
+ if (_this.options.closeOnEsc) {
+ _this.close();
+ _this.$anchor.focus();
+ }
+ }
+ });
+ });
+
+ };
+
+ /**
+ * Closes the modal.
+ * @function
+ * @fires Reveal#closed
+ */
+ Reveal.prototype.close = function(){
+ if(!this.isActive || !this.$element.is(':visible')){
+ return false;
+ }
+ var _this = this;
+
+ if(this.options.animationOut){
+ Foundation.Motion.animateOut(this.$element, this.options.animationOut, function(){
+ if(_this.options.overlay){
+ Foundation.Motion.animateOut(_this.$overlay, 'fade-out', finishUp);
+ }else{ finishUp(); }
+ });
+ }else{
+ this.$element.hide(_this.options.hideDelay, function(){
+ if(_this.options.overlay){
+ _this.$overlay.hide(0, finishUp);
+ }else{ finishUp(); }
+ });
+ }
+ //conditionals to remove extra event listeners added on open
+ if(this.options.closeOnEsc){
+ $(window).off('keydown.zf.reveal');
+ }
+ if(!this.options.overlay && this.options.closeOnClick){
+ $('body').off('click.zf.reveal');
+ }
+ this.$element.off('keydown.zf.reveal');
+ function finishUp(){
+ //if the modal changed size, reset it
+ if(_this.changedSize){
+ _this.$element.css({
+ 'height': '',
+ 'width': ''
+ });
+ }
+ $('body').removeClass('is-reveal-open').attr({'aria-hidden': false, 'tabindex': ''});
+ _this.$element.attr({'aria-hidden': true})
+ /**
+ * Fires when the modal is done closing.
+ * @event Reveal#closed
+ */
+ .trigger('closed.zf.reveal');
+ }
+
+
+ /**
+ * Resets the modal content
+ * This prevents a running video to keep going in the background
+ */
+ if(this.options.resetOnClose) {
+ this.$element.html(this.$element.html());
+ }
+
+ this.isActive = false;
+ if(_this.options.deepLink){
+ if(window.history.replaceState){
+ window.history.replaceState("", document.title, window.location.pathname);
+ }else{
+ window.location.hash = '';
+ }
+ }
+ };
+ /**
+ * Toggles the open/closed state of a modal.
+ * @function
+ */
+ Reveal.prototype.toggle = function(){
+ if(this.isActive){
+ this.close();
+ }else{
+ this.open();
+ }
+ };
+
+ /**
+ * Destroys an instance of a modal.
+ * @function
+ */
+ Reveal.prototype.destroy = function() {
+ if(this.options.overlay){
+ this.$overlay.hide().off().remove();
+ }
+ this.$element.hide().off();
+ this.$anchor.off('.zf');
+ $(window).off('.zf.reveal:' + this.id);
+
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(Reveal, 'Reveal');
+
+ // Exports for AMD/Browserify
+ if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
+ module.exports = Reveal;
+ if (typeof define === 'function')
+ define(['foundation'], function() {
+ return Reveal;
+ });
+
+}(Foundation, jQuery);
+
+/**
+ * Slider module.
+ * @module foundation.slider
+ * @requires foundation.util.motion
+ * @requires foundation.util.triggers
+ * @requires foundation.util.keyboard
+ * @requires foundation.util.touch
+ */
+!function($, Foundation){
+ 'use strict';
+
+ /**
+ * Creates a new instance of a drilldown menu.
+ * @class
+ * @param {jQuery} element - jQuery object to make into an accordion menu.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Slider(element, options){
+ this.$element = element;
+ this.options = $.extend({}, Slider.defaults, this.$element.data(), options);
+
+ this._init();
+
+ Foundation.registerPlugin(this, 'Slider');
+ Foundation.Keyboard.register('Slider', {
+ 'ltr': {
+ 'ARROW_RIGHT': 'increase',
+ 'ARROW_UP': 'increase',
+ 'ARROW_DOWN': 'decrease',
+ 'ARROW_LEFT': 'decrease',
+ 'SHIFT_ARROW_RIGHT': 'increase_fast',
+ 'SHIFT_ARROW_UP': 'increase_fast',
+ 'SHIFT_ARROW_DOWN': 'decrease_fast',
+ 'SHIFT_ARROW_LEFT': 'decrease_fast'
+ },
+ 'rtl': {
+ 'ARROW_LEFT': 'increase',
+ 'ARROW_RIGHT': 'decrease',
+ 'SHIFT_ARROW_LEFT': 'increase_fast',
+ 'SHIFT_ARROW_RIGHT': 'decrease_fast'
+ }
+ });
+ }
+
+ Slider.defaults = {
+ /**
+ * Minimum value for the slider scale.
+ * @option
+ * @example 0
+ */
+ start: 0,
+ /**
+ * Maximum value for the slider scale.
+ * @option
+ * @example 100
+ */
+ end: 100,
+ /**
+ * Minimum value change per change event. Not Currently Implemented!
+
+ */
+ step: 1,
+ /**
+ * Value at which the handle/input *(left handle/first input)* should be set to on initialization.
+ * @option
+ * @example 0
+ */
+ initialStart: 0,
+ /**
+ * Value at which the right handle/second input should be set to on initialization.
+ * @option
+ * @example 100
+ */
+ initialEnd: 100,
+ /**
+ * Allows the input to be located outside the container and visible. Set to by the JS
+ * @option
+ * @example false
+ */
+ binding: false,
+ /**
+ * Allows the user to click/tap on the slider bar to select a value.
+ * @option
+ * @example true
+ */
+ clickSelect: true,
+ /**
+ * Set to true and use the `vertical` class to change alignment to vertical.
+ * @option
+ * @example false
+ */
+ vertical: false,
+ /**
+ * Allows the user to drag the slider handle(s) to select a value.
+ * @option
+ * @example true
+ */
+ draggable: true,
+ /**
+ * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.
+ * @option
+ * @example false
+ */
+ disabled: false,
+ /**
+ * Allows the use of two handles. Double checked by the JS. Changes some logic handling.
+ * @option
+ * @example false
+ */
+ doubleSided: false,
+ /**
+ * Potential future feature.
+ */
+ // steps: 100,
+ /**
+ * Number of decimal places the plugin should go to for floating point precision.
+ * @option
+ * @example 2
+ */
+ decimal: 2,
+ /**
+ * Time delay for dragged elements.
+ */
+ // dragDelay: 0,
+ /**
+ * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.
+ * @option
+ * @example 200
+ */
+ moveTime: 200,//update this if changing the transition time in the sass
+ /**
+ * Class applied to disabled sliders.
+ * @option
+ * @example 'disabled'
+ */
+ disabledClass: 'disabled',
+ invertVertical: false
+ };
+ /**
+ * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).
+ * @function
+ * @private
+ */
+ Slider.prototype._init = function(){
+ this.inputs = this.$element.find('input');
+ this.handles = this.$element.find('[data-slider-handle]');
+
+ this.$handle = this.handles.eq(0);
+ this.$input = this.inputs.length ? this.inputs.eq(0) : $('#' + this.$handle.attr('aria-controls'));
+ this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);
+
+ var isDbl = false,
+ _this = this;
+ if(this.options.disabled || this.$element.hasClass(this.options.disabledClass)){
+ this.options.disabled = true;
+ this.$element.addClass(this.options.disabledClass);
+ }
+ if(!this.inputs.length){
+ this.inputs = $().add(this.$input);
+ this.options.binding = true;
+ }
+ this._setInitAttr(0);
+ this._events(this.$handle);
+
+ if(this.handles[1]){
+ this.options.doubleSided = true;
+ this.$handle2 = this.handles.eq(1);
+ this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : $('#' + this.$handle2.attr('aria-controls'));
+
+ if(!this.inputs[1]){
+ this.inputs = this.inputs.add(this.$input2);
+ }
+ isDbl = true;
+
+ this._setHandlePos(this.$handle, this.options.initialStart, true, function(){
+
+ _this._setHandlePos(_this.$handle2, _this.options.initialEnd, true);
+ });
+ // this.$handle.triggerHandler('click.zf.slider');
+ this._setInitAttr(1);
+ this._events(this.$handle2);
+ }
+
+ if(!isDbl){
+ this._setHandlePos(this.$handle, this.options.initialStart, true);
+ }
+ };
+ /**
+ * Sets the position of the selected handle and fill bar.
+ * @function
+ * @private
+ * @param {jQuery} $hndl - the selected handle to move.
+ * @param {Number} location - floating point between the start and end values of the slider bar.
+ * @param {Function} cb - callback function to fire on completion.
+ * @fires Slider#moved
+ */
+ Slider.prototype._setHandlePos = function($hndl, location, noInvert, cb){
+ //might need to alter that slightly for bars that will have odd number selections.
+ location = parseFloat(location);//on input change events, convert string to number...grumble.
+
+ // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max
+ if(location < this.options.start){ location = this.options.start; }
+ else if(location > this.options.end){ location = this.options.end; }
+
+ var isDbl = this.options.doubleSided;
+
+ if(isDbl){ //this block is to prevent 2 handles from crossing eachother. Could/should be improved.
+ if(this.handles.index($hndl) === 0){
+ var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));
+ location = location >= h2Val ? h2Val - this.options.step : location;
+ }else{
+ var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));
+ location = location <= h1Val ? h1Val + this.options.step : location;
+ }
+ }
+
+ //this is for single-handled vertical sliders, it adjusts the value to account for the slider being "upside-down"
+ //for click and drag events, it's weird due to the scale(-1, 1) css property
+ if(this.options.vertical && !noInvert){
+ location = this.options.end - location;
+ }
+
+ var _this = this,
+ vert = this.options.vertical,
+ hOrW = vert ? 'height' : 'width',
+ lOrT = vert ? 'top' : 'left',
+ handleDim = $hndl[0].getBoundingClientRect()[hOrW],
+ elemDim = this.$element[0].getBoundingClientRect()[hOrW],
+ //percentage of bar min/max value based on click or drag point
+ pctOfBar = percent(location, this.options.end).toFixed(2),
+ //number of actual pixels to shift the handle, based on the percentage obtained above
+ pxToMove = (elemDim - handleDim) * pctOfBar,
+ //percentage of bar to shift the handle
+ movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal),
+ //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value
+ location = parseFloat(location.toFixed(this.options.decimal)),
+ // declare empty object for css adjustments, only used with 2 handled-sliders
+ css = {};
+
+ this._setValues($hndl, location);
+
+ // TODO update to calculate based on values set to respective inputs??
+ if(isDbl){
+ var isLeftHndl = this.handles.index($hndl) === 0,
+ //empty variable, will be used for min-height/width for fill bar
+ dim,
+ //percentage w/h of the handle compared to the slider bar
+ handlePct = ~~(percent(handleDim, elemDim) * 100);
+ //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar
+ if(isLeftHndl){
+ //left or top percentage value to apply to the fill bar.
+ css[lOrT] = movement + '%';
+ //calculate the new min-height/width for the fill bar.
+ dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct;
+ //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider
+ //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.
+ if(cb && typeof cb === 'function'){ cb(); }//this is only needed for the initialization of 2 handled sliders
+ }else{
+ //just caching the value of the left/bottom handle's left/top property
+ var handlePos = parseFloat(this.$handle[0].style[lOrT]);
+ //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0
+ //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself
+ dim = movement - (isNaN(handlePos) ? this.options.initialStart : handlePos) + handlePct;
+ }
+ // assign the min-height/width to our css object
+ css['min-' + hOrW] = dim + '%';
+ }
+
+ this.$element.one('finished.zf.animate', function(){
+ /**
+ * Fires when the handle is done moving.
+ * @event Slider#moved
+ */
+ _this.$element.trigger('moved.zf.slider', [$hndl]);
+ });
+
+ //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.
+ var moveTime = this.$element.data('dragging') ? 1000/60 : this.options.moveTime;
+
+ Foundation.Move(moveTime, $hndl, function(){
+ //adjusting the left/top property of the handle, based on the percentage calculated above
+ $hndl.css(lOrT, movement + '%');
+
+ if(!_this.options.doubleSided){
+ //if single-handled, a simple method to expand the fill bar
+ _this.$fill.css(hOrW, pctOfBar * 100 + '%');
+ }else{
+ //otherwise, use the css object we created above
+ _this.$fill.css(css);
+ }
+ });
+
+ };
+ /**
+ * Sets the initial attribute for the slider element.
+ * @function
+ * @private
+ * @param {Number} idx - index of the current handle/input to use.
+ */
+ Slider.prototype._setInitAttr = function(idx){
+ var id = this.inputs.eq(idx).attr('id') || Foundation.GetYoDigits(6, 'slider');
+ this.inputs.eq(idx).attr({
+ 'id': id,
+ 'max': this.options.end,
+ 'min': this.options.start
+
+ });
+ this.handles.eq(idx).attr({
+ 'role': 'slider',
+ 'aria-controls': id,
+ 'aria-valuemax': this.options.end,
+ 'aria-valuemin': this.options.start,
+ 'aria-valuenow': idx === 0 ? this.options.initialStart : this.options.initialEnd,
+ 'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',
+ 'tabindex': 0
+ });
+ };
+ /**
+ * Sets the input and `aria-valuenow` values for the slider element.
+ * @function
+ * @private
+ * @param {jQuery} $handle - the currently selected handle.
+ * @param {Number} val - floating point of the new value.
+ */
+ Slider.prototype._setValues = function($handle, val){
+ var idx = this.options.doubleSided ? this.handles.index($handle) : 0;
+ this.inputs.eq(idx).val(val);
+ $handle.attr('aria-valuenow', val);
+ };
+ /**
+ * Handles events on the slider element.
+ * Calculates the new location of the current handle.
+ * If there are two handles and the bar was clicked, it determines which handle to move.
+ * @function
+ * @private
+ * @param {Object} e - the `event` object passed from the listener.
+ * @param {jQuery} $handle - the current handle to calculate for, if selected.
+ * @param {Number} val - floating point number for the new value of the slider.
+ * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.
+ */
+ Slider.prototype._handleEvent = function(e, $handle, val){
+ var value, hasVal;
+ if(!val){//click or drag events
+ e.preventDefault();
+ var _this = this,
+ vertical = this.options.vertical,
+ param = vertical ? 'height' : 'width',
+ direction = vertical ? 'top' : 'left',
+ pageXY = vertical ? e.pageY : e.pageX,
+ halfOfHandle = this.$handle[0].getBoundingClientRect()[param] / 2,
+ barDim = this.$element[0].getBoundingClientRect()[param],
+ barOffset = (this.$element.offset()[direction] - pageXY),
+ //if the cursor position is less than or greater than the elements bounding coordinates, set coordinates within those bounds
+ barXY = barOffset > 0 ? -halfOfHandle : (barOffset - halfOfHandle) < -barDim ? barDim : Math.abs(barOffset),
+ offsetPct = percent(barXY, barDim);
+ value = (this.options.end - this.options.start) * offsetPct;
+ // turn everything around for RTL, yay math!
+ if (Foundation.rtl() && !this.options.vertical) {value = this.options.end - value;}
+ //boolean flag for the setHandlePos fn, specifically for vertical sliders
+ hasVal = false;
+
+ if(!$handle){//figure out which handle it is, pass it to the next function.
+ var firstHndlPos = absPosition(this.$handle, direction, barXY, param),
+ secndHndlPos = absPosition(this.$handle2, direction, barXY, param);
+ $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;
+ }
+
+ }else{//change event on input
+ value = val;
+ hasVal = true;
+ }
+
+ this._setHandlePos($handle, value, hasVal);
+ };
+ /**
+ * Adds event listeners to the slider elements.
+ * @function
+ * @private
+ * @param {jQuery} $handle - the current handle to apply listeners to.
+ */
+ Slider.prototype._events = function($handle){
+ if(this.options.disabled){ return false; }
+
+ var _this = this,
+ curHandle,
+ timer;
+
+ this.inputs.off('change.zf.slider').on('change.zf.slider', function(e){
+ var idx = _this.inputs.index($(this));
+ _this._handleEvent(e, _this.handles.eq(idx), $(this).val());
+ });
+
+ if(this.options.clickSelect){
+ this.$element.off('click.zf.slider').on('click.zf.slider', function(e){
+ if(_this.$element.data('dragging')){ return false; }
+
+ if(_this.options.doubleSided){
+ _this._handleEvent(e);
+ }else{
+ _this._handleEvent(e, _this.$handle);
+ }
+ });
+ }
+
+ if(this.options.draggable){
+ this.handles.addTouch();
+
+ var $body = $('body');
+ $handle
+ .off('mousedown.zf.slider')
+ .on('mousedown.zf.slider', function(e){
+ $handle.addClass('is-dragging');
+ _this.$fill.addClass('is-dragging');//
+ _this.$element.data('dragging', true);
+
+ curHandle = $(e.currentTarget);
+
+ $body.on('mousemove.zf.slider', function(e){
+ e.preventDefault();
+
+ _this._handleEvent(e, curHandle);
+
+ }).on('mouseup.zf.slider', function(e){
+ _this._handleEvent(e, curHandle);
+
+ $handle.removeClass('is-dragging');
+ _this.$fill.removeClass('is-dragging');
+ _this.$element.data('dragging', false);
+
+ $body.off('mousemove.zf.slider mouseup.zf.slider');
+ });
+ });
+ }
+ $handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e){
+ var _$handle = $(this),
+ idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,
+ oldValue = parseFloat(_this.inputs.eq(idx).val()),
+ newValue;
+
+
+ // handle keyboard event with keyboard util
+ Foundation.Keyboard.handleKey(e, 'Slider', {
+ decrease: function() {
+ newValue = oldValue - _this.options.step;
+ },
+ increase: function() {
+ newValue = oldValue + _this.options.step;
+ },
+ decrease_fast: function() {
+ newValue = oldValue - _this.options.step * 10;
+ },
+ increase_fast: function() {
+ newValue = oldValue + _this.options.step * 10;
+ },
+ handled: function() { // only set handle pos when event was handled specially
+ e.preventDefault();
+ _this._setHandlePos(_$handle, newValue, true);
+ }
+ });
+ /*if (newValue) { // if pressed key has special function, update value
+ e.preventDefault();
+ _this._setHandlePos(_$handle, newValue);
+ }*/
+ });
+ };
+ /**
+ * Destroys the slider plugin.
+ */
+ Slider.prototype.destroy = function(){
+ this.handles.off('.zf.slider');
+ this.inputs.off('.zf.slider');
+ this.$element.off('.zf.slider');
+
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(Slider, 'Slider');
+
+ function percent(frac, num){
+ return (frac / num);
+ }
+ function absPosition($handle, dir, clickPos, param){
+ return Math.abs(($handle.position()[dir] + ($handle[param]() / 2)) - clickPos);
+ }
+}(jQuery, window.Foundation);
+
+//*********this is in case we go to static, absolute positions instead of dynamic positioning********
+// this.setSteps(function(){
+// _this._events();
+// var initStart = _this.options.positions[_this.options.initialStart - 1] || null;
+// var initEnd = _this.options.initialEnd ? _this.options.position[_this.options.initialEnd - 1] : null;
+// if(initStart || initEnd){
+// _this._handleEvent(initStart, initEnd);
+// }
+// });
+
+//***********the other part of absolute positions*************
+// Slider.prototype.setSteps = function(cb){
+// var posChange = this.$element.outerWidth() / this.options.steps;
+// var counter = 0
+// while(counter < this.options.steps){
+// if(counter){
+// this.options.positions.push(this.options.positions[counter - 1] + posChange);
+// }else{
+// this.options.positions.push(posChange);
+// }
+// counter++;
+// }
+// cb();
+// };
+
+/**
+ * Sticky module.
+ * @module foundation.sticky
+ * @requires foundation.util.triggers
+ * @requires foundation.util.mediaQuery
+ */
+!function($, Foundation){
+ 'use strict';
+
+ /**
+ * Creates a new instance of a sticky thing.
+ * @class
+ * @param {jQuery} element - jQuery object to make sticky.
+ * @param {Object} options - options object passed when creating the element programmatically.
+ */
+ function Sticky(element, options){
+ this.$element = element;
+ this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);
+
+ this._init();
+
+ Foundation.registerPlugin(this, 'Sticky');
+ }
+ Sticky.defaults = {
+ /**
+ * Customizable container template. Add your own classes for styling and sizing.
+ * @option
+ * @example '&lt;div data-sticky-container class="small-6 columns"&gt;&lt;/div&gt;'
+ */
+ container: '<div data-sticky-container></div>',
+ /**
+ * Location in the view the element sticks to.
+ * @option
+ * @example 'top'
+ */
+ stickTo: 'top',
+ /**
+ * If anchored to a single element, the id of that element.
+ * @option
+ * @example 'exampleId'
+ */
+ anchor: '',
+ /**
+ * If using more than one element as anchor points, the id of the top anchor.
+ * @option
+ * @example 'exampleId:top'
+ */
+ topAnchor: '',
+ /**
+ * If using more than one element as anchor points, the id of the bottom anchor.
+ * @option
+ * @example 'exampleId:bottom'
+ */
+ btmAnchor: '',
+ /**
+ * Margin, in `em`'s to apply to the top of the element when it becomes sticky.
+ * @option
+ * @example 1
+ */
+ marginTop: 1,
+ /**
+ * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.
+ * @option
+ * @example 1
+ */
+ marginBottom: 1,
+ /**
+ * Breakpoint string that is the minimum screen size an element should become sticky.
+ * @option
+ * @example 'medium'
+ */
+ stickyOn: 'medium',
+ /**
+ * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.
+ * @option
+ * @example 'sticky'
+ */
+ stickyClass: 'sticky',
+ /**
+ * Class applied to sticky container. Foundation defaults to `sticky-container`.
+ * @option
+ * @example 'sticky-container'
+ */
+ containerClass: 'sticky-container',
+ /**
+ * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.
+ * @option
+ * @example 50
+ */
+ checkEvery: -1
+ };
+
+ /**
+ * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes
+ * @function
+ * @private
+ */
+ Sticky.prototype._init = function(){
+ var $parent = this.$element.parent('[data-sticky-container]'),
+ id = this.$element[0].id || Foundation.GetYoDigits(6, 'sticky'),
+ _this = this;
+
+ if(!$parent.length){
+ this.wasWrapped = true;
+ }
+ this.$container = $parent.length ? $parent : $(this.options.container).wrapInner(this.$element);
+ this.$container.addClass(this.options.containerClass);
+
+
+ this.$element.addClass(this.options.stickyClass)
+ .attr({'data-resize': id});
+
+ this.scrollCount = this.options.checkEvery;
+ this.isStuck = false;
+
+ if(this.options.anchor !== ''){
+ this.$anchor = $('#' + this.options.anchor);
+ }else{
+ this._parsePoints();
+ }
+
+ this._setSizes(function(){
+ _this._calc(false);
+ });
+ this._events(id.split('-').reverse().join('-'));
+ };
+ /**
+ * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.
+ * @function
+ * @private
+ */
+ Sticky.prototype._parsePoints = function(){
+ var top = this.options.topAnchor,
+ btm = this.options.btmAnchor,
+ pts = [top, btm],
+ breaks = {};
+ if(top && btm){
+
+ for(var i = 0, len = pts.length; i < len && pts[i]; i++){
+ var pt;
+ if(typeof pts[i] === 'number'){
+ pt = pts[i];
+ }else{
+ var place = pts[i].split(':'),
+ anchor = $('#' + place[0]);
+
+ pt = anchor.offset().top;
+ if(place[1] && place[1].toLowerCase() === 'bottom'){
+ pt += anchor[0].getBoundingClientRect().height;
+ }
+ }
+ breaks[i] = pt;
+ }
+ }else{
+ breaks = {0: 1, 1: document.documentElement.scrollHeight};
+ }
+
+ this.points = breaks;
+ return;
+ };
+
+ /**
+ * Adds event handlers for the scrolling element.
+ * @private
+ * @param {String} id - psuedo-random id for unique scroll event listener.
+ */
+ Sticky.prototype._events = function(id){
+ var _this = this,
+ scrollListener = this.scrollListener = 'scroll.zf.' + id;
+ if(this.isOn){ return; }
+ if(this.canStick){
+ this.isOn = true;
+ $(window).off(scrollListener)
+ .on(scrollListener, function(e){
+ if(_this.scrollCount === 0){
+ _this.scrollCount = _this.options.checkEvery;
+ _this._setSizes(function(){
+ _this._calc(false, window.pageYOffset);
+ });
+ }else{
+ _this.scrollCount--;
+ _this._calc(false, window.pageYOffset);
+ }
+ });
+ }
+
+ this.$element.off('resizeme.zf.trigger')
+ .on('resizeme.zf.trigger', function(e, el){
+ _this._setSizes(function(){
+ _this._calc(false);
+ if(_this.canStick){
+ if(!_this.isOn){
+ _this._events(id);
+ }
+ }else if(_this.isOn){
+ _this._pauseListeners(scrollListener);
+ }
+ });
+ });
+ };
+
+ /**
+ * Removes event handlers for scroll and change events on anchor.
+ * @fires Sticky#pause
+ * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`
+ */
+ Sticky.prototype._pauseListeners = function(scrollListener){
+ this.isOn = false;
+ $(window).off(scrollListener);
+
+ /**
+ * Fires when the plugin is paused due to resize event shrinking the view.
+ * @event Sticky#pause
+ * @private
+ */
+ this.$element.trigger('pause.zf.sticky');
+ };
+
+ /**
+ * Called on every `scroll` event and on `_init`
+ * fires functions based on booleans and cached values
+ * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.
+ * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.
+ */
+ Sticky.prototype._calc = function(checkSizes, scroll){
+ if(checkSizes){ this._setSizes(); }
+
+ if(!this.canStick){
+ if(this.isStuck){
+ this._removeSticky(true);
+ }
+ return false;
+ }
+
+ if(!scroll){ scroll = window.pageYOffset; }
+
+ if(scroll >= this.topPoint){
+ if(scroll <= this.bottomPoint){
+ if(!this.isStuck){
+ this._setSticky();
+ }
+ }else{
+ if(this.isStuck){
+ this._removeSticky(false);
+ }
+ }
+ }else{
+ if(this.isStuck){
+ this._removeSticky(true);
+ }
+ }
+ };
+ /**
+ * Causes the $element to become stuck.
+ * Adds `position: fixed;`, and helper classes.
+ * @fires Sticky#stuckto
+ * @function
+ * @private
+ */
+ Sticky.prototype._setSticky = function(){
+ var stickTo = this.options.stickTo,
+ mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',
+ notStuckTo = stickTo === 'top' ? 'bottom' : 'top',
+ css = {};
+
+ css[mrgn] = this.options[mrgn] + 'em';
+ css[stickTo] = 0;
+ css[notStuckTo] = 'auto';
+ css['left'] = this.$container.offset().left + parseInt(window.getComputedStyle(this.$container[0])["padding-left"], 10);
+ this.isStuck = true;
+ this.$element.removeClass('is-anchored is-at-' + notStuckTo)
+ .addClass('is-stuck is-at-' + stickTo)
+ .css(css)
+ /**
+ * Fires when the $element has become `position: fixed;`
+ * Namespaced to `top` or `bottom`.
+ * @event Sticky#stuckto
+ */
+ .trigger('sticky.zf.stuckto:' + stickTo);
+ };
+
+ /**
+ * Causes the $element to become unstuck.
+ * Removes `position: fixed;`, and helper classes.
+ * Adds other helper classes.
+ * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.
+ * @fires Sticky#unstuckfrom
+ * @private
+ */
+ Sticky.prototype._removeSticky = function(isTop){
+ var stickTo = this.options.stickTo,
+ stickToTop = stickTo === 'top',
+ css = {},
+ anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,
+ mrgn = stickToTop ? 'marginTop' : 'marginBottom',
+ notStuckTo = stickToTop ? 'bottom' : 'top',
+ topOrBottom = isTop ? 'top' : 'bottom';
+
+ css[mrgn] = 0;
+
+ if((isTop && !stickToTop) || (stickToTop && !isTop)){
+ css[stickTo] = anchorPt;
+ css[notStuckTo] = 0;
+ }else{
+ css[stickTo] = 0;
+ css[notStuckTo] = anchorPt;
+ }
+
+ css['left'] = '';
+ this.isStuck = false;
+ this.$element.removeClass('is-stuck is-at-' + stickTo)
+ .addClass('is-anchored is-at-' + topOrBottom)
+ .css(css)
+ /**
+ * Fires when the $element has become anchored.
+ * Namespaced to `top` or `bottom`.
+ * @event Sticky#unstuckfrom
+ */
+ .trigger('sticky.zf.unstuckfrom:' + topOrBottom);
+ };
+
+ /**
+ * Sets the $element and $container sizes for plugin.
+ * Calls `_setBreakPoints`.
+ * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.
+ * @private
+ */
+ Sticky.prototype._setSizes = function(cb){
+ this.canStick = Foundation.MediaQuery.atLeast(this.options.stickyOn);
+ if(!this.canStick){ cb(); }
+ var _this = this,
+ newElemWidth = this.$container[0].getBoundingClientRect().width,
+ comp = window.getComputedStyle(this.$container[0]),
+ pdng = parseInt(comp['padding-right'], 10);
+
+ if(this.$anchor && this.$anchor.length){
+ this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;
+ }else{
+ this._parsePoints();
+ }
+
+ this.$element.css({
+ 'max-width': newElemWidth - pdng + 'px'
+ });
+
+ var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;
+ this.containerHeight = newContainerHeight;
+ this.$container.css({
+ height: newContainerHeight
+ });
+ this.elemHeight = newContainerHeight;
+
+ if (this.isStuck) {
+ this.$element.css({"left":this.$container.offset().left + parseInt(comp['padding-left'], 10)});
+ }
+
+ this._setBreakPoints(newContainerHeight, function(){
+ if(cb){ cb(); }
+ });
+
+ };
+ /**
+ * Sets the upper and lower breakpoints for the element to become sticky/unsticky.
+ * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.
+ * @param {Function} cb - optional callback function to be called on completion.
+ * @private
+ */
+ Sticky.prototype._setBreakPoints = function(elemHeight, cb){
+ if(!this.canStick){
+ if(cb){ cb(); }
+ else{ return false; }
+ }
+ var mTop = emCalc(this.options.marginTop),
+ mBtm = emCalc(this.options.marginBottom),
+ topPoint = this.points ? this.points[0] : this.$anchor.offset().top,
+ bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,
+ // topPoint = this.$anchor.offset().top || this.points[0],
+ // bottomPoint = topPoint + this.anchorHeight || this.points[1],
+ winHeight = window.innerHeight;
+
+ if(this.options.stickTo === 'top'){
+ topPoint -= mTop;
+ bottomPoint -= (elemHeight + mTop);
+ }else if(this.options.stickTo === 'bottom'){
+ topPoint -= (winHeight - (elemHeight + mBtm));
+ bottomPoint -= (winHeight - mBtm);
+ }else{
+ //this would be the stickTo: both option... tricky
+ }
+
+ this.topPoint = topPoint;
+ this.bottomPoint = bottomPoint;
+
+ if(cb){ cb(); }
+ };
+
+ /**
+ * Destroys the current sticky element.
+ * Resets the element to the top position first.
+ * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.
+ * @function
+ */
+ Sticky.prototype.destroy = function(){
+ this._removeSticky(true);
+
+ this.$element.removeClass(this.options.stickyClass + ' is-anchored is-at-top')
+ .css({
+ height: '',
+ top: '',
+ bottom: '',
+ 'max-width': ''
+ })
+ .off('resizeme.zf.trigger');
+
+ this.$anchor.off('change.zf.sticky');
+ $(window).off(this.scrollListener);
+
+ if(this.wasWrapped){
+ this.$element.unwrap();
+ }else{
+ this.$container.removeClass(this.options.containerClass)
+ .css({
+ height: ''
+ });
+ }
+ Foundation.unregisterPlugin(this);
+ };
+ /**
+ * Helper function to calculate em values
+ * @param Number {em} - number of em's to calculate into pixels
+ */
+ function emCalc(em){
+ return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;
+ }
+ Foundation.plugin(Sticky, 'Sticky');
+}(jQuery, window.Foundation);
+
+/**
+ * Tabs module.
+ * @module foundation.tabs
+ * @requires foundation.util.keyboard
+ * @requires foundation.util.timerAndImageLoader if tabs contain images
+ */
+!function($, Foundation) {
+ 'use strict';
+
+ /**
+ * Creates a new instance of tabs.
+ * @class
+ * @fires Tabs#init
+ * @param {jQuery} element - jQuery object to make into tabs.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Tabs(element, options){
+ this.$element = element;
+ this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);
+
+ this._init();
+ Foundation.registerPlugin(this, 'Tabs');
+ Foundation.Keyboard.register('Tabs', {
+ 'ENTER': 'open',
+ 'SPACE': 'open',
+ 'ARROW_RIGHT': 'next',
+ 'ARROW_UP': 'previous',
+ 'ARROW_DOWN': 'next',
+ 'ARROW_LEFT': 'previous'
+ // 'TAB': 'next',
+ // 'SHIFT_TAB': 'previous'
+ });
+ }
+
+ Tabs.defaults = {
+ // /**
+ // * Allows the JS to alter the url of the window. Not yet implemented.
+ // */
+ // deepLinking: false,
+ // /**
+ // * If deepLinking is enabled, allows the window to scroll to content if window is loaded with a hash including a tab-pane id
+ // */
+ // scrollToContent: false,
+ /**
+ * Allows the window to scroll to content of active pane on load if set to true.
+ * @option
+ * @example false
+ */
+ autoFocus: false,
+ /**
+ * Allows keyboard input to 'wrap' around the tab links.
+ * @option
+ * @example true
+ */
+ wrapOnKeys: true,
+ /**
+ * Allows the tab content panes to match heights if set to true.
+ * @option
+ * @example false
+ */
+ matchHeight: false,
+ /**
+ * Class applied to `li`'s in tab link list.
+ * @option
+ * @example 'tabs-title'
+ */
+ linkClass: 'tabs-title',
+ // contentClass: 'tabs-content',
+ /**
+ * Class applied to the content containers.
+ * @option
+ * @example 'tabs-panel'
+ */
+ panelClass: 'tabs-panel'
+ };
+
+ /**
+ * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.
+ * @private
+ */
+ Tabs.prototype._init = function(){
+ var _this = this;
+
+ this.$tabTitles = this.$element.find('.' + this.options.linkClass);
+ this.$tabContent = $('[data-tabs-content="' + this.$element[0].id + '"]');
+
+ this.$tabTitles.each(function(){
+ var $elem = $(this),
+ $link = $elem.find('a'),
+ isActive = $elem.hasClass('is-active'),
+ hash = $link[0].hash.slice(1),
+ linkId = $link[0].id ? $link[0].id : hash + '-label',
+ $tabContent = $('#' + hash);
+
+ $elem.attr({'role': 'presentation'});
+
+ $link.attr({
+ 'role': 'tab',
+ 'aria-controls': hash,
+ 'aria-selected': isActive,
+ 'id': linkId
+ });
+
+ $tabContent.attr({
+ 'role': 'tabpanel',
+ 'aria-hidden': !isActive,
+ 'aria-labelledby': linkId
+ });
+
+ if(isActive && _this.options.autoFocus){
+ $link.focus();
+ }
+ });
+ if(this.options.matchHeight){
+ var $images = this.$tabContent.find('img');
+ if($images.length){
+ Foundation.onImagesLoaded($images, this._setHeight.bind(this));
+ }else{
+ this._setHeight();
+ }
+ }
+ this._events();
+ };
+ /**
+ * Adds event handlers for items within the tabs.
+ * @private
+ */
+ Tabs.prototype._events = function(){
+ this._addKeyHandler();
+ this._addClickHandler();
+ if(this.options.matchHeight){
+ $(window).on('changed.zf.mediaquery', this._setHeight.bind(this));
+ }
+ };
+
+ /**
+ * Adds click handlers for items within the tabs.
+ * @private
+ */
+ Tabs.prototype._addClickHandler = function(){
+ var _this = this;
+ this.$element.off('click.zf.tabs')
+ .on('click.zf.tabs', '.' + this.options.linkClass, function(e){
+ e.preventDefault();
+ e.stopPropagation();
+ if($(this).hasClass('is-active')){
+ return;
+ }
+ _this._handleTabChange($(this));
+ });
+ };
+
+ /**
+ * Adds keyboard event handlers for items within the tabs.
+ * @private
+ */
+ Tabs.prototype._addKeyHandler = function(){
+ var _this = this;
+ var $firstTab = _this.$element.find('li:first-of-type');
+ var $lastTab = _this.$element.find('li:last-of-type');
+
+ this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){
+ if(e.which === 9) return;
+ e.stopPropagation();
+ e.preventDefault();
+
+ var $element = $(this),
+ $elements = $element.parent('ul').children('li'),
+ $prevElement,
+ $nextElement;
+
+ $elements.each(function(i) {
+ if ($(this).is($element)) {
+ if (_this.options.wrapOnKeys) {
+ $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1);
+ $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1);
+ } else {
+ $prevElement = $elements.eq(Math.max(0, i-1));
+ $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));
+ }
+ return;
+ }
+ });
+
+ // handle keyboard event with keyboard util
+ Foundation.Keyboard.handleKey(e, 'Tabs', {
+ open: function() {
+ $element.find('[role="tab"]').focus();
+ _this._handleTabChange($element);
+ },
+ previous: function() {
+ $prevElement.find('[role="tab"]').focus();
+ _this._handleTabChange($prevElement);
+ },
+ next: function() {
+ $nextElement.find('[role="tab"]').focus();
+ _this._handleTabChange($nextElement);
+ }
+ });
+ });
+ };
+
+
+ /**
+ * Opens the tab `$targetContent` defined by `$target`.
+ * @param {jQuery} $target - Tab to open.
+ * @fires Tabs#change
+ * @function
+ */
+ Tabs.prototype._handleTabChange = function($target){
+ var $tabLink = $target.find('[role="tab"]'),
+ hash = $tabLink[0].hash,
+ $targetContent = $(hash),
+ $oldTab = this.$element.find('.' + this.options.linkClass + '.is-active')
+ .removeClass('is-active').find('[role="tab"]')
+ .attr({'aria-selected': 'false'}).attr('aria-controls');
+
+ $('#'+$oldTab).removeClass('is-active').attr({'aria-hidden': 'true'});
+
+ $target.addClass('is-active');
+
+ $tabLink.attr({'aria-selected': 'true'});
+
+ $targetContent
+ .addClass('is-active')
+ .attr({'aria-hidden': 'false'});
+
+ /**
+ * Fires when the plugin has successfully changed tabs.
+ * @event Tabs#change
+ */
+ this.$element.trigger('change.zf.tabs', [$target]);
+ // Foundation.reflow(this.$element, 'tabs');
+ };
+
+ /**
+ * Public method for selecting a content pane to display.
+ * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.
+ * @function
+ */
+ Tabs.prototype.selectTab = function(elem){
+ var idStr;
+ if(typeof elem === 'object'){
+ idStr = elem[0].id;
+ }else{
+ idStr = elem;
+ }
+
+ if(idStr.indexOf('#') < 0){
+ idStr = '#' + idStr;
+ }
+ var $target = this.$tabTitles.find('[href="' + idStr + '"]').parent('.' + this.options.linkClass);
+
+ this._handleTabChange($target);
+ };
+ /**
+ * Sets the height of each panel to the height of the tallest panel.
+ * If enabled in options, gets called on media query change.
+ * If loading content via external source, can be called directly or with _reflow.
+ * @function
+ * @private
+ */
+ Tabs.prototype._setHeight = function(){
+ var max = 0;
+ this.$tabContent.find('.' + this.options.panelClass)
+ .css('height', '')
+ .each(function(){
+ var panel = $(this),
+ isActive = panel.hasClass('is-active');
+
+ if(!isActive){
+ panel.css({'visibility': 'hidden', 'display': 'block'});
+ }
+ var temp = this.getBoundingClientRect().height;
+
+ if(!isActive){
+ panel.css({'visibility': '', 'display': ''});
+ }
+
+ max = temp > max ? temp : max;
+ })
+ .css('height', max + 'px');
+ };
+
+ /**
+ * Destroys an instance of an tabs.
+ * @fires Tabs#destroyed
+ */
+ Tabs.prototype.destroy = function() {
+ this.$element.find('.' + this.options.linkClass)
+ .off('.zf.tabs').hide().end()
+ .find('.' + this.options.panelClass)
+ .hide();
+ if(this.options.matchHeight){
+ $(window).off('changed.zf.mediaquery');
+ }
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(Tabs, 'Tabs');
+
+ function checkClass($elem){
+ return $elem.hasClass('is-active');
+ }
+}(jQuery, window.Foundation);
+
+/**
+ * Toggler module.
+ * @module foundation.toggler
+ * @requires foundation.util.motion
+ * @requires foundation.util.triggers
+ */
+
+!function(Foundation, $) {
+ 'use strict';
+
+ /**
+ * Creates a new instance of Toggler.
+ * @class
+ * @fires Toggler#init
+ * @param {Object} element - jQuery object to add the trigger to.
+ * @param {Object} options - Overrides to the default plugin settings.
+ */
+ function Toggler(element, options) {
+ this.$element = element;
+ this.options = $.extend({}, Toggler.defaults, element.data(), options);
+ this.className = '';
+
+ this._init();
+ this._events();
+
+ Foundation.registerPlugin(this, 'Toggler');
+ }
+
+ Toggler.defaults = {
+ /**
+ * Tells the plugin if the element should animated when toggled.
+ * @option
+ * @example false
+ */
+ animate: false
+ };
+
+ /**
+ * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.
+ * @function
+ * @private
+ */
+ Toggler.prototype._init = function() {
+ var input;
+ // Parse animation classes if they were set
+ if (this.options.animate) {
+ input = this.options.animate.split(' ');
+
+ this.animationIn = input[0];
+ this.animationOut = input[1] || null;
+ }
+ // Otherwise, parse toggle class
+ else {
+ input = this.$element.data('toggler');
+ // Allow for a . at the beginning of the string
+ this.className = input[0] === '.' ? input.slice(1) : input;
+ }
+
+ // Add ARIA attributes to triggers
+ var id = this.$element[0].id;
+ $('[data-open="'+id+'"], [data-close="'+id+'"], [data-toggle="'+id+'"]')
+ .attr('aria-controls', id);
+ // If the target is hidden, add aria-hidden
+ this.$element.attr('aria-expanded', this.$element.is(':hidden') ? false : true);
+ };
+
+ /**
+ * Initializes events for the toggle trigger.
+ * @function
+ * @private
+ */
+ Toggler.prototype._events = function() {
+ this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));
+ };
+
+ /**
+ * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was "on" or "off".
+ * @function
+ * @fires Toggler#on
+ * @fires Toggler#off
+ */
+ Toggler.prototype.toggle = function() {
+ this[ this.options.animate ? '_toggleAnimate' : '_toggleClass']();
+ };
+
+ Toggler.prototype._toggleClass = function() {
+ this.$element.toggleClass(this.className);
+
+ var isOn = this.$element.hasClass(this.className);
+ if (isOn) {
+ /**
+ * Fires if the target element has the class after a toggle.
+ * @event Toggler#on
+ */
+ this.$element.trigger('on.zf.toggler');
+ }
+ else {
+ /**
+ * Fires if the target element does not have the class after a toggle.
+ * @event Toggler#off
+ */
+ this.$element.trigger('off.zf.toggler');
+ }
+
+ this._updateARIA(isOn);
+ };
+
+ Toggler.prototype._toggleAnimate = function() {
+ var _this = this;
+
+ if (this.$element.is(':hidden')) {
+ Foundation.Motion.animateIn(this.$element, this.animationIn, function() {
+ this.trigger('on.zf.toggler');
+ _this._updateARIA(true);
+ });
+ }
+ else {
+ Foundation.Motion.animateOut(this.$element, this.animationOut, function() {
+ this.trigger('off.zf.toggler');
+ _this._updateARIA(false);
+ });
+ }
+ };
+
+ Toggler.prototype._updateARIA = function(isOn) {
+ this.$element.attr('aria-expanded', isOn ? true : false);
+ };
+
+ /**
+ * Destroys the instance of Toggler on the element.
+ * @function
+ */
+ Toggler.prototype.destroy= function() {
+ this.$element.off('.zf.toggler');
+ Foundation.unregisterPlugin(this);
+ };
+
+ Foundation.plugin(Toggler, 'Toggler');
+
+ // Exports for AMD/Browserify
+ if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
+ module.exports = Toggler;
+ if (typeof define === 'function')
+ define(['foundation'], function() {
+ return Toggler;
+ });
+
+}(Foundation, jQuery);
+
+/**
+ * Tooltip module.
+ * @module foundation.tooltip
+ * @requires foundation.util.box
+ * @requires foundation.util.triggers
+ */
+!function($, document, Foundation){
+ 'use strict';
+
+ /**
+ * Creates a new instance of a Tooltip.
+ * @class
+ * @fires Tooltip#init
+ * @param {jQuery} element - jQuery object to attach a tooltip to.
+ * @param {Object} options - object to extend the default configuration.
+ */
+ function Tooltip(element, options){
+ this.$element = element;
+ this.options = $.extend({}, Tooltip.defaults, this.$element.data(), options);
+
+ this.isActive = false;
+ this.isClick = false;
+ this._init();
+
+ Foundation.registerPlugin(this, 'Tooltip');
+ }
+
+ Tooltip.defaults = {
+ disableForTouch: false,
+ /**
+ * Time, in ms, before a tooltip should open on hover.
+ * @option
+ * @example 200
+ */
+ hoverDelay: 200,
+ /**
+ * Time, in ms, a tooltip should take to fade into view.
+ * @option
+ * @example 150
+ */
+ fadeInDuration: 150,
+ /**
+ * Time, in ms, a tooltip should take to fade out of view.
+ * @option
+ * @example 150
+ */
+ fadeOutDuration: 150,
+ /**
+ * Disables hover events from opening the tooltip if set to true
+ * @option
+ * @example false
+ */
+ disableHover: false,
+ /**
+ * Optional addtional classes to apply to the tooltip template on init.
+ * @option
+ * @example 'my-cool-tip-class'
+ */
+ templateClasses: '',
+ /**
+ * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.
+ * @option
+ * @example 'tooltip'
+ */
+ tooltipClass: 'tooltip',
+ /**
+ * Class applied to the tooltip anchor element.
+ * @option
+ * @example 'has-tip'
+ */
+ triggerClass: 'has-tip',
+ /**
+ * Minimum breakpoint size at which to open the tooltip.
+ * @option
+ * @example 'small'
+ */
+ showOn: 'small',
+ /**
+ * Custom template to be used to generate markup for tooltip.
+ * @option
+ * @example '&lt;div class="tooltip"&gt;&lt;/div&gt;'
+ */
+ template: '',
+ /**
+ * Text displayed in the tooltip template on open.
+ * @option
+ * @example 'Some cool space fact here.'
+ */
+ tipText: '',
+ touchCloseText: 'Tap to close.',
+ /**
+ * Allows the tooltip to remain open if triggered with a click or touch event.
+ * @option
+ * @example true
+ */
+ clickOpen: true,
+ /**
+ * Additional positioning classes, set by the JS
+ * @option
+ * @example 'top'
+ */
+ positionClass: '',
+ /**
+ * Distance, in pixels, the template should push away from the anchor on the Y axis.
+ * @option
+ * @example 10
+ */
+ vOffset: 10,
+ /**
+ * Distance, in pixels, the template should push away from the anchor on the X axis, if aligned to a side.
+ * @option
+ * @example 12
+ */
+ hOffset: 12
+ };
+
+ /**
+ * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.
+ * @private
+ */
+ Tooltip.prototype._init = function(){
+ var elemId = this.$element.attr('aria-describedby') || Foundation.GetYoDigits(6, 'tooltip');
+
+ this.options.positionClass = this._getPositionClass(this.$element);
+ this.options.tipText = this.options.tipText || this.$element.attr('title');
+ this.template = this.options.template ? $(this.options.template) : this._buildTemplate(elemId);
+
+ this.template.appendTo(document.body)
+ .text(this.options.tipText)
+ .hide();
+
+ this.$element.attr({
+ 'title': '',
+ 'aria-describedby': elemId,
+ 'data-yeti-box': elemId,
+ 'data-toggle': elemId,
+ 'data-resize': elemId
+ }).addClass(this.triggerClass);
+
+ //helper variables to track movement on collisions
+ this.usedPositions = [];
+ this.counter = 4;
+ this.classChanged = false;
+
+ this._events();
+ };
+
+ /**
+ * Grabs the current positioning class, if present, and returns the value or an empty string.
+ * @private
+ */
+ Tooltip.prototype._getPositionClass = function(element){
+ if(!element){ return ''; }
+ // var position = element.attr('class').match(/top|left|right/g);
+ var position = element[0].className.match(/\b(top|left|right)\b/g);
+ position = position ? position[0] : '';
+ return position;
+ };
+ /**
+ * builds the tooltip element, adds attributes, and returns the template.
+ * @private
+ */
+ Tooltip.prototype._buildTemplate = function(id){
+ var templateClasses = (this.options.tooltipClass + ' ' + this.options.positionClass + ' ' + this.options.templateClasses).trim();
+ var $template = $('<div></div>').addClass(templateClasses).attr({
+ 'role': 'tooltip',
+ 'aria-hidden': true,
+ 'data-is-active': false,
+ 'data-is-focus': false,
+ 'id': id
+ });
+ return $template;
+ };
+
+ /**
+ * Function that gets called if a collision event is detected.
+ * @param {String} position - positioning class to try
+ * @private
+ */
+ Tooltip.prototype._reposition = function(position){
+ this.usedPositions.push(position ? position : 'bottom');
+
+ //default, try switching to opposite side
+ if(!position && (this.usedPositions.indexOf('top') < 0)){
+ this.template.addClass('top');
+ }else if(position === 'top' && (this.usedPositions.indexOf('bottom') < 0)){
+ this.template.removeClass(position);
+ }else if(position === 'left' && (this.usedPositions.indexOf('right') < 0)){
+ this.template.removeClass(position)
+ .addClass('right');
+ }else if(position === 'right' && (this.usedPositions.indexOf('left') < 0)){
+ this.template.removeClass(position)
+ .addClass('left');
+ }
+
+ //if default change didn't work, try bottom or left first
+ else if(!position && (this.usedPositions.indexOf('top') > -1) && (this.usedPositions.indexOf('left') < 0)){
+ this.template.addClass('left');
+ }else if(position === 'top' && (this.usedPositions.indexOf('bottom') > -1) && (this.usedPositions.indexOf('left') < 0)){
+ this.template.removeClass(position)
+ .addClass('left');
+ }else if(position === 'left' && (this.usedPositions.indexOf('right') > -1) && (this.usedPositions.indexOf('bottom') < 0)){
+ this.template.removeClass(position);
+ }else if(position === 'right' && (this.usedPositions.indexOf('left') > -1) && (this.usedPositions.indexOf('bottom') < 0)){
+ this.template.removeClass(position);
+ }
+ //if nothing cleared, set to bottom
+ else{
+ this.template.removeClass(position);
+ }
+ this.classChanged = true;
+ this.counter--;
+
+ };
+
+ /**
+ * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.
+ * if the tooltip is larger than the screen width, default to full width - any user selected margin
+ * @private
+ */
+ Tooltip.prototype._setPosition = function(){
+ var position = this._getPositionClass(this.template),
+ $tipDims = Foundation.Box.GetDimensions(this.template),
+ $anchorDims = Foundation.Box.GetDimensions(this.$element),
+ direction = (position === 'left' ? 'left' : ((position === 'right') ? 'left' : 'top')),
+ param = (direction === 'top') ? 'height' : 'width',
+ offset = (param === 'height') ? this.options.vOffset : this.options.hOffset,
+ _this = this;
+
+ if(($tipDims.width >= $tipDims.windowDims.width) || (!this.counter && !Foundation.Box.ImNotTouchingYou(this.template))){
+ this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({
+ // this.$element.offset(Foundation.GetOffsets(this.template, this.$element, 'center bottom', this.options.vOffset, this.options.hOffset, true)).css({
+ 'width': $anchorDims.windowDims.width - (this.options.hOffset * 2),
+ 'height': 'auto'
+ });
+ return false;
+ }
+
+ this.template.offset(Foundation.Box.GetOffsets(this.template, this.$element,'center ' + (position || 'bottom'), this.options.vOffset, this.options.hOffset));
+
+ while(!Foundation.Box.ImNotTouchingYou(this.template) && this.counter){
+ this._reposition(position);
+ this._setPosition();
+ }
+ };
+
+ /**
+ * reveals the tooltip, and fires an event to close any other open tooltips on the page
+ * @fires Tooltip#closeme
+ * @fires Tooltip#show
+ * @function
+ */
+ Tooltip.prototype.show = function(){
+ if(this.options.showOn !== 'all' && !Foundation.MediaQuery.atLeast(this.options.showOn)){
+ // console.error('The screen is too small to display this tooltip');
+ return false;
+ }
+
+ var _this = this;
+ this.template.css('visibility', 'hidden').show();
+ this._setPosition();
+
+ /**
+ * Fires to close all other open tooltips on the page
+ * @event Closeme#tooltip
+ */
+ this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));
+
+
+ this.template.attr({
+ 'data-is-active': true,
+ 'aria-hidden': false
+ });
+ _this.isActive = true;
+ // console.log(this.template);
+ this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function(){
+ //maybe do stuff?
+ });
+ /**
+ * Fires when the tooltip is shown
+ * @event Tooltip#show
+ */
+ this.$element.trigger('show.zf.tooltip');
+ };
+
+ /**
+ * Hides the current tooltip, and resets the positioning class if it was changed due to collision
+ * @fires Tooltip#hide
+ * @function
+ */
+ Tooltip.prototype.hide = function(){
+ // console.log('hiding', this.$element.data('yeti-box'));
+ var _this = this;
+ this.template.stop().attr({
+ 'aria-hidden': true,
+ 'data-is-active': false
+ }).fadeOut(this.options.fadeOutDuration, function(){
+ _this.isActive = false;
+ _this.isClick = false;
+ if(_this.classChanged){
+ _this.template
+ .removeClass(_this._getPositionClass(_this.template))
+ .addClass(_this.options.positionClass);
+
+ _this.usedPositions = [];
+ _this.counter = 4;
+ _this.classChanged = false;
+ }
+ });
+ /**
+ * fires when the tooltip is hidden
+ * @event Tooltip#hide
+ */
+ this.$element.trigger('hide.zf.tooltip');
+ };
+
+ /**
+ * adds event listeners for the tooltip and its anchor
+ * TODO combine some of the listeners like focus and mouseenter, etc.
+ * @private
+ */
+ Tooltip.prototype._events = function(){
+ var _this = this;
+ var $template = this.template;
+ var isFocus = false;
+
+ if(!this.options.disableHover){
+
+ this.$element
+ .on('mouseenter.zf.tooltip', function(e){
+ if(!_this.isActive){
+ _this.timeout = setTimeout(function(){
+ _this.show();
+ }, _this.options.hoverDelay);
+ }
+ })
+ .on('mouseleave.zf.tooltip', function(e){
+ clearTimeout(_this.timeout);
+ if(!isFocus || (!_this.isClick && _this.options.clickOpen)){
+ _this.hide();
+ }
+ });
+ }
+ if(this.options.clickOpen){
+ this.$element.on('mousedown.zf.tooltip', function(e){
+ e.stopImmediatePropagation();
+ if(_this.isClick){
+ _this.hide();
+ // _this.isClick = false;
+ }else{
+ _this.isClick = true;
+ if((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive){
+ _this.show();
+ }
+ }
+ });
+ }
+
+ if(!this.options.disableForTouch){
+ this.$element
+ .on('tap.zf.tooltip touchend.zf.tooltip', function(e){
+ _this.isActive ? _this.hide() : _this.show();
+ });
+ }
+
+ this.$element.on({
+ // 'toggle.zf.trigger': this.toggle.bind(this),
+ // 'close.zf.trigger': this.hide.bind(this)
+ 'close.zf.trigger': this.hide.bind(this)
+ });
+
+ this.$element
+ .on('focus.zf.tooltip', function(e){
+ isFocus = true;
+ // console.log(_this.isClick);
+ if(_this.isClick){
+ return false;
+ }else{
+ // $(window)
+ _this.show();
+ }
+ })
+
+ .on('focusout.zf.tooltip', function(e){
+ isFocus = false;
+ _this.isClick = false;
+ _this.hide();
+ })
+
+ .on('resizeme.zf.trigger', function(){
+ if(_this.isActive){
+ _this._setPosition();
+ }
+ });
+ };
+ /**
+ * adds a toggle method, in addition to the static show() & hide() functions
+ * @function
+ */
+ Tooltip.prototype.toggle = function(){
+ if(this.isActive){
+ this.hide();
+ }else{
+ this.show();
+ }
+ };
+ /**
+ * Destroys an instance of tooltip, removes template element from the view.
+ * @function
+ */
+ Tooltip.prototype.destroy = function(){
+ this.$element.attr('title', this.template.text())
+ .off('.zf.trigger .zf.tootip')
+ // .removeClass('has-tip')
+ .removeAttr('aria-describedby')
+ .removeAttr('data-yeti-box')
+ .removeAttr('data-toggle')
+ .removeAttr('data-resize');
+
+ this.template.remove();
+
+ Foundation.unregisterPlugin(this);
+ };
+ /**
+ * TODO utilize resize event trigger
+ */
+
+ Foundation.plugin(Tooltip, 'Tooltip');
+}(jQuery, window.document, window.Foundation);
diff --git a/javascripts/jquery.cookie.js b/javascripts/vendor/jquery.cookie.js
rename from javascripts/jquery.cookie.js
rename to javascripts/vendor/jquery.cookie.js
diff --git a/javascripts/vendor/jquery.min.js b/javascripts/vendor/jquery.min.js
new file mode 100644
--- /dev/null
+++ b/javascripts/vendor/jquery.min.js
@@ -0,0 +1,5 @@
+/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){
+return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)),
+void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n});
+//# sourceMappingURL=jquery.min.map
\ No newline at end of file
diff --git a/javascripts/vendor/what-input.min.js b/javascripts/vendor/what-input.min.js
new file mode 100644
--- /dev/null
+++ b/javascripts/vendor/what-input.min.js
@@ -0,0 +1 @@
+!function(e,t){"function"==typeof define&&define.amd?define([],function(){return t()}):"object"==typeof exports?module.exports=t():e.whatInput=t()}(this,function(){"use strict";function e(e){clearTimeout(s),n(e),f=!0,s=setTimeout(function(){f=!1},1e3)}function t(e){f||n(e)}function n(e){var t=o(e),n=r(e),d=w[e.type];"pointer"===d&&(d=i(e)),p!==d&&(!y&&p&&"keyboard"===d&&"tab"!==v[t]&&m.indexOf(n.nodeName.toLowerCase())>=0||(p=d,a.setAttribute("data-whatinput",p),-1===h.indexOf(p)&&h.push(p))),"keyboard"===d&&u(t)}function o(e){return e.keyCode?e.keyCode:e.which}function r(e){return e.target||e.srcElement}function i(e){return"number"==typeof e.pointerType?b[e.pointerType]:e.pointerType}function u(e){-1===c.indexOf(v[e])&&v[e]&&c.push(v[e])}function d(e){var t=o(e),n=c.indexOf(v[t]);-1!==n&&c.splice(n,1)}var s,c=[],a=document.body,f=!1,p=null,m=["input","select","textarea"],y=a.hasAttribute("data-whatinput-formtyping"),w={keydown:"keyboard",mousedown:"mouse",mouseenter:"mouse",touchstart:"touch",pointerdown:"pointer",MSPointerDown:"pointer"},h=[],v={9:"tab",13:"enter",16:"shift",27:"esc",32:"space",37:"left",38:"up",39:"right",40:"down"},b={2:"touch",3:"touch",4:"mouse"};return function(){var n="mousedown";window.PointerEvent?n="pointerdown":window.MSPointerEvent&&(n="MSPointerDown"),a.addEventListener(n,t),a.addEventListener("mouseenter",t),"ontouchstart"in document.documentElement&&a.addEventListener("touchstart",e),a.addEventListener("keydown",t),a.addEventListener("keyup",d)}(),{ask:function(){return p},keys:function(){return c},types:function(){return h},set:n}});
\ No newline at end of file
diff --git a/stylesheets/app.css b/stylesheets/app.css
--- a/stylesheets/app.css
+++ b/stylesheets/app.css
@@ -6,9 +6,9 @@
Author: Dereckson
Tags: Foundation, red, gray, Ralf Lauren, vintage
Filename: app.css
- Version: 1.0
+ Version: 1.1
Created: 2013-01-16
- Updated: 2014-01-05
+ Updated: 2016-01-29
Licence: Creative Commons BY 3.0
------------------------------------------------------------- */
@@ -33,6 +33,7 @@
body {
background-color: #703030;
font-family: 'Source Sans Pro', sans-serif;
+ font-size: 14px;
}
h1, h2, h3, h4, h5, h6 {
@@ -40,9 +41,6 @@
font-weight: 300;
}
-h1, h3, h4, h5, h6 {
-}
-
/* -------------------------------------------------------------
Header
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
diff --git a/stylesheets/foundation-flex.css b/stylesheets/foundation-flex.css
new file mode 100644
--- /dev/null
+++ b/stylesheets/foundation-flex.css
@@ -0,0 +1,3564 @@
+@charset "UTF-8";
+/**
+ * Foundation for Sites by ZURB
+ * Version 6.1.2
+ * foundation.zurb.com
+ * Licensed under MIT Open Source
+ */
+.slide-in-down.mui-enter, .slide-in-left.mui-enter, .slide-in-up.mui-enter, .slide-in-right.mui-enter, .slide-out-down.mui-leave, .slide-out-right.mui-leave, .slide-out-up.mui-leave, .slide-out-left.mui-leave, .fade-in.mui-enter, .fade-out.mui-leave, .hinge-in-from-top.mui-enter, .hinge-in-from-right.mui-enter, .hinge-in-from-bottom.mui-enter, .hinge-in-from-left.mui-enter, .hinge-in-from-middle-x.mui-enter, .hinge-in-from-middle-y.mui-enter, .hinge-out-from-top.mui-leave, .hinge-out-from-right.mui-leave, .hinge-out-from-bottom.mui-leave, .hinge-out-from-left.mui-leave, .hinge-out-from-middle-x.mui-leave, .hinge-out-from-middle-y.mui-leave, .scale-in-up.mui-enter, .scale-in-down.mui-enter, .scale-out-up.mui-leave, .scale-out-down.mui-leave, .spin-in.mui-enter, .spin-out.mui-leave, .spin-in-ccw.mui-enter, .spin-out-ccw.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear; }
+
+.slide-in-down.mui-enter {
+ -webkit-transform: translateY(-100%);
+ -ms-transform: translateY(-100%);
+ transform: translateY(-100%);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-down.mui-enter.mui-enter-active {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0); }
+
+.slide-in-left.mui-enter {
+ -webkit-transform: translateX(-100%);
+ -ms-transform: translateX(-100%);
+ transform: translateX(-100%);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-left.mui-enter.mui-enter-active {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0); }
+
+.slide-in-up.mui-enter {
+ -webkit-transform: translateY(100%);
+ -ms-transform: translateY(100%);
+ transform: translateY(100%);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-up.mui-enter.mui-enter-active {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0); }
+
+.slide-in-right.mui-enter {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-right.mui-enter.mui-enter-active {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0); }
+
+.slide-out-down.mui-leave {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-down.mui-leave.mui-leave-active {
+ -webkit-transform: translateY(-100%);
+ -ms-transform: translateY(-100%);
+ transform: translateY(-100%); }
+
+.slide-out-right.mui-leave {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-right.mui-leave.mui-leave-active {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%); }
+
+.slide-out-up.mui-leave {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-up.mui-leave.mui-leave-active {
+ -webkit-transform: translateY(-100%);
+ -ms-transform: translateY(-100%);
+ transform: translateY(-100%); }
+
+.slide-out-left.mui-leave {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-left.mui-leave.mui-leave-active {
+ -webkit-transform: translateX(-100%);
+ -ms-transform: translateX(-100%);
+ transform: translateX(-100%); }
+
+.fade-in.mui-enter {
+ opacity: 0;
+ transition-property: opacity; }
+
+.fade-in.mui-enter.mui-enter-active {
+ opacity: 1; }
+
+.fade-out.mui-leave {
+ opacity: 1;
+ transition-property: opacity; }
+
+.fade-out.mui-leave.mui-leave-active {
+ opacity: 0; }
+
+.hinge-in-from-top.mui-enter {
+ -webkit-transform: perspective(2000px) rotateX(-90deg);
+ transform: perspective(2000px) rotateX(-90deg);
+ -webkit-transform-origin: top;
+ -ms-transform-origin: top;
+ transform-origin: top;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-top.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-right.mui-enter {
+ -webkit-transform: perspective(2000px) rotateY(-90deg);
+ transform: perspective(2000px) rotateY(-90deg);
+ -webkit-transform-origin: right;
+ -ms-transform-origin: right;
+ transform-origin: right;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-right.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-bottom.mui-enter {
+ -webkit-transform: perspective(2000px) rotateX(90deg);
+ transform: perspective(2000px) rotateX(90deg);
+ -webkit-transform-origin: bottom;
+ -ms-transform-origin: bottom;
+ transform-origin: bottom;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-bottom.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-left.mui-enter {
+ -webkit-transform: perspective(2000px) rotateY(90deg);
+ transform: perspective(2000px) rotateY(90deg);
+ -webkit-transform-origin: left;
+ -ms-transform-origin: left;
+ transform-origin: left;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-left.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-middle-x.mui-enter {
+ -webkit-transform: perspective(2000px) rotateX(-90deg);
+ transform: perspective(2000px) rotateX(-90deg);
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-middle-x.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-middle-y.mui-enter {
+ -webkit-transform: perspective(2000px) rotateY(-90deg);
+ transform: perspective(2000px) rotateY(-90deg);
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-middle-y.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-out-from-top.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: top;
+ -ms-transform-origin: top;
+ transform-origin: top;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-top.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateX(-90deg);
+ transform: perspective(2000px) rotateX(-90deg);
+ opacity: 0; }
+
+.hinge-out-from-right.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: right;
+ -ms-transform-origin: right;
+ transform-origin: right;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-right.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateY(-90deg);
+ transform: perspective(2000px) rotateY(-90deg);
+ opacity: 0; }
+
+.hinge-out-from-bottom.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: bottom;
+ -ms-transform-origin: bottom;
+ transform-origin: bottom;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-bottom.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateX(90deg);
+ transform: perspective(2000px) rotateX(90deg);
+ opacity: 0; }
+
+.hinge-out-from-left.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: left;
+ -ms-transform-origin: left;
+ transform-origin: left;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-left.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateY(90deg);
+ transform: perspective(2000px) rotateY(90deg);
+ opacity: 0; }
+
+.hinge-out-from-middle-x.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-middle-x.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateX(-90deg);
+ transform: perspective(2000px) rotateX(-90deg);
+ opacity: 0; }
+
+.hinge-out-from-middle-y.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-middle-y.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateY(-90deg);
+ transform: perspective(2000px) rotateY(-90deg);
+ opacity: 0; }
+
+.scale-in-up.mui-enter {
+ -webkit-transform: scale(0.5);
+ -ms-transform: scale(0.5);
+ transform: scale(0.5);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.scale-in-up.mui-enter.mui-enter-active {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ opacity: 1; }
+
+.scale-in-down.mui-enter {
+ -webkit-transform: scale(1.5);
+ -ms-transform: scale(1.5);
+ transform: scale(1.5);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.scale-in-down.mui-enter.mui-enter-active {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ opacity: 1; }
+
+.scale-out-up.mui-leave {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.scale-out-up.mui-leave.mui-leave-active {
+ -webkit-transform: scale(1.5);
+ -ms-transform: scale(1.5);
+ transform: scale(1.5);
+ opacity: 0; }
+
+.scale-out-down.mui-leave {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.scale-out-down.mui-leave.mui-leave-active {
+ -webkit-transform: scale(0.5);
+ -ms-transform: scale(0.5);
+ transform: scale(0.5);
+ opacity: 0; }
+
+.spin-in.mui-enter {
+ -webkit-transform: rotate(-0.75turn);
+ -ms-transform: rotate(-0.75turn);
+ transform: rotate(-0.75turn);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.spin-in.mui-enter.mui-enter-active {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1; }
+
+.spin-out.mui-leave {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.spin-out.mui-leave.mui-leave-active {
+ -webkit-transform: rotate(0.75turn);
+ -ms-transform: rotate(0.75turn);
+ transform: rotate(0.75turn);
+ opacity: 0; }
+
+.spin-in-ccw.mui-enter {
+ -webkit-transform: rotate(0.75turn);
+ -ms-transform: rotate(0.75turn);
+ transform: rotate(0.75turn);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.spin-in-ccw.mui-enter.mui-enter-active {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1; }
+
+.spin-out-ccw.mui-leave {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.spin-out-ccw.mui-leave.mui-leave-active {
+ -webkit-transform: rotate(-0.75turn);
+ -ms-transform: rotate(-0.75turn);
+ transform: rotate(-0.75turn);
+ opacity: 0; }
+
+.slow {
+ transition-duration: 750ms !important; }
+
+.fast {
+ transition-duration: 250ms !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(0.485, 0.155, 0.24, 1.245) !important; }
+
+.bounce-out {
+ transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }
+
+.bounce-in-out {
+ transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }
+
+.short-delay {
+ transition-delay: 300ms !important; }
+
+.long-delay {
+ transition-delay: 700ms !important; }
+
+.shake {
+ -webkit-animation-name: shake-7;
+ animation-name: shake-7; }
+
+@-webkit-keyframes shake-7 {
+ 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% {
+ -webkit-transform: translateX(7%);
+ transform: translateX(7%); }
+ 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% {
+ -webkit-transform: translateX(-7%);
+ transform: translateX(-7%); } }
+
+@keyframes shake-7 {
+ 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% {
+ -webkit-transform: translateX(7%);
+ transform: translateX(7%); }
+ 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% {
+ -webkit-transform: translateX(-7%);
+ transform: translateX(-7%); } }
+
+.spin-cw {
+ -webkit-animation-name: spin-cw-1turn;
+ animation-name: spin-cw-1turn; }
+
+@-webkit-keyframes spin-cw-1turn {
+ 0% {
+ -webkit-transform: rotate(-1turn);
+ transform: rotate(-1turn); }
+ 100% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); } }
+
+@keyframes spin-cw-1turn {
+ 0% {
+ -webkit-transform: rotate(-1turn);
+ transform: rotate(-1turn); }
+ 100% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); } }
+
+.spin-ccw {
+ -webkit-animation-name: spin-cw-1turn;
+ animation-name: spin-cw-1turn; }
+
+@keyframes spin-cw-1turn {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); }
+ 100% {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn); } }
+
+.wiggle {
+ -webkit-animation-name: wiggle-7deg;
+ animation-name: wiggle-7deg; }
+
+@-webkit-keyframes wiggle-7deg {
+ 40%, 50%, 60% {
+ -webkit-transform: rotate(7deg);
+ transform: rotate(7deg); }
+ 35%, 45%, 55%, 65% {
+ -webkit-transform: rotate(-7deg);
+ transform: rotate(-7deg); }
+ 0%, 30%, 70%, 100% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); } }
+
+@keyframes wiggle-7deg {
+ 40%, 50%, 60% {
+ -webkit-transform: rotate(7deg);
+ transform: rotate(7deg); }
+ 35%, 45%, 55%, 65% {
+ -webkit-transform: rotate(-7deg);
+ transform: rotate(-7deg); }
+ 0%, 30%, 70%, 100% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); } }
+
+.infinite {
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite; }
+
+.slow {
+ -webkit-animation-duration: 750ms !important;
+ animation-duration: 750ms !important; }
+
+.fast {
+ -webkit-animation-duration: 250ms !important;
+ animation-duration: 250ms !important; }
+
+.linear {
+ -webkit-animation-timing-function: linear !important;
+ animation-timing-function: linear !important; }
+
+.ease {
+ -webkit-animation-timing-function: ease !important;
+ animation-timing-function: ease !important; }
+
+.ease-in {
+ -webkit-animation-timing-function: ease-in !important;
+ animation-timing-function: ease-in !important; }
+
+.ease-out {
+ -webkit-animation-timing-function: ease-out !important;
+ animation-timing-function: ease-out !important; }
+
+.ease-in-out {
+ -webkit-animation-timing-function: ease-in-out !important;
+ animation-timing-function: ease-in-out !important; }
+
+.bounce-in {
+ -webkit-animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important;
+ animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; }
+
+.bounce-out {
+ -webkit-animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important;
+ animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }
+
+.bounce-in-out {
+ -webkit-animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important;
+ animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }
+
+.short-delay {
+ -webkit-animation-delay: 300ms !important;
+ animation-delay: 300ms !important; }
+
+.long-delay {
+ -webkit-animation-delay: 700ms !important;
+ animation-delay: 700ms !important; }
+
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS and IE text size adjust after device orientation change,
+ * without disabling user zoom.
+ */
+html {
+ font-family: sans-serif;
+ /* 1 */
+ -ms-text-size-adjust: 100%;
+ /* 2 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */ }
+
+/**
+ * Remove default margin.
+ */
+body {
+ margin: 0; }
+
+/* HTML5 display definitions
+ ========================================================================== */
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block; }
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ /* 1 */
+ vertical-align: baseline;
+ /* 2 */ }
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+audio:not([controls]) {
+ display: none;
+ height: 0; }
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
+ */
+[hidden],
+template {
+ display: none; }
+
+/* Links
+ ========================================================================== */
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+a {
+ background-color: transparent; }
+
+/**
+ * Improve readability of focused elements when they are also in an
+ * active/hover state.
+ */
+a:active,
+a:hover {
+ outline: 0; }
+
+/* Text-level semantics
+ ========================================================================== */
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+abbr[title] {
+ border-bottom: 1px dotted; }
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+b,
+strong {
+ font-weight: bold; }
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+dfn {
+ font-style: italic; }
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0; }
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+mark {
+ background: #ff0;
+ color: #000; }
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+small {
+ font-size: 80%; }
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline; }
+
+sup {
+ top: -0.5em; }
+
+sub {
+ bottom: -0.25em; }
+
+/* Embedded content
+ ========================================================================== */
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+img {
+ border: 0; }
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+svg:not(:root) {
+ overflow: hidden; }
+
+/* Grouping content
+ ========================================================================== */
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+figure {
+ margin: 1em 40px; }
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+hr {
+ box-sizing: content-box;
+ height: 0; }
+
+/**
+ * Contain overflow in all browsers.
+ */
+pre {
+ overflow: auto; }
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em; }
+
+/* Forms
+ ========================================================================== */
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+ margin: 0;
+ /* 3 */ }
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+button {
+ overflow: visible; }
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+button,
+select {
+ text-transform: none; }
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ /* 2 */
+ cursor: pointer;
+ /* 3 */ }
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+button[disabled],
+html input[disabled] {
+ cursor: default; }
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0; }
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+input {
+ line-height: normal; }
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */ }
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto; }
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
+ */
+input[type="search"] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ box-sizing: content-box;
+ /* 2 */ }
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none; }
+
+/**
+ * Define consistent border, margin, and padding.
+ * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.
+ */
+/* fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+ } */
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+legend {
+ border: 0;
+ /* 1 */
+ padding: 0;
+ /* 2 */ }
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+textarea {
+ overflow: auto; }
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+optgroup {
+ font-weight: bold; }
+
+/* Tables
+ ========================================================================== */
+/**
+ * Remove most spacing between table cells.
+ */
+table {
+ border-collapse: collapse;
+ border-spacing: 0; }
+
+td,
+th {
+ padding: 0; }
+
+.foundation-mq {
+ font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; }
+
+html {
+ font-size: 100%;
+ box-sizing: border-box; }
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit; }
+
+body {
+ padding: 0;
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
+ font-weight: normal;
+ line-height: 1.5;
+ color: #222222;
+ background: #fefefe;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale; }
+
+img {
+ max-width: 100%;
+ height: auto;
+ -ms-interpolation-mode: bicubic;
+ display: inline-block;
+ vertical-align: middle; }
+
+textarea {
+ height: auto;
+ min-height: 50px;
+ border-radius: 3px; }
+
+select {
+ width: 100%;
+ border-radius: 3px; }
+
+#map_canvas img,
+#map_canvas embed,
+#map_canvas object,
+.map_canvas img,
+.map_canvas embed,
+.map_canvas object,
+.mqa-display img,
+.mqa-display embed,
+.mqa-display object {
+ max-width: none !important; }
+
+button {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ background: transparent;
+ padding: 0;
+ border: 0;
+ border-radius: 3px;
+ line-height: 1; }
+
+.is-visible {
+ display: block !important; }
+
+.is-hidden {
+ display: none !important; }
+
+.row {
+ max-width: 62.5rem;
+ margin-left: auto;
+ margin-right: auto;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-flow: row wrap;
+ -ms-flex-flow: row wrap;
+ flex-flow: row wrap; }
+ .row .row {
+ margin-left: -0.625rem;
+ margin-right: -0.625rem; }
+ @media screen and (min-width: 40em) {
+ .row .row {
+ margin-left: -0.9375rem;
+ margin-right: -0.9375rem; } }
+ .row.expanded {
+ max-width: none; }
+ .row.collapse > .column, .row.collapse > .columns {
+ padding-left: 0;
+ padding-right: 0; }
+
+.column, .columns {
+ padding-left: 0.625rem;
+ padding-right: 0.625rem;
+ -webkit-flex: 1 1 0px;
+ -ms-flex: 1 1 0px;
+ flex: 1 1 0px; }
+ @media screen and (min-width: 40em) {
+ .column, .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem; } }
+
+.column.row.row, .row.row.columns {
+ float: none; }
+ .row .column.row.row, .row .row.row.columns {
+ padding-left: 0;
+ padding-right: 0;
+ margin-left: 0;
+ margin-right: 0; }
+
+.small-1 {
+ -webkit-flex: 0 0 8.33333%;
+ -ms-flex: 0 0 8.33333%;
+ flex: 0 0 8.33333%;
+ max-width: 8.33333%; }
+
+.small-offset-0 {
+ margin-left: 0%; }
+
+.small-2 {
+ -webkit-flex: 0 0 16.66667%;
+ -ms-flex: 0 0 16.66667%;
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%; }
+
+.small-offset-1 {
+ margin-left: 8.33333%; }
+
+.small-3 {
+ -webkit-flex: 0 0 25%;
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%; }
+
+.small-offset-2 {
+ margin-left: 16.66667%; }
+
+.small-4 {
+ -webkit-flex: 0 0 33.33333%;
+ -ms-flex: 0 0 33.33333%;
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+
+.small-offset-3 {
+ margin-left: 25%; }
+
+.small-5 {
+ -webkit-flex: 0 0 41.66667%;
+ -ms-flex: 0 0 41.66667%;
+ flex: 0 0 41.66667%;
+ max-width: 41.66667%; }
+
+.small-offset-4 {
+ margin-left: 33.33333%; }
+
+.small-6 {
+ -webkit-flex: 0 0 50%;
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%; }
+
+.small-offset-5 {
+ margin-left: 41.66667%; }
+
+.small-7 {
+ -webkit-flex: 0 0 58.33333%;
+ -ms-flex: 0 0 58.33333%;
+ flex: 0 0 58.33333%;
+ max-width: 58.33333%; }
+
+.small-offset-6 {
+ margin-left: 50%; }
+
+.small-8 {
+ -webkit-flex: 0 0 66.66667%;
+ -ms-flex: 0 0 66.66667%;
+ flex: 0 0 66.66667%;
+ max-width: 66.66667%; }
+
+.small-offset-7 {
+ margin-left: 58.33333%; }
+
+.small-9 {
+ -webkit-flex: 0 0 75%;
+ -ms-flex: 0 0 75%;
+ flex: 0 0 75%;
+ max-width: 75%; }
+
+.small-offset-8 {
+ margin-left: 66.66667%; }
+
+.small-10 {
+ -webkit-flex: 0 0 83.33333%;
+ -ms-flex: 0 0 83.33333%;
+ flex: 0 0 83.33333%;
+ max-width: 83.33333%; }
+
+.small-offset-9 {
+ margin-left: 75%; }
+
+.small-11 {
+ -webkit-flex: 0 0 91.66667%;
+ -ms-flex: 0 0 91.66667%;
+ flex: 0 0 91.66667%;
+ max-width: 91.66667%; }
+
+.small-offset-10 {
+ margin-left: 83.33333%; }
+
+.small-12 {
+ -webkit-flex: 0 0 100%;
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%; }
+
+.small-offset-11 {
+ margin-left: 91.66667%; }
+
+.small-order-1 {
+ -webkit-order: 1;
+ -ms-flex-order: 1;
+ order: 1; }
+
+.small-order-2 {
+ -webkit-order: 2;
+ -ms-flex-order: 2;
+ order: 2; }
+
+.small-order-3 {
+ -webkit-order: 3;
+ -ms-flex-order: 3;
+ order: 3; }
+
+.small-order-4 {
+ -webkit-order: 4;
+ -ms-flex-order: 4;
+ order: 4; }
+
+.small-order-5 {
+ -webkit-order: 5;
+ -ms-flex-order: 5;
+ order: 5; }
+
+.small-order-6 {
+ -webkit-order: 6;
+ -ms-flex-order: 6;
+ order: 6; }
+
+.small-collapse > .column, .small-collapse > .columns {
+ padding-left: 0;
+ padding-right: 0; }
+
+.small-uncollapse > .column, .small-uncollapse > .columns {
+ padding-left: 0.625rem;
+ padding-right: 0.625rem; }
+
+@media screen and (min-width: 40em) {
+ .medium-1 {
+ -webkit-flex: 0 0 8.33333%;
+ -ms-flex: 0 0 8.33333%;
+ flex: 0 0 8.33333%;
+ max-width: 8.33333%; }
+ .medium-offset-0 {
+ margin-left: 0%; }
+ .medium-2 {
+ -webkit-flex: 0 0 16.66667%;
+ -ms-flex: 0 0 16.66667%;
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%; }
+ .medium-offset-1 {
+ margin-left: 8.33333%; }
+ .medium-3 {
+ -webkit-flex: 0 0 25%;
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%; }
+ .medium-offset-2 {
+ margin-left: 16.66667%; }
+ .medium-4 {
+ -webkit-flex: 0 0 33.33333%;
+ -ms-flex: 0 0 33.33333%;
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .medium-offset-3 {
+ margin-left: 25%; }
+ .medium-5 {
+ -webkit-flex: 0 0 41.66667%;
+ -ms-flex: 0 0 41.66667%;
+ flex: 0 0 41.66667%;
+ max-width: 41.66667%; }
+ .medium-offset-4 {
+ margin-left: 33.33333%; }
+ .medium-6 {
+ -webkit-flex: 0 0 50%;
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .medium-offset-5 {
+ margin-left: 41.66667%; }
+ .medium-7 {
+ -webkit-flex: 0 0 58.33333%;
+ -ms-flex: 0 0 58.33333%;
+ flex: 0 0 58.33333%;
+ max-width: 58.33333%; }
+ .medium-offset-6 {
+ margin-left: 50%; }
+ .medium-8 {
+ -webkit-flex: 0 0 66.66667%;
+ -ms-flex: 0 0 66.66667%;
+ flex: 0 0 66.66667%;
+ max-width: 66.66667%; }
+ .medium-offset-7 {
+ margin-left: 58.33333%; }
+ .medium-9 {
+ -webkit-flex: 0 0 75%;
+ -ms-flex: 0 0 75%;
+ flex: 0 0 75%;
+ max-width: 75%; }
+ .medium-offset-8 {
+ margin-left: 66.66667%; }
+ .medium-10 {
+ -webkit-flex: 0 0 83.33333%;
+ -ms-flex: 0 0 83.33333%;
+ flex: 0 0 83.33333%;
+ max-width: 83.33333%; }
+ .medium-offset-9 {
+ margin-left: 75%; }
+ .medium-11 {
+ -webkit-flex: 0 0 91.66667%;
+ -ms-flex: 0 0 91.66667%;
+ flex: 0 0 91.66667%;
+ max-width: 91.66667%; }
+ .medium-offset-10 {
+ margin-left: 83.33333%; }
+ .medium-12 {
+ -webkit-flex: 0 0 100%;
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%; }
+ .medium-offset-11 {
+ margin-left: 91.66667%; }
+ .medium-order-1 {
+ -webkit-order: 1;
+ -ms-flex-order: 1;
+ order: 1; }
+ .medium-order-2 {
+ -webkit-order: 2;
+ -ms-flex-order: 2;
+ order: 2; }
+ .medium-order-3 {
+ -webkit-order: 3;
+ -ms-flex-order: 3;
+ order: 3; }
+ .medium-order-4 {
+ -webkit-order: 4;
+ -ms-flex-order: 4;
+ order: 4; }
+ .medium-order-5 {
+ -webkit-order: 5;
+ -ms-flex-order: 5;
+ order: 5; }
+ .medium-order-6 {
+ -webkit-order: 6;
+ -ms-flex-order: 6;
+ order: 6; } }
+
+@media screen and (min-width: 40em) and (min-width: 40em) {
+ .medium-expand {
+ -webkit-flex: 1 1 0px;
+ -ms-flex: 1 1 0px;
+ flex: 1 1 0px; } }
+
+.row.medium-unstack .column, .row.medium-unstack .columns {
+ -webkit-flex: 0 0 100%;
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%; }
+ @media screen and (min-width: 40em) {
+ .row.medium-unstack .column, .row.medium-unstack .columns {
+ -webkit-flex: 1 1 0px;
+ -ms-flex: 1 1 0px;
+ flex: 1 1 0px; } }
+
+@media screen and (min-width: 40em) {
+ .medium-collapse > .column, .medium-collapse > .columns {
+ padding-left: 0;
+ padding-right: 0; }
+ .medium-uncollapse > .column, .medium-uncollapse > .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem; } }
+
+@media screen and (min-width: 64em) {
+ .large-1 {
+ -webkit-flex: 0 0 8.33333%;
+ -ms-flex: 0 0 8.33333%;
+ flex: 0 0 8.33333%;
+ max-width: 8.33333%; }
+ .large-offset-0 {
+ margin-left: 0%; }
+ .large-2 {
+ -webkit-flex: 0 0 16.66667%;
+ -ms-flex: 0 0 16.66667%;
+ flex: 0 0 16.66667%;
+ max-width: 16.66667%; }
+ .large-offset-1 {
+ margin-left: 8.33333%; }
+ .large-3 {
+ -webkit-flex: 0 0 25%;
+ -ms-flex: 0 0 25%;
+ flex: 0 0 25%;
+ max-width: 25%; }
+ .large-offset-2 {
+ margin-left: 16.66667%; }
+ .large-4 {
+ -webkit-flex: 0 0 33.33333%;
+ -ms-flex: 0 0 33.33333%;
+ flex: 0 0 33.33333%;
+ max-width: 33.33333%; }
+ .large-offset-3 {
+ margin-left: 25%; }
+ .large-5 {
+ -webkit-flex: 0 0 41.66667%;
+ -ms-flex: 0 0 41.66667%;
+ flex: 0 0 41.66667%;
+ max-width: 41.66667%; }
+ .large-offset-4 {
+ margin-left: 33.33333%; }
+ .large-6 {
+ -webkit-flex: 0 0 50%;
+ -ms-flex: 0 0 50%;
+ flex: 0 0 50%;
+ max-width: 50%; }
+ .large-offset-5 {
+ margin-left: 41.66667%; }
+ .large-7 {
+ -webkit-flex: 0 0 58.33333%;
+ -ms-flex: 0 0 58.33333%;
+ flex: 0 0 58.33333%;
+ max-width: 58.33333%; }
+ .large-offset-6 {
+ margin-left: 50%; }
+ .large-8 {
+ -webkit-flex: 0 0 66.66667%;
+ -ms-flex: 0 0 66.66667%;
+ flex: 0 0 66.66667%;
+ max-width: 66.66667%; }
+ .large-offset-7 {
+ margin-left: 58.33333%; }
+ .large-9 {
+ -webkit-flex: 0 0 75%;
+ -ms-flex: 0 0 75%;
+ flex: 0 0 75%;
+ max-width: 75%; }
+ .large-offset-8 {
+ margin-left: 66.66667%; }
+ .large-10 {
+ -webkit-flex: 0 0 83.33333%;
+ -ms-flex: 0 0 83.33333%;
+ flex: 0 0 83.33333%;
+ max-width: 83.33333%; }
+ .large-offset-9 {
+ margin-left: 75%; }
+ .large-11 {
+ -webkit-flex: 0 0 91.66667%;
+ -ms-flex: 0 0 91.66667%;
+ flex: 0 0 91.66667%;
+ max-width: 91.66667%; }
+ .large-offset-10 {
+ margin-left: 83.33333%; }
+ .large-12 {
+ -webkit-flex: 0 0 100%;
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%;
+ max-width: 100%; }
+ .large-offset-11 {
+ margin-left: 91.66667%; }
+ .large-order-1 {
+ -webkit-order: 1;
+ -ms-flex-order: 1;
+ order: 1; }
+ .large-order-2 {
+ -webkit-order: 2;
+ -ms-flex-order: 2;
+ order: 2; }
+ .large-order-3 {
+ -webkit-order: 3;
+ -ms-flex-order: 3;
+ order: 3; }
+ .large-order-4 {
+ -webkit-order: 4;
+ -ms-flex-order: 4;
+ order: 4; }
+ .large-order-5 {
+ -webkit-order: 5;
+ -ms-flex-order: 5;
+ order: 5; }
+ .large-order-6 {
+ -webkit-order: 6;
+ -ms-flex-order: 6;
+ order: 6; } }
+
+@media screen and (min-width: 64em) and (min-width: 64em) {
+ .large-expand {
+ -webkit-flex: 1 1 0px;
+ -ms-flex: 1 1 0px;
+ flex: 1 1 0px; } }
+
+.row.large-unstack .column, .row.large-unstack .columns {
+ -webkit-flex: 0 0 100%;
+ -ms-flex: 0 0 100%;
+ flex: 0 0 100%; }
+ @media screen and (min-width: 64em) {
+ .row.large-unstack .column, .row.large-unstack .columns {
+ -webkit-flex: 1 1 0px;
+ -ms-flex: 1 1 0px;
+ flex: 1 1 0px; } }
+
+@media screen and (min-width: 64em) {
+ .large-collapse > .column, .large-collapse > .columns {
+ padding-left: 0;
+ padding-right: 0; }
+ .large-uncollapse > .column, .large-uncollapse > .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem; } }
+
+.shrink {
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ max-width: 100%; }
+
+.row.align-right {
+ -webkit-justify-content: flex-end;
+ -ms-flex-pack: end;
+ justify-content: flex-end; }
+
+.row.align-center {
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center; }
+
+.row.align-justify {
+ -webkit-justify-content: space-between;
+ -ms-flex-pack: justify;
+ justify-content: space-between; }
+
+.row.align-spaced {
+ -webkit-justify-content: space-around;
+ -ms-flex-pack: distribute;
+ justify-content: space-around; }
+
+.row.align-top {
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start; }
+
+.column.align-top, .align-top.columns {
+ -webkit-align-self: flex-start;
+ -ms-flex-item-align: start;
+ align-self: flex-start; }
+
+.row.align-bottom {
+ -webkit-align-items: flex-end;
+ -ms-flex-align: end;
+ align-items: flex-end; }
+
+.column.align-bottom, .align-bottom.columns {
+ -webkit-align-self: flex-end;
+ -ms-flex-item-align: end;
+ align-self: flex-end; }
+
+.row.align-middle {
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center; }
+
+.column.align-middle, .align-middle.columns {
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center; }
+
+.row.align-stretch {
+ -webkit-align-items: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch; }
+
+.column.align-stretch, .align-stretch.columns {
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch; }
+
+div,
+dl,
+dt,
+dd,
+ul,
+ol,
+li,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+pre,
+form,
+p,
+blockquote,
+th,
+td {
+ margin: 0;
+ padding: 0; }
+
+p {
+ font-size: inherit;
+ line-height: 1.6;
+ margin-bottom: 1rem;
+ text-rendering: optimizeLegibility; }
+
+em,
+i {
+ font-style: italic;
+ line-height: inherit; }
+
+strong,
+b {
+ font-weight: bold;
+ line-height: inherit; }
+
+small {
+ font-size: 80%;
+ line-height: inherit; }
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
+ font-weight: normal;
+ font-style: normal;
+ color: #222222;
+ text-rendering: optimizeLegibility;
+ margin-top: 0;
+ margin-bottom: 0.5rem;
+ line-height: 1.4; }
+ h1 small,
+ h2 small,
+ h3 small,
+ h4 small,
+ h5 small,
+ h6 small {
+ color: #cacaca;
+ line-height: 0; }
+
+h1 {
+ font-size: 1.5rem; }
+
+h2 {
+ font-size: 1.25rem; }
+
+h3 {
+ font-size: 1.1875rem; }
+
+h4 {
+ font-size: 1.125rem; }
+
+h5 {
+ font-size: 1.0625rem; }
+
+h6 {
+ font-size: 1rem; }
+
+@media 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 {
+ color: #2F343B;
+ text-decoration: none;
+ line-height: inherit;
+ cursor: pointer; }
+ a:hover, a:focus {
+ color: #282d33; }
+ a img {
+ border: 0; }
+
+hr {
+ max-width: 62.5rem;
+ height: 0;
+ border-right: 0;
+ border-top: 0;
+ border-bottom: 1px solid #cacaca;
+ border-left: 0;
+ margin: 1.25rem auto;
+ clear: both; }
+
+ul,
+ol,
+dl {
+ line-height: 1.6;
+ margin-bottom: 1rem;
+ list-style-position: outside; }
+
+li {
+ font-size: inherit; }
+
+ul {
+ list-style-type: disc;
+ margin-left: 1.25rem; }
+
+ol {
+ margin-left: 1.25rem; }
+
+ul ul, ol ul, ul ol, ol ol {
+ margin-left: 1.25rem;
+ margin-bottom: 0; }
+
+dl {
+ margin-bottom: 1rem; }
+ dl dt {
+ margin-bottom: 0.3rem;
+ font-weight: bold; }
+
+blockquote {
+ margin: 0 0 1rem;
+ padding: 0.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: 0.8125rem;
+ color: #8a8a8a; }
+ cite:before {
+ content: '\2014 \0020'; }
+
+abbr {
+ color: #222222;
+ cursor: help;
+ border-bottom: 1px dotted #0a0a0a; }
+
+code {
+ font-family: Consolas, "Liberation Mono", Courier, monospace;
+ font-weight: normal;
+ color: #0a0a0a;
+ background-color: #e6e6e6;
+ border: 1px solid #cacaca;
+ padding: 0.125rem 0.3125rem 0.0625rem; }
+
+kbd {
+ padding: 0.125rem 0.25rem 0;
+ margin: 0;
+ background-color: #e6e6e6;
+ color: #0a0a0a;
+ font-family: Consolas, "Liberation Mono", Courier, monospace; }
+
+.subheader {
+ margin-top: 0.2rem;
+ margin-bottom: 0.5rem;
+ font-weight: normal;
+ 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 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 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;
+ color: black !important;
+ box-shadow: none !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 {
+ display: table-cell !important; }
+ 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^='javascript:']:after,
+ a[href^='#']:after {
+ content: ''; }
+ abbr[title]:after {
+ content: " (" attr(title) ")"; }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid; }
+ thead {
+ display: table-header-group; }
+ tr,
+ img {
+ page-break-inside: avoid; }
+ img {
+ max-width: 100% !important; }
+ @page {
+ margin: 0.5cm; }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3; }
+ h2,
+ h3 {
+ page-break-after: avoid; } }
+
+.button {
+ display: inline-block;
+ text-align: center;
+ line-height: 1;
+ cursor: pointer;
+ -webkit-appearance: none;
+ transition: background-color 0.25s ease-out, color 0.25s ease-out;
+ vertical-align: middle;
+ border: 1px solid transparent;
+ border-radius: 3px;
+ padding: 0.85em 1em;
+ margin: 0 0 1rem 0;
+ font-size: 0.9rem;
+ background-color: #2F343B;
+ color: #fff; }
+ [data-whatinput='mouse'] .button {
+ outline: 0; }
+ .button:hover, .button:focus {
+ background-color: #282c32;
+ color: #fff; }
+ .button.tiny {
+ font-size: 0.6rem; }
+ .button.small {
+ font-size: 0.75rem; }
+ .button.large {
+ font-size: 1.25rem; }
+ .button.expanded {
+ display: block;
+ width: 100%;
+ margin-left: 0;
+ margin-right: 0; }
+ .button.primary {
+ background-color: #2F343B;
+ color: #fff; }
+ .button.primary:hover, .button.primary:focus {
+ background-color: #262a2f;
+ color: #fff; }
+ .button.secondary {
+ background-color: #703030;
+ color: #fff; }
+ .button.secondary:hover, .button.secondary:focus {
+ background-color: #5a2626;
+ color: #fff; }
+ .button.success {
+ background-color: #5da423;
+ color: #fff; }
+ .button.success:hover, .button.success:focus {
+ background-color: #4a831c;
+ color: #fff; }
+ .button.alert {
+ background-color: #703030;
+ color: #fff; }
+ .button.alert:hover, .button.alert:focus {
+ background-color: #5a2626;
+ color: #fff; }
+ .button.warning {
+ background-color: #ffae00;
+ color: #fff; }
+ .button.warning:hover, .button.warning:focus {
+ background-color: #cc8b00;
+ color: #fff; }
+ .button.hollow {
+ border: 1px solid #2F343B;
+ color: #2F343B; }
+ .button.hollow, .button.hollow:hover, .button.hollow:focus {
+ background-color: transparent; }
+ .button.hollow:hover, .button.hollow:focus {
+ border-color: #181a1e;
+ color: #181a1e; }
+ .button.hollow.primary {
+ border: 1px solid #2F343B;
+ color: #2F343B; }
+ .button.hollow.primary:hover, .button.hollow.primary:focus {
+ border-color: #181a1e;
+ color: #181a1e; }
+ .button.hollow.secondary {
+ border: 1px solid #703030;
+ color: #703030; }
+ .button.hollow.secondary:hover, .button.hollow.secondary:focus {
+ border-color: #381818;
+ color: #381818; }
+ .button.hollow.success {
+ border: 1px solid #5da423;
+ color: #5da423; }
+ .button.hollow.success:hover, .button.hollow.success:focus {
+ border-color: #2f5212;
+ color: #2f5212; }
+ .button.hollow.alert {
+ border: 1px solid #703030;
+ color: #703030; }
+ .button.hollow.alert:hover, .button.hollow.alert:focus {
+ border-color: #381818;
+ color: #381818; }
+ .button.hollow.warning {
+ border: 1px solid #ffae00;
+ color: #ffae00; }
+ .button.hollow.warning:hover, .button.hollow.warning:focus {
+ border-color: #805700;
+ color: #805700; }
+ .button.disabled, .button[disabled] {
+ opacity: 0.25;
+ cursor: not-allowed;
+ pointer-events: none; }
+ .button.dropdown::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.4em;
+ border-color: #fefefe transparent transparent;
+ border-top-style: solid;
+ border-bottom-width: 0;
+ position: relative;
+ top: 0.4em;
+ float: right;
+ margin-left: 1em;
+ display: inline-block; }
+ .button.arrow-only::after {
+ margin-left: 0;
+ float: none;
+ top: 0.2em; }
+
+[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'],
+textarea {
+ display: block;
+ box-sizing: border-box;
+ width: 100%;
+ height: 2.4375rem;
+ padding: 0.5rem;
+ border: 1px solid #cacaca;
+ margin: 0 0 1rem;
+ font-family: inherit;
+ font-size: 1rem;
+ color: #0a0a0a;
+ background-color: #fefefe;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);
+ border-radius: 3px;
+ transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
+ -webkit-appearance: none;
+ -moz-appearance: none; }
+ [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,
+ textarea:focus {
+ border: 1px solid #8a8a8a;
+ background-color: #fefefe;
+ outline: none;
+ box-shadow: 0 0 5px #cacaca;
+ transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }
+
+textarea {
+ max-width: 100%; }
+ textarea[rows] {
+ height: auto; }
+
+input:disabled, input[readonly],
+textarea:disabled,
+textarea[readonly] {
+ background-color: #e6e6e6;
+ cursor: default; }
+
+[type='submit'],
+[type='button'] {
+ border-radius: 3px;
+ -webkit-appearance: none;
+ -moz-appearance: none; }
+
+input[type='search'] {
+ box-sizing: border-box; }
+
+[type='file'],
+[type='checkbox'],
+[type='radio'] {
+ margin: 0 0 1rem; }
+
+[type='checkbox'] + label,
+[type='radio'] + label {
+ display: inline-block;
+ margin-left: 0.5rem;
+ margin-right: 1rem;
+ margin-bottom: 0;
+ vertical-align: baseline; }
+
+label > [type='checkbox'],
+label > [type='label'] {
+ margin-right: 0.5rem; }
+
+[type='file'] {
+ width: 100%; }
+
+label {
+ display: block;
+ margin: 0;
+ font-size: 0.875rem;
+ font-weight: normal;
+ line-height: 1.8;
+ color: #0a0a0a; }
+ label.middle {
+ margin: 0 0 1rem;
+ padding: 0.5625rem 0; }
+
+.help-text {
+ margin-top: -0.5rem;
+ font-size: 0.8125rem;
+ font-style: italic;
+ color: #333; }
+
+.input-group {
+ display: table;
+ width: 100%;
+ margin-bottom: 1rem; }
+ .input-group > :first-child {
+ border-radius: 3px 0 0 3px; }
+ .input-group > :last-child > * {
+ border-radius: 0 3px 3px 0; }
+
+.input-group-label, .input-group-field, .input-group-button {
+ display: table-cell;
+ margin: 0;
+ vertical-align: middle; }
+
+.input-group-label {
+ text-align: center;
+ width: 1%;
+ height: 100%;
+ padding: 0 1rem;
+ background: #e6e6e6;
+ color: #0a0a0a;
+ border: 1px solid #cacaca;
+ white-space: nowrap; }
+ .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 {
+ height: 100%;
+ padding-top: 0;
+ padding-bottom: 0;
+ text-align: center;
+ width: 1%; }
+ .input-group-button a,
+ .input-group-button input,
+ .input-group-button button {
+ margin: 0; }
+
+fieldset {
+ border: 0;
+ padding: 0;
+ margin: 0; }
+
+legend {
+ margin-bottom: 0.5rem;
+ max-width: 100%; }
+
+.fieldset {
+ border: 1px solid #cacaca;
+ padding: 1.25rem;
+ margin: 1.125rem 0; }
+ .fieldset legend {
+ background: #fefefe;
+ padding: 0 0.1875rem;
+ margin: 0;
+ margin-left: -0.1875rem; }
+
+select {
+ height: 2.4375rem;
+ padding: 0.5rem;
+ border: 1px solid #cacaca;
+ margin: 0 0 1rem;
+ font-size: 1rem;
+ font-family: inherit;
+ line-height: normal;
+ color: #0a0a0a;
+ background-color: #fefefe;
+ border-radius: 3px;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="24" viewBox="0 0 32 24"><polygon points="0,0 32,0 16,24" style="fill: rgb%2851, 51, 51%29"></polygon></svg>');
+ background-size: 9px 6px;
+ background-position: right center;
+ background-origin: content-box;
+ background-repeat: no-repeat; }
+ @media screen and (min-width: 0\0) {
+ select {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } }
+ select:disabled {
+ background-color: #e6e6e6;
+ cursor: default; }
+ select::-ms-expand {
+ display: none; }
+ select[multiple] {
+ height: auto; }
+
+.is-invalid-input:not(:focus) {
+ background-color: rgba(112, 48, 48, 0.1);
+ border-color: #703030; }
+
+.is-invalid-label {
+ color: #703030; }
+
+.form-error {
+ display: none;
+ margin-top: -0.5rem;
+ margin-bottom: 1rem;
+ font-size: 0.75rem;
+ font-weight: bold;
+ color: #703030; }
+ .form-error.is-visible {
+ display: block; }
+
+.float-left {
+ float: left !important; }
+
+.float-right {
+ float: right !important; }
+
+.float-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto; }
+
+.clearfix::before, .clearfix::after {
+ content: ' ';
+ display: table; }
+
+.clearfix::after {
+ clear: both; }
+
+.accordion {
+ list-style-type: none;
+ background: #fefefe;
+ border: 1px solid #e6e6e6;
+ border-bottom: 0;
+ border-radius: 3px;
+ margin-left: 0; }
+
+.accordion-title {
+ display: block;
+ padding: 1.25rem 1rem;
+ line-height: 1;
+ font-size: 0.75rem;
+ color: #2F343B;
+ position: relative;
+ border-bottom: 1px solid #e6e6e6; }
+ .accordion-title:hover, .accordion-title:focus {
+ background-color: #e6e6e6; }
+ .accordion-title::before {
+ content: '+';
+ position: absolute;
+ right: 1rem;
+ top: 50%;
+ margin-top: -0.5rem; }
+ .is-active > .accordion-title::before {
+ content: '–'; }
+
+.accordion-content {
+ padding: 1rem;
+ display: none;
+ border-bottom: 1px solid #e6e6e6;
+ background-color: #fefefe; }
+
+.is-accordion-submenu-parent > a {
+ position: relative; }
+ .is-accordion-submenu-parent > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ border-color: #2F343B transparent transparent;
+ border-top-style: solid;
+ border-bottom-width: 0;
+ position: absolute;
+ top: 50%;
+ margin-top: -4px;
+ right: 1rem; }
+
+.is-accordion-submenu-parent[aria-expanded='true'] > a::after {
+ -webkit-transform-origin: 50% 50%;
+ -ms-transform-origin: 50% 50%;
+ transform-origin: 50% 50%;
+ -webkit-transform: scaleY(-1);
+ -ms-transform: scaleY(-1);
+ transform: scaleY(-1); }
+
+.badge {
+ display: inline-block;
+ padding: 0.3em;
+ min-width: 2.1em;
+ font-size: 0.6rem;
+ text-align: center;
+ border-radius: 50%;
+ background: #2F343B;
+ color: #fefefe; }
+ .badge.secondary {
+ background: #703030;
+ color: #fefefe; }
+ .badge.success {
+ background: #5da423;
+ color: #fefefe; }
+ .badge.alert {
+ background: #703030;
+ color: #fefefe; }
+ .badge.warning {
+ background: #ffae00;
+ color: #fefefe; }
+
+.breadcrumbs {
+ list-style: none;
+ margin: 0 0 1rem 0; }
+ .breadcrumbs::before, .breadcrumbs::after {
+ content: ' ';
+ display: table; }
+ .breadcrumbs::after {
+ clear: both; }
+ .breadcrumbs li {
+ float: left;
+ color: #0a0a0a;
+ font-size: 0.6875rem;
+ cursor: default;
+ text-transform: uppercase; }
+ .breadcrumbs li:not(:last-child)::after {
+ color: #cacaca;
+ content: "/";
+ margin: 0 0.75rem;
+ position: relative;
+ top: 1px;
+ opacity: 1; }
+ .breadcrumbs a {
+ color: #2F343B; }
+ .breadcrumbs a:hover {
+ text-decoration: underline; }
+ .breadcrumbs .disabled {
+ color: #cacaca; }
+
+.button-group {
+ margin-bottom: 1rem;
+ font-size: 0.9rem; }
+ .button-group::before, .button-group::after {
+ content: ' ';
+ display: table; }
+ .button-group::after {
+ clear: both; }
+ .button-group .button {
+ float: left;
+ margin: 0;
+ font-size: inherit; }
+ .button-group .button:not(:last-child) {
+ border-right: 1px solid #fefefe; }
+ .button-group.tiny {
+ font-size: 0.6rem; }
+ .button-group.small {
+ font-size: 0.75rem; }
+ .button-group.large {
+ font-size: 1.25rem; }
+ .button-group.expanded {
+ display: table;
+ table-layout: fixed;
+ width: 100%; }
+ .button-group.expanded::before, .button-group.expanded::after {
+ display: none; }
+ .button-group.expanded .button {
+ display: table-cell;
+ float: none; }
+ .button-group.primary .button {
+ background-color: #2F343B;
+ color: #fefefe; }
+ .button-group.primary .button:hover, .button-group.primary .button:focus {
+ background-color: #262a2f;
+ color: #fefefe; }
+ .button-group.secondary .button {
+ background-color: #703030;
+ color: #fefefe; }
+ .button-group.secondary .button:hover, .button-group.secondary .button:focus {
+ background-color: #5a2626;
+ color: #fefefe; }
+ .button-group.success .button {
+ background-color: #5da423;
+ color: #fefefe; }
+ .button-group.success .button:hover, .button-group.success .button:focus {
+ background-color: #4a831c;
+ color: #fefefe; }
+ .button-group.alert .button {
+ background-color: #703030;
+ color: #fefefe; }
+ .button-group.alert .button:hover, .button-group.alert .button:focus {
+ background-color: #5a2626;
+ color: #fefefe; }
+ .button-group.warning .button {
+ background-color: #ffae00;
+ color: #fefefe; }
+ .button-group.warning .button:hover, .button-group.warning .button:focus {
+ background-color: #cc8b00;
+ color: #fefefe; }
+ .button-group.stacked .button, .button-group.stacked-for-small .button {
+ width: 100%; }
+ .button-group.stacked .button:not(:last-child), .button-group.stacked-for-small .button:not(:last-child) {
+ border-right: 1px solid; }
+ @media screen and (min-width: 40em) {
+ .button-group.stacked-for-small .button {
+ width: auto; }
+ .button-group.stacked-for-small .button:not(:last-child) {
+ border-right: 1px solid #fefefe; } }
+ @media screen and (min-width: 0em) and (max-width: 39.9375em) {
+ .button-group.stacked-for-small.expanded {
+ display: block; }
+ .button-group.stacked-for-small.expanded .button {
+ display: block;
+ border-right: 0; } }
+
+.callout {
+ margin: 0 0 1rem 0;
+ padding: 1rem;
+ border: 1px solid rgba(10, 10, 10, 0.25);
+ border-radius: 3px;
+ position: relative;
+ color: #222222;
+ background-color: white; }
+ .callout > :first-child {
+ margin-top: 0; }
+ .callout > :last-child {
+ margin-bottom: 0; }
+ .callout.primary {
+ background-color: #dde0e4; }
+ .callout.secondary {
+ background-color: #efdada; }
+ .callout.success {
+ background-color: #e6f7d9; }
+ .callout.alert {
+ background-color: #efdada; }
+ .callout.warning {
+ background-color: #fff3d9; }
+ .callout.small {
+ padding-top: 0.5rem;
+ padding-right: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 0.5rem; }
+ .callout.large {
+ padding-top: 3rem;
+ padding-right: 3rem;
+ padding-bottom: 3rem;
+ padding-left: 3rem; }
+
+.close-button {
+ position: absolute;
+ color: #8a8a8a;
+ right: 1rem;
+ top: 0.5rem;
+ font-size: 2em;
+ line-height: 1;
+ cursor: pointer; }
+ [data-whatinput='mouse'] .close-button {
+ outline: 0; }
+ .close-button:hover, .close-button:focus {
+ color: #0a0a0a; }
+
+.is-drilldown {
+ position: relative;
+ overflow: hidden; }
+
+.is-drilldown-submenu {
+ position: absolute;
+ top: 0;
+ left: 100%;
+ z-index: -1;
+ height: 100%;
+ width: 100%;
+ background: #fefefe;
+ transition: -webkit-transform 0.15s linear;
+ transition: transform 0.15s linear; }
+ .is-drilldown-submenu.is-active {
+ z-index: 1;
+ display: block;
+ -webkit-transform: translateX(-100%);
+ -ms-transform: translateX(-100%);
+ transform: translateX(-100%); }
+ .is-drilldown-submenu.is-closing {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%); }
+
+.is-drilldown-submenu-parent > a {
+ position: relative; }
+ .is-drilldown-submenu-parent > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ border-color: transparent transparent transparent #2F343B;
+ border-left-style: solid;
+ border-right-width: 0;
+ position: absolute;
+ top: 50%;
+ margin-top: -6px;
+ right: 1rem; }
+
+.js-drilldown-back > a::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ border-color: transparent #2F343B transparent transparent;
+ border-right-style: solid;
+ border-left-width: 0;
+ border-left-width: 0;
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: 0.75rem; }
+
+.dropdown-pane {
+ background-color: #fefefe;
+ border: 1px solid #cacaca;
+ border-radius: 3px;
+ display: block;
+ font-size: 1rem;
+ padding: 1rem;
+ position: absolute;
+ visibility: hidden;
+ width: 300px;
+ z-index: 10; }
+ .dropdown-pane.is-open {
+ visibility: visible; }
+
+.dropdown-pane.tiny {
+ width: 100px; }
+
+.dropdown-pane.small {
+ width: 200px; }
+
+.dropdown-pane.large {
+ width: 400px; }
+
+[data-whatinput='mouse'] .dropdown.menu a {
+ outline: 0; }
+
+.no-js .dropdown.menu ul {
+ display: none; }
+
+.dropdown.menu:not(.vertical) .is-dropdown-submenu.first-sub {
+ top: 100%;
+ left: 0;
+ right: auto; }
+
+.dropdown.menu.align-right .is-dropdown-submenu.first-sub {
+ top: 100%;
+ left: auto;
+ right: 0; }
+
+.is-dropdown-menu.vertical {
+ width: 100px; }
+ .is-dropdown-menu.vertical.align-right {
+ float: right; }
+ .is-dropdown-menu.vertical > li .is-dropdown-submenu {
+ top: 0;
+ left: 100%; }
+
+.is-dropdown-submenu-parent {
+ position: relative; }
+ .is-dropdown-submenu-parent a::after {
+ float: right;
+ margin-top: 3px;
+ margin-left: 10px; }
+ .is-dropdown-submenu-parent.is-down-arrow a {
+ padding-right: 1.5rem;
+ position: relative; }
+ .is-dropdown-submenu-parent.is-down-arrow > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 5px;
+ border-color: #2F343B transparent transparent;
+ border-top-style: solid;
+ border-bottom-width: 0;
+ position: absolute;
+ top: 0.825rem;
+ right: 5px; }
+ .is-dropdown-submenu-parent.is-left-arrow > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 5px;
+ border-color: transparent #2F343B transparent transparent;
+ border-right-style: solid;
+ border-left-width: 0;
+ float: left;
+ margin-left: 0;
+ margin-right: 10px; }
+ .is-dropdown-submenu-parent.is-right-arrow > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 5px;
+ border-color: transparent transparent transparent #2F343B;
+ border-left-style: solid;
+ border-right-width: 0; }
+ .is-dropdown-submenu-parent.is-left-arrow.opens-inner .is-dropdown-submenu {
+ right: 0;
+ left: auto; }
+ .is-dropdown-submenu-parent.is-right-arrow.opens-inner .is-dropdown-submenu {
+ left: 0;
+ right: auto; }
+ .is-dropdown-submenu-parent.opens-inner .is-dropdown-submenu {
+ top: 100%; }
+ .is-dropdown-submenu-parent.opens-left .is-dropdown-submenu {
+ left: auto;
+ right: 100%; }
+
+.is-dropdown-submenu {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 100%;
+ min-width: 200px;
+ z-index: 1;
+ background: #fefefe;
+ border: 1px solid #cacaca; }
+ .is-dropdown-submenu .is-dropdown-submenu {
+ margin-top: -1px; }
+ .is-dropdown-submenu > li {
+ width: 100%; }
+ .is-dropdown-submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .is-dropdown-submenu, .is-dropdown-submenu.js-dropdown-active {
+ display: block; }
+
+.flex-video {
+ position: relative;
+ height: 0;
+ padding-bottom: 75%;
+ margin-bottom: 1rem;
+ overflow: hidden; }
+ .flex-video iframe,
+ .flex-video object,
+ .flex-video embed,
+ .flex-video video {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%; }
+ .flex-video.widescreen {
+ padding-bottom: 56.25%; }
+ .flex-video.vimeo {
+ padding-top: 0; }
+
+.label {
+ display: inline-block;
+ padding: 0.33333rem 0.5rem;
+ font-size: 0.8rem;
+ line-height: 1;
+ white-space: nowrap;
+ cursor: default;
+ border-radius: 3px;
+ background: #2F343B;
+ color: #fefefe; }
+ .label.secondary {
+ background: #703030;
+ color: #fefefe; }
+ .label.success {
+ background: #5da423;
+ color: #fefefe; }
+ .label.alert {
+ background: #703030;
+ color: #fefefe; }
+ .label.warning {
+ background: #ffae00;
+ color: #fefefe; }
+
+.media-object {
+ margin-bottom: 1rem;
+ display: block; }
+ .media-object img {
+ max-width: none; }
+ @media screen and (min-width: 0em) and (max-width: 39.9375em) {
+ .media-object.stack-for-small .media-object-section {
+ display: block;
+ padding: 0;
+ padding-bottom: 1rem; }
+ .media-object.stack-for-small .media-object-section img {
+ width: 100%; } }
+
+.media-object-section {
+ display: table-cell;
+ vertical-align: top; }
+ .media-object-section:first-child {
+ padding-right: 1rem; }
+ .media-object-section:last-child:not(:nth-child(2)) {
+ padding-left: 1rem; }
+ .media-object-section.middle {
+ vertical-align: middle; }
+ .media-object-section.bottom {
+ vertical-align: bottom; }
+
+.menu {
+ margin: 0;
+ list-style-type: none; }
+ .menu > li {
+ display: table-cell;
+ vertical-align: middle; }
+ [data-whatinput='mouse'] .menu > li {
+ outline: 0; }
+ .menu > li > a {
+ display: block;
+ padding: 0.7rem 1rem;
+ line-height: 1; }
+ .menu input,
+ .menu a,
+ .menu button {
+ margin-bottom: 0; }
+ .menu > li > a > img,
+ .menu > li > a > i {
+ vertical-align: middle; }
+ .menu > li > a > span {
+ vertical-align: middle; }
+ .menu > li > a > img,
+ .menu > li > a > i {
+ display: inline-block;
+ margin-right: 0.25rem; }
+ .menu > li {
+ display: table-cell; }
+ .menu.vertical > li {
+ display: block; }
+ @media screen and (min-width: 40em) {
+ .menu.medium-horizontal > li {
+ display: table-cell; }
+ .menu.medium-vertical > li {
+ display: block; } }
+ @media screen and (min-width: 64em) {
+ .menu.large-horizontal > li {
+ display: table-cell; }
+ .menu.large-vertical > li {
+ display: block; } }
+ .menu.simple li {
+ line-height: 1;
+ display: inline-block;
+ margin-right: 1rem; }
+ .menu.simple a {
+ padding: 0; }
+ .menu.align-right > li {
+ float: right; }
+ .menu.expanded {
+ display: table;
+ table-layout: fixed;
+ width: 100%; }
+ .menu.expanded > li:first-child:last-child {
+ width: 100%; }
+ .menu.icon-top > li > a {
+ text-align: center; }
+ .menu.icon-top > li > a > img,
+ .menu.icon-top > li > a > i {
+ display: block;
+ margin: 0 auto 0.25rem; }
+ .menu.nested {
+ margin-left: 1rem; }
+
+.menu-text {
+ font-weight: bold;
+ color: inherit;
+ line-height: 1;
+ padding-top: 0;
+ padding-bottom: 0;
+ padding: 0.7rem 1rem; }
+
+.no-js [data-responsive-menu] ul {
+ display: none; }
+
+html,
+body {
+ height: 100%; }
+
+.off-canvas-wrapper {
+ width: 100%;
+ overflow-x: hidden;
+ position: relative;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-overflow-scrolling: auto; }
+
+.off-canvas-wrapper-inner {
+ position: relative;
+ width: 100%;
+ transition: -webkit-transform 0.5s ease;
+ transition: transform 0.5s ease; }
+ .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after {
+ content: ' ';
+ display: table; }
+ .off-canvas-wrapper-inner::after {
+ clear: both; }
+
+.off-canvas-content,
+.off-canvas-content {
+ min-height: 100%;
+ background: #fefefe;
+ transition: -webkit-transform 0.5s ease;
+ transition: transform 0.5s ease;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ z-index: 1;
+ box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); }
+
+.js-off-canvas-exit {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(254, 254, 254, 0.25);
+ cursor: pointer;
+ transition: background 0.5s ease; }
+
+.off-canvas {
+ position: absolute;
+ background: #e6e6e6;
+ z-index: -1;
+ max-height: 100%;
+ overflow-y: auto;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0); }
+ [data-whatinput='mouse'] .off-canvas {
+ outline: 0; }
+ .off-canvas.position-left {
+ left: -250px;
+ top: 0;
+ width: 250px; }
+ .is-open-left {
+ -webkit-transform: translateX(250px);
+ -ms-transform: translateX(250px);
+ transform: translateX(250px); }
+ .off-canvas.position-right {
+ right: -250px;
+ top: 0;
+ width: 250px; }
+ .is-open-right {
+ -webkit-transform: translateX(-250px);
+ -ms-transform: translateX(-250px);
+ transform: translateX(-250px); }
+
+@media screen and (min-width: 40em) {
+ .position-left.reveal-for-medium {
+ left: 0;
+ z-index: auto;
+ position: fixed; }
+ .position-left.reveal-for-medium ~ .off-canvas-content {
+ margin-left: 250px; }
+ .position-right.reveal-for-medium {
+ right: 0;
+ z-index: auto;
+ position: fixed; }
+ .position-right.reveal-for-medium ~ .off-canvas-content {
+ margin-right: 250px; } }
+
+@media screen and (min-width: 64em) {
+ .position-left.reveal-for-large {
+ left: 0;
+ z-index: auto;
+ position: fixed; }
+ .position-left.reveal-for-large ~ .off-canvas-content {
+ margin-left: 250px; }
+ .position-right.reveal-for-large {
+ right: 0;
+ z-index: auto;
+ position: fixed; }
+ .position-right.reveal-for-large ~ .off-canvas-content {
+ margin-right: 250px; } }
+
+.orbit {
+ position: relative; }
+
+.orbit-container {
+ position: relative;
+ margin: 0;
+ overflow: hidden;
+ list-style: none; }
+
+.orbit-slide {
+ width: 100%;
+ max-height: 100%; }
+ .orbit-slide.no-motionui.is-active {
+ top: 0;
+ left: 0; }
+
+.orbit-figure {
+ margin: 0; }
+
+.orbit-image {
+ margin: 0;
+ width: 100%;
+ max-width: 100%; }
+
+.orbit-caption {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ padding: 1rem;
+ margin-bottom: 0;
+ color: #fefefe;
+ background-color: rgba(10, 10, 10, 0.5); }
+
+.orbit-previous, .orbit-next {
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ z-index: 10;
+ padding: 1rem;
+ color: #fefefe; }
+ [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next {
+ outline: 0; }
+ .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus {
+ background-color: rgba(10, 10, 10, 0.5); }
+
+.orbit-previous {
+ left: 0; }
+
+.orbit-next {
+ left: auto;
+ right: 0; }
+
+.orbit-bullets {
+ position: relative;
+ margin-top: 0.8rem;
+ margin-bottom: 0.8rem;
+ text-align: center; }
+ [data-whatinput='mouse'] .orbit-bullets {
+ outline: 0; }
+ .orbit-bullets button {
+ width: 1.2rem;
+ height: 1.2rem;
+ margin: 0.1rem;
+ background-color: #cacaca;
+ border-radius: 50%; }
+ .orbit-bullets button:hover {
+ background-color: #8a8a8a; }
+ .orbit-bullets button.is-active {
+ background-color: #8a8a8a; }
+
+.pagination {
+ margin-left: 0;
+ margin-bottom: 1rem; }
+ .pagination::before, .pagination::after {
+ content: ' ';
+ display: table; }
+ .pagination::after {
+ clear: both; }
+ .pagination li {
+ font-size: 0.875rem;
+ margin-right: 0.0625rem;
+ border-radius: 3px;
+ display: none; }
+ .pagination li:last-child, .pagination li:first-child {
+ display: inline-block; }
+ @media screen and (min-width: 40em) {
+ .pagination li {
+ display: inline-block; } }
+ .pagination a,
+ .pagination button {
+ color: #0a0a0a;
+ display: block;
+ padding: 0.1875rem 0.625rem;
+ border-radius: 3px; }
+ .pagination a:hover,
+ .pagination button:hover {
+ background: #e6e6e6; }
+ .pagination .current {
+ padding: 0.1875rem 0.625rem;
+ background: #2F343B;
+ color: #fefefe;
+ cursor: default; }
+ .pagination .disabled {
+ padding: 0.1875rem 0.625rem;
+ color: #cacaca;
+ cursor: default; }
+ .pagination .disabled:hover {
+ background: transparent; }
+ .pagination .ellipsis::after {
+ content: '…';
+ padding: 0.1875rem 0.625rem;
+ color: #0a0a0a; }
+
+.pagination-previous a::before,
+.pagination-previous.disabled::before {
+ content: '«';
+ display: inline-block;
+ margin-right: 0.5rem; }
+
+.pagination-next a::after,
+.pagination-next.disabled::after {
+ content: '»';
+ display: inline-block;
+ margin-left: 0.5rem; }
+
+.progress {
+ background-color: #cacaca;
+ height: 1rem;
+ margin-bottom: 1rem;
+ border-radius: 3px; }
+ .progress.primary .progress-meter {
+ background-color: #2F343B; }
+ .progress.secondary .progress-meter {
+ background-color: #703030; }
+ .progress.success .progress-meter {
+ background-color: #5da423; }
+ .progress.alert .progress-meter {
+ background-color: #703030; }
+ .progress.warning .progress-meter {
+ background-color: #ffae00; }
+
+.progress-meter {
+ position: relative;
+ display: block;
+ width: 0%;
+ height: 100%;
+ background-color: #2F343B;
+ border-radius: 3px; }
+
+.progress-meter-text {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ position: absolute;
+ margin: 0;
+ font-size: 0.75rem;
+ font-weight: bold;
+ color: #fefefe;
+ white-space: nowrap;
+ border-radius: 3px; }
+
+.slider {
+ position: relative;
+ height: 0.5rem;
+ margin-top: 1.25rem;
+ margin-bottom: 2.25rem;
+ background-color: #e6e6e6;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -ms-touch-action: none;
+ touch-action: none; }
+
+.slider-fill {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: inline-block;
+ max-width: 100%;
+ height: 0.5rem;
+ background-color: #cacaca;
+ transition: all 0.2s ease-in-out; }
+ .slider-fill.is-dragging {
+ transition: all 0s linear; }
+
+.slider-handle {
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ position: absolute;
+ left: 0;
+ z-index: 1;
+ display: inline-block;
+ width: 1.4rem;
+ height: 1.4rem;
+ background-color: #2F343B;
+ transition: all 0.2s ease-in-out;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ border-radius: 3px; }
+ [data-whatinput='mouse'] .slider-handle {
+ outline: 0; }
+ .slider-handle:hover {
+ background-color: #282c32; }
+ .slider-handle.is-dragging {
+ transition: all 0s linear; }
+
+.slider.disabled,
+.slider[disabled] {
+ opacity: 0.25;
+ cursor: not-allowed; }
+
+.slider.vertical {
+ display: inline-block;
+ width: 0.5rem;
+ height: 12.5rem;
+ margin: 0 1.25rem;
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ transform: scale(1, -1); }
+ .slider.vertical .slider-fill {
+ top: 0;
+ width: 0.5rem;
+ max-height: 100%; }
+ .slider.vertical .slider-handle {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ width: 1.4rem;
+ height: 1.4rem;
+ -webkit-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%); }
+
+.sticky-container {
+ position: relative; }
+
+.sticky {
+ position: absolute;
+ z-index: 0;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0); }
+
+.sticky.is-stuck {
+ position: fixed;
+ z-index: 5; }
+ .sticky.is-stuck.is-at-top {
+ top: 0; }
+ .sticky.is-stuck.is-at-bottom {
+ bottom: 0; }
+
+.sticky.is-anchored {
+ position: absolute;
+ left: auto;
+ right: auto; }
+ .sticky.is-anchored.is-at-bottom {
+ bottom: 0; }
+
+body.is-reveal-open {
+ overflow: hidden; }
+
+.reveal-overlay {
+ display: none;
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 1005;
+ background-color: rgba(10, 10, 10, 0.45);
+ overflow-y: scroll; }
+
+.reveal {
+ display: none;
+ z-index: 1006;
+ padding: 1rem;
+ border: 1px solid #cacaca;
+ margin: 6.25rem auto 0;
+ background-color: #fefefe;
+ border-radius: 3px;
+ position: absolute;
+ overflow-y: auto; }
+ [data-whatinput='mouse'] .reveal {
+ outline: 0; }
+ @media screen and (min-width: 40em) {
+ .reveal {
+ min-height: 0; } }
+ .reveal .column, .reveal .columns,
+ .reveal .columns {
+ min-width: 0; }
+ .reveal > :last-child {
+ margin-bottom: 0; }
+ @media screen and (min-width: 40em) {
+ .reveal {
+ width: 600px;
+ max-width: 62.5rem; } }
+ @media screen and (min-width: 40em) {
+ .reveal .reveal {
+ left: auto;
+ right: auto;
+ margin: 0 auto; } }
+ .reveal.collapse {
+ padding: 0; }
+ @media screen and (min-width: 40em) {
+ .reveal.tiny {
+ width: 30%;
+ max-width: 62.5rem; } }
+ @media screen and (min-width: 40em) {
+ .reveal.small {
+ width: 50%;
+ max-width: 62.5rem; } }
+ @media screen and (min-width: 40em) {
+ .reveal.large {
+ width: 90%;
+ max-width: 62.5rem; } }
+ .reveal.full {
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ height: 100vh;
+ min-height: 100vh;
+ max-width: none;
+ margin-left: 0;
+ border: 0; }
+
+.switch {
+ margin-bottom: 1rem;
+ outline: 0;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ color: #fefefe;
+ font-weight: bold;
+ font-size: 0.875rem; }
+
+.switch-input {
+ opacity: 0;
+ position: absolute; }
+
+.switch-paddle {
+ background: #cacaca;
+ cursor: pointer;
+ display: block;
+ position: relative;
+ width: 4rem;
+ height: 2rem;
+ transition: all 0.25s ease-out;
+ border-radius: 3px;
+ color: inherit;
+ font-weight: inherit; }
+ input + .switch-paddle {
+ margin: 0; }
+ .switch-paddle::after {
+ background: #fefefe;
+ content: '';
+ display: block;
+ position: absolute;
+ height: 1.5rem;
+ left: 0.25rem;
+ top: 0.25rem;
+ width: 1.5rem;
+ transition: all 0.25s ease-out;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ border-radius: 3px; }
+ input:checked ~ .switch-paddle {
+ background: #2F343B; }
+ input:checked ~ .switch-paddle::after {
+ left: 2.25rem; }
+ [data-whatinput='mouse'] input:focus ~ .switch-paddle {
+ outline: 0; }
+
+.switch-active, .switch-inactive {
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%); }
+
+.switch-active {
+ left: 8%;
+ display: none; }
+ input:checked + label > .switch-active {
+ display: block; }
+
+.switch-inactive {
+ right: 15%; }
+ input:checked + label > .switch-inactive {
+ display: none; }
+
+.switch.tiny .switch-paddle {
+ width: 3rem;
+ height: 1.5rem;
+ font-size: 0.625rem; }
+
+.switch.tiny .switch-paddle::after {
+ width: 1rem;
+ height: 1rem; }
+
+.switch.tiny input:checked ~ .switch-paddle:after {
+ left: 1.75rem; }
+
+.switch.small .switch-paddle {
+ width: 3.5rem;
+ height: 1.75rem;
+ font-size: 0.75rem; }
+
+.switch.small .switch-paddle::after {
+ width: 1.25rem;
+ height: 1.25rem; }
+
+.switch.small input:checked ~ .switch-paddle:after {
+ left: 2rem; }
+
+.switch.large .switch-paddle {
+ width: 5rem;
+ height: 2.5rem;
+ font-size: 1rem; }
+
+.switch.large .switch-paddle::after {
+ width: 2rem;
+ height: 2rem; }
+
+.switch.large input:checked ~ .switch-paddle:after {
+ left: 2.75rem; }
+
+table {
+ width: 100%;
+ margin-bottom: 1rem;
+ border-radius: 3px; }
+ table thead,
+ table tbody,
+ table tfoot {
+ border: 1px solid #f1f1f1;
+ background-color: #fefefe; }
+ table caption {
+ font-weight: bold;
+ padding: 0.5rem 0.625rem 0.625rem; }
+ table thead,
+ table tfoot {
+ background: #f8f8f8;
+ color: #222222; }
+ table thead tr,
+ table tfoot tr {
+ background: transparent; }
+ table thead th,
+ table thead td,
+ table tfoot th,
+ table tfoot td {
+ padding: 0.5rem 0.625rem 0.625rem;
+ font-weight: bold;
+ text-align: left; }
+ table tbody tr:nth-child(even) {
+ background-color: #f1f1f1; }
+ table tbody th,
+ table tbody td {
+ padding: 0.5rem 0.625rem 0.625rem; }
+
+@media screen and (max-width: 63.9375em) {
+ table.stack thead {
+ display: none; }
+ table.stack tfoot {
+ display: none; }
+ table.stack tr,
+ table.stack th,
+ table.stack td {
+ display: block; }
+ table.stack td {
+ border-top: 0; } }
+
+table.scroll {
+ display: block;
+ width: 100%;
+ overflow-x: auto; }
+
+table.hover tr:hover {
+ background-color: #f9f9f9; }
+
+table.hover tr:nth-of-type(even):hover {
+ background-color: #ececec; }
+
+.tabs {
+ margin: 0;
+ list-style-type: none;
+ background: #fefefe;
+ border: 1px solid #e6e6e6; }
+ .tabs::before, .tabs::after {
+ content: ' ';
+ display: table; }
+ .tabs::after {
+ clear: both; }
+
+.tabs.vertical > li {
+ width: auto;
+ float: none;
+ display: block; }
+
+.tabs.simple > li > a {
+ padding: 0; }
+ .tabs.simple > li > a:hover {
+ background: transparent; }
+
+.tabs.primary {
+ background: #2F343B; }
+ .tabs.primary > li > a {
+ color: #fefefe; }
+ .tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
+ background: #383e46; }
+
+.tabs-title {
+ float: left; }
+ .tabs-title > a {
+ display: block;
+ padding: 1.25rem 1.5rem;
+ line-height: 1;
+ font-size: 12px;
+ color: #2F343B; }
+ .tabs-title > a:hover {
+ background: #fefefe; }
+ .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] {
+ background: #e6e6e6; }
+
+.tabs-content {
+ background: #fefefe;
+ transition: all 0.5s ease;
+ border: 1px solid #e6e6e6;
+ border-top: 0; }
+
+.tabs-content.vertical {
+ border: 1px solid #e6e6e6;
+ border-left: 0; }
+
+.tabs-panel {
+ display: none;
+ padding: 1rem; }
+ .tabs-panel.is-active {
+ display: block; }
+
+.thumbnail {
+ border: solid 4px #fefefe;
+ box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2);
+ display: inline-block;
+ line-height: 0;
+ max-width: 100%;
+ transition: box-shadow 200ms ease-out;
+ border-radius: 3px;
+ margin-bottom: 1rem; }
+ .thumbnail:hover, .thumbnail:focus {
+ box-shadow: 0 0 6px 1px rgba(47, 52, 59, 0.5); }
+
+.title-bar {
+ background: #0a0a0a;
+ color: #fefefe;
+ padding: 0.5rem; }
+ .title-bar::before, .title-bar::after {
+ content: ' ';
+ display: table; }
+ .title-bar::after {
+ clear: both; }
+ .title-bar .menu-icon {
+ margin-left: 0.25rem;
+ margin-right: 0.5rem; }
+
+.title-bar-left {
+ float: left; }
+
+.title-bar-right {
+ float: right;
+ text-align: right; }
+
+.title-bar-title {
+ font-weight: bold;
+ vertical-align: middle;
+ display: inline-block; }
+
+.menu-icon {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ cursor: pointer;
+ width: 20px;
+ height: 16px; }
+ .menu-icon::after {
+ content: '';
+ position: absolute;
+ display: block;
+ width: 100%;
+ height: 2px;
+ background: #fefefe;
+ top: 0;
+ left: 0;
+ box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; }
+ .menu-icon:hover::after {
+ background: #cacaca;
+ box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; }
+
+.menu-icon.dark {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ cursor: pointer;
+ width: 20px;
+ height: 16px; }
+ .menu-icon.dark::after {
+ content: '';
+ position: absolute;
+ display: block;
+ width: 100%;
+ height: 2px;
+ background: #0a0a0a;
+ top: 0;
+ left: 0;
+ box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; }
+ .menu-icon.dark:hover::after {
+ background: #8a8a8a;
+ box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; }
+
+.has-tip {
+ border-bottom: dotted 1px #8a8a8a;
+ font-weight: bold;
+ position: relative;
+ display: inline-block;
+ cursor: help; }
+
+.tooltip {
+ background-color: #0a0a0a;
+ color: #fefefe;
+ font-size: 80%;
+ padding: 0.75rem;
+ position: absolute;
+ z-index: 10;
+ top: calc(100% + 0.6495rem);
+ max-width: 10rem !important;
+ border-radius: 3px; }
+ .tooltip::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ border-color: transparent transparent #0a0a0a;
+ border-bottom-style: solid;
+ border-top-width: 0;
+ bottom: 100%;
+ position: absolute;
+ left: 50%;
+ -webkit-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%); }
+ .tooltip.top::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ border-color: #0a0a0a transparent transparent;
+ border-top-style: solid;
+ border-bottom-width: 0;
+ top: 100%;
+ bottom: auto; }
+ .tooltip.left::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ border-color: transparent transparent transparent #0a0a0a;
+ border-left-style: solid;
+ border-right-width: 0;
+ bottom: auto;
+ left: 100%;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%); }
+ .tooltip.right::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ border-color: transparent #0a0a0a transparent transparent;
+ border-right-style: solid;
+ border-left-width: 0;
+ bottom: auto;
+ left: auto;
+ right: 100%;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%); }
+
+.top-bar {
+ padding: 0.5rem; }
+ .top-bar::before, .top-bar::after {
+ content: ' ';
+ display: table; }
+ .top-bar::after {
+ clear: both; }
+ .top-bar,
+ .top-bar ul {
+ background-color: #e6e6e6; }
+ .top-bar input {
+ width: 200px;
+ margin-right: 1rem; }
+ .top-bar input.button {
+ width: auto; }
+
+@media screen and (max-width: 39.9375em) {
+ .stacked-for-small .top-bar-title {
+ width: 100%; }
+ .stacked-for-small .top-bar-right {
+ width: 100%; }
+ .stacked-for-small .top-bar-left {
+ width: 100%; } }
+
+@media screen and (max-width: 63.9375em) {
+ .stacked-for-medium .top-bar-title {
+ width: 100%; }
+ .stacked-for-medium .top-bar-right {
+ width: 100%; }
+ .stacked-for-medium .top-bar-left {
+ width: 100%; } }
+
+@media screen and (max-width: 74.9375em) {
+ .stacked-for-large .top-bar-title {
+ width: 100%; }
+ .stacked-for-large .top-bar-right {
+ width: 100%; }
+ .stacked-for-large .top-bar-left {
+ width: 100%; } }
+
+@media screen and (min-width: 0em) and (max-width: 39.9375em) {
+ .top-bar-title {
+ width: 100%; }
+ .top-bar-right {
+ width: 100%; }
+ .top-bar-left {
+ width: 100%; } }
+
+.top-bar-title {
+ float: left;
+ margin-right: 1rem; }
+
+.top-bar-left {
+ float: left; }
+
+.top-bar-right {
+ float: right; }
+
+/*# sourceMappingURL=foundation-flex.css.map */
diff --git a/stylesheets/foundation-flex.css.map b/stylesheets/foundation-flex.css.map
new file mode 100644
--- /dev/null
+++ b/stylesheets/foundation-flex.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["foundation-flex.css","../scss/foundation.scss","../../../../../f6/node_modules/motion-ui/src/_classes.scss","../../../../../f6/node_modules/motion-ui/src/_settings.scss","../../../../../f6/node_modules/motion-ui/src/util/_keyframe.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_slide.scss","../../../../../f6/node_modules/motion-ui/src/util/_transition.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_fade.scss","../../../../../f6/node_modules/motion-ui/src/effects/_hinge.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_hinge.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_zoom.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_spin.scss","../../../../../f6/node_modules/motion-ui/src/util/_animation.scss","../scss/_global.scss","../scss/settings/_settings.scss","../scss/grid/_flex-grid.scss","../scss/grid/_row.scss","../scss/util/_breakpoint.scss","../scss/grid/_gutter.scss","../scss/grid/_column.scss","../scss/grid/_position.scss","../scss/typography/_base.scss","../scss/util/_unit.scss","../scss/typography/_helpers.scss","../scss/typography/_alignment.scss","../scss/typography/_print.scss","../scss/components/_button.scss","../scss/util/_mixins.scss","../scss/forms/_text.scss","../scss/forms/_checkbox.scss","../scss/forms/_label.scss","../scss/forms/_help-text.scss","../scss/forms/_input-group.scss","../scss/forms/_fieldset.scss","../scss/forms/_select.scss","../scss/forms/_error.scss","../scss/components/_float.scss","../scss/components/_accordion.scss","../scss/components/_accordion-menu.scss","../scss/components/_badge.scss","../scss/components/_breadcrumbs.scss","../scss/components/_button-group.scss","../scss/components/_callout.scss","../scss/components/_close-button.scss","../scss/components/_drilldown.scss","../scss/components/_dropdown.scss","../scss/components/_dropdown-menu.scss","../scss/components/_flex-video.scss","../scss/components/_label.scss","../scss/components/_media-object.scss","../scss/components/_menu.scss","../scss/components/_off-canvas.scss","../scss/components/_orbit.scss","../scss/components/_pagination.scss","../scss/components/_progress-bar.scss","../scss/components/_slider.scss","../scss/components/_sticky.scss","../scss/components/_reveal.scss","../scss/components/_switch.scss","../scss/components/_table.scss","../scss/util/_color.scss","../scss/components/_tabs.scss","../scss/components/_thumbnail.scss","../scss/components/_title-bar.scss","../scss/components/_tooltip.scss","../scss/components/_top-bar.scss"],"names":[],"mappings":"AAAA,iBAAiB;ACCjB;;;;;GAKG;ACKD;EARA,2BCkBc;EDjBd,mCCiCe,EDhChB;;AAMC;EE0CE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJZH;EE0CE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB,EEhBhB;;AJvBH;EEyCE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJXH;EEyCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB,EEhBhB;;AJtBH;EEwCE,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJVH;EEwCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB,EEhBhB;;AJrBH;EEuCE,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJTH;EEuCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB,EEhBhB;;AJpBH;EEsCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJRH;EEsCE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB,EEhBhB;;AJnBH;EEqCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJPH;EEqCE,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB,EEhBhB;;AJlBH;EEoCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJNH;EEoCE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB,EEhBhB;;AJjBH;EEmCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJLH;EEmCE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB,EEhBhB;;AJdH;EEgCE,WFhCkC;EKAlC,6BAA6B,EDE5B;;AJFH;EEgCE,WFhCqC,EIcpC;;AJbH;EE+BE,WF/BkC;EKDlC,6BAA6B,EDE5B;;AJDH;EE+BE,WF/BqC,EIapC;;AJVH;EE4BE,uDIrCY;UJqCZ,+CIrCY;EJqCZ,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJEH;EE4BE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJTH;EE2BE,uDIpCc;UJoCd,+CIpCc;EJoCd,gCAFiB;MAEjB,4BAFiB;UAEjB,wBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJGH;EE2BE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJRH;EE0BE,sDInCe;UJmCf,8CInCe;EJmCf,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJIH;EE0BE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJPH;EEyBE,sDIlCa;UJkCb,8CIlCa;EJkCb,+BAFiB;MAEjB,2BAFiB;UAEjB,uBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJKH;EEyBE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJNH;EEwBE,uDIrCY;UJqCZ,+CIrCY;EJqCZ,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJMH;EEwBE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJLH;EEuBE,uDIpCc;UJoCd,+CIpCc;EJoCd,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJOH;EEuBE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJJH;EEsBE,oDIRwC;UJQxC,4CIRwC;EJQxC,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJQH;EEsBE,uDIrCY;UJqCZ,+CIrCY;ECuBV,WAA8B,EHJ/B;;AJHH;EEqBE,oDIRwC;UJQxC,4CIRwC;EJQxC,gCAFiB;MAEjB,4BAFiB;UAEjB,wBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJSH;EEqBE,uDIpCc;UJoCd,+CIpCc;ECsBZ,WAA8B,EHJ/B;;AJFH;EEoBE,oDIRwC;UJQxC,4CIRwC;EJQxC,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJUH;EEoBE,sDInCe;UJmCf,8CInCe;ECqBb,WAA8B,EHJ/B;;AJDH;EEmBE,oDIRwC;UJQxC,4CIRwC;EJQxC,+BAFiB;MAEjB,2BAFiB;UAEjB,uBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJWH;EEmBE,sDIlCa;UJkCb,8CIlCa;ECoBX,WAA8B,EHJ/B;;AJAH;EEkBE,oDIRwC;UJQxC,4CIRwC;EJQxC,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJYH;EEkBE,uDIrCY;UJqCZ,+CIrCY;ECuBV,WAA8B,EHJ/B;;AJCH;EEiBE,oDIRwC;UJQxC,4CIRwC;EJQxC,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJaH;EEiBE,uDIpCc;UJoCd,+CIpCc;ECsBZ,WAA8B,EHJ/B;;AJIH;EEcE,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EM3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EJF5B;;AJgBH;EEcE,4BAFiB;MAEjB,wBAFiB;UAEjB,oBAFiB;EMhBf,WAA2B,EJA5B;;AJKH;EEaE,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EM3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EJF5B;;AJiBH;EEaE,4BAFiB;MAEjB,wBAFiB;UAEjB,oBAFiB;EMhBf,WAA2B,EJA5B;;AJMH;EEYE,4BAFiB;MAEjB,wBAFiB;UAEjB,oBAFiB;EM3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EJF/B;;AJkBH;EEYE,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EMhBf,WAA8B,EJA/B;;AJOH;EEWE,4BAFiB;MAEjB,wBAFiB;UAEjB,oBAFiB;EM3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EJF/B;;AJmBH;EEWE,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EMhBf,WAA8B,EJA/B;;AJUH;EEQE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB;EO3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,ELF5B;;AJsBH;EEQE,6BAFiB;MAEjB,yBAFiB;UAEjB,qBAFiB;EOhBf,WAA2B,ELA5B;;AJWH;EEOE,6BAFiB;MAEjB,yBAFiB;UAEjB,qBAFiB;EO3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,ELF/B;;AJuBH;EEOE,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB;EOhBf,WAA8B,ELA/B;;AJYH;EEME,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB;EO3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,ELF5B;;AJwBH;EEME,6BAFiB;MAEjB,yBAFiB;UAEjB,qBAFiB;EOhBf,WAA2B,ELA5B;;AJaH;EEKE,6BAFiB;MAEjB,yBAFiB;UAEjB,qBAFiB;EO3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,ELF/B;;AJyBH;EEKE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB;EOhBf,WAA8B,ELA/B;;AJoBC;EAAE,sCAAsC,EAAI;;AAA5C;EAAE,sCAAsC,EAAI;;AAM5C;EAAE,8CAA6C,EAAI;;AAAnD;EAAE,4CAA6C,EAAI;;AAAnD;EAAE,+CAA6C,EAAI;;AAAnD;EAAE,gDAA6C,EAAI;;AAAnD;EAAE,mDAA6C,EAAI;;AAAnD;EAAE,+EAA6C,EAAI;;AAAnD;EAAE,gFAA6C,EAAI;;AAAnD;EAAE,+EAA6C,EAAI;;AAMnD;EAAE,mCAAmC,EAAI;;AAAzC;EAAE,mCAAmC,EAAI;;AAQ7C;EUtEA,gCAAuB;UAAvB,wBAAuB,EVsEsB;;AEjE7C;EAGI;IAGI,kCAAU;YAAV,0BAAU,EAAA;EAHd;IAGI,mCAAU;YAAV,2BAAU,EAAA,EAAA;;AANlB;EAGI;IAGI,kCAAU;YAAV,0BAAU,EAAA;EAHd;IAGI,mCAAU;YAAV,2BAAU,EAAA,EAAA;;AF4DlB;EUvEA,sCAAuB;UAAvB,8BAAuB,EVuEqB;;AElE5C;EAGI;IAGI,kCAAU;YAAV,0BAAU,EAAA;EAHd;IAGI,6BAAU;YAAV,qBAAU,EAAA,EAAA;;AANlB;EAGI;IAGI,kCAAU;YAAV,0BAAU,EAAA;EAHd;IAGI,6BAAU;YAAV,qBAAU,EAAA,EAAA;;AF6DlB;EUxEA,sCAAuB;UAAvB,8BAAuB,EVwE0B;;AEnEjD;EAGI;IAGI,6BAAU;YAAV,qBAAU,EAAA;EAHd;IAGI,iCAAU;YAAV,yBAAU,EAAA,EAAA;;AF8DlB;EUzEA,oCAAuB;UAAvB,4BAAuB,EVyEuB;;AEpE9C;EAGI;IAGI,gCAAU;YAAV,wBAAU,EAAA;EAHd;IAGI,iCAAU;YAAV,yBAAU,EAAA;EAHd;IAGI,6BAAU;YAAV,qBAAU,EAAA,EAAA;;AANlB;EAGI;IAGI,gCAAU;YAAV,wBAAU,EAAA;EAHd;IAGI,iCAAU;YAAV,yBAAU,EAAA;EAHd;IAGI,6BAAU;YAAV,qBAAU,EAAA,EAAA;;AFkElB;EAAY,4CAAoC;UAApC,oCAAoC,EAAI;;AAIhD;EAAE,6CAAqC;UAArC,qCAAqC,EAAI;;AAA3C;EAAE,6CAAqC;UAArC,qCAAqC,EAAI;;AAM3C;EAAE,qDAA4C;UAA5C,6CAA4C,EAAI;;AAAlD;EAAE,mDAA4C;UAA5C,2CAA4C,EAAI;;AAAlD;EAAE,sDAA4C;UAA5C,8CAA4C,EAAI;;AAAlD;EAAE,uDAA4C;UAA5C,+CAA4C,EAAI;;AAAlD;EAAE,0DAA4C;UAA5C,kDAA4C,EAAI;;AAAlD;EAAE,sFAA4C;UAA5C,8EAA4C,EAAI;;AAAlD;EAAE,uFAA4C;UAA5C,+EAA4C,EAAI;;AAAlD;EAAE,sFAA4C;UAA5C,8EAA4C,EAAI;;AAMlD;EAAE,0CAAkC;UAAlC,kCAAkC,EAAI;;AAAxC;EAAE,0CAAkC;UAAlC,kCAAkC,EAAI;;AWgH5C,4EAA4E;AAE5E;;;;KAIG;AAEH;EACE,wBAAwB;EAAE,OAAO;EACjC,2BAA2B;EAAE,OAAO;EACpC,+BAA+B;EAAE,OAAO,EACzC;;AAED;;KAEG;AAEH;EACE,UAAU,EACX;;AAED;kFACgF;AAEhF;;;;;KAKG;AAEH;;;;;;;;;;;;;EAaE,eAAe,EAChB;;AAED;;;KAGG;AAEH;;;;EAIE,sBAAsB;EAAE,OAAO;EAC/B,yBAAyB;EAAE,OAAO,EACnC;;AAED;;;KAGG;AAEH;EACE,cAAc;EACd,UAAU,EACX;;AAED;;;KAGG;AbkLL;;Ea9KI,cAAc,EACf;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,8BAA8B,EAC/B;;AAED;;;KAGG;AAEH;;EAEE,WAAW,EACZ;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,0BAA0B,EAC3B;;AAED;;KAEG;AAEH;;EAEE,kBAAkB,EACnB;;AAED;;KAEG;AAEH;EACE,mBAAmB,EACpB;;AAED;;;KAGG;AAEH;EACE,eAAe;EACf,iBAAiB,EAClB;;AAED;;KAEG;AAEH;EACE,iBAAiB;EACjB,YAAY,EACb;;AAED;;KAEG;AAEH;EACE,eAAe,EAChB;;AAED;;KAEG;AAEH;;EAEE,eAAe;EACf,eAAe;EACf,mBAAmB;EACnB,yBAAyB,EAC1B;;AAED;EACE,YAAY,EACb;;AAED;EACE,gBAAgB,EACjB;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,UAAU,EACX;;AAED;;KAEG;AAEH;EACE,iBAAiB,EAClB;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,iBAAiB,EAClB;;AAED;;KAEG;AAEH;EACE,wBAAwB;EACxB,UAAU,EACX;;AAED;;KAEG;AAEH;EACE,eAAe,EAChB;;AAED;;KAEG;AAEH;;;;EAIE,kCAAkC;EAClC,eAAe,EAChB;;AAED;kFACgF;AAEhF;;;KAGG;AAEH;;;;;KAKG;AAEH;;;;;EAKE,eAAe;EAAE,OAAO;EACxB,cAAc;EAAE,OAAO;EACvB,UAAU;EAAE,OAAO,EACpB;;AAED;;KAEG;AAEH;EACE,kBAAkB,EACnB;;AAED;;;;;KAKG;AAEH;;EAEE,qBAAqB,EACtB;;AAED;;;;;;KAMG;AAEH;;;;EAIE,2BAA2B;EAAE,OAAO;EACpC,gBAAgB;EAAE,OAAO,EAC1B;;AAED;;KAEG;AAEH;;EAEE,gBAAgB,EACjB;;AAED;;KAEG;AAEH;;EAEE,UAAU;EACV,WAAW,EACZ;;AAED;;;KAGG;AAEH;EACE,oBAAoB,EACrB;;AAED;;;;;;KAMG;AAEH;;EAEE,uBAAuB;EAAE,OAAO;EAChC,WAAW;EAAE,OAAO,EACrB;;AAED;;;;KAIG;AAEH;;EAEE,aAAa,EACd;;AAED;;;KAGG;AAEH;EACE,8BAA8B;EAAE,OAAO;EACvC,wBAAwB;EAAE,OAAO,EAClC;;AAED;;;;KAIG;AAEH;;EAEE,yBAAyB,EAC1B;;AAED;;;KAGG;AAEH;;;;MAII;AAEJ;;;KAGG;AAEH;EACE,UAAU;EAAE,OAAO;EACnB,WAAW;EAAE,OAAO,EACrB;;AAED;;KAEG;AAEH;EACE,eAAe,EAChB;;AAED;;;KAGG;AAEH;EACE,kBAAkB,EACnB;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,0BAA0B;EAC1B,kBAAkB,EACnB;;AAED;;EAEE,WAAW,EACZ;;AApgBD;EACE,yEAAgD,EACjD;;AAED;EACE,gBC7EmB;ED8EnB,uBAAuB,EACxB;;AAGD;;;EAGE,oBAAoB,EACrB;;AAGD;EACE,WAAW;EACX,UAAU;EACV,oEC7EqE;ED8ErE,oBC1EyB;ED2EzB,iBC5FmB;ED6FnB,eCjFqB;EDkFrB,oBCpFW;EDuFT,oCAAoC;EACpC,mCAAmC,EAEtC;;AAED;EAEE,gBAAgB;EAChB,aAAa;EACb,gCAAgC;EAGhC,sBAAsB;EACtB,uBAAuB,EACxB;;AAGD;EACE,aAAa;EACb,iBAAiB;EACjB,mBClGe,EDmGhB;;AAGD;EACE,YAAY;EACZ,mBCxGe,EDyGhB;;AAID;;;;;;;;;EAMI,2BAA2B,EAC5B;;AAIH;EACE,yBAAyB;EACzB,sBAAsB;EACtB,wBAAwB;EACxB,WAAW;EACX,UAAU;EACV,mBC9He;ED+Hf,eAAe,EAChB;;AAGD;EACE,0BAA0B,EAC3B;;AAED;EACE,yBAAyB,EAC1B;;AEnCD;EAvHE,mBDHkB;ECIlB,kBAAkB;EAClB,mBAAmB;EAInB,sBAAc;EAAd,qBAAc;EAAd,cAAc;EACd,4BAAoB;MAApB,wBAAoB;UAApB,oBAAoB,EAgIrB;EAhBD;IC7EM,uBAHe;IAIf,wBAJe,EDsFlB;IErCD;MF+BF;QC7EM,wBAHe;QAIf,yBAJe,EDsFlB,EAAA;EANH;IAUI,gBAAgB,EACjB;EAXH;IG/JA,gBAAgB;IAChB,iBAAiB,EH4K6B;;AAK9C;EAtFM,uBAHgB;EAIhB,wBAJgB;EAStB,sBAlCc;MAkCd,kBAlCc;UAkCd,cAlCc,EAoHb;EEpDC;IFkDF;MAtFM,wBAHgB;MAIhB,yBAJgB,EA2FrB,EAAA;;AAID;EACE,YAAY,EASb;EANC;IACE,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,gBAAgB,EACjB;;AAMC;EACE,2BIrLgB;MJqLhB,uBIrLgB;UJqLhB,mBIrLgB;EJsLhB,oBItLgB,EJuLjB;;AAKD;EKlLJ,gBDbsB,EJiMjB;;AAVD;EACE,4BIrLgB;MJqLhB,wBIrLgB;UJqLhB,oBIrLgB;EJsLhB,qBItLgB,EJuLjB;;AAKD;EKlLJ,sBDVsB,EJ8LjB;;AAVD;EACE,sBIrLgB;MJqLhB,kBIrLgB;UJqLhB,cIrLgB;EJsLhB,eItLgB,EJuLjB;;AAKD;EKlLJ,uBDVsB,EJ8LjB;;AAVD;EACE,4BIrLgB;MJqLhB,wBIrLgB;UJqLhB,oBIrLgB;EJsLhB,qBItLgB,EJuLjB;;AAKD;EKlLJ,iBDVsB,EJ8LjB;;AAVD;EACE,4BIrLgB;MJqLhB,wBIrLgB;UJqLhB,oBIrLgB;EJsLhB,qBItLgB,EJuLjB;;AAKD;EKlLJ,uBDVsB,EJ8LjB;;AAVD;EACE,sBIrLgB;MJqLhB,kBIrLgB;UJqLhB,cIrLgB;EJsLhB,eItLgB,EJuLjB;;AAKD;EKlLJ,uBDVsB,EJ8LjB;;AAVD;EACE,4BIrLgB;MJqLhB,wBIrLgB;UJqLhB,oBIrLgB;EJsLhB,qBItLgB,EJuLjB;;AAKD;EKlLJ,iBDVsB,EJ8LjB;;AAVD;EACE,4BIrLgB;MJqLhB,wBIrLgB;UJqLhB,oBIrLgB;EJsLhB,qBItLgB,EJuLjB;;AAKD;EKlLJ,uBDVsB,EJ8LjB;;AAVD;EACE,sBIrLgB;MJqLhB,kBIrLgB;UJqLhB,cIrLgB;EJsLhB,eItLgB,EJuLjB;;AAKD;EKlLJ,uBDVsB,EJ8LjB;;AAVD;EACE,4BIrLgB;MJqLhB,wBIrLgB;UJqLhB,oBIrLgB;EJsLhB,qBItLgB,EJuLjB;;AAKD;EKlLJ,iBDVsB,EJ8LjB;;AAVD;EACE,4BIrLgB;MJqLhB,wBIrLgB;UJqLhB,oBIrLgB;EJsLhB,qBItLgB,EJuLjB;;AAKD;EKlLJ,uBDVsB,EJ8LjB;;AAVD;EACE,uBIrLgB;MJqLhB,mBIrLgB;UJqLhB,eIrLgB;EJsLhB,gBItLgB,EJuLjB;;AAKD;EKlLJ,uBDVsB,EJ8LjB;;AAKD;EAvGJ,iBAqGgB;MArGhB,kBAqGgB;UArGhB,SAqGgB,EAIX;;AAFD;EAvGJ,iBAqGgB;MArGhB,kBAqGgB;UArGhB,SAqGgB,EAIX;;AAFD;EAvGJ,iBAqGgB;MArGhB,kBAqGgB;UArGhB,SAqGgB,EAIX;;AAFD;EAvGJ,iBAqGgB;MArGhB,kBAqGgB;UArGhB,SAqGgB,EAIX;;AAFD;EAvGJ,iBAqGgB;MArGhB,kBAqGgB;UArGhB,SAqGgB,EAIX;;AAFD;EAvGJ,iBAqGgB;MArGhB,kBAqGgB;UArGhB,SAqGgB,EAIX;;AA0BH;EGlPF,gBAAgB;EAChB,iBAAiB,EHkP6B;;AAG5C;EG7OF,uBADiB;EAEjB,wBAFiB,EHuPwC;;AE/HvD;EFuEE;IACE,2BIrLgB;QJqLhB,uBIrLgB;YJqLhB,mBIrLgB;IJsLhB,oBItLgB,EJuLjB;EAKD;IKlLJ,gBDbsB,EJiMjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,sBDVsB,EJ8LjB;EAVD;IACE,sBIrLgB;QJqLhB,kBIrLgB;YJqLhB,cIrLgB;IJsLhB,eItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,iBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,sBIrLgB;QJqLhB,kBIrLgB;YJqLhB,cIrLgB;IJsLhB,eItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,iBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,sBIrLgB;QJqLhB,kBIrLgB;YJqLhB,cIrLgB;IJsLhB,eItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,iBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,uBIrLgB;QJqLhB,mBIrLgB;YJqLhB,eIrLgB;IJsLhB,gBItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAKD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX,EAAA;;AExFH;EF8FI;IACE,sBA/JM;QA+JN,kBA/JM;YA+JN,cA/JM,EAgKP,EAAA;;AAKD;EAEI,uBAA2B;MAA3B,mBAA2B;UAA3B,eAA2B,EAK5B;EE5GP;IFqGI;MAKM,sBA1KE;UA0KF,kBA1KE;cA0KF,cA1KE,EA4KL,EAAA;;AE5GP;EFkHA;IGlPF,gBAAgB;IAChB,iBAAiB,EHkP6B;EAG5C;IG7OF,wBADiB;IAEjB,yBAFiB,EHuPwC,EAAA;;AE/HvD;EFuEE;IACE,2BIrLgB;QJqLhB,uBIrLgB;YJqLhB,mBIrLgB;IJsLhB,oBItLgB,EJuLjB;EAKD;IKlLJ,gBDbsB,EJiMjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,sBDVsB,EJ8LjB;EAVD;IACE,sBIrLgB;QJqLhB,kBIrLgB;YJqLhB,cIrLgB;IJsLhB,eItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,iBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,sBIrLgB;QJqLhB,kBIrLgB;YJqLhB,cIrLgB;IJsLhB,eItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,iBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,sBIrLgB;QJqLhB,kBIrLgB;YJqLhB,cIrLgB;IJsLhB,eItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,iBDVsB,EJ8LjB;EAVD;IACE,4BIrLgB;QJqLhB,wBIrLgB;YJqLhB,oBIrLgB;IJsLhB,qBItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAVD;IACE,uBIrLgB;QJqLhB,mBIrLgB;YJqLhB,eIrLgB;IJsLhB,gBItLgB,EJuLjB;EAKD;IKlLJ,uBDVsB,EJ8LjB;EAKD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX;EAFD;IAvGJ,iBAqGgB;QArGhB,kBAqGgB;YArGhB,SAqGgB,EAIX,EAAA;;AExFH;EF8FI;IACE,sBA/JM;QA+JN,kBA/JM;YA+JN,cA/JM,EAgKP,EAAA;;AAKD;EAEI,uBAA2B;MAA3B,mBAA2B;UAA3B,eAA2B,EAK5B;EE5GP;IFqGI;MAKM,sBA1KE;UA0KF,kBA1KE;cA0KF,cA1KE,EA4KL,EAAA;;AE5GP;EFkHA;IGlPF,gBAAgB;IAChB,iBAAiB,EHkP6B;EAG5C;IG7OF,wBADiB;IAEjB,yBAFiB,EHuPwC,EAAA;;AAKzD;EACE,uBAlMe;MAkMf,mBAlMe;UAkMf,eAlMe;EAmMf,gBAAgB,EACjB;;AAIC;EAlIF,kCAzIiB;MAyIjB,mBAzIiB;UAyIjB,0BAzIiB,EA6Qd;;AAFD;EAlIF,gCAxIgB;MAwIhB,sBAxIgB;UAwIhB,wBAxIgB,EA4Qb;;AAFD;EAlIF,uCAvIwB;MAuIxB,uBAvIwB;UAuIxB,+BAvIwB,EA2QrB;;AAFD;EAlIF,sCAtIsB;MAsItB,0BAtIsB;UAsItB,8BAtIsB,EA0QnB;;AAKD;EAxIF,gCAnIiB;MAmIjB,sBAnIiB;UAmIjB,wBAnIiB,EA6Qd;;AAED;EA5HF,+BAnJiB;MAmJjB,2BAnJiB;UAmJjB,uBAnJiB,EAiRd;;AAND;EAxIF,8BAlIkB;MAkIlB,oBAlIkB;UAkIlB,sBAlIkB,EA4Qf;;AAED;EA5HF,6BAlJkB;MAkJlB,yBAlJkB;UAkJlB,qBAlJkB,EAgRf;;AAND;EAxIF,4BAjIgB;MAiIhB,uBAjIgB;UAiIhB,oBAjIgB,EA2Qb;;AAED;EA5HF,2BAjJgB;MAiJhB,4BAjJgB;UAiJhB,mBAjJgB,EA+Qb;;AAND;EAxIF,6BAhIkB;MAgIlB,wBAhIkB;UAgIlB,qBAhIkB,EA0Qf;;AAED;EA5HF,4BAhJkB;MAgJlB,6BAhJkB;UAgJlB,oBAhJkB,EA8Qf;;AM3DH;;;;;;;;;;;;;;;;;;;EAmBE,UAAU;EACV,WAAW,EACZ;;AAGD;EACE,mBAAmB;EACnB,iBPpIsB;EOqItB,oBPpI0B;EOqI1B,mCPpIyC,EOqI1C;;AAGD;;EAEE,mBAAmB;EACnB,qBAAqB,EACtB;;AAGD;;EAEE,kBP9MqB;EO+MrB,qBAAqB,EACtB;;AAGD;EACE,eP3JiB;EO4JjB,qBAAqB,EACtB;;AAGD;;;;;;EAME,oEPpOqE;EOqOrE,oBPjOyB;EOkOzB,mBPhMsB;EOiMtB,eP7KkB;EO8KlB,mCP3KsC;EO4KtC,cAAc;EACd,sBP9KyB;EO+KzB,iBPhLmB,EOsLpB;EAnBD;;;;;;IAgBI,ePpPe;IOqPf,eAAe,EAChB;;AAOG;EACE,kBCrOY,EDsOb;;AAFD;EACE,mBCrOY,EDsOb;;AAFD;EACE,qBCrOY,EDsOb;;AAFD;EACE,oBCrOY,EDsOb;;AAFD;EACE,qBCrOY,EDsOb;;AAFD;EACE,gBCrOY,EDsOb;;AJ5KL;EI0KI;IACE,gBCrOY,EDsOb;EAFD;IACE,kBCrOY,EDsOb;EAFD;IACE,qBCrOY,EDsOb;EAFD;IACE,qBCrOY,EDsOb;EAFD;IACE,mBCrOY,EDsOb;EAFD;IACE,gBCrOY,EDsOb,EAAA;;AAMP;EACE,eP5QmB;EO6QnB,sBPtLyB;EOuLzB,qBAAqB;EACrB,gBAAgB,EAajB;EAjBD;IAQI,eP7L0B,EOiM3B;EAZH;IAeI,UAAU,EACX;;AAIH;EACE,mBPlSkB;EOmSlB,UAAU;EACV,gBAAgB;EAChB,cAAc;EACd,iCP9RiB;EO+RjB,eAAe;EACf,qBP3MyB;EO4MzB,YAAY,EACb;;AAGD;;;EAGE,iBPlOsB;EOmOtB,oBPlO0B;EOmO1B,6BPjNyB,EOkN1B;;AAGD;EACE,mBAAmB,EACpB;;AAGD;EACE,sBP5NkB;EO6NlB,qBP3NsB,EO4NvB;;AAGD;EACE,qBPhOsB,EOiOvB;;AAGD;EAEI,qBPrO2B;EOsO3B,iBAAiB,EAClB;;AAIH;EACE,oBP3OyB,EOiP1B;EAPD;IAII,sBP5O8B;IO6O9B,kBPhUmB,EOiUpB;;AAIH;EACE,iBP1Q0B;EO2Q1B,uCCzTkB;ED0TlB,+BPnViB,EOyVlB;EATD;IAMI,iBPhRoB;IOiRpB,ePtVa,EOuVd;;AAIH;EACE,eAAe;EACf,qBCrUkB;EDsUlB,eP9Ve,EOmWhB;EARD;IAMI,uBAAuB,EACxB;;AAIH;EACE,ePnWqB;EOoWrB,aAAa;EACb,kCPxWW,EOyWZ;;AAGD;EACE,6DPlUmE;EOmUnE,oBPtWyB;EOuWzB,eP/WW;EOgXX,0BPnXgB;EOoXhB,0BPnXiB;EOoXjB,sCC3VkB,ED4VnB;;AAGD;EACE,4BC3VS;ED4VT,UAAU;EACV,0BP5XgB;EO6XhB,eP1XW;EO2XX,6DPhVmE,EOiVpE;;AEtYD;EACE,mBT0HyB;ESzHzB,sBT0H4B;ESzH5B,oBTeyB;ESdzB,iBToHsB;ESnHtB,eTIe,ESHhB;;AAGD;EACE,gBT4G8B;ES3G9B,iBT4GiB,ES3GlB;;AAGD;EACE,kBT6GmB;ES5GnB,eAAe,EAKhB;EAHC;IACE,kBAAkB,EACnB;;AAIH;EACE,eAAiC;EACjC,iBAAiB,EAClB;;AC7DO;EACE,iBARe,EAShB;;AAFD;EACE,kBARsB,EASvB;;AAFD;EACE,mBAR8B,EAS/B;;AAFD;EACE,oBARuC,EASxC;;AP0HP;EOjIM;IACE,iBAHe,EAIhB;EAFD;IACE,kBAHsB,EAIvB;EAFD;IACE,mBAH8B,EAI/B;EAFD;IACE,oBAHuC,EAIxC,EAAA;;AP+HP;EOjIM;IACE,iBAHe,EAIhB;EAFD;IACE,kBAHsB,EAIvB;EAFD;IACE,mBAH8B,EAI/B;EAFD;IACE,oBAHuC,EAIxC,EAAA;;ACAT;EAAkB,yBAAyB,EAAI;;AAE/C;EACE;IACE,mCAAmC;IACnC,wBAAwB;IACxB,4BAA4B;IAC5B,6BAA6B,EAC9B;EAED;IAAkB,0BAA0B,EAAI;EAChD;IAAkB,yBAAyB,EAAI;EAE/C;IAAuB,0BAA0B,EAAI;EACrD;IAAuB,uCAAuC,EAAI;EAClE;IAAuB,oCAAoC,EAAI;EAC/D;IAAoB,8BAA8B,EAAI;EACtD;IAAoB,+BAA+B,EAAI;EACvD;IAAoB,+BAA+B,EAAI;EAGvD;;IACY,2BAA2B,EAAG;EAC1C;IAAgB,6BAA4B,EAAI;EAGhD;;;IAEqB,YAAY,EAAI;EAGrC;IAAoB,8BAA6B,EAAI;EAGrD;;IAEE,uBAAuB;IACvB,yBAAyB,EAC1B;EAGD;IAAQ,4BAA4B,EAAI;EAExC;;IACM,yBAAyB,EAAI;EAEnC;IAAM,2BAA2B,EAAI;EAErC;IAAQ,cAAc,EAAA;EAEtB;;;IAGE,WAAW;IACX,UAAU,EACX;EAGD;;IACK,wBAAwB,EAAI,EAAA;;AC0HnC;EAnIA,sBAAsB;EACtB,mBAAmB;EACnB,eAAe;EACf,gBAAgB;EAChB,yBAAyB;EACzB,kEAAkE;EAClE,uBAAuB;EACvB,8BAA8B;EAC9B,mBZFiB;EYGjB,oBZ8JyB;EY7JzB,mBZ8JkC;EY7JlC,kBZuKe;EYnIf,0BZ3DqB;EY4DrB,YZ4HiB,EYuBhB;E1BktCD;I2BlzCE,WAAW,EACZ;ED+BD;IAhFE,0BZwHiC;IYvHjC,YZwHe,EYvHhB;EA8ED;IAIe,kBZyCH,EYzC8C;EAJ1D;IAKe,mBZyCD,EYzC6C;EAL3D;IAMe,mBZ0CD,EY1C6C;EAN3D;IAjHE,eAAe;IACf,YAAY;IACZ,eAAe;IACf,gBAAgB,EAqHuB;EAPzC;IApFA,0BZ3DqB;IY4DrB,YZ4HiB,EY3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YZwHe,EYvHhB;EA8ED;IApFA,0BZ1DuB;IY2DvB,YZ4HiB,EY3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YZwHe,EYvHhB;EA8ED;IApFA,0BZzDqB;IY0DrB,YZ4HiB,EY3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YZwHe,EYvHhB;EA8ED;IApFA,0BZvDmB;IYwDnB,YZ4HiB,EY3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YZwHe,EYvHhB;EA8ED;IApFA,0BZxDqB;IYyDrB,YZ4HiB,EY3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YZwHe,EYvHhB;EA8ED;IAhEA,0BZ/EqB;IYgFrB,eZhFqB,EYqLhB;IAtCL;MAvEE,8BAA8B,EAC/B;IAsED;MA5DE,sBANuB;MAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0BZ/EqB;MYgFrB,eZhFqB,EYmLZ;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0BZ9EuB;MY+EvB,eZ/EuB,EYkLd;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0BZ7EqB;MY8ErB,eZ9EqB,EYiLZ;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0BZ3EmB;MY4EnB,eZ5EmB,EY+KV;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0BZ5EqB;MY6ErB,eZ7EqB,EYgLZ;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;EA0DD;IArDA,cZuG4B;IYtG5B,oBAAoB;IACpB,qBAAqB,EAgGlB;EA7CH;IC9KA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,oBD+HY;IC5HV,8CAAqD;IACrD,wBAAwB;IACxB,uBAAuB;IDgIvB,mBAAmB;IACnB,WAAW;IACX,aAAO;IACP,iBZsEuB;IYrEvB,sBAAsB,EACvB;EAgCD;IA4DI,eAAiC;IACjC,YAAY;IACZ,WAAW,EACZ;;A1B8zCL;;E4B1/CE,eAAe;EACf,uBAAuB;EACvB,YAAY;EACZ,kBAL0B;EAM1B,gBAAsB;EACtB,0BdjBmB;EckBnB,iBNOoB;EMLpB,qBdsQyB;EcrQzB,gBNIoB;EMHpB,edpBa;EcqBb,0BdpBa;EcqBb,kDdtBa;EcuBb,mBdbiB;EcgBf,4DdwQ8D;EcpP9D,yBAAyB;EACzB,sBAAsB,EACvB;E5Bs+CD;;I4Bv/CE,0BdhCe;IciCf,0Bd/BW;IcgCX,cAAc;IACd,4BdpCiB;IcuCf,4Dd6P4D,Ec3P/D;;AAYD;EACE,gBAAgB,EAKjB;EAND;IAII,aAAa,EACd;;AAIH;;;EAII,0BdnEc;EcoEd,gBdgOyB,Ec/N1B;;A5Bu+CL;;E4Bj+CI,mBd9De;Ec+Df,yBAAyB;EACzB,sBAAsB,EACvB;;AAID;EACE,uBAAuB,EACxB;;A5Bi+CH;;;E6B/lDI,iBPoEkB,EOnEnB;;A7BmmDH;;E6B9lDI,sBAAsB;EACtB,oBAA4C;EAC5C,mBP4DkB;EO3DlB,iBAAiB;EACjB,yBAAyB,EAC1B;;AAGD;;EAEE,qBAA6C,EAC9C;;A7B+lDH;E6B3lDI,YAAY,EACb;;ACMD;EAfA,eAAe;EACf,UAAU;EACV,oBRqDoB;EQpDpB,oBhBqC2B;EgBpC3B,iBhB+S0B;EgB9S1B,ehB2Ba,EgBXZ;EAND;IALA,iBR6CoB;IQ5CpB,qBAA8D,EAS3D;;ACxBH;EAGE,oBAF2B;EAG3B,qBTuDkB;EStDlB,mBjB0SwB;EiBzSxB,YjBuSiB,EiBtSlB;;ACDD;EACE,eAAe;EACf,YAAY;EACZ,oBVkDkB,EUvCnB;EAdD;IAMI,2BlBkCa,EkBjCd;EAPH;IAWM,2BAAgD,EACjD;;AAUL;EALE,oBAAoB;EACpB,UAAU;EACV,uBAAuB,EACxB;;AAED;EAEE,mBAAmB;EACnB,UAAU;EACV,aAAa;EACb,gBlBkRuB;EkBjRvB,oBlBDgB;EkBEhB,elBCW;EkBAX,0BlBFiB;EkBGjB,oBAAoB,EAWrB;EApBD;IAaM,gBAAkC,EACnC;EAdL;IAiBM,eAAiC,EAClC;;AAIL;EAEE,iBAAiB;EACjB,eAlDwB,EAmDzB;;AAED;EAEE,aAAa;EACb,eAAe;EACf,kBAAkB;EAClB,mBAAmB;EACnB,UAAU,EAOX;EAbD;;;IAWI,UAAU,EACX;;AClDH;EACE,UAAU;EACV,WAAW;EACX,UAAU,EACX;;AAED;EACE,sBAA4B;EAC5B,gBAAgB,EACjB;;AAED;EAzBA,0BnB8BmB;EmB7BnB,iBXsDoB;EWrDpB,mBX0DW,EWjCV;EAFD;IAnBE,oBnB2BW;ImB1BX,qBXgDkB;IW/ClB,UAAU;IACV,wBX8CkB,EW7CnB;;AC0BD;EAtCA,kBAF0B;EAG1B,gBAAuB;EACvB,0BpB8BmB;EoB7BnB,iBZsDoB;EYrDpB,gBZqDoB;EYpDpB,qBpBqTyB;EoBpTzB,oBAAoB;EACpB,epB2Ba;EoB1Bb,0BpB2Ba;EoB1Bb,mBpBmCiB;EoBlCjB,yBAAyB;EACzB,sBAAsB;EPoFtB,sOAAqB;EOhFnB,yBAAyB;EACzB,kCAAyC;EACzC,+BAA+B;EAC/B,6BAA6B,EAsB9B;EPyDD;IO3DA;MP6DI,wWAAqB,EO3DxB,EAAA;EAFD;IAfE,0BpBQgB;IoBPhB,gBpB2S2B,EoB1S5B;EAaD;IATE,cAAc,EACf;EAQD;IALE,aAAa,EACd;;ACIC;EAlBA,yCrBUiB;EqBTjB,sBrBSiB,EqBRlB;;AAuBC;EACE,erBhBe,EqBiBhB;;AAIH;EAxBA,cAAc;EACd,oBAAyB;EACzB,oBb4BoB;Ea3BpB,mBb2BoB;Ea1BpB,kBrBYuB;EqBXvB,erBFmB,EqB2BlB;EAND;IAII,eAAe,EAChB;;ACtEH;EACE,uBAAuB,EACxB;;AAED;EACE,wBAAwB,EACzB;;AAED;EACE,eAAe;EACf,kBAAkB;EAClB,mBAAmB,EACpB;;AAED;ETgHE,aAAa;EACb,eAAe,EAChB;;ASlHD;ETqHE,YAAY,EACb;;AUhDD;EA/CA,sBAAsB;EACtB,oBvBWa;EuBVb,0BvBMkB;EuBLlB,iBAAiB;EACjB,mBvBiBiB;EuBhBjB,eAAiC,EA4ChC;;AAMD;EA7CA,eAAe;EACf,sBvBuImC;EuBtInC,eAAe;EACf,mBfqBoB;EepBpB,evBXqB;EuBYrB,mBAAmB;EACnB,iCvBRkB,EuBiDjB;EAFD;IAnCE,0BvBZgB,EuBajB;EAkCD;IA9BI,aAAa;IACb,mBAAmB;IACnB,YAAuB;IACvB,SAAS;IACT,oBAAoB,EACrB;EAED;IACE,aAAS,EAAM;;AA0BnB;EAnBA,cvB8G8B;EuB7G9B,cAAc;EACd,iCvBlCkB;EuBmClB,0BvB/Ba,EuBiDZ;;AC7FC;EACE,mBAAmB,EASpB;EAVD;IXIF,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kBWJ+B;IXO7B,8CAAqD;IACrD,wBAAwB;IACxB,uBAAuB;IWRnB,mBAAmB;IACnB,SAAS;IACT,iBAAiB;IACjB,YAAY,EACb;;AAGH;EACE,kCAA0B;MAA1B,8BAA0B;UAA1B,0BAA0B;EAC1B,8BAAiB;MAAjB,0BAAiB;UAAjB,sBAAiB,EAClB;;ACUH;EATA,sBAAsB;EACtB,ezBkLmB;EyBjLnB,iBzBkLoB;EyBjLpB,kBzBkLsB;EyBjLtB,mBAAmB;EACnB,mBAAmB;EAOjB,oBzBOmB;EyBNnB,ezBeW,EyBLZ;EAdD;IASQ,oBzBEe;IyBDf,ezBSK,EyBRN;EAXP;IASQ,oBzBGa;IyBFb,ezBSK,EyBRN;EAXP;IASQ,oBzBKW;IyBJX,ezBSK,EyBRN;EAXP;IASQ,oBzBIa;IyBHb,ezBSK,EyBRN;;ACoCP;EA3CA,iBAAiB;EACjB,mB1B4KuC,E0B5HtC;EAND;IbiDE,aAAa;IACb,eAAe,EAChB;EanDD;IbsDE,YAAY,EACb;EavDD;IAtCE,YAAO;IACP,e1BQW;I0BPX,qBlB8BkB;IkB7BlB,gBAAgB;IAGd,0BAA0B,EAmB7B;IAaD;MAxBM,e1BPa;M0BQb,aAJ6C;MAK7C,kB1B6JyB;M0B5JzB,mBAAmB;MACnB,SAAS;MACT,WAAW,EACZ;EAkBL;IATE,e1B5BmB,E0BiCpB;IAID;MANI,2BAA2B,EAC5B;EAKH;IAII,e1BnCe,E0BoChB;;ACOH;EApEA,oB3ByNuB;E2BxNvB,kB3BgNe,E2BhGd;EA7CD;IdqCE,aAAa;IACb,eAAe,EAChB;EcvCD;Id0CE,YAAY,EACb;Ec3CD;IAhEE,YAAO;IACP,UAAU;IACV,mBAAmB,EAKpB;IAyDD;MA3DI,gC3BmBS,E2BlBV;EA0DH;IAIe,kB3BuIH,E2BvI8C;EAJ1D;IAKe,mB3BuID,E2BvI6C;EAL3D;IAMe,mB3BwID,E2BxI6C;EAN3D;IA5CA,eAAe;IACf,oBAAoB;IACpB,YAAY,EAiDmC;IAP/C;MAtCE,cAAc,EACf;IAqCD;MAlCE,oBAAoB;MACpB,YAAY,EACb;EAgCD;IfUA,0BZ3DqB;IY4DrB,eZnDa,E2BsDN;IAdP;MfcE,0BAP8B;MAQ9B,eZvDW,EYwDZ;EehBD;IfUA,0BZ1DuB;IY2DvB,eZnDa,E2BsDN;IAdP;MfcE,0BAP8B;MAQ9B,eZvDW,EYwDZ;EehBD;IfUA,0BZzDqB;IY0DrB,eZnDa,E2BsDN;IAdP;MfcE,0BAP8B;MAQ9B,eZvDW,EYwDZ;EehBD;IfUA,0BZvDmB;IYwDnB,eZnDa,E2BsDN;IAdP;MfcE,0BAP8B;MAQ9B,eZvDW,EYwDZ;EehBD;IfUA,0BZxDqB;IYyDrB,eZnDa,E2BsDN;IAdP;MfcE,0BAP8B;MAQ9B,eZvDW,EYwDZ;EehBD;IAvBE,YAAY,EAKb;IAkBD;MApBI,wBAA0D,EAC3D;ExB2DD;IwBxCF;MATE,YAAY,EAKb;MAID;QANI,gC3BlCS,E2BmCV,EAAA;ExB6CD;IwBxCF;MAqCM,eAAe,EAOlB;MA5CH;QAwCQ,eAAe;QACf,gBAAgB,EACjB,EAAA;;ACrDP;EAzCA,mB5BoNyB;E4BnNzB,c5BoNoB;E4BnNpB,yC5BSa;E4BRb,mB5BkBiB;E4BjBjB,mBAAmB;EACnB,e5BSuB;E4BQvB,wBAFwB,EAqCvB;EAhBD;IAhCE,cAAc,EACf;EA+BD;IA5BE,iBAAiB,EAClB;EA2BD;IAnBA,0BAFwB,EA2BnB;EANL;IAnBA,0BAFwB,EA2BnB;EANL;IAnBA,0BAFwB,EA2BnB;EANL;IAnBA,0BAFwB,EA2BnB;EANL;IAnBA,0BAFwB,EA2BnB;EANL;IAfA,oBAyBgC;IAxBhC,sBAwBgC;IAvBhC,uBAuBgC;IAtBhC,qBAsBgC,EAC7B;EAXH;IAfA,kBA6B8B;IA5B9B,oBA4B8B;IA3B9B,qBA2B8B;IA1B9B,mBA0B8B,EAC3B;;AC7CH;EAfA,mBAAmB;EACnB,e7BaiB;E6BZjB,Y7BiOkC;E6BhOlC,Y7BiOkC;E6BhOlC,e7BiOoB;E6BhOpB,e7BiOwB;E6BhOxB,gBAAgB,EAWf;E3C86DD;I2Bz0DE,WAAW,EACZ;EgBxGD;IALE,e7BKW,E6BJZ;;AC3BD;EACE,mBAAmB;EACnB,iBAAiB,EAClB;;AAGD;EACE,mBAAmB;EACnB,OAAO;EACP,WAAsB;EACtB,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,oB9BmBW;E8BlBX,2C9B+OyC;E8B/OzC,mC9B+OyC,E8BpO1C;EAnBD;IAWI,WAAW;IACX,eAAe;IACf,qCAAqB;QAArB,iCAAqB;YAArB,6BAAqB,EACtB;EAdH;IAiBI,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;;AAID;EACE,mBAAmB,EASpB;EAVD;IjBpCF,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kBiBoC+B;IjBvB7B,0DbcmB;IabnB,yBAAyB;IACzB,sBAAsB;IiBsBlB,mBAAmB;IACnB,SAAS;IACT,iBAAiB;IACjB,YAAuB,EACxB;;AAGH;EjBhDF,YAAY;EACZ,eAAe;EACf,SAAS;EACT,UAAU;EACV,kBiB6C6B;EjB3B3B,0DAAiE;EACjE,0BAA0B;EAC1B,qBAAqB;EiB0BnB,qBAA6C;EAC7C,sBAAsB;EACtB,uBAAuB;EACvB,sBAAwC,EACzC;;ACjBH;EAjBA,0B/BoBa;E+BnBb,0B/BgBmB;E+BfnB,mB/B2BiB;E+B1BjB,eAAe;EACf,gB/BuPuB;E+BtPvB,c/BoPqB;E+BnPrB,mBAAmB;EACnB,mBAAmB;EACnB,a/BoPoB;E+BnPpB,YAAY,EAUX;EAFD;IALE,oBAAoB,EACrB;;AASC;EACE,a/BwOO,E+BvOR;;AAFD;EACE,a/ByOQ,E+BxOT;;AAFD;EACE,a/B0OQ,E+BzOT;;A7Cy/DL;E2Bv5DI,WAAW,EACZ;;AmBxHC;EACE,cAAc,EACf;;AATH;EAcQ,UAAU;EACV,QAAmB;EACnB,YAAuB,EACxB;;AAjBP;EAuBM,UAAU;EACV,WAAW;EACX,SAAS,EACV;;AAIL;EACE,aAAa,EAUd;EAXD;IAII,aAAa,EACd;EALH;IAQI,OAAO;IACP,WAAW,EACZ;;AAGH;EACE,mBAAmB,EAmDpB;EApDD;IAII,ajCsBsD;IiCrBtD,gBAAgB;IAChB,kBAAoC,EACrC;EAPH;IAWM,sBAAyC;IACzC,mBAAmB,EACpB;EAbL;InB3DA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kBmBuE+B;InBpE7B,8CAAqD;IACrD,wBAAwB;IACxB,uBAAuB;ImBmEnB,mBAAmB;IACnB,cAAa;IACb,WAAsB,EACvB;EApBL;InB3DA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kBmB8E+B;InB5D7B,0DAAiE;IACjE,0BAA0B;IAC1B,qBAAqB;ImB2DjB,YAAY;IACZ,eAAe;IACf,mBAAmB,EACpB;EA3BL;InB3DA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kBmBqF+B;InBxE7B,0DbcmB;IabnB,yBAAyB;IACzB,sBAAsB,EmBuEnB;EA/BL;IAmCI,SAAS;IACT,WAAW,EACZ;EArCH;IAwCI,QAAQ;IACR,YAAY,EACb;EA1CH;IA6CI,UAAU,EACX;EA9CH;IAiDI,WAAW;IACX,YAAY,EACb;;AAIH;EACE,cAAc;EACd,mBAAmB;EACnB,OAAO;EACP,WAAsB;EACtB,iBhCsK0B;EgCrK1B,WAAW;EACX,oBhCjFW;EgCkFX,0BhCrFiB,EgCwGlB;EA3BD;IAYM,iBhCiKiB,EgChKlB;EAbL;IAiBI,YAAY,EACb;EAlBH;IAyBI,eAAe,EAChB;;AC3GH;EAnBA,mBAAmB;EACnB,UAAU;EACV,oBARU;EASV,oBzB6CoB;EyB5CpB,iBAAiB,EAyBhB;EAVD;;;;IATE,mBAAmB;IACnB,OAAO;IACP,QAAmB;IACnB,YAAY;IACZ,aAAa,EACd;EAID;IAII,uBA7BM,EA8BP;EALH;IAQI,eAAe,EAChB;;ACpBH;EAVA,sBAAsB;EACtB,2BlCsU+B;EkCrU/B,kBlCoUsB;EkCnUtB,eAAe;EACf,oBAAoB;EACpB,gBAAgB;EAChB,mBlC+BiB;EkCxBf,oBlCMmB;EkCLnB,elCcW,EkCJZ;EAdD;IASQ,oBlCCe;IkCAf,elCQK,EkCPN;EAXP;IASQ,oBlCEa;IkCDb,elCQK,EkCPN;EAXP;IASQ,oBlCIW;IkCHX,elCQK,EkCPN;EAXP;IASQ,oBlCGa;IkCFb,elCQK,EkCPN;;ACEP;EA/BA,oBnCyCkB;EmCxClB,eAAe,EA0Cd;EAZD;IAII,gBAAgB,EACjB;EhCgFD;IgCrFF;MAVA,eAAe;MACf,WAAW;MACX,qBnCmBmB,EmCAhB;MAXH;QALE,YnC6TkC,EmC5TnC,EAAA;;AAkBD;EAtCA,oBAAoB;EACpB,oBAAoB,EA0CnB;EALD;IAlCE,oBnC+BiB,EmC9BlB;EAiCD;IA9BE,mBnC2BiB,EmC1BlB;EA6BD;IAGa,uBAAuB,EAAI;EAHxC;IAIa,uBAAuB,EAAI;;AC6ExC;EAtHA,UpCoVa;EoCnVb,sBAAsB,EA4KrB;EAvDD;IAhHE,oBAAoB;IACpB,uBAAuB,EACxB;IlDyrEC;M2B/jEA,WAAW,EACZ;EuBbD;IA1GE,eAAe;IACf,qBpCyU2B;IoCxU3B,eAAe,EAChB;EAuGD;;;IAjGE,iBAAiB,EAClB;EAgGD;;IAzCM,uBAAuB,EACxB;EAwCL;IArCM,uBAAuB,EACxB;EAoCL;;IA5BM,sBAAsB;IACtB,sBpC4PmB,EoC3PpB;EA0BL;IAjFI,oBAAoB,EACrB;EAgFH;IA5EI,eAAe,EAChB;EjCiED;IiCUF;MAjFI,oBAAoB,EACrB;IAgFH;MA5EI,eAAe,EAChB,EAAA;EjCiED;IiCUF;MAjFI,oBAAoB,EACrB;IAgFH;MA5EI,eAAe,EAChB,EAAA;EA2EH;IAjEE,eAAe;IACf,sBAAsB;IACtB,mBpC+R2B,EoC9R5B;EA8DD;IA3DE,WAAW,EACZ;EA0DD;IAiCM,arC9EoD,EqC+ErD;EAlCL;IA3FA,eAAe;IACf,oBAAoB;IACpB,YAAY,EAqIT;IA5CH;MA0CM,YAAY,EACb;EA3CL;IArBI,mBAAmB,EAOpB;IAcH;;MAjBM,eAAe;MACf,uBpCiPmB,EoChPpB;EAeL;IApDA,kBpCmRuB,EoCzKpB;;AAGH;EAlEA,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,eAAe;EACf,kBAAkB;EAClB,qBpCoO6B,EoCrK5B;;AAGD;EACE,cAAc,EACf;;ACvKD;;EAEE,aAAa,EACd;;AAED;EACE,YAAY;EACZ,mBAAmB;EACnB,mBAAmB;EACnB,oCAA4B;UAA5B,4BAA4B;EAC5B,iCAAiC,EAClC;;AAED;EAEE,mBAAmB;EACnB,YAAY;EACZ,wCrCiU8B;EqCjU9B,gCrCiU8B,EqChU/B;EALD;IxB6EE,aAAa;IACb,eAAe,EAChB;EwB/ED;IxBkFE,YAAY,EACb;;AwB3ED;;EACE,iBAAiB;EACjB,oBrCVW;EqCWX,wCrC0T8B;EqC1T9B,gCrC0T8B;EqCzT9B,oCAA4B;UAA5B,4BAA4B;EAC5B,WAAW;EAGT,2CrCjBS,EqCmBZ;;AAGD;EACE,cAAc;EACd,mBAAmB;EACnB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,aAAa;EACb,sCrC5BW;EqC6BX,gBAAgB;EAChB,iCrCuS8B,EqCtS/B;;AAgED;EA1DA,mBAAmB;EACnB,oBrC1CkB;EqC2ClB,YrC4RmB;EqC3RnB,iBAAiB;EACjB,iBAAiB;EACjB,iCAAqB;MAArB,6BAAqB;UAArB,yBAAqB,EA0DpB;EnDorED;I2BlrEE,WAAW,EACZ;EwBRD;IA5CE,arC8QkB;IqC7QlB,OAAO;IACP,arC4QkB,EqC/NwC;IAnC1D;MAEI,qCAAqB;UAArB,iCAAqB;cAArB,6BAAqB,EAKxB;EAyBH;IAvCE,crCyQkB;IqCxQlB,OAAO;IACP,arCuQkB,EqC9NyC;IApC3D;MAKI,sCAAqB;UAArB,kCAAqB;cAArB,8BAAqB,EAExB;;AlCUD;EkC0BI;IA3BN,QAAgB;IAChB,cAAc;IAGZ,gBAAgB,EAyBX;IAFD;MAnBJ,mBrC0OkB,EqCzOnB;EAsBK;IA/BN,SAAgB;IAChB,cAAc;IAGZ,gBAAgB,EA6BX;IAFD;MAvBJ,oBrC0OkB,EqCzOnB,EAAA;;AlCRC;EkC0BI;IA3BN,QAAgB;IAChB,cAAc;IAGZ,gBAAgB,EAyBX;IAFD;MAnBJ,mBrC0OkB,EqCzOnB;EAsBK;IA/BN,SAAgB;IAChB,cAAc;IAGZ,gBAAgB,EA6BX;IAFD;MAvBJ,oBrC0OkB,EqCzOnB,EAAA;;ACKD;EAjGA,mBAAmB,EAmGlB;;AAED;EAhGA,mBAAmB;EACnB,UAAU;EACV,iBAAiB;EACjB,iBAAiB,EA+FhB;;AAED;EA5FA,YAAY;EACZ,iBAAiB,EA6FhB;EAFD;IAvFI,OAAO;IACP,QAAQ,EACT;;AAyFH;EApFA,UAAU,EAsFT;;AAED;EApFA,UAAU;EACV,YAAY;EACZ,gBAAgB,EAoFf;;AAED;EAjFA,mBAAmB;EACnB,UAAU;EACV,YAAY;EACZ,ctCkT0B;EsCjT1B,iBAAiB;EACjB,etCrCa;EsCsCb,wCtCvCa,EsCoHZ;;AAMD;EzBOA,mBAAmB;EACnB,SAAS;EACT,oCAAqB;MAArB,gCAAqB;UAArB,4BAAqB;EyBrFrB,YtC2SuB;EsC1SvB,ctCyS0B;EsCxS1B,etC/Ca,EsCuHZ;EpDovED;I2BrwEE,WAAW,EACZ;EyBkBD;IArEE,wCtCrDW,EsCsDZ;;AAoED;EA/DA,QAAmB,EAkElB;;AAED;EA/DA,WAAsB;EACtB,SAAoB,EAiEnB;;AAED;EA7DA,mBAAmB;EACnB,mBtC2Q8B;EsC1Q9B,sBtC2QiC;EsC1QjC,mBAAmB,EA4DlB;EpDuvED;I2BtxEE,WAAW,EACZ;EyB4BD;IAvDE,ctCoQ0B;IsCnQ1B,etCmQ0B;IsClQ1B,etCmQwB;IsClQxB,0BtClFiB;IsCmFjB,mBAAmB,EASpB;IA0CD;MAhDI,0BtCrFa,EsCsFd;IA+CH;MA5CI,0BtCzFa,EsC0Fd;;AChBH;EAnEA,eAAiC;EACjC,oBvCDkB,EuCiFjB;EAdD;I1BKE,aAAa;IACb,eAAe,EAChB;E0BPD;I1BUE,YAAY,EACb;E0BXD;IA9DE,oB/BYkB;I+BXlB,wB/BWkB;I+BVlB,mBvCHe;IuCSb,cAAc,EAWjB;IA2CD;MAlDM,sBAAsB,EACvB;IpCyDH;MoCRF;QA9CM,sBAAsB,EAG3B,EAAA;EA2CD;;IAtCE,evCnCW;IuCoCX,eAAe;IACf,4B/BdkB;I+BelB,mBvC5Be,EuCiChB;IA8BD;;MAhCI,oBvC5Cc,EuC6Cf;EA+BH;IAzBA,4B/BzBoB;I+B0BpB,oBvCzDqB;IuC0DrB,evCjDa;IuCkDb,gBAAgB,EA2Bb;EALH;IAjBA,4B/BjCoB;I+BkCpB,evC3DmB;IuC4DnB,gBAAgB,EAwBb;IATH;MAZE,wBAAwB,EACzB;EAWD;IANA,aAAS;IACT,4B/B7CoB;I+B8CpB,evCrEa,EuCsFV;;AAID;;EAEE,aAAc;EACd,sBAAsB;EACtB,qBAAuC,EACxC;;AAED;;EAEE,aAAc;EACd,sBAAsB;EACtB,oBAAsC,EACvC;;AC7FH;EApCA,0BxCyBmB;EwCxBnB,axCyYoB;EwCxYpB,oBxC+BkB;EwC9BlB,mBxCkCiB,EwCShB;EAVD;IAMQ,0BxCvBa,EwCwBd;EAPP;IAMQ,0BxCtBe,EwCuBhB;EAPP;IAMQ,0BxCrBa,EwCsBd;EAPP;IAMQ,0BxCnBW,EwCoBZ;EAPP;IAMQ,0BxCpBa,EwCqBd;;AAMP;EAzCA,mBAAmB;EACnB,eAAe;EACf,UAAU;EACV,aAAa;EACb,0BxCOqB;EwCJnB,mBxCsBe,EwCchB;;AAGD;E3BsHA,mBAAmB;EACnB,SAAS;EACT,UAAU;EACV,yCAAoB;MAApB,qCAAoB;UAApB,iCAAoB;E2BzJpB,mBAAmB;EACnB,UAAU;EACV,mBAAmB;EACnB,kBAAkB;EAClB,exCEa;EwCDb,oBAAoB;EAGlB,mBxCOe,EwCmBhB;;AC+CD;EAhFA,mBAAmB;EACnB,ezCwYoB;EyCvYpB,oBAAoB;EACpB,uBAAuB;EACvB,0BzCHkB;EyCIlB,gBAAgB;EAChB,0BAAkB;KAAlB,uBAAkB;MAAlB,sBAAkB;UAAlB,kBAAkB;EAClB,uBAAmB;MAAnB,mBAAmB,EA2ElB;;AAGD;EAzEA,mBAAmB;EACnB,OAAO;EACP,QAAQ;EACR,sBAAsB;EACtB,gBAAgB;EAChB,ezCwXoB;EyCvXpB,0BzChBmB;EyCiBnB,iCzC+XsC,EyC3TrC;EAFD;IA/DE,0BAA0B,EAC3B;;AAmED;E5B2CA,mBAAmB;EACnB,SAAS;EACT,oCAAqB;MAArB,gCAAqB;UAArB,4BAAqB;E4BzGrB,mBAAmB;EACnB,QAAQ;EACR,WAAW;EACX,sBAAsB;EACtB,czC4W0B;EyC3W1B,ezC0W2B;EyCzW3B,0BzCxCqB;EyCyCrB,iCzC6WsC;EyC5WtC,+BAA2B;MAA3B,2BAA2B;EAC3B,mBzCzBiB,EyC8EhB;EvDk7ED;I2Bn6EE,WAAW,EACZ;E4BlBD;IAhDE,0BAA6B,EAC9B;EA+CD;IA5CE,0BAA0B,EAC3B;;AAgDD;;EA5CA,czC6V4B;EyC5V5B,oBAAoB,EA8CnB;;AAGD;EA7CA,sBAAsB;EACtB,czCgVoB;EyC/UpB,gBAAgB;EAChB,kBAAkB;EAClB,gCAAgB;MAAhB,4BAAgB;UAAhB,wBAAgB,EA2Cf;EAFD;IAtCE,OAAO;IACP,czCyUkB;IyCxUlB,iBAAiB,EAClB;EAmCD;IAhCE,mBAAmB;IACnB,OAAO;IACP,UAAU;IACV,czCqUyB;IyCpUzB,ezCqUwB;IyCpUxB,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;;AC3HD;EACE,mBAAmB,EACpB;;AAED;EACE,mBAAmB;EACnB,WAAW;EACX,wCAAsB;UAAtB,gCAAsB,EACvB;;AAED;EACE,gBAAgB;EAChB,WAAW,EASZ;EAXD;IAKI,OAAO,EACR;EANH;IASI,UAAU,EACX;;AAGH;EACE,mBAAmB;EACnB,WAAW;EACX,YAAY,EAKb;EARD;IAMI,UAAU,EACX;;ACiFH;EACE,iBAAiB,EAClB;;AAGD;EA1EA,cAAc;EACd,gBAAgB;EAChB,OAAO;EACP,UAAU;EACV,QAAQ;EACR,SAAS;EACT,c3CmYkB;E2ClYlB,yC3CGa;E2CFb,mBAAmB,EAoElB;;AAGD;EAjEA,cAAc;EACd,cAAuB;EACvB,c3CCmB;E2CAnB,0B3CTmB;E2CUnB,uBAA6B;EAC7B,0B3CRa;E2CSb,mB3CAiB;E2C8Df,mBAAmB;EACnB,iBAAiB,EA0BlB;EzDo/ED;I2Bh/EE,WAAW,EACZ;EVvBC;IwCZF;MAxDE,cAAc,EAsFf,EAAA;EA9BD;;IAlDE,aAAa,EACd;EAiDD;IA7CE,iBAAiB,EAClB;ExCwDC;IwCZF;MAhCE,a3CoVgB;M2CnVhB,mB3ChDkB,E2C6GnB,EAAA;ExClBC;IwCZF;MAUM,WAAW;MACX,YAAY;MACZ,eAAe,EAChB,EAAA;EAbL;IAkBI,WAAW,EACZ;ExCPD;IwCZF;MAhCE,WAsDyC;MArDzC,mB3ChDkB,E2CqG4B,EAAA;ExCV9C;IwCZF;MAhCE,WAuDyC;MAtDzC,mB3ChDkB,E2CsG4B,EAAA;ExCX9C;IwCZF;MAhCE,WAwDyC;MAvDzC,mB3ChDkB,E2CuG4B,EAAA;EAxBhD;IAxBA,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IACf,UAAU,EA6CP;;ACiCH;EA9HA,oB5CCkB;E4CAlB,WAAW;EACX,mBAAmB;EACnB,0BAAkB;KAAlB,uBAAkB;MAAlB,sBAAkB;UAAlB,kBAAkB;EAGlB,e5CVa;E4CWb,kBAAkB;EAClB,oBpCUoB,EoC8GnB;;AAGD;EAtHA,WAAW;EACX,mBAAmB,EAuHlB;;AAGD;EArHA,oB5C1BmB;E4C2BnB,gBAAgB;EAChB,eAAe;EACf,mBAAmB;EACnB,YAAY;EACZ,a5CwXkB;E4CvXlB,+B5CgY2C;E4C/X3C,mB5CrBiB;E4CwBjB,eAAe;EACf,qBAAqB,EA4GpB;EAzGD;IACE,UAAU,EACX;EAqGD;IAjGE,oB5C3CW;I4C4CX,YAAY;IACZ,eAAe;IACf,mBAAmB;IACnB,eAAe;IACf,cAAyB;IACzB,aAAa;IACb,cAAc;IACd,+B5C0WyC;I4CzWzC,wCAAsB;YAAtB,gCAAsB;IACtB,mB5C5Ce,E4C6ChB;EAGD;IACE,oB5CnEmB,E4CwEpB;IAND;MAII,cAAyB,EAC1B;E1D8mFH;I2BtkFE,WAAW,EACZ;;A+B+CD;EA9EA,mBAAmB;EACnB,SAAS;EACT,oCAAqB;MAArB,gCAAqB;UAArB,4BAAqB,EAyEpB;;AAGD;EAvEA,SAAoB;EACpB,cAAc,EAyEb;EAvED;IACE,eAAe,EAChB;;AAwED;EAnEA,WAAsB,EAsErB;EApED;IACE,cAAc,EACf;;AAqED;EAjDE,YAkDuC;EAjDvC,e5CmSuB;E4ClSvB,oBpC7FkB,EoC8FnB;;AA8CD;EA3CE,YA4CkE;EA3ClE,aAXqB,EAYtB;;AAyCD;EAtCE,cAdyB,EAe1B;;AAyCD;EArDE,cAsDyC;EArDzC,gB5CoSyB;E4CnSzB,mBpC7FkB,EoC8FnB;;AAkDD;EA/CE,eAgDwE;EA/CxE,gBAXqB,EAYtB;;AA6CD;EA1CE,WAdyB,EAe1B;;AA6CD;EAzDE,YA0DuC;EAzDvC,e5CqSwB;E4CpSxB,gBpC7FkB,EoC8FnB;;AAsDD;EAnDE,YAoDmE;EAnDnE,aAXqB,EAYtB;;AAiDD;EA9CE,cAdyB,EAe1B;;ACyBD;EAjFA,YAAY;EACZ,oB7CjEkB;E6CkElB,mB7C9DiB,E6C+IhB;EAFD;;;IA9IE,0BC3BiB;ID4BjB,0B7CTW,E6CUZ;EA4ID;IAxIE,kB7CNqB;I6COrB,kCrCOkB,EqCNnB;EAsID;;IAjIE,oBCxCiB;IDyCjB,e7CpBqB,E6CkCtB;IAkHD;;MA5HI,wBAAwB,EACzB;IA2HH;;;;MAtHI,kCrCVgB;MqCWhB,kB7CzBmB;M6C0BnB,iBAAY,EACb;EAmHH;IA1GQ,0BC/DW,EDgEZ;EAyGP;;IA5FI,kCrCpCgB,EqCqCjB;;A1CqBD;E0C0EF;IAxBI,cAAc,EACf;EAuBH;IAnBE,cAAc,EACf;EAkBD;;;IAbE,eAAe,EAChB;EAYD;IATE,cAAc,EACf,EAAA;;AAcD;EA3EA,eAAe;EACf,YAAY;EACZ,iBAAiB,EA2EhB;;AAED;EArEI,0B7CwUkB,E6CvUnB;;AAoEH;EA/DM,0B7CmUuB,E6ClUxB;;AExCL;EA9DA,U/CmbY;E+ClbZ,sBAAsB;EACtB,oB/CFa;E+CGb,0B/CPkB,E+CoEjB;EAFD;IlCeE,aAAa;IACb,eAAe,EAChB;EkCjBD;IlCoBE,YAAY,EACb;;AkChBD;EA1DE,YAAY;EACZ,YAAY;EACZ,eAAe,EAChB;;AA4DD;EAEI,WAAW,EAKZ;EAPH;IAKM,wBAAwB,EACzB;;AAKL;EACE,oB/C7FmB,E+CuGpB;EAXD;IAII,e/CvFS,E+C6FV;IAVH;MAQM,oBD9Ga,EC+Gd;;AAIL;EA/EA,YAAO,EAiFN;EAFD;IA5EE,eAAe;IACf,wB/Coa6B;I+Cna7B,eAAe;IACf,gBAAgB;IAChB,e/CjCmB,E+C2CpB;IA8DD;MArEI,oB/C3BS,E+C4BV;IAoEH;MAhEI,oB/CpCc,E+CqCf;;AAmEH;EA7DA,oB/CvCa;E+CwCb,0BAA0B;EAC1B,0B/C7CkB;E+C8ClB,cAAc,EA4Db;;AAED;EAzDA,0B/CnDkB;E+CoDlB,eAAiC,EA0DhC;;AAED;EAvDA,cAAc;EACd,c/CwYwB,E+ChVvB;EAFD;IAnDE,eAAe,EAChB;;AClED;EAhBA,0BhDwBa;EgDvBb,4ChDsBa;EgDrBb,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,sChD0d8C;EgDzd9C,mBhD2BiB;EgD1BjB,oBhDsBkB,EgDXjB;EAFD;IALE,8ChDImB,EgDHpB;;ACTD;EAEE,oBjDkBW;EiDjBX,ejDkBW;EiDjBX,gBjDgeqB,EiD1dtB;EAVD;IpCkGE,aAAa;IACb,eAAe,EAChB;EoCpGD;IpCuGE,YAAY,EACb;EoCxGD;IAOI,qBjDieyB;IiDhezB,qBjD4dmB,EiD3dpB;;AAGH;EACE,YAAY,EACb;;AAED;EACE,aAAa;EACb,kBAAkB,EACnB;;AAED;EACE,kBjD+c4B;EiD9c5B,uBAAuB;EACvB,sBAAsB,EACvB;;AAED;EpCMA,mBAAmB;EACnB,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;EAChB,YAjBY;EAkBZ,aAjBa,EoCQZ;EAFD;IpCeE,YAAY;IACZ,mBAAmB;IACnB,eAAe;IACf,YAAY;IACZ,YAxBU;IAyBV,oBb1BW;Ia2BX,OAAO;IACP,QAAQ;IAOR,8CbnCW,EaoCZ;EoC9BD;IpCyCI,oBblDe;IamDf,8CbnDe,EaoDhB;;AoCvCH;EpCEA,mBAAmB;EACnB,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;EAChB,YAjBY;EAkBZ,aAjBa,EoCYZ;EAFD;IpCWE,YAAY;IACZ,mBAAmB;IACnB,eAAe;IACf,YAAY;IACZ,YAxBU;IAyBV,oBb3BW;Ia4BX,OAAO;IACP,QAAQ;IAOR,8CbpCW,EaqCZ;EoC1BD;IpCqCI,oBbjDa;IakDb,8CblDa,EamDd;;AqCPH;EAnDA,kClDOiB;EkDNjB,kBlDgBuB;EkDfvB,mBAAmB;EACnB,sBAAsB;EACtB,aAAa,EAiDZ;;AAED;EA/CA,0BlDAa;EkDCb,elDAa;EkDCb,elDgEmB;EkD/DnB,iBlD0duB;EkDzdvB,mBAAmB;EACnB,YAAY;EACZ,4BAAS;EACT,4BAA4B;EAC5B,mBlDEiB,EkDuChB;EAFD;IrCtFA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,sBbkgByB;Ia1fvB,8Cb2BW;Ia1BX,2BAA2B;IAC3B,oBAAoB;IqCqCpB,aAAa;IACb,mBAAmB;IACnB,UAAU;IACV,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;EA+BD;IrCtFA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,sBbkgByB;Ia/fvB,8CAAqD;IACrD,wBAAwB;IACxB,uBAAuB;IqCkDvB,UAAU;IACV,aAAa,EACd;EAyBD;IrCtFA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,sBbkgByB;IarfvB,0DbsBW;IarBX,yBAAyB;IACzB,sBAAsB;IqC8CtB,aAAa;IACb,WAAW;IACX,SAAS;IACT,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;EAiBD;IrCtFA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,sBbkgByB;IahfvB,0DAAiE;IACjE,0BAA0B;IAC1B,qBAAqB;IqCiDrB,aAAa;IACb,WAAW;IACX,YAAY;IACZ,SAAS;IACT,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;;ACjCD;EApCA,gBnDqgBqB,EmD/dpB;EAFD;ItCwEE,aAAa;IACb,eAAe,EAChB;EsC1ED;ItC6EE,YAAY,EACb;EsC9ED;;IAhCE,0BnDuBgB,EmDtBjB;EA+BD;IA5BE,anDggBsB;ImD/ftB,mBAAqC,EACtC;EA0BD;IAtBE,YAAY,EACb;;AhDgGC;EgDrEA;IApBA,YAAY,EACb;EAmBC;IAhBA,YAAY,EACb;EAeC;IAZA,YAAY,EACb,EAAA;;AhDgFC;EgDrEA;IApBA,YAAY,EACb;EAmBC;IAhBA,YAAY,EACb;EAeC;IAZA,YAAY,EACb,EAAA;;AhDgFC;EgDrEA;IApBA,YAAY,EACb;EAmBC;IAhBA,YAAY,EACb;EAeC;IAZA,YAAY,EACb,EAAA;;AhDgFC;EgD1FF;IACE,YAAY,EACb;EAED;IACE,YAAY,EACb;EAED;IACE,YAAY,EACb,EAAA;;AAwBD;EACE,YAAY;EACZ,mBnD8cuB,EmD7cxB;;AACD;EACE,YAAY,EACb;;AAED;EACE,aAAa,EACd","file":"foundation-flex.css","sourcesContent":["@charset \"UTF-8\";\n/**\n * Foundation for Sites by ZURB\n * Version 6.1.2\n * foundation.zurb.com\n * Licensed under MIT Open Source\n */\n.slide-in-down.mui-enter, .slide-in-left.mui-enter, .slide-in-up.mui-enter, .slide-in-right.mui-enter, .slide-out-down.mui-leave, .slide-out-right.mui-leave, .slide-out-up.mui-leave, .slide-out-left.mui-leave, .fade-in.mui-enter, .fade-out.mui-leave, .hinge-in-from-top.mui-enter, .hinge-in-from-right.mui-enter, .hinge-in-from-bottom.mui-enter, .hinge-in-from-left.mui-enter, .hinge-in-from-middle-x.mui-enter, .hinge-in-from-middle-y.mui-enter, .hinge-out-from-top.mui-leave, .hinge-out-from-right.mui-leave, .hinge-out-from-bottom.mui-leave, .hinge-out-from-left.mui-leave, .hinge-out-from-middle-x.mui-leave, .hinge-out-from-middle-y.mui-leave, .scale-in-up.mui-enter, .scale-in-down.mui-enter, .scale-out-up.mui-leave, .scale-out-down.mui-leave, .spin-in.mui-enter, .spin-out.mui-leave, .spin-in-ccw.mui-enter, .spin-out-ccw.mui-leave {\n transition-duration: 500ms;\n transition-timing-function: linear; }\n\n.slide-in-down.mui-enter {\n transform: translateY(-100%);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-in-down.mui-enter.mui-enter-active {\n transform: translateY(0); }\n\n.slide-in-left.mui-enter {\n transform: translateX(-100%);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-in-left.mui-enter.mui-enter-active {\n transform: translateX(0); }\n\n.slide-in-up.mui-enter {\n transform: translateY(100%);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-in-up.mui-enter.mui-enter-active {\n transform: translateY(0); }\n\n.slide-in-right.mui-enter {\n transform: translateX(100%);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-in-right.mui-enter.mui-enter-active {\n transform: translateX(0); }\n\n.slide-out-down.mui-leave {\n transform: translateY(0);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-out-down.mui-leave.mui-leave-active {\n transform: translateY(-100%); }\n\n.slide-out-right.mui-leave {\n transform: translateX(0);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-out-right.mui-leave.mui-leave-active {\n transform: translateX(100%); }\n\n.slide-out-up.mui-leave {\n transform: translateY(0);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-out-up.mui-leave.mui-leave-active {\n transform: translateY(-100%); }\n\n.slide-out-left.mui-leave {\n transform: translateX(0);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-out-left.mui-leave.mui-leave-active {\n transform: translateX(-100%); }\n\n.fade-in.mui-enter {\n opacity: 0;\n transition-property: opacity; }\n\n.fade-in.mui-enter.mui-enter-active {\n opacity: 1; }\n\n.fade-out.mui-leave {\n opacity: 1;\n transition-property: opacity; }\n\n.fade-out.mui-leave.mui-leave-active {\n opacity: 0; }\n\n.hinge-in-from-top.mui-enter {\n transform: perspective(2000px) rotateX(-90deg);\n transform-origin: top;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-top.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-right.mui-enter {\n transform: perspective(2000px) rotateY(-90deg);\n transform-origin: right;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-right.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-bottom.mui-enter {\n transform: perspective(2000px) rotateX(90deg);\n transform-origin: bottom;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-bottom.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-left.mui-enter {\n transform: perspective(2000px) rotateY(90deg);\n transform-origin: left;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-left.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-middle-x.mui-enter {\n transform: perspective(2000px) rotateX(-90deg);\n transform-origin: center;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-middle-x.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-middle-y.mui-enter {\n transform: perspective(2000px) rotateY(-90deg);\n transform-origin: center;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-middle-y.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-out-from-top.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: top;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-top.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateX(-90deg);\n opacity: 0; }\n\n.hinge-out-from-right.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: right;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-right.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateY(-90deg);\n opacity: 0; }\n\n.hinge-out-from-bottom.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: bottom;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-bottom.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateX(90deg);\n opacity: 0; }\n\n.hinge-out-from-left.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: left;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-left.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateY(90deg);\n opacity: 0; }\n\n.hinge-out-from-middle-x.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: center;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-middle-x.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateX(-90deg);\n opacity: 0; }\n\n.hinge-out-from-middle-y.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: center;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-middle-y.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateY(-90deg);\n opacity: 0; }\n\n.scale-in-up.mui-enter {\n transform: scale(0.5);\n transition-property: transform, opacity;\n opacity: 0; }\n\n.scale-in-up.mui-enter.mui-enter-active {\n transform: scale(1);\n opacity: 1; }\n\n.scale-in-down.mui-enter {\n transform: scale(1.5);\n transition-property: transform, opacity;\n opacity: 0; }\n\n.scale-in-down.mui-enter.mui-enter-active {\n transform: scale(1);\n opacity: 1; }\n\n.scale-out-up.mui-leave {\n transform: scale(1);\n transition-property: transform, opacity;\n opacity: 1; }\n\n.scale-out-up.mui-leave.mui-leave-active {\n transform: scale(1.5);\n opacity: 0; }\n\n.scale-out-down.mui-leave {\n transform: scale(1);\n transition-property: transform, opacity;\n opacity: 1; }\n\n.scale-out-down.mui-leave.mui-leave-active {\n transform: scale(0.5);\n opacity: 0; }\n\n.spin-in.mui-enter {\n transform: rotate(-0.75turn);\n transition-property: transform, opacity;\n opacity: 0; }\n\n.spin-in.mui-enter.mui-enter-active {\n transform: rotate(0);\n opacity: 1; }\n\n.spin-out.mui-leave {\n transform: rotate(0);\n transition-property: transform, opacity;\n opacity: 1; }\n\n.spin-out.mui-leave.mui-leave-active {\n transform: rotate(0.75turn);\n opacity: 0; }\n\n.spin-in-ccw.mui-enter {\n transform: rotate(0.75turn);\n transition-property: transform, opacity;\n opacity: 0; }\n\n.spin-in-ccw.mui-enter.mui-enter-active {\n transform: rotate(0);\n opacity: 1; }\n\n.spin-out-ccw.mui-leave {\n transform: rotate(0);\n transition-property: transform, opacity;\n opacity: 1; }\n\n.spin-out-ccw.mui-leave.mui-leave-active {\n transform: rotate(-0.75turn);\n opacity: 0; }\n\n.slow {\n transition-duration: 750ms !important; }\n\n.fast {\n transition-duration: 250ms !important; }\n\n.linear {\n transition-timing-function: linear !important; }\n\n.ease {\n transition-timing-function: ease !important; }\n\n.ease-in {\n transition-timing-function: ease-in !important; }\n\n.ease-out {\n transition-timing-function: ease-out !important; }\n\n.ease-in-out {\n transition-timing-function: ease-in-out !important; }\n\n.bounce-in {\n transition-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; }\n\n.bounce-out {\n transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }\n\n.bounce-in-out {\n transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }\n\n.short-delay {\n transition-delay: 300ms !important; }\n\n.long-delay {\n transition-delay: 700ms !important; }\n\n.shake {\n animation-name: shake-7; }\n\n@keyframes shake-7 {\n 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% {\n transform: translateX(7%); }\n 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% {\n transform: translateX(-7%); } }\n\n.spin-cw {\n animation-name: spin-cw-1turn; }\n\n@keyframes spin-cw-1turn {\n 0% {\n transform: rotate(-1turn); }\n 100% {\n transform: rotate(0); } }\n\n.spin-ccw {\n animation-name: spin-cw-1turn; }\n\n@keyframes spin-cw-1turn {\n 0% {\n transform: rotate(0); }\n 100% {\n transform: rotate(1turn); } }\n\n.wiggle {\n animation-name: wiggle-7deg; }\n\n@keyframes wiggle-7deg {\n 40%, 50%, 60% {\n transform: rotate(7deg); }\n 35%, 45%, 55%, 65% {\n transform: rotate(-7deg); }\n 0%, 30%, 70%, 100% {\n transform: rotate(0); } }\n\n.infinite {\n animation-iteration-count: infinite; }\n\n.slow {\n animation-duration: 750ms !important; }\n\n.fast {\n animation-duration: 250ms !important; }\n\n.linear {\n animation-timing-function: linear !important; }\n\n.ease {\n animation-timing-function: ease !important; }\n\n.ease-in {\n animation-timing-function: ease-in !important; }\n\n.ease-out {\n animation-timing-function: ease-out !important; }\n\n.ease-in-out {\n animation-timing-function: ease-in-out !important; }\n\n.bounce-in {\n animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; }\n\n.bounce-out {\n animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }\n\n.bounce-in-out {\n animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }\n\n.short-delay {\n animation-delay: 300ms !important; }\n\n.long-delay {\n animation-delay: 700ms !important; }\n\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\nhtml {\n font-family: sans-serif;\n /* 1 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n -webkit-text-size-adjust: 100%;\n /* 2 */ }\n\n/**\n * Remove default margin.\n */\nbody {\n margin: 0; }\n\n/* HTML5 display definitions\n ========================================================================== */\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block; }\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n /* 1 */\n vertical-align: baseline;\n /* 2 */ }\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0; }\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none; }\n\n/* Links\n ========================================================================== */\n/**\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent; }\n\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\na:active,\na:hover {\n outline: 0; }\n\n/* Text-level semantics\n ========================================================================== */\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n border-bottom: 1px dotted; }\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\nb,\nstrong {\n font-weight: bold; }\n\n/**\n * Address styling not present in Safari and Chrome.\n */\ndfn {\n font-style: italic; }\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0; }\n\n/**\n * Address styling not present in IE 8/9.\n */\nmark {\n background: #ff0;\n color: #000; }\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\nsmall {\n font-size: 80%; }\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline; }\n\nsup {\n top: -0.5em; }\n\nsub {\n bottom: -0.25em; }\n\n/* Embedded content\n ========================================================================== */\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n border: 0; }\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden; }\n\n/* Grouping content\n ========================================================================== */\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em 40px; }\n\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n box-sizing: content-box;\n height: 0; }\n\n/**\n * Contain overflow in all browsers.\n */\npre {\n overflow: auto; }\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em; }\n\n/* Forms\n ========================================================================== */\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n /* 1 */\n font: inherit;\n /* 2 */\n margin: 0;\n /* 3 */ }\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible; }\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none; }\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */ }\n\n/**\n * Re-set default cursor for disabled elements.\n */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\ninput {\n line-height: normal; }\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n box-sizing: content-box;\n /* 2 */ }\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n\n/**\n * Define consistent border, margin, and padding.\n * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.\n */\n/* fieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n } */\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto; }\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold; }\n\n/* Tables\n ========================================================================== */\n/**\n * Remove most spacing between table cells.\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n\ntd,\nth {\n padding: 0; }\n\n.foundation-mq {\n font-family: \"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em\"; }\n\nhtml {\n font-size: 100%;\n box-sizing: border-box; }\n\n*,\n*:before,\n*:after {\n box-sizing: inherit; }\n\nbody {\n padding: 0;\n margin: 0;\n font-family: \"Helvetica Neue\", Helvetica, Roboto, Arial, sans-serif;\n font-weight: normal;\n line-height: 1.5;\n color: #222222;\n background: #fefefe;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale; }\n\nimg {\n max-width: 100%;\n height: auto;\n -ms-interpolation-mode: bicubic;\n display: inline-block;\n vertical-align: middle; }\n\ntextarea {\n height: auto;\n min-height: 50px;\n border-radius: 3px; }\n\nselect {\n width: 100%;\n border-radius: 3px; }\n\n#map_canvas img,\n#map_canvas embed,\n#map_canvas object,\n.map_canvas img,\n.map_canvas embed,\n.map_canvas object,\n.mqa-display img,\n.mqa-display embed,\n.mqa-display object {\n max-width: none !important; }\n\nbutton {\n -webkit-appearance: none;\n -moz-appearance: none;\n background: transparent;\n padding: 0;\n border: 0;\n border-radius: 3px;\n line-height: 1; }\n\n.is-visible {\n display: block !important; }\n\n.is-hidden {\n display: none !important; }\n\n.row {\n max-width: 62.5rem;\n margin-left: auto;\n margin-right: auto;\n display: flex;\n flex-flow: row wrap; }\n .row .row {\n margin-left: -0.625rem;\n margin-right: -0.625rem; }\n @media screen and (min-width: 40em) {\n .row .row {\n margin-left: -0.9375rem;\n margin-right: -0.9375rem; } }\n .row.expanded {\n max-width: none; }\n .row.collapse > .column, .row.collapse > .columns {\n padding-left: 0;\n padding-right: 0; }\n\n.column, .columns {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n flex: 1 1 0px; }\n @media screen and (min-width: 40em) {\n .column, .columns {\n padding-left: 0.9375rem;\n padding-right: 0.9375rem; } }\n\n.column.row.row, .row.row.columns {\n float: none; }\n .row .column.row.row, .row .row.row.columns {\n padding-left: 0;\n padding-right: 0;\n margin-left: 0;\n margin-right: 0; }\n\n.small-1 {\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n\n.small-offset-0 {\n margin-left: 0%; }\n\n.small-2 {\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n\n.small-offset-1 {\n margin-left: 8.33333%; }\n\n.small-3 {\n flex: 0 0 25%;\n max-width: 25%; }\n\n.small-offset-2 {\n margin-left: 16.66667%; }\n\n.small-4 {\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n\n.small-offset-3 {\n margin-left: 25%; }\n\n.small-5 {\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n\n.small-offset-4 {\n margin-left: 33.33333%; }\n\n.small-6 {\n flex: 0 0 50%;\n max-width: 50%; }\n\n.small-offset-5 {\n margin-left: 41.66667%; }\n\n.small-7 {\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n\n.small-offset-6 {\n margin-left: 50%; }\n\n.small-8 {\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n\n.small-offset-7 {\n margin-left: 58.33333%; }\n\n.small-9 {\n flex: 0 0 75%;\n max-width: 75%; }\n\n.small-offset-8 {\n margin-left: 66.66667%; }\n\n.small-10 {\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n\n.small-offset-9 {\n margin-left: 75%; }\n\n.small-11 {\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n\n.small-offset-10 {\n margin-left: 83.33333%; }\n\n.small-12 {\n flex: 0 0 100%;\n max-width: 100%; }\n\n.small-offset-11 {\n margin-left: 91.66667%; }\n\n.small-order-1 {\n order: 1; }\n\n.small-order-2 {\n order: 2; }\n\n.small-order-3 {\n order: 3; }\n\n.small-order-4 {\n order: 4; }\n\n.small-order-5 {\n order: 5; }\n\n.small-order-6 {\n order: 6; }\n\n.small-collapse > .column, .small-collapse > .columns {\n padding-left: 0;\n padding-right: 0; }\n\n.small-uncollapse > .column, .small-uncollapse > .columns {\n padding-left: 0.625rem;\n padding-right: 0.625rem; }\n\n@media screen and (min-width: 40em) {\n .medium-1 {\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .medium-offset-0 {\n margin-left: 0%; }\n .medium-2 {\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .medium-offset-1 {\n margin-left: 8.33333%; }\n .medium-3 {\n flex: 0 0 25%;\n max-width: 25%; }\n .medium-offset-2 {\n margin-left: 16.66667%; }\n .medium-4 {\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .medium-offset-3 {\n margin-left: 25%; }\n .medium-5 {\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .medium-offset-4 {\n margin-left: 33.33333%; }\n .medium-6 {\n flex: 0 0 50%;\n max-width: 50%; }\n .medium-offset-5 {\n margin-left: 41.66667%; }\n .medium-7 {\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .medium-offset-6 {\n margin-left: 50%; }\n .medium-8 {\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .medium-offset-7 {\n margin-left: 58.33333%; }\n .medium-9 {\n flex: 0 0 75%;\n max-width: 75%; }\n .medium-offset-8 {\n margin-left: 66.66667%; }\n .medium-10 {\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .medium-offset-9 {\n margin-left: 75%; }\n .medium-11 {\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .medium-offset-10 {\n margin-left: 83.33333%; }\n .medium-12 {\n flex: 0 0 100%;\n max-width: 100%; }\n .medium-offset-11 {\n margin-left: 91.66667%; }\n .medium-order-1 {\n order: 1; }\n .medium-order-2 {\n order: 2; }\n .medium-order-3 {\n order: 3; }\n .medium-order-4 {\n order: 4; }\n .medium-order-5 {\n order: 5; }\n .medium-order-6 {\n order: 6; } }\n\n@media screen and (min-width: 40em) and (min-width: 40em) {\n .medium-expand {\n flex: 1 1 0px; } }\n\n.row.medium-unstack .column, .row.medium-unstack .columns {\n flex: 0 0 100%; }\n @media screen and (min-width: 40em) {\n .row.medium-unstack .column, .row.medium-unstack .columns {\n flex: 1 1 0px; } }\n\n@media screen and (min-width: 40em) {\n .medium-collapse > .column, .medium-collapse > .columns {\n padding-left: 0;\n padding-right: 0; }\n .medium-uncollapse > .column, .medium-uncollapse > .columns {\n padding-left: 0.9375rem;\n padding-right: 0.9375rem; } }\n\n@media screen and (min-width: 64em) {\n .large-1 {\n flex: 0 0 8.33333%;\n max-width: 8.33333%; }\n .large-offset-0 {\n margin-left: 0%; }\n .large-2 {\n flex: 0 0 16.66667%;\n max-width: 16.66667%; }\n .large-offset-1 {\n margin-left: 8.33333%; }\n .large-3 {\n flex: 0 0 25%;\n max-width: 25%; }\n .large-offset-2 {\n margin-left: 16.66667%; }\n .large-4 {\n flex: 0 0 33.33333%;\n max-width: 33.33333%; }\n .large-offset-3 {\n margin-left: 25%; }\n .large-5 {\n flex: 0 0 41.66667%;\n max-width: 41.66667%; }\n .large-offset-4 {\n margin-left: 33.33333%; }\n .large-6 {\n flex: 0 0 50%;\n max-width: 50%; }\n .large-offset-5 {\n margin-left: 41.66667%; }\n .large-7 {\n flex: 0 0 58.33333%;\n max-width: 58.33333%; }\n .large-offset-6 {\n margin-left: 50%; }\n .large-8 {\n flex: 0 0 66.66667%;\n max-width: 66.66667%; }\n .large-offset-7 {\n margin-left: 58.33333%; }\n .large-9 {\n flex: 0 0 75%;\n max-width: 75%; }\n .large-offset-8 {\n margin-left: 66.66667%; }\n .large-10 {\n flex: 0 0 83.33333%;\n max-width: 83.33333%; }\n .large-offset-9 {\n margin-left: 75%; }\n .large-11 {\n flex: 0 0 91.66667%;\n max-width: 91.66667%; }\n .large-offset-10 {\n margin-left: 83.33333%; }\n .large-12 {\n flex: 0 0 100%;\n max-width: 100%; }\n .large-offset-11 {\n margin-left: 91.66667%; }\n .large-order-1 {\n order: 1; }\n .large-order-2 {\n order: 2; }\n .large-order-3 {\n order: 3; }\n .large-order-4 {\n order: 4; }\n .large-order-5 {\n order: 5; }\n .large-order-6 {\n order: 6; } }\n\n@media screen and (min-width: 64em) and (min-width: 64em) {\n .large-expand {\n flex: 1 1 0px; } }\n\n.row.large-unstack .column, .row.large-unstack .columns {\n flex: 0 0 100%; }\n @media screen and (min-width: 64em) {\n .row.large-unstack .column, .row.large-unstack .columns {\n flex: 1 1 0px; } }\n\n@media screen and (min-width: 64em) {\n .large-collapse > .column, .large-collapse > .columns {\n padding-left: 0;\n padding-right: 0; }\n .large-uncollapse > .column, .large-uncollapse > .columns {\n padding-left: 0.9375rem;\n padding-right: 0.9375rem; } }\n\n.shrink {\n flex: 0 0 auto;\n max-width: 100%; }\n\n.row.align-right {\n justify-content: flex-end; }\n\n.row.align-center {\n justify-content: center; }\n\n.row.align-justify {\n justify-content: space-between; }\n\n.row.align-spaced {\n justify-content: space-around; }\n\n.row.align-top {\n align-items: flex-start; }\n\n.column.align-top, .align-top.columns {\n align-self: flex-start; }\n\n.row.align-bottom {\n align-items: flex-end; }\n\n.column.align-bottom, .align-bottom.columns {\n align-self: flex-end; }\n\n.row.align-middle {\n align-items: center; }\n\n.column.align-middle, .align-middle.columns {\n align-self: center; }\n\n.row.align-stretch {\n align-items: stretch; }\n\n.column.align-stretch, .align-stretch.columns {\n align-self: stretch; }\n\ndiv,\ndl,\ndt,\ndd,\nul,\nol,\nli,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\npre,\nform,\np,\nblockquote,\nth,\ntd {\n margin: 0;\n padding: 0; }\n\np {\n font-size: inherit;\n line-height: 1.6;\n margin-bottom: 1rem;\n text-rendering: optimizeLegibility; }\n\nem,\ni {\n font-style: italic;\n line-height: inherit; }\n\nstrong,\nb {\n font-weight: bold;\n line-height: inherit; }\n\nsmall {\n font-size: 80%;\n line-height: inherit; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-family: \"Helvetica Neue\", Helvetica, Roboto, Arial, sans-serif;\n font-weight: normal;\n font-style: normal;\n color: #222222;\n text-rendering: optimizeLegibility;\n margin-top: 0;\n margin-bottom: 0.5rem;\n line-height: 1.4; }\n h1 small,\n h2 small,\n h3 small,\n h4 small,\n h5 small,\n h6 small {\n color: #cacaca;\n line-height: 0; }\n\nh1 {\n font-size: 1.5rem; }\n\nh2 {\n font-size: 1.25rem; }\n\nh3 {\n font-size: 1.1875rem; }\n\nh4 {\n font-size: 1.125rem; }\n\nh5 {\n font-size: 1.0625rem; }\n\nh6 {\n font-size: 1rem; }\n\n@media screen and (min-width: 40em) {\n h1 {\n font-size: 3rem; }\n h2 {\n font-size: 2.5rem; }\n h3 {\n font-size: 1.9375rem; }\n h4 {\n font-size: 1.5625rem; }\n h5 {\n font-size: 1.25rem; }\n h6 {\n font-size: 1rem; } }\n\na {\n color: #2F343B;\n text-decoration: none;\n line-height: inherit;\n cursor: pointer; }\n a:hover, a:focus {\n color: #282d33; }\n a img {\n border: 0; }\n\nhr {\n max-width: 62.5rem;\n height: 0;\n border-right: 0;\n border-top: 0;\n border-bottom: 1px solid #cacaca;\n border-left: 0;\n margin: 1.25rem auto;\n clear: both; }\n\nul,\nol,\ndl {\n line-height: 1.6;\n margin-bottom: 1rem;\n list-style-position: outside; }\n\nli {\n font-size: inherit; }\n\nul {\n list-style-type: disc;\n margin-left: 1.25rem; }\n\nol {\n margin-left: 1.25rem; }\n\nul ul, ol ul, ul ol, ol ol {\n margin-left: 1.25rem;\n margin-bottom: 0; }\n\ndl {\n margin-bottom: 1rem; }\n dl dt {\n margin-bottom: 0.3rem;\n font-weight: bold; }\n\nblockquote {\n margin: 0 0 1rem;\n padding: 0.5625rem 1.25rem 0 1.1875rem;\n border-left: 1px solid #cacaca; }\n blockquote, blockquote p {\n line-height: 1.6;\n color: #8a8a8a; }\n\ncite {\n display: block;\n font-size: 0.8125rem;\n color: #8a8a8a; }\n cite:before {\n content: '\\2014 \\0020'; }\n\nabbr {\n color: #222222;\n cursor: help;\n border-bottom: 1px dotted #0a0a0a; }\n\ncode {\n font-family: Consolas, \"Liberation Mono\", Courier, monospace;\n font-weight: normal;\n color: #0a0a0a;\n background-color: #e6e6e6;\n border: 1px solid #cacaca;\n padding: 0.125rem 0.3125rem 0.0625rem; }\n\nkbd {\n padding: 0.125rem 0.25rem 0;\n margin: 0;\n background-color: #e6e6e6;\n color: #0a0a0a;\n font-family: Consolas, \"Liberation Mono\", Courier, monospace; }\n\n.subheader {\n margin-top: 0.2rem;\n margin-bottom: 0.5rem;\n font-weight: normal;\n line-height: 1.4;\n color: #8a8a8a; }\n\n.lead {\n font-size: 125%;\n line-height: 1.6; }\n\n.stat {\n font-size: 2.5rem;\n line-height: 1; }\n p + .stat {\n margin-top: -1rem; }\n\n.no-bullet {\n margin-left: 0;\n list-style: none; }\n\n.text-left {\n text-align: left; }\n\n.text-right {\n text-align: right; }\n\n.text-center {\n text-align: center; }\n\n.text-justify {\n text-align: justify; }\n\n@media screen and (min-width: 40em) {\n .medium-text-left {\n text-align: left; }\n .medium-text-right {\n text-align: right; }\n .medium-text-center {\n text-align: center; }\n .medium-text-justify {\n text-align: justify; } }\n\n@media screen and (min-width: 64em) {\n .large-text-left {\n text-align: left; }\n .large-text-right {\n text-align: right; }\n .large-text-center {\n text-align: center; }\n .large-text-justify {\n text-align: justify; } }\n\n.show-for-print {\n display: none !important; }\n\n@media print {\n * {\n background: transparent !important;\n color: black !important;\n box-shadow: none !important;\n text-shadow: none !important; }\n .show-for-print {\n display: block !important; }\n .hide-for-print {\n display: none !important; }\n table.show-for-print {\n display: table !important; }\n thead.show-for-print {\n display: table-header-group !important; }\n tbody.show-for-print {\n display: table-row-group !important; }\n tr.show-for-print {\n display: table-row !important; }\n td.show-for-print {\n display: table-cell !important; }\n th.show-for-print {\n display: table-cell !important; }\n a,\n a:visited {\n text-decoration: underline; }\n a[href]:after {\n content: \" (\" attr(href) \")\"; }\n .ir a:after,\n a[href^='javascript:']:after,\n a[href^='#']:after {\n content: ''; }\n abbr[title]:after {\n content: \" (\" attr(title) \")\"; }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid; }\n thead {\n display: table-header-group; }\n tr,\n img {\n page-break-inside: avoid; }\n img {\n max-width: 100% !important; }\n @page {\n margin: 0.5cm; }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3; }\n h2,\n h3 {\n page-break-after: avoid; } }\n\n.button {\n display: inline-block;\n text-align: center;\n line-height: 1;\n cursor: pointer;\n -webkit-appearance: none;\n transition: background-color 0.25s ease-out, color 0.25s ease-out;\n vertical-align: middle;\n border: 1px solid transparent;\n border-radius: 3px;\n padding: 0.85em 1em;\n margin: 0 0 1rem 0;\n font-size: 0.9rem;\n background-color: #2F343B;\n color: #fff; }\n [data-whatinput='mouse'] .button {\n outline: 0; }\n .button:hover, .button:focus {\n background-color: #282c32;\n color: #fff; }\n .button.tiny {\n font-size: 0.6rem; }\n .button.small {\n font-size: 0.75rem; }\n .button.large {\n font-size: 1.25rem; }\n .button.expanded {\n display: block;\n width: 100%;\n margin-left: 0;\n margin-right: 0; }\n .button.primary {\n background-color: #2F343B;\n color: #fff; }\n .button.primary:hover, .button.primary:focus {\n background-color: #262a2f;\n color: #fff; }\n .button.secondary {\n background-color: #703030;\n color: #fff; }\n .button.secondary:hover, .button.secondary:focus {\n background-color: #5a2626;\n color: #fff; }\n .button.success {\n background-color: #5da423;\n color: #fff; }\n .button.success:hover, .button.success:focus {\n background-color: #4a831c;\n color: #fff; }\n .button.alert {\n background-color: #703030;\n color: #fff; }\n .button.alert:hover, .button.alert:focus {\n background-color: #5a2626;\n color: #fff; }\n .button.warning {\n background-color: #ffae00;\n color: #fff; }\n .button.warning:hover, .button.warning:focus {\n background-color: #cc8b00;\n color: #fff; }\n .button.hollow {\n border: 1px solid #2F343B;\n color: #2F343B; }\n .button.hollow, .button.hollow:hover, .button.hollow:focus {\n background-color: transparent; }\n .button.hollow:hover, .button.hollow:focus {\n border-color: #181a1e;\n color: #181a1e; }\n .button.hollow.primary {\n border: 1px solid #2F343B;\n color: #2F343B; }\n .button.hollow.primary:hover, .button.hollow.primary:focus {\n border-color: #181a1e;\n color: #181a1e; }\n .button.hollow.secondary {\n border: 1px solid #703030;\n color: #703030; }\n .button.hollow.secondary:hover, .button.hollow.secondary:focus {\n border-color: #381818;\n color: #381818; }\n .button.hollow.success {\n border: 1px solid #5da423;\n color: #5da423; }\n .button.hollow.success:hover, .button.hollow.success:focus {\n border-color: #2f5212;\n color: #2f5212; }\n .button.hollow.alert {\n border: 1px solid #703030;\n color: #703030; }\n .button.hollow.alert:hover, .button.hollow.alert:focus {\n border-color: #381818;\n color: #381818; }\n .button.hollow.warning {\n border: 1px solid #ffae00;\n color: #ffae00; }\n .button.hollow.warning:hover, .button.hollow.warning:focus {\n border-color: #805700;\n color: #805700; }\n .button.disabled, .button[disabled] {\n opacity: 0.25;\n cursor: not-allowed;\n pointer-events: none; }\n .button.dropdown::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.4em;\n border-color: #fefefe transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n position: relative;\n top: 0.4em;\n float: right;\n margin-left: 1em;\n display: inline-block; }\n .button.arrow-only::after {\n margin-left: 0;\n float: none;\n top: 0.2em; }\n\n[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'],\ntextarea {\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 2.4375rem;\n padding: 0.5rem;\n border: 1px solid #cacaca;\n margin: 0 0 1rem;\n font-family: inherit;\n font-size: 1rem;\n color: #0a0a0a;\n background-color: #fefefe;\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);\n border-radius: 3px;\n transition: box-shadow 0.5s, border-color 0.25s ease-in-out;\n -webkit-appearance: none;\n -moz-appearance: none; }\n [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,\n textarea:focus {\n border: 1px solid #8a8a8a;\n background-color: #fefefe;\n outline: none;\n box-shadow: 0 0 5px #cacaca;\n transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }\n\ntextarea {\n max-width: 100%; }\n textarea[rows] {\n height: auto; }\n\ninput:disabled, input[readonly],\ntextarea:disabled,\ntextarea[readonly] {\n background-color: #e6e6e6;\n cursor: default; }\n\n[type='submit'],\n[type='button'] {\n border-radius: 3px;\n -webkit-appearance: none;\n -moz-appearance: none; }\n\ninput[type='search'] {\n box-sizing: border-box; }\n\n[type='file'],\n[type='checkbox'],\n[type='radio'] {\n margin: 0 0 1rem; }\n\n[type='checkbox'] + label,\n[type='radio'] + label {\n display: inline-block;\n margin-left: 0.5rem;\n margin-right: 1rem;\n margin-bottom: 0;\n vertical-align: baseline; }\n\nlabel > [type='checkbox'],\nlabel > [type='label'] {\n margin-right: 0.5rem; }\n\n[type='file'] {\n width: 100%; }\n\nlabel {\n display: block;\n margin: 0;\n font-size: 0.875rem;\n font-weight: normal;\n line-height: 1.8;\n color: #0a0a0a; }\n label.middle {\n margin: 0 0 1rem;\n padding: 0.5625rem 0; }\n\n.help-text {\n margin-top: -0.5rem;\n font-size: 0.8125rem;\n font-style: italic;\n color: #333; }\n\n.input-group {\n display: table;\n width: 100%;\n margin-bottom: 1rem; }\n .input-group > :first-child {\n border-radius: 3px 0 0 3px; }\n .input-group > :last-child > * {\n border-radius: 0 3px 3px 0; }\n\n.input-group-label, .input-group-field, .input-group-button {\n display: table-cell;\n margin: 0;\n vertical-align: middle; }\n\n.input-group-label {\n text-align: center;\n width: 1%;\n height: 100%;\n padding: 0 1rem;\n background: #e6e6e6;\n color: #0a0a0a;\n border: 1px solid #cacaca;\n white-space: nowrap; }\n .input-group-label:first-child {\n border-right: 0; }\n .input-group-label:last-child {\n border-left: 0; }\n\n.input-group-field {\n border-radius: 0;\n height: 2.5rem; }\n\n.input-group-button {\n height: 100%;\n padding-top: 0;\n padding-bottom: 0;\n text-align: center;\n width: 1%; }\n .input-group-button a,\n .input-group-button input,\n .input-group-button button {\n margin: 0; }\n\nfieldset {\n border: 0;\n padding: 0;\n margin: 0; }\n\nlegend {\n margin-bottom: 0.5rem;\n max-width: 100%; }\n\n.fieldset {\n border: 1px solid #cacaca;\n padding: 1.25rem;\n margin: 1.125rem 0; }\n .fieldset legend {\n background: #fefefe;\n padding: 0 0.1875rem;\n margin: 0;\n margin-left: -0.1875rem; }\n\nselect {\n height: 2.4375rem;\n padding: 0.5rem;\n border: 1px solid #cacaca;\n margin: 0 0 1rem;\n font-size: 1rem;\n font-family: inherit;\n line-height: normal;\n color: #0a0a0a;\n background-color: #fefefe;\n border-radius: 3px;\n -webkit-appearance: none;\n -moz-appearance: none;\n background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"32\" height=\"24\" viewBox=\"0 0 32 24\"><polygon points=\"0,0 32,0 16,24\" style=\"fill: rgb%2851, 51, 51%29\"></polygon></svg>');\n background-size: 9px 6px;\n background-position: right center;\n background-origin: content-box;\n background-repeat: no-repeat; }\n @media screen and (min-width: 0\\0) {\n select {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==\"); } }\n select:disabled {\n background-color: #e6e6e6;\n cursor: default; }\n select::-ms-expand {\n display: none; }\n select[multiple] {\n height: auto; }\n\n.is-invalid-input:not(:focus) {\n background-color: rgba(112, 48, 48, 0.1);\n border-color: #703030; }\n\n.is-invalid-label {\n color: #703030; }\n\n.form-error {\n display: none;\n margin-top: -0.5rem;\n margin-bottom: 1rem;\n font-size: 0.75rem;\n font-weight: bold;\n color: #703030; }\n .form-error.is-visible {\n display: block; }\n\n.float-left {\n float: left !important; }\n\n.float-right {\n float: right !important; }\n\n.float-center {\n display: block;\n margin-left: auto;\n margin-right: auto; }\n\n.clearfix::before, .clearfix::after {\n content: ' ';\n display: table; }\n\n.clearfix::after {\n clear: both; }\n\n.accordion {\n list-style-type: none;\n background: #fefefe;\n border: 1px solid #e6e6e6;\n border-bottom: 0;\n border-radius: 3px;\n margin-left: 0; }\n\n.accordion-title {\n display: block;\n padding: 1.25rem 1rem;\n line-height: 1;\n font-size: 0.75rem;\n color: #2F343B;\n position: relative;\n border-bottom: 1px solid #e6e6e6; }\n .accordion-title:hover, .accordion-title:focus {\n background-color: #e6e6e6; }\n .accordion-title::before {\n content: '+';\n position: absolute;\n right: 1rem;\n top: 50%;\n margin-top: -0.5rem; }\n .is-active > .accordion-title::before {\n content: '–'; }\n\n.accordion-content {\n padding: 1rem;\n display: none;\n border-bottom: 1px solid #e6e6e6;\n background-color: #fefefe; }\n\n.is-accordion-submenu-parent > a {\n position: relative; }\n .is-accordion-submenu-parent > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 6px;\n border-color: #2F343B transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n position: absolute;\n top: 50%;\n margin-top: -4px;\n right: 1rem; }\n\n.is-accordion-submenu-parent[aria-expanded='true'] > a::after {\n transform-origin: 50% 50%;\n transform: scaleY(-1); }\n\n.badge {\n display: inline-block;\n padding: 0.3em;\n min-width: 2.1em;\n font-size: 0.6rem;\n text-align: center;\n border-radius: 50%;\n background: #2F343B;\n color: #fefefe; }\n .badge.secondary {\n background: #703030;\n color: #fefefe; }\n .badge.success {\n background: #5da423;\n color: #fefefe; }\n .badge.alert {\n background: #703030;\n color: #fefefe; }\n .badge.warning {\n background: #ffae00;\n color: #fefefe; }\n\n.breadcrumbs {\n list-style: none;\n margin: 0 0 1rem 0; }\n .breadcrumbs::before, .breadcrumbs::after {\n content: ' ';\n display: table; }\n .breadcrumbs::after {\n clear: both; }\n .breadcrumbs li {\n float: left;\n color: #0a0a0a;\n font-size: 0.6875rem;\n cursor: default;\n text-transform: uppercase; }\n .breadcrumbs li:not(:last-child)::after {\n color: #cacaca;\n content: \"/\";\n margin: 0 0.75rem;\n position: relative;\n top: 1px;\n opacity: 1; }\n .breadcrumbs a {\n color: #2F343B; }\n .breadcrumbs a:hover {\n text-decoration: underline; }\n .breadcrumbs .disabled {\n color: #cacaca; }\n\n.button-group {\n margin-bottom: 1rem;\n font-size: 0.9rem; }\n .button-group::before, .button-group::after {\n content: ' ';\n display: table; }\n .button-group::after {\n clear: both; }\n .button-group .button {\n float: left;\n margin: 0;\n font-size: inherit; }\n .button-group .button:not(:last-child) {\n border-right: 1px solid #fefefe; }\n .button-group.tiny {\n font-size: 0.6rem; }\n .button-group.small {\n font-size: 0.75rem; }\n .button-group.large {\n font-size: 1.25rem; }\n .button-group.expanded {\n display: table;\n table-layout: fixed;\n width: 100%; }\n .button-group.expanded::before, .button-group.expanded::after {\n display: none; }\n .button-group.expanded .button {\n display: table-cell;\n float: none; }\n .button-group.primary .button {\n background-color: #2F343B;\n color: #fefefe; }\n .button-group.primary .button:hover, .button-group.primary .button:focus {\n background-color: #262a2f;\n color: #fefefe; }\n .button-group.secondary .button {\n background-color: #703030;\n color: #fefefe; }\n .button-group.secondary .button:hover, .button-group.secondary .button:focus {\n background-color: #5a2626;\n color: #fefefe; }\n .button-group.success .button {\n background-color: #5da423;\n color: #fefefe; }\n .button-group.success .button:hover, .button-group.success .button:focus {\n background-color: #4a831c;\n color: #fefefe; }\n .button-group.alert .button {\n background-color: #703030;\n color: #fefefe; }\n .button-group.alert .button:hover, .button-group.alert .button:focus {\n background-color: #5a2626;\n color: #fefefe; }\n .button-group.warning .button {\n background-color: #ffae00;\n color: #fefefe; }\n .button-group.warning .button:hover, .button-group.warning .button:focus {\n background-color: #cc8b00;\n color: #fefefe; }\n .button-group.stacked .button, .button-group.stacked-for-small .button {\n width: 100%; }\n .button-group.stacked .button:not(:last-child), .button-group.stacked-for-small .button:not(:last-child) {\n border-right: 1px solid; }\n @media screen and (min-width: 40em) {\n .button-group.stacked-for-small .button {\n width: auto; }\n .button-group.stacked-for-small .button:not(:last-child) {\n border-right: 1px solid #fefefe; } }\n @media screen and (min-width: 0em) and (max-width: 39.9375em) {\n .button-group.stacked-for-small.expanded {\n display: block; }\n .button-group.stacked-for-small.expanded .button {\n display: block;\n border-right: 0; } }\n\n.callout {\n margin: 0 0 1rem 0;\n padding: 1rem;\n border: 1px solid rgba(10, 10, 10, 0.25);\n border-radius: 3px;\n position: relative;\n color: #222222;\n background-color: white; }\n .callout > :first-child {\n margin-top: 0; }\n .callout > :last-child {\n margin-bottom: 0; }\n .callout.primary {\n background-color: #dde0e4; }\n .callout.secondary {\n background-color: #efdada; }\n .callout.success {\n background-color: #e6f7d9; }\n .callout.alert {\n background-color: #efdada; }\n .callout.warning {\n background-color: #fff3d9; }\n .callout.small {\n padding-top: 0.5rem;\n padding-right: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 0.5rem; }\n .callout.large {\n padding-top: 3rem;\n padding-right: 3rem;\n padding-bottom: 3rem;\n padding-left: 3rem; }\n\n.close-button {\n position: absolute;\n color: #8a8a8a;\n right: 1rem;\n top: 0.5rem;\n font-size: 2em;\n line-height: 1;\n cursor: pointer; }\n [data-whatinput='mouse'] .close-button {\n outline: 0; }\n .close-button:hover, .close-button:focus {\n color: #0a0a0a; }\n\n.is-drilldown {\n position: relative;\n overflow: hidden; }\n\n.is-drilldown-submenu {\n position: absolute;\n top: 0;\n left: 100%;\n z-index: -1;\n height: 100%;\n width: 100%;\n background: #fefefe;\n transition: transform 0.15s linear; }\n .is-drilldown-submenu.is-active {\n z-index: 1;\n display: block;\n transform: translateX(-100%); }\n .is-drilldown-submenu.is-closing {\n transform: translateX(100%); }\n\n.is-drilldown-submenu-parent > a {\n position: relative; }\n .is-drilldown-submenu-parent > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 6px;\n border-color: transparent transparent transparent #2F343B;\n border-left-style: solid;\n border-right-width: 0;\n position: absolute;\n top: 50%;\n margin-top: -6px;\n right: 1rem; }\n\n.js-drilldown-back > a::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 6px;\n border-color: transparent #2F343B transparent transparent;\n border-right-style: solid;\n border-left-width: 0;\n border-left-width: 0;\n display: inline-block;\n vertical-align: middle;\n margin-right: 0.75rem; }\n\n.dropdown-pane {\n background-color: #fefefe;\n border: 1px solid #cacaca;\n border-radius: 3px;\n display: block;\n font-size: 1rem;\n padding: 1rem;\n position: absolute;\n visibility: hidden;\n width: 300px;\n z-index: 10; }\n .dropdown-pane.is-open {\n visibility: visible; }\n\n.dropdown-pane.tiny {\n width: 100px; }\n\n.dropdown-pane.small {\n width: 200px; }\n\n.dropdown-pane.large {\n width: 400px; }\n\n[data-whatinput='mouse'] .dropdown.menu a {\n outline: 0; }\n\n.no-js .dropdown.menu ul {\n display: none; }\n\n.dropdown.menu:not(.vertical) .is-dropdown-submenu.first-sub {\n top: 100%;\n left: 0;\n right: auto; }\n\n.dropdown.menu.align-right .is-dropdown-submenu.first-sub {\n top: 100%;\n left: auto;\n right: 0; }\n\n.is-dropdown-menu.vertical {\n width: 100px; }\n .is-dropdown-menu.vertical.align-right {\n float: right; }\n .is-dropdown-menu.vertical > li .is-dropdown-submenu {\n top: 0;\n left: 100%; }\n\n.is-dropdown-submenu-parent {\n position: relative; }\n .is-dropdown-submenu-parent a::after {\n float: right;\n margin-top: 3px;\n margin-left: 10px; }\n .is-dropdown-submenu-parent.is-down-arrow a {\n padding-right: 1.5rem;\n position: relative; }\n .is-dropdown-submenu-parent.is-down-arrow > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 5px;\n border-color: #2F343B transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n position: absolute;\n top: 0.825rem;\n right: 5px; }\n .is-dropdown-submenu-parent.is-left-arrow > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 5px;\n border-color: transparent #2F343B transparent transparent;\n border-right-style: solid;\n border-left-width: 0;\n float: left;\n margin-left: 0;\n margin-right: 10px; }\n .is-dropdown-submenu-parent.is-right-arrow > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 5px;\n border-color: transparent transparent transparent #2F343B;\n border-left-style: solid;\n border-right-width: 0; }\n .is-dropdown-submenu-parent.is-left-arrow.opens-inner .is-dropdown-submenu {\n right: 0;\n left: auto; }\n .is-dropdown-submenu-parent.is-right-arrow.opens-inner .is-dropdown-submenu {\n left: 0;\n right: auto; }\n .is-dropdown-submenu-parent.opens-inner .is-dropdown-submenu {\n top: 100%; }\n .is-dropdown-submenu-parent.opens-left .is-dropdown-submenu {\n left: auto;\n right: 100%; }\n\n.is-dropdown-submenu {\n display: none;\n position: absolute;\n top: 0;\n left: 100%;\n min-width: 200px;\n z-index: 1;\n background: #fefefe;\n border: 1px solid #cacaca; }\n .is-dropdown-submenu .is-dropdown-submenu {\n margin-top: -1px; }\n .is-dropdown-submenu > li {\n width: 100%; }\n .is-dropdown-submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .is-dropdown-submenu, .is-dropdown-submenu.js-dropdown-active {\n display: block; }\n\n.flex-video {\n position: relative;\n height: 0;\n padding-bottom: 75%;\n margin-bottom: 1rem;\n overflow: hidden; }\n .flex-video iframe,\n .flex-video object,\n .flex-video embed,\n .flex-video video {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n .flex-video.widescreen {\n padding-bottom: 56.25%; }\n .flex-video.vimeo {\n padding-top: 0; }\n\n.label {\n display: inline-block;\n padding: 0.33333rem 0.5rem;\n font-size: 0.8rem;\n line-height: 1;\n white-space: nowrap;\n cursor: default;\n border-radius: 3px;\n background: #2F343B;\n color: #fefefe; }\n .label.secondary {\n background: #703030;\n color: #fefefe; }\n .label.success {\n background: #5da423;\n color: #fefefe; }\n .label.alert {\n background: #703030;\n color: #fefefe; }\n .label.warning {\n background: #ffae00;\n color: #fefefe; }\n\n.media-object {\n margin-bottom: 1rem;\n display: block; }\n .media-object img {\n max-width: none; }\n @media screen and (min-width: 0em) and (max-width: 39.9375em) {\n .media-object.stack-for-small .media-object-section {\n display: block;\n padding: 0;\n padding-bottom: 1rem; }\n .media-object.stack-for-small .media-object-section img {\n width: 100%; } }\n\n.media-object-section {\n display: table-cell;\n vertical-align: top; }\n .media-object-section:first-child {\n padding-right: 1rem; }\n .media-object-section:last-child:not(:nth-child(2)) {\n padding-left: 1rem; }\n .media-object-section.middle {\n vertical-align: middle; }\n .media-object-section.bottom {\n vertical-align: bottom; }\n\n.menu {\n margin: 0;\n list-style-type: none; }\n .menu > li {\n display: table-cell;\n vertical-align: middle; }\n [data-whatinput='mouse'] .menu > li {\n outline: 0; }\n .menu > li > a {\n display: block;\n padding: 0.7rem 1rem;\n line-height: 1; }\n .menu input,\n .menu a,\n .menu button {\n margin-bottom: 0; }\n .menu > li > a > img,\n .menu > li > a > i {\n vertical-align: middle; }\n .menu > li > a > span {\n vertical-align: middle; }\n .menu > li > a > img,\n .menu > li > a > i {\n display: inline-block;\n margin-right: 0.25rem; }\n .menu > li {\n display: table-cell; }\n .menu.vertical > li {\n display: block; }\n @media screen and (min-width: 40em) {\n .menu.medium-horizontal > li {\n display: table-cell; }\n .menu.medium-vertical > li {\n display: block; } }\n @media screen and (min-width: 64em) {\n .menu.large-horizontal > li {\n display: table-cell; }\n .menu.large-vertical > li {\n display: block; } }\n .menu.simple li {\n line-height: 1;\n display: inline-block;\n margin-right: 1rem; }\n .menu.simple a {\n padding: 0; }\n .menu.align-right > li {\n float: right; }\n .menu.expanded {\n display: table;\n table-layout: fixed;\n width: 100%; }\n .menu.expanded > li:first-child:last-child {\n width: 100%; }\n .menu.icon-top > li > a {\n text-align: center; }\n .menu.icon-top > li > a > img,\n .menu.icon-top > li > a > i {\n display: block;\n margin: 0 auto 0.25rem; }\n .menu.nested {\n margin-left: 1rem; }\n\n.menu-text {\n font-weight: bold;\n color: inherit;\n line-height: 1;\n padding-top: 0;\n padding-bottom: 0;\n padding: 0.7rem 1rem; }\n\n.no-js [data-responsive-menu] ul {\n display: none; }\n\nhtml,\nbody {\n height: 100%; }\n\n.off-canvas-wrapper {\n width: 100%;\n overflow-x: hidden;\n position: relative;\n backface-visibility: hidden;\n -webkit-overflow-scrolling: auto; }\n\n.off-canvas-wrapper-inner {\n position: relative;\n width: 100%;\n transition: transform 0.5s ease; }\n .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after {\n content: ' ';\n display: table; }\n .off-canvas-wrapper-inner::after {\n clear: both; }\n\n.off-canvas-content,\n.off-canvas-content {\n min-height: 100%;\n background: #fefefe;\n transition: transform 0.5s ease;\n backface-visibility: hidden;\n z-index: 1;\n box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); }\n\n.js-off-canvas-exit {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(254, 254, 254, 0.25);\n cursor: pointer;\n transition: background 0.5s ease; }\n\n.off-canvas {\n position: absolute;\n background: #e6e6e6;\n z-index: -1;\n max-height: 100%;\n overflow-y: auto;\n transform: translateX(0); }\n [data-whatinput='mouse'] .off-canvas {\n outline: 0; }\n .off-canvas.position-left {\n left: -250px;\n top: 0;\n width: 250px; }\n .is-open-left {\n transform: translateX(250px); }\n .off-canvas.position-right {\n right: -250px;\n top: 0;\n width: 250px; }\n .is-open-right {\n transform: translateX(-250px); }\n\n@media screen and (min-width: 40em) {\n .position-left.reveal-for-medium {\n left: 0;\n z-index: auto;\n position: fixed; }\n .position-left.reveal-for-medium ~ .off-canvas-content {\n margin-left: 250px; }\n .position-right.reveal-for-medium {\n right: 0;\n z-index: auto;\n position: fixed; }\n .position-right.reveal-for-medium ~ .off-canvas-content {\n margin-right: 250px; } }\n\n@media screen and (min-width: 64em) {\n .position-left.reveal-for-large {\n left: 0;\n z-index: auto;\n position: fixed; }\n .position-left.reveal-for-large ~ .off-canvas-content {\n margin-left: 250px; }\n .position-right.reveal-for-large {\n right: 0;\n z-index: auto;\n position: fixed; }\n .position-right.reveal-for-large ~ .off-canvas-content {\n margin-right: 250px; } }\n\n.orbit {\n position: relative; }\n\n.orbit-container {\n position: relative;\n margin: 0;\n overflow: hidden;\n list-style: none; }\n\n.orbit-slide {\n width: 100%;\n max-height: 100%; }\n .orbit-slide.no-motionui.is-active {\n top: 0;\n left: 0; }\n\n.orbit-figure {\n margin: 0; }\n\n.orbit-image {\n margin: 0;\n width: 100%;\n max-width: 100%; }\n\n.orbit-caption {\n position: absolute;\n bottom: 0;\n width: 100%;\n padding: 1rem;\n margin-bottom: 0;\n color: #fefefe;\n background-color: rgba(10, 10, 10, 0.5); }\n\n.orbit-previous, .orbit-next {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 10;\n padding: 1rem;\n color: #fefefe; }\n [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next {\n outline: 0; }\n .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus {\n background-color: rgba(10, 10, 10, 0.5); }\n\n.orbit-previous {\n left: 0; }\n\n.orbit-next {\n left: auto;\n right: 0; }\n\n.orbit-bullets {\n position: relative;\n margin-top: 0.8rem;\n margin-bottom: 0.8rem;\n text-align: center; }\n [data-whatinput='mouse'] .orbit-bullets {\n outline: 0; }\n .orbit-bullets button {\n width: 1.2rem;\n height: 1.2rem;\n margin: 0.1rem;\n background-color: #cacaca;\n border-radius: 50%; }\n .orbit-bullets button:hover {\n background-color: #8a8a8a; }\n .orbit-bullets button.is-active {\n background-color: #8a8a8a; }\n\n.pagination {\n margin-left: 0;\n margin-bottom: 1rem; }\n .pagination::before, .pagination::after {\n content: ' ';\n display: table; }\n .pagination::after {\n clear: both; }\n .pagination li {\n font-size: 0.875rem;\n margin-right: 0.0625rem;\n border-radius: 3px;\n display: none; }\n .pagination li:last-child, .pagination li:first-child {\n display: inline-block; }\n @media screen and (min-width: 40em) {\n .pagination li {\n display: inline-block; } }\n .pagination a,\n .pagination button {\n color: #0a0a0a;\n display: block;\n padding: 0.1875rem 0.625rem;\n border-radius: 3px; }\n .pagination a:hover,\n .pagination button:hover {\n background: #e6e6e6; }\n .pagination .current {\n padding: 0.1875rem 0.625rem;\n background: #2F343B;\n color: #fefefe;\n cursor: default; }\n .pagination .disabled {\n padding: 0.1875rem 0.625rem;\n color: #cacaca;\n cursor: default; }\n .pagination .disabled:hover {\n background: transparent; }\n .pagination .ellipsis::after {\n content: '…';\n padding: 0.1875rem 0.625rem;\n color: #0a0a0a; }\n\n.pagination-previous a::before,\n.pagination-previous.disabled::before {\n content: '«';\n display: inline-block;\n margin-right: 0.5rem; }\n\n.pagination-next a::after,\n.pagination-next.disabled::after {\n content: '»';\n display: inline-block;\n margin-left: 0.5rem; }\n\n.progress {\n background-color: #cacaca;\n height: 1rem;\n margin-bottom: 1rem;\n border-radius: 3px; }\n .progress.primary .progress-meter {\n background-color: #2F343B; }\n .progress.secondary .progress-meter {\n background-color: #703030; }\n .progress.success .progress-meter {\n background-color: #5da423; }\n .progress.alert .progress-meter {\n background-color: #703030; }\n .progress.warning .progress-meter {\n background-color: #ffae00; }\n\n.progress-meter {\n position: relative;\n display: block;\n width: 0%;\n height: 100%;\n background-color: #2F343B;\n border-radius: 3px; }\n\n.progress-meter-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n position: absolute;\n margin: 0;\n font-size: 0.75rem;\n font-weight: bold;\n color: #fefefe;\n white-space: nowrap;\n border-radius: 3px; }\n\n.slider {\n position: relative;\n height: 0.5rem;\n margin-top: 1.25rem;\n margin-bottom: 2.25rem;\n background-color: #e6e6e6;\n cursor: pointer;\n user-select: none;\n touch-action: none; }\n\n.slider-fill {\n position: absolute;\n top: 0;\n left: 0;\n display: inline-block;\n max-width: 100%;\n height: 0.5rem;\n background-color: #cacaca;\n transition: all 0.2s ease-in-out; }\n .slider-fill.is-dragging {\n transition: all 0s linear; }\n\n.slider-handle {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n position: absolute;\n left: 0;\n z-index: 1;\n display: inline-block;\n width: 1.4rem;\n height: 1.4rem;\n background-color: #2F343B;\n transition: all 0.2s ease-in-out;\n touch-action: manipulation;\n border-radius: 3px; }\n [data-whatinput='mouse'] .slider-handle {\n outline: 0; }\n .slider-handle:hover {\n background-color: #282c32; }\n .slider-handle.is-dragging {\n transition: all 0s linear; }\n\n.slider.disabled,\n.slider[disabled] {\n opacity: 0.25;\n cursor: not-allowed; }\n\n.slider.vertical {\n display: inline-block;\n width: 0.5rem;\n height: 12.5rem;\n margin: 0 1.25rem;\n transform: scale(1, -1); }\n .slider.vertical .slider-fill {\n top: 0;\n width: 0.5rem;\n max-height: 100%; }\n .slider.vertical .slider-handle {\n position: absolute;\n top: 0;\n left: 50%;\n width: 1.4rem;\n height: 1.4rem;\n transform: translateX(-50%); }\n\n.sticky-container {\n position: relative; }\n\n.sticky {\n position: absolute;\n z-index: 0;\n transform: translate3d(0, 0, 0); }\n\n.sticky.is-stuck {\n position: fixed;\n z-index: 5; }\n .sticky.is-stuck.is-at-top {\n top: 0; }\n .sticky.is-stuck.is-at-bottom {\n bottom: 0; }\n\n.sticky.is-anchored {\n position: absolute;\n left: auto;\n right: auto; }\n .sticky.is-anchored.is-at-bottom {\n bottom: 0; }\n\nbody.is-reveal-open {\n overflow: hidden; }\n\n.reveal-overlay {\n display: none;\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1005;\n background-color: rgba(10, 10, 10, 0.45);\n overflow-y: scroll; }\n\n.reveal {\n display: none;\n z-index: 1006;\n padding: 1rem;\n border: 1px solid #cacaca;\n margin: 6.25rem auto 0;\n background-color: #fefefe;\n border-radius: 3px;\n position: absolute;\n overflow-y: auto; }\n [data-whatinput='mouse'] .reveal {\n outline: 0; }\n @media screen and (min-width: 40em) {\n .reveal {\n min-height: 0; } }\n .reveal .column, .reveal .columns,\n .reveal .columns {\n min-width: 0; }\n .reveal > :last-child {\n margin-bottom: 0; }\n @media screen and (min-width: 40em) {\n .reveal {\n width: 600px;\n max-width: 62.5rem; } }\n @media screen and (min-width: 40em) {\n .reveal .reveal {\n left: auto;\n right: auto;\n margin: 0 auto; } }\n .reveal.collapse {\n padding: 0; }\n @media screen and (min-width: 40em) {\n .reveal.tiny {\n width: 30%;\n max-width: 62.5rem; } }\n @media screen and (min-width: 40em) {\n .reveal.small {\n width: 50%;\n max-width: 62.5rem; } }\n @media screen and (min-width: 40em) {\n .reveal.large {\n width: 90%;\n max-width: 62.5rem; } }\n .reveal.full {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n height: 100vh;\n min-height: 100vh;\n max-width: none;\n margin-left: 0;\n border: 0; }\n\n.switch {\n margin-bottom: 1rem;\n outline: 0;\n position: relative;\n user-select: none;\n color: #fefefe;\n font-weight: bold;\n font-size: 0.875rem; }\n\n.switch-input {\n opacity: 0;\n position: absolute; }\n\n.switch-paddle {\n background: #cacaca;\n cursor: pointer;\n display: block;\n position: relative;\n width: 4rem;\n height: 2rem;\n transition: all 0.25s ease-out;\n border-radius: 3px;\n color: inherit;\n font-weight: inherit; }\n input + .switch-paddle {\n margin: 0; }\n .switch-paddle::after {\n background: #fefefe;\n content: '';\n display: block;\n position: absolute;\n height: 1.5rem;\n left: 0.25rem;\n top: 0.25rem;\n width: 1.5rem;\n transition: all 0.25s ease-out;\n transform: translate3d(0, 0, 0);\n border-radius: 3px; }\n input:checked ~ .switch-paddle {\n background: #2F343B; }\n input:checked ~ .switch-paddle::after {\n left: 2.25rem; }\n [data-whatinput='mouse'] input:focus ~ .switch-paddle {\n outline: 0; }\n\n.switch-active, .switch-inactive {\n position: absolute;\n top: 50%;\n transform: translateY(-50%); }\n\n.switch-active {\n left: 8%;\n display: none; }\n input:checked + label > .switch-active {\n display: block; }\n\n.switch-inactive {\n right: 15%; }\n input:checked + label > .switch-inactive {\n display: none; }\n\n.switch.tiny .switch-paddle {\n width: 3rem;\n height: 1.5rem;\n font-size: 0.625rem; }\n\n.switch.tiny .switch-paddle::after {\n width: 1rem;\n height: 1rem; }\n\n.switch.tiny input:checked ~ .switch-paddle:after {\n left: 1.75rem; }\n\n.switch.small .switch-paddle {\n width: 3.5rem;\n height: 1.75rem;\n font-size: 0.75rem; }\n\n.switch.small .switch-paddle::after {\n width: 1.25rem;\n height: 1.25rem; }\n\n.switch.small input:checked ~ .switch-paddle:after {\n left: 2rem; }\n\n.switch.large .switch-paddle {\n width: 5rem;\n height: 2.5rem;\n font-size: 1rem; }\n\n.switch.large .switch-paddle::after {\n width: 2rem;\n height: 2rem; }\n\n.switch.large input:checked ~ .switch-paddle:after {\n left: 2.75rem; }\n\ntable {\n width: 100%;\n margin-bottom: 1rem;\n border-radius: 3px; }\n table thead,\n table tbody,\n table tfoot {\n border: 1px solid #f1f1f1;\n background-color: #fefefe; }\n table caption {\n font-weight: bold;\n padding: 0.5rem 0.625rem 0.625rem; }\n table thead,\n table tfoot {\n background: #f8f8f8;\n color: #222222; }\n table thead tr,\n table tfoot tr {\n background: transparent; }\n table thead th,\n table thead td,\n table tfoot th,\n table tfoot td {\n padding: 0.5rem 0.625rem 0.625rem;\n font-weight: bold;\n text-align: left; }\n table tbody tr:nth-child(even) {\n background-color: #f1f1f1; }\n table tbody th,\n table tbody td {\n padding: 0.5rem 0.625rem 0.625rem; }\n\n@media screen and (max-width: 63.9375em) {\n table.stack thead {\n display: none; }\n table.stack tfoot {\n display: none; }\n table.stack tr,\n table.stack th,\n table.stack td {\n display: block; }\n table.stack td {\n border-top: 0; } }\n\ntable.scroll {\n display: block;\n width: 100%;\n overflow-x: auto; }\n\ntable.hover tr:hover {\n background-color: #f9f9f9; }\n\ntable.hover tr:nth-of-type(even):hover {\n background-color: #ececec; }\n\n.tabs {\n margin: 0;\n list-style-type: none;\n background: #fefefe;\n border: 1px solid #e6e6e6; }\n .tabs::before, .tabs::after {\n content: ' ';\n display: table; }\n .tabs::after {\n clear: both; }\n\n.tabs.vertical > li {\n width: auto;\n float: none;\n display: block; }\n\n.tabs.simple > li > a {\n padding: 0; }\n .tabs.simple > li > a:hover {\n background: transparent; }\n\n.tabs.primary {\n background: #2F343B; }\n .tabs.primary > li > a {\n color: #fefefe; }\n .tabs.primary > li > a:hover, .tabs.primary > li > a:focus {\n background: #383e46; }\n\n.tabs-title {\n float: left; }\n .tabs-title > a {\n display: block;\n padding: 1.25rem 1.5rem;\n line-height: 1;\n font-size: 12px;\n color: #2F343B; }\n .tabs-title > a:hover {\n background: #fefefe; }\n .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] {\n background: #e6e6e6; }\n\n.tabs-content {\n background: #fefefe;\n transition: all 0.5s ease;\n border: 1px solid #e6e6e6;\n border-top: 0; }\n\n.tabs-content.vertical {\n border: 1px solid #e6e6e6;\n border-left: 0; }\n\n.tabs-panel {\n display: none;\n padding: 1rem; }\n .tabs-panel.is-active {\n display: block; }\n\n.thumbnail {\n border: solid 4px #fefefe;\n box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2);\n display: inline-block;\n line-height: 0;\n max-width: 100%;\n transition: box-shadow 200ms ease-out;\n border-radius: 3px;\n margin-bottom: 1rem; }\n .thumbnail:hover, .thumbnail:focus {\n box-shadow: 0 0 6px 1px rgba(47, 52, 59, 0.5); }\n\n.title-bar {\n background: #0a0a0a;\n color: #fefefe;\n padding: 0.5rem; }\n .title-bar::before, .title-bar::after {\n content: ' ';\n display: table; }\n .title-bar::after {\n clear: both; }\n .title-bar .menu-icon {\n margin-left: 0.25rem;\n margin-right: 0.5rem; }\n\n.title-bar-left {\n float: left; }\n\n.title-bar-right {\n float: right;\n text-align: right; }\n\n.title-bar-title {\n font-weight: bold;\n vertical-align: middle;\n display: inline-block; }\n\n.menu-icon {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n cursor: pointer;\n width: 20px;\n height: 16px; }\n .menu-icon::after {\n content: '';\n position: absolute;\n display: block;\n width: 100%;\n height: 2px;\n background: #fefefe;\n top: 0;\n left: 0;\n box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; }\n .menu-icon:hover::after {\n background: #cacaca;\n box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; }\n\n.menu-icon.dark {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n cursor: pointer;\n width: 20px;\n height: 16px; }\n .menu-icon.dark::after {\n content: '';\n position: absolute;\n display: block;\n width: 100%;\n height: 2px;\n background: #0a0a0a;\n top: 0;\n left: 0;\n box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; }\n .menu-icon.dark:hover::after {\n background: #8a8a8a;\n box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; }\n\n.has-tip {\n border-bottom: dotted 1px #8a8a8a;\n font-weight: bold;\n position: relative;\n display: inline-block;\n cursor: help; }\n\n.tooltip {\n background-color: #0a0a0a;\n color: #fefefe;\n font-size: 80%;\n padding: 0.75rem;\n position: absolute;\n z-index: 10;\n top: calc(100% + 0.6495rem);\n max-width: 10rem !important;\n border-radius: 3px; }\n .tooltip::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.75rem;\n border-color: transparent transparent #0a0a0a;\n border-bottom-style: solid;\n border-top-width: 0;\n bottom: 100%;\n position: absolute;\n left: 50%;\n transform: translateX(-50%); }\n .tooltip.top::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.75rem;\n border-color: #0a0a0a transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n top: 100%;\n bottom: auto; }\n .tooltip.left::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.75rem;\n border-color: transparent transparent transparent #0a0a0a;\n border-left-style: solid;\n border-right-width: 0;\n bottom: auto;\n left: 100%;\n top: 50%;\n transform: translateY(-50%); }\n .tooltip.right::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.75rem;\n border-color: transparent #0a0a0a transparent transparent;\n border-right-style: solid;\n border-left-width: 0;\n bottom: auto;\n left: auto;\n right: 100%;\n top: 50%;\n transform: translateY(-50%); }\n\n.top-bar {\n padding: 0.5rem; }\n .top-bar::before, .top-bar::after {\n content: ' ';\n display: table; }\n .top-bar::after {\n clear: both; }\n .top-bar,\n .top-bar ul {\n background-color: #e6e6e6; }\n .top-bar input {\n width: 200px;\n margin-right: 1rem; }\n .top-bar input.button {\n width: auto; }\n\n@media screen and (max-width: 39.9375em) {\n .stacked-for-small .top-bar-title {\n width: 100%; }\n .stacked-for-small .top-bar-right {\n width: 100%; }\n .stacked-for-small .top-bar-left {\n width: 100%; } }\n\n@media screen and (max-width: 63.9375em) {\n .stacked-for-medium .top-bar-title {\n width: 100%; }\n .stacked-for-medium .top-bar-right {\n width: 100%; }\n .stacked-for-medium .top-bar-left {\n width: 100%; } }\n\n@media screen and (max-width: 74.9375em) {\n .stacked-for-large .top-bar-title {\n width: 100%; }\n .stacked-for-large .top-bar-right {\n width: 100%; }\n .stacked-for-large .top-bar-left {\n width: 100%; } }\n\n@media screen and (min-width: 0em) and (max-width: 39.9375em) {\n .top-bar-title {\n width: 100%; }\n .top-bar-right {\n width: 100%; }\n .top-bar-left {\n width: 100%; } }\n\n.top-bar-title {\n float: left;\n margin-right: 1rem; }\n\n.top-bar-left {\n float: left; }\n\n.top-bar-right {\n float: right; }\n","@import \"settings/settings\";\n/**\n * Foundation for Sites by ZURB\n * Version 6.1.2\n * foundation.zurb.com\n * Licensed under MIT Open Source\n */\n\n// Sass utilities\n@import 'util/util';\n\n// Global variables and styles\n@import 'global';\n\n// Components\n@import 'grid/grid';\n@import 'typography/typography';\n@import 'forms/forms';\n\n@import 'components/float';\n@import 'components/button';\n@import 'components/button-group';\n@import 'components/accordion-menu';\n@import 'components/accordion';\n@import 'components/badge';\n@import 'components/breadcrumbs';\n@import 'components/callout';\n@import 'components/close-button';\n@import 'components/drilldown';\n@import 'components/dropdown-menu';\n@import 'components/dropdown';\n@import 'components/flex-video';\n@import 'components/label';\n@import 'components/media-object';\n@import 'components/menu';\n@import 'components/off-canvas';\n@import 'components/orbit';\n@import 'components/pagination';\n@import 'components/progress-bar';\n@import 'components/reveal';\n@import 'components/slider';\n@import 'components/sticky';\n@import 'components/switch';\n@import 'components/table';\n@import 'components/tabs';\n@import 'components/title-bar';\n@import 'components/top-bar';\n@import 'components/thumbnail';\n@import 'components/tooltip';\n\n@mixin foundation-everything($flex: false) {\n @include foundation-global-styles;\n @if not $flex {\n @include foundation-grid;\n }\n @else {\n @include foundation-flex-grid;\n }\n @include foundation-typography;\n @include foundation-button;\n @include foundation-forms;\n \n @include foundation-float-classes;\n @include foundation-accordion;\n @include foundation-accordion-menu;\n @include foundation-badge;\n @include foundation-breadcrumbs;\n @include foundation-button-group;\n @include foundation-callout;\n @include foundation-close-button;\n @include foundation-drilldown-menu;\n @include foundation-dropdown;\n @include foundation-dropdown-menu;\n @include foundation-flex-video;\n @include foundation-label;\n @include foundation-media-object;\n @include foundation-menu;\n @include foundation-off-canvas;\n @include foundation-orbit;\n @include foundation-pagination;\n @include foundation-progress-bar;\n @include foundation-slider;\n @include foundation-sticky;\n @include foundation-reveal;\n @include foundation-switch;\n @include foundation-table;\n @include foundation-tabs;\n @include foundation-thumbnail;\n @include foundation-title-bar;\n @include foundation-tooltip;\n @include foundation-top-bar;\n}\n\n\n\n@import '../../../../../f6/node_modules/motion-ui/src/motion-ui';\n@include motion-ui-transitions;\n@include motion-ui-animations;\n","// scss-lint:disable ImportantRule, SpaceAfterComma, SingleLinePerProperty\n\n%mui-defaults {\n transition-duration: map-get($motion-ui-speeds, default);\n transition-timing-function: map-get($motion-ui-easings, default);\n}\n\n// Transitions\n// - - - - - - - - - - - - - - -\n@mixin motion-ui-transitions {\n // Slide\n .slide-in-down { @include mui-slide(in, down); }\n .slide-in-left { @include mui-slide(in, right); }\n .slide-in-up { @include mui-slide(in, bottom); }\n .slide-in-right { @include mui-slide(in, left); }\n .slide-out-down { @include mui-slide(out, bottom); }\n .slide-out-right { @include mui-slide(out, right); }\n .slide-out-up { @include mui-slide(out, top); }\n .slide-out-left { @include mui-slide(out, left); }\n\n // Fade\n .fade-in { @include mui-fade(in, 0, 1); }\n .fade-out { @include mui-fade(out, 1, 0); }\n\n // Hinge\n .hinge-in-from-top { @include mui-hinge(in, top); }\n .hinge-in-from-right { @include mui-hinge(in, right); }\n .hinge-in-from-bottom { @include mui-hinge(in, bottom); }\n .hinge-in-from-left { @include mui-hinge(in, left); }\n .hinge-in-from-middle-x { @include mui-hinge(in, top, center); }\n .hinge-in-from-middle-y { @include mui-hinge(in, right, center); }\n .hinge-out-from-top { @include mui-hinge(out, top); }\n .hinge-out-from-right { @include mui-hinge(out, right); }\n .hinge-out-from-bottom { @include mui-hinge(out, bottom); }\n .hinge-out-from-left { @include mui-hinge(out, left); }\n .hinge-out-from-middle-x { @include mui-hinge(out, top, center); }\n .hinge-out-from-middle-y { @include mui-hinge(out, right, center); }\n\n // Scale\n .scale-in-up { @include mui-zoom(in, 0.5, 1); }\n .scale-in-down { @include mui-zoom(in, 1.5, 1); }\n .scale-out-up { @include mui-zoom(out, 1, 1.5); }\n .scale-out-down { @include mui-zoom(out, 1, 0.5); }\n\n // Spin\n .spin-in { @include mui-spin(in, cw); }\n .spin-out { @include mui-spin(out, cw); }\n .spin-in-ccw { @include mui-spin(in, ccw); }\n .spin-out-ccw { @include mui-spin(out, ccw); }\n\n // Transition Modifiers\n // - - - - - - - - - - - - - - -\n\n @each $name, $value in $motion-ui-speeds {\n @if $name != default {\n .#{$name} { transition-duration: $value !important; }\n }\n }\n\n @each $name, $value in $motion-ui-easings {\n @if $name != default {\n .#{$name} { transition-timing-function: $value !important; }\n }\n }\n\n @each $name, $value in $motion-ui-delays {\n @if $name != default {\n .#{$name}-delay { transition-delay: $value !important; }\n }\n }\n}\n\n// Animations\n// - - - - - - - - - - - - - - -\n@mixin motion-ui-animations {\n .shake { @include mui-animation(shake); }\n .spin-cw { @include mui-animation(spin); }\n .spin-ccw { @include mui-animation(spin(ccw)); }\n .wiggle { @include mui-animation(wiggle); }\n\n // Animation Modifiers\n // - - - - - - - - - - - - - - -\n .infinite { animation-iteration-count: infinite; }\n\n @each $name, $value in $motion-ui-speeds {\n @if $name != default {\n .#{$name} { animation-duration: $value !important; }\n }\n }\n\n @each $name, $value in $motion-ui-easings {\n @if $name != default {\n .#{$name} { animation-timing-function: $value !important; }\n }\n }\n\n @each $name, $value in $motion-ui-delays {\n @if $name != default {\n .#{$name}-delay { animation-delay: $value !important; }\n }\n }\n}\n","/// Format for CSS classes created with Motion UI.\n/// @type Map\n/// @prop {Boolean} append [true] - Defines if selectors are chained to the selector (`.class.enter`), or appended as a new class (`.class-enter`).\n/// @prop {String} prefix ['mui-'] - Prefix to add before the state of a class. Enter an empty string to use no prefix.\n/// @prop {String} prefix ['-active'] - Suffix to add to the active state class.\n$motion-ui-classes: (\n chain: true,\n prefix: 'mui-',\n active: '-active',\n) !default;\n\n/// State names to reference when writing motion classes. To use multiple class names for one state, enter a list of strings instead of one string.\n/// @type Map\n$motion-ui-states: (\n in: 'enter',\n out: 'leave',\n) !default;\n\n/// Default speed that transitions and animations play at, along with values for modifier classes to change the speed.\n/// @type Map\n$motion-ui-speeds: (\n default: 500ms,\n slow: 750ms,\n fast: 250ms,\n) !default;\n\n/// Default delay to add before motion, along with values for modifier classes to change the delay.\n/// @type Map\n$motion-ui-delays: (\n default: 0,\n short: 300ms,\n long: 700ms,\n) !default;\n\n/// Default easing for transitions and animations, along with values for modifier classes to change the easing.\n/// @type Map\n$motion-ui-easings: (\n default: linear,\n linear: linear,\n ease: ease,\n ease-in: ease-in,\n ease-out: ease-out,\n ease-in-out: ease-in-out,\n bounce-in: cubic-bezier(0.485, 0.155, 0.24, 1.245),\n bounce-out: cubic-bezier(0.485, 0.155, 0.515, 0.845),\n bounce-in-out: cubic-bezier(0.76, -0.245, 0.24, 1.245),\n) !default;\n\n/// Miscellaneous settings related to Motion UI.\n/// @type Map\n/// @prop {Boolean} slide-and-fade [false] - Defines if slide motions should also fade in/out.\n/// @prop {Boolean} slide-and-fade [true] - Defines if hinge motions should also fade in/out.\n/// @prop {Boolean} slide-and-fade [true] - Defines if scale motions should also fade in/out.\n/// @prop {Boolean} slide-and-fade [true] - Defines if spin motions should also fade in/out.\n$motion-ui-settings: (\n slide-and-fade: false,\n hinge-and-fade: true,\n scale-and-fade: true,\n spin-and-fade: true,\n activate-queue-class: 'is-animating',\n) !default;\n","// Internal counter for creating unique keyframe names\n$-mui-custom: 0;\n\n/// Creates a keyframe from one or more effect functions. Use this function instead of `mui-animation` if you want to create a keyframe animation *without* automatically assigning it to the element.\n/// @param {String} $name - Name of the keyframe.\n/// @param {Function} $effects... - One or more effect functions to build the keyframe with.\n@mixin mui-keyframes($name, $effects...) {\n $obj: -mui-process-args($effects...);\n $obj: map-remove($obj, name);\n\n @keyframes #{$name} {\n // Now iterate through each keyframe percentage\n @each $pct, $props in $obj {\n #{-mui-keyframe-pct($pct)} {\n // Lastly, iterate through each CSS property within a percentage and print it out\n @each $prop, $value in $props {\n #{$prop}: #{$value};\n }\n }\n }\n }\n}\n\n/// Creates a string for a CSS keyframe, by converting a list of numbers to a comma-separated list of percentage values.\n/// @param {Number|List} $input - List of numbers to use.\n/// @return {String} A set of comma-separated percentage values.\n/// @access private\n@function -mui-keyframe-pct($input) {\n $output: ();\n\n @if type-of($input) == 'number' {\n $output: ($input * 1%);\n } @else if type-of($input) == 'list' {\n @each $i in $input {\n $output: append($output, ($i * 1%), comma);\n }\n }\n\n @return $output;\n}\n\n/// Prints the CSS properties from a specific key in a keyframes map. Used to borrow CSS from keyframe functions for use in transitions.\n/// @param {Map} $kf - Keyframe map to extract from.\n/// @param {Number} $key - Key in the map to print the CSS of.\n/// @access private\n@mixin -mui-keyframe-get($kf, $key) {\n $map: map-get($kf, $key);\n\n @each $prop, $value in $map or () {\n // Some keyframe maps store transforms as quoted strings\n @if type-of($value) == 'string' {\n $value: unquote($value);\n }\n #{$prop}: $value;\n }\n}\n\n/// Reformats a map containing keys with a list of values, so that each key is a single value.\n/// @param {Map} $map - Map to split up.\n/// @return {Map} A reformatted map.\n/// @access private\n@function -mui-keyframe-split($map) {\n $new-map: ();\n\n // Split keys with multiple values into individual keys\n @each $key, $item in $map {\n $key-type: type-of($key);\n\n @if $key-type == 'number' {\n $new-map: map-merge($new-map, ($key: $item));\n } @else if $key-type == 'list' {\n @each $k in $key {\n $new-map: map-merge($new-map, ($k: $item));\n }\n }\n }\n\n @return $new-map;\n}\n\n/// Combines a series of keyframe objects into one.\n/// @param {Map} $maps... - A series of maps to merge, as individual parameters.\n/// @return {Map} A combined keyframe object.\n/// @access private\n@function -mui-keyframe-combine($maps...) {\n $new-map: ();\n\n // Iterate through each map passed in\n @each $map in $maps {\n @if type-of($map) == 'string' {\n $map: call($map);\n }\n\n $map: -mui-keyframe-split($map);\n\n // Iterate through each keyframe in the map\n // $key is the keyframe percentage\n // $value is a map of CSS properties\n @each $key, $value in $map {\n $new-value: ();\n\n @if map-has-key($new-map, $key) {\n // If the map already has the keyframe %, append the new property\n $new-value: -mui-merge-properties(map-get($new-map, $key), $value);\n } @else {\n // Otherwise, create a new map with the new property\n $new-value: $value;\n }\n\n // Finally, merge the modified keyframe value into the output map\n $new-map: map-merge($new-map, ($key: $new-value));\n }\n }\n\n // Make a name for the keyframes\n $-mui-custom: $-mui-custom + 1 !global;\n $map-name: (name: 'custom-#{$-mui-custom}');\n $new-map: map-merge($new-map, $map-name);\n\n @return $new-map;\n}\n\n/// Combines two maps of CSS properties into one map. If both maps have a transform property, the values from each will be combined into one property.\n/// @param {Map} $one - First map to merge.\n/// @param {Map} $two - Second map to merge.\n/// @return {Map} A combined map.\n/// @access private\n@function -mui-merge-properties($one, $two) {\n @if map-has-key($one, transform) and map-has-key($two, transform) {\n $transform: join(map-get($one, transform), map-get($two, transform));\n $one: map-merge($one, (transform: $transform));\n $two: map-remove($two, transform);\n }\n\n @return map-merge($one, $two);\n}\n","/// Creates a sliding transition by translating the element horizontally or vertically.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Keyword} $direction [left] - Side of the element to slide from. Can be `top`, `right`, `bottom`, or `left`.\n/// @param {Length} $amount [100%] - Length of the slide as a percentage value.\n/// @param {Boolean} $fade [false] - Set to `true` to fade the element in or out simultaneously.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-slide (\n $state: in,\n $direction: left,\n $amount: 100%,\n $fade: map-get($motion-ui-settings, slide-and-fade),\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $slide: slide($state, $direction, $amount);\n\n // CSS Output\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($slide, 0);\n\n @if $fade {\n transition-property: transform, opacity;\n opacity: if($state == in, 0, 1);\n } @else {\n transition-property: transform, opacity;\n }\n\n backface-visibility: hidden;\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($slide, 100);\n\n @if $fade {\n opacity: if($state == in, 1, 0);\n }\n }\n}\n","/// Applies basic transition settings to an element.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin transition-basics(\n $duration: null,\n $timing: null,\n $delay: null\n) {\n @extend %mui-defaults;\n transition-duration: $duration;\n transition-timing-function: $timing;\n transition-delay: $delay;\n}\n\n/// Wraps the content in the setup class for a transition.\n/// @param {Keyword} $dir - State to setup for transition.\n@mixin transition-start($dir) {\n $selector: -mui-build-selector(map-get($motion-ui-states, $dir));\n\n @at-root {\n #{$selector} {\n @content;\n }\n }\n}\n\n/// Wraps the content in the active class for a transition.\n/// @param {Keyword} $dir - State to activate a transition on.\n@mixin transition-end($dir) {\n $selector: -mui-build-selector(map-get($motion-ui-states, $dir), true);\n\n @at-root {\n #{$selector} {\n @content;\n }\n }\n}\n\n/// Adds styles for a stagger animation, which can be used with Angular's `ng-repeat`.\n/// @param {Duration} $delay-amount - Amount of time in seconds or milliseconds to add between each item's animation.\n@mixin stagger($delay-amount) {\n transition-delay: $delay-amount;\n transition-duration: 0; // Prevent accidental CSS inheritance\n}\n","/// Creates a fade transition by adjusting the opacity of the element.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Number} $from [0] - Opacity to start at. Must be a number between 0 and 1.\n/// @param {Number} $to [1] - Opacity to end on.\n/// @param {Keyword} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-fade(\n $state: in,\n $from: 0,\n $to: 1,\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $fade: fade($from, $to);\n\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($fade, 0);\n\n transition-property: opacity;\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($fade, 100);\n }\n}\n","/// Creates a hinge effect by rotating the element.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Keyword} $from [left] - Edge of the element to rotate from. Can be `top`, `right`, `bottom`, or `left`.\n/// @param {Keyword} $axis [edge] - Axis of the element to rotate on. Can be `edge` or `center`.\n/// @param {Number} $perspective [2000px] - Perceived distance between the viewer and the element. A higher number will make the rotation effect more pronounced.\n/// @param {Keyword} $turn-origin [from-back] - Side of the element to start the rotation from. Can be `from-back` or `from-front`.\n@function hinge (\n $state: in,\n $from: left,\n $axis: edge,\n $perspective: 2000px,\n $turn-origin: from-back\n) {\n // Rotation directions when hinging from back vs. front\n $rotation-amount: 90deg;\n $rotations-back: (\n top: rotateX($rotation-amount * -1),\n right: rotateY($rotation-amount * -1),\n bottom: rotateX($rotation-amount),\n left: rotateY($rotation-amount),\n );\n $rotations-from: (\n top: rotateX($rotation-amount),\n right: rotateY($rotation-amount),\n bottom: rotateX($rotation-amount * -1),\n left: rotateY($rotation-amount * -1),\n );\n\n // Rotation origin\n $rotation: '';\n @if $turn-origin == from-front {\n $rotation: map-get($rotations-from, $from);\n } @else if $turn-origin == from-back {\n $rotation: map-get($rotations-back, $from);\n } @else {\n @warn '$turn-origin must be either \"from-back\" or \"from-front\"';\n }\n\n // Start and end state\n $start: '';\n $end: '';\n @if $state == in {\n $start: perspective($perspective) $rotation;\n $end: perspective($perspective) rotate(0deg);\n } @else {\n $start: perspective($perspective) rotate(0deg);\n $end: perspective($perspective) $rotation;\n }\n\n // Turn axis\n $origin: '';\n @if $axis == edge {\n $origin: $from;\n } @else {\n $origin: center;\n }\n\n $keyframes: (\n name: 'hinge-#{$state}-#{$from}-#{$axis}-#{$turn-origin}',\n 0: (transform: $start, transform-origin: $origin),\n 100: (transform: $end),\n );\n\n @return $keyframes;\n}\n","/// Creates a hinge transition by rotating the element.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Keyword} $from [left] - Edge of the element to rotate from. Can be `top`, `right`, `bottom`, or `left`.\n/// @param {Keyword} $axis [edge] - Axis of the element to rotate on. Can be `edge` or `center`.\n/// @param {Length} $perspective [2000px] - Perceived distance between the viewer and the element. A higher number will make the rotation effect more pronounced.\n/// @param {Keyword} $turn-origin [from-back] - Side of the element to start the rotation from. Can be `from-back` or `from-front`.\n/// @param {Boolean} $fade [true] - Set to `true` to fade the element in or out simultaneously.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-hinge (\n $state: in,\n $from: left,\n $axis: edge,\n $perspective: 2000px,\n $turn-origin: from-back,\n $fade: map-get($motion-ui-settings, hinge-and-fade),\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $hinge: hinge($state, $from, $axis, $perspective, $turn-origin);\n\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($hinge, 0);\n\n @if $fade {\n transition-property: transform, opacity;\n opacity: if($state == in, 0, 1);\n } @else {\n transition-property: transform, opacity;\n }\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($hinge, 100);\n\n @if $fade {\n opacity: if($state == in, 1, 0);\n }\n }\n}\n","/// Creates a scaling transition. A scale of `1` means the element is the same size. Larger numbers make the element bigger, while numbers less than 1 make the element smaller.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Number} $from [1.5] - Size to start at.\n/// @param {Number} $from [1] - Size to end at.\n/// @param {Boolean} $fade [true] - Set to `true` to fade the element in or out simultaneously.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-zoom(\n $state: in,\n $from: 1.5,\n $to: 1,\n $fade: map-get($motion-ui-settings, scale-and-fade),\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $scale: zoom($from, $to);\n\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($scale, 0);\n\n @if $fade {\n transition-property: transform, opacity;\n opacity: if($state == in, 0, 1);\n } @else {\n transition-property: transform, opacity;\n }\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($scale, 100);\n\n @if $fade {\n opacity: if($state == in, 1, 0);\n }\n }\n}\n","/// Creates a spinning transition by rotating the element. The `turn` unit is used to specify how far to rotate. `1turn` is equal to a 360-degree spin.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Boolean} $direction [cw] - Direction to spin. Should be `cw` (clockwise) or `ccw` (counterclockwise).\n/// @param {Number} $amount [0.75turn] - Amount to element the element.\n/// @param {Boolean} $fade [false] - Set to `true` to fade the element in or out simultaneously.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-spin(\n $state: in,\n $direction: cw,\n $amount: 0.75turn,\n $fade: map-get($motion-ui-settings, spin-and-fade),\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $spin: spin($state, $direction, $amount);\n\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($spin, 0);\n\n @if $fade {\n transition-property: transform, opacity;\n opacity: if($state == in, 0, 1);\n } @else {\n transition-property: transform, opacity;\n }\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($spin, 100);\n\n @if $fade {\n opacity: if($state == in, 1, 0);\n }\n }\n}\n","/// Creates a keyframe from one or more effect functions and assigns it to the element by adding the `animation-name` property.\n/// @param {Function} $effects... - One or more effect functions to build the keyframe with.\n@mixin mui-animation($args...) {\n $name: map-get(-mui-process-args($args...), name);\n @include mui-keyframes($name, $args...);\n animation-name: unquote($name);\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n// scss-lint:disable ColorVariable, QualifyingElement, VendorPrefix\n\n////\n/// @group global\n////\n\n/// Font size attribute applied to `<html>` and `<body>`. We use 100% by default so the value is inherited from the user's browser settings.\n/// @type Number\n$global-font-size: 100% !default;\n\n/// Global width of your site. Used by the grid to determine row width.\n/// @type Number\n$global-width: rem-calc(1200) !default;\n\n/// Default line height for all type. `$global-lineheight` is 24px while `$global-font-size` is 16px\n/// @type Number\n$global-lineheight: 1.5 !default;\n\n/// Primary color for interactive components like links and buttons.\n/// @type Color\n$primary-color: #2199e8 !default;\n\n/// Secondary color, used with components that support the `.secondary` class.\n/// @type Color\n$secondary-color: #777 !default;\n\n/// Color to indicate a positive status or action, used with the `.success` class.\n/// @type Color\n$success-color: #3adb76 !default;\n\n/// Color to indicate a caution status or action, used with the `.warning` class.\n/// @type Color\n$warning-color: #ffae00 !default;\n\n/// Color to indicate a negative status or action, used with the `.alert` class.\n/// @type Color\n$alert-color: #ec5840 !default;\n\n/// Color used for light gray UI items.\n/// @type Color\n$light-gray: #e6e6e6 !default;\n\n/// Color used for medium gray UI items.\n/// @type Color\n$medium-gray: #cacaca !default;\n\n/// Color used for dark gray UI items.\n/// @type Color\n$dark-gray: #8a8a8a !default;\n\n/// Color used for black ui items.\n/// @type Color\n$black: #0a0a0a !default;\n\n/// Color used for white ui items.\n/// @type Color\n$white: #fefefe !default;\n\n/// Background color of the body.\n/// @type Color\n$body-background: $white !default;\n\n/// Text color of the body.\n/// @type Color\n$body-font-color: $black !default;\n\n/// Font stack of the body.\n/// @type List\n$body-font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif !default;\n\n/// Set to `true` to enable antialiased type, using the `-webkit-font-smoothing` and `-moz-osx-font-smoothing` CSS properties.\n/// @type Boolean\n$body-antialiased: true !default;\n\n/// Global value used for margin on components.\n/// @type Number\n$global-margin: 1rem !default;\n\n/// Global value used for padding on components.\n/// @type Number\n$global-padding: 1rem !default;\n\n/// Global font weight used for normal type.\n/// @type Keyword | Number\n$global-weight-normal: normal !default;\n\n/// Global font weight used for bold type.\n/// @type Keyword | Number\n$global-weight-bold: bold !default;\n\n/// Global value used for all elements that have a border radius.\n/// @type Number\n$global-radius: 0 !default;\n\n/// Sets the text direction of the CSS. Can be either `ltr` or `rtl`.\n$global-text-direction: ltr !default;\n\n// Internal variables used for text direction\n$global-left: if($global-text-direction == rtl, right, left);\n$global-right: if($global-text-direction == rtl, left, right);\n\n// Internal map used to iterate through colors, to generate CSS classes with less code\n$foundation-colors: (\n primary: $primary-color,\n secondary: $secondary-color,\n success: $success-color,\n alert: $alert-color,\n warning: $warning-color,\n) !default;\n\n@mixin foundation-global-styles {\n @include -zf-normalize;\n\n // These styles are applied to a <meta> tag, which is read by the Foundation JavaScript\n .foundation-mq {\n font-family: '#{-zf-bp-serialize($breakpoints)}';\n }\n\n html {\n font-size: $global-font-size;\n box-sizing: border-box;\n }\n\n // Set box-sizing globally to handle padding and border widths\n *,\n *:before,\n *:after {\n box-sizing: inherit;\n }\n\n // Default body styles\n body {\n padding: 0;\n margin: 0;\n font-family: $body-font-family;\n font-weight: $global-weight-normal;\n line-height: $global-lineheight;\n color: $body-font-color;\n background: $body-background;\n\n @if ($body-antialiased) {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n }\n\n img {\n // Grid defaults to get images and embeds to work properly\n max-width: 100%;\n height: auto;\n -ms-interpolation-mode: bicubic;\n\n // Get rid of gap under images by making them display: inline-block; by default\n display: inline-block;\n vertical-align: middle;\n }\n\n // Make sure textarea takes on height automatically\n textarea {\n height: auto;\n min-height: 50px;\n border-radius: $global-radius;\n }\n\n // Make select elements are 100% width by default\n select {\n width: 100%;\n border-radius: $global-radius;\n }\n\n // Styles Google Maps and MapQuest embeds properly\n // scss-lint:disable IdSelector\n #map_canvas,\n .map_canvas,\n .mqa-display {\n img,\n embed,\n object {\n max-width: none !important;\n }\n }\n\n // Reset <button> styles created by most browsers\n button {\n -webkit-appearance: none;\n -moz-appearance: none;\n background: transparent;\n padding: 0;\n border: 0;\n border-radius: $global-radius;\n line-height: 1;\n }\n\n // Internal classes to show/hide elements in JavaScript\n .is-visible {\n display: block !important;\n }\n\n .is-hidden {\n display: none !important;\n }\n}\n\n/// Loads normalize.css.\n/// @access private\n@mixin -zf-normalize {\n /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n /**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\n\n html {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n }\n\n /**\n * Remove default margin.\n */\n\n body {\n margin: 0;\n }\n\n /* HTML5 display definitions\n ========================================================================== */\n\n /**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\n\n article,\n aside,\n details,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n menu,\n nav,\n section,\n summary {\n display: block;\n }\n\n /**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\n audio,\n canvas,\n progress,\n video {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n }\n\n /**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\n audio:not([controls]) {\n display: none;\n height: 0;\n }\n\n /**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n\n [hidden],\n template {\n display: none;\n }\n\n /* Links\n ========================================================================== */\n\n /**\n * Remove the gray background color from active links in IE 10.\n */\n\n a {\n background-color: transparent;\n }\n\n /**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\n\n a:active,\n a:hover {\n outline: 0;\n }\n\n /* Text-level semantics\n ========================================================================== */\n\n /**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\n\n abbr[title] {\n border-bottom: 1px dotted;\n }\n\n /**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\n\n b,\n strong {\n font-weight: bold;\n }\n\n /**\n * Address styling not present in Safari and Chrome.\n */\n\n dfn {\n font-style: italic;\n }\n\n /**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\n\n h1 {\n font-size: 2em;\n margin: 0.67em 0;\n }\n\n /**\n * Address styling not present in IE 8/9.\n */\n\n mark {\n background: #ff0;\n color: #000;\n }\n\n /**\n * Address inconsistent and variable font size in all browsers.\n */\n\n small {\n font-size: 80%;\n }\n\n /**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n\n sup {\n top: -0.5em;\n }\n\n sub {\n bottom: -0.25em;\n }\n\n /* Embedded content\n ========================================================================== */\n\n /**\n * Remove border when inside `a` element in IE 8/9/10.\n */\n\n img {\n border: 0;\n }\n\n /**\n * Correct overflow not hidden in IE 9/10/11.\n */\n\n svg:not(:root) {\n overflow: hidden;\n }\n\n /* Grouping content\n ========================================================================== */\n\n /**\n * Address margin not present in IE 8/9 and Safari.\n */\n\n figure {\n margin: 1em 40px;\n }\n\n /**\n * Address differences between Firefox and other browsers.\n */\n\n hr {\n box-sizing: content-box;\n height: 0;\n }\n\n /**\n * Contain overflow in all browsers.\n */\n\n pre {\n overflow: auto;\n }\n\n /**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\n code,\n kbd,\n pre,\n samp {\n font-family: monospace, monospace;\n font-size: 1em;\n }\n\n /* Forms\n ========================================================================== */\n\n /**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n /**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\n\n button,\n input,\n optgroup,\n select,\n textarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n }\n\n /**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\n\n button {\n overflow: visible;\n }\n\n /**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\n\n button,\n select {\n text-transform: none;\n }\n\n /**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\n\n button,\n html input[type=\"button\"], /* 1 */\n input[type=\"reset\"],\n input[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n }\n\n /**\n * Re-set default cursor for disabled elements.\n */\n\n button[disabled],\n html input[disabled] {\n cursor: default;\n }\n\n /**\n * Remove inner padding and border in Firefox 4+.\n */\n\n button::-moz-focus-inner,\n input::-moz-focus-inner {\n border: 0;\n padding: 0;\n }\n\n /**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\n input {\n line-height: normal;\n }\n\n /**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\n input[type=\"checkbox\"],\n input[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n }\n\n /**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\n input[type=\"number\"]::-webkit-inner-spin-button,\n input[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n }\n\n /**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\n\n input[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n box-sizing: content-box; /* 2 */\n }\n\n /**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\n input[type=\"search\"]::-webkit-search-cancel-button,\n input[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n /**\n * Define consistent border, margin, and padding.\n * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.\n */\n\n /* fieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n } */\n\n /**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\n legend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n }\n\n /**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\n\n textarea {\n overflow: auto;\n }\n\n /**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\n optgroup {\n font-weight: bold;\n }\n\n /* Tables\n ========================================================================== */\n\n /**\n * Remove most spacing between table cells.\n */\n\n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n\n td,\n th {\n padding: 0;\n }\n}\n","// Foundation for Sites Settings\n// -----------------------------\n//\n// Table of Contents:\n//\n// 1. Global\n// 2. Breakpoints\n// 3. The Grid\n// 4. Base Typography\n// 5. Typography Helpers\n// 6. Abide\n// 7. Accordion\n// 8. Accordion Menu\n// 9. Badge\n// 10. Breadcrumbs\n// 11. Button\n// 12. Button Group\n// 13. Callout\n// 14. Close Button\n// 15. Drilldown\n// 16. Dropdown\n// 17. Dropdown Menu\n// 18. Flex Video\n// 19. Forms\n// 20. Label\n// 21. Media Object\n// 22. Menu\n// 23. Off-canvas\n// 24. Orbit\n// 25. Pagination\n// 26. Progress Bar\n// 27. Reveal\n// 28. Slider\n// 29. Switch\n// 30. Table\n// 31. Tabs\n// 32. Thumbnail\n// 33. Title Bar\n// 34. Tooltip\n// 35. Top Bar\n\n@import 'util/util';\n\n// 1. Global\n// ---------\n\n$global-font-size: 100%;\n$global-width: 62.5rem;\n$global-lineheight: 1.5;\n$primary-color: #2F343B;\n$secondary-color: #703030;\n$success-color: #5da423;\n$warning-color: #ffae00;\n$alert-color: #703030;\n$light-gray: #e6e6e6;\n$medium-gray: #cacaca;\n$dark-gray: #8a8a8a;\n$black: #0a0a0a;\n$white: #fefefe;\n$body-background: $white;\n$body-font-color: #222222;\n$body-font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;\n$body-antialiased: true;\n$global-margin: 1rem;\n$global-padding: 1rem;\n$global-weight-normal: normal;\n$global-weight-bold: bold;\n$global-radius: 3px;\n$global-text-direction: ltr;\n\n// 2. Breakpoints\n// --------------\n\n$breakpoints: (\n small: 0,\n medium: 640px,\n large: 1024px,\n xlarge: 1200px,\n xxlarge: 1440px,\n);\n$breakpoint-classes: (small medium large);\n\n// 3. The Grid\n// -----------\n\n$grid-row-width: $global-width;\n$grid-column-count: 12;\n$grid-column-responsive-gutter: (\n small: 20px,\n medium: 30px,\n);\n$grid-column-align-edge: true;\n$block-grid-max: 8;\n\n// 4. Base Typography\n// ------------------\n\n$header-font-family: $body-font-family;\n$header-font-weight: $global-weight-normal;\n$header-font-style: normal;\n$font-family-monospace: Consolas, 'Liberation Mono', Courier, monospace;\n$header-sizes: (\n small: (\n 'h1': 24,\n 'h2': 20,\n 'h3': 19,\n 'h4': 18,\n 'h5': 17,\n 'h6': 16,\n ),\n medium: (\n 'h1': 48,\n 'h2': 40,\n 'h3': 31,\n 'h4': 25,\n 'h5': 20,\n 'h6': 16,\n ),\n);\n$header-color: #222222;\n$header-lineheight: 1.4;\n$header-margin-bottom: 0.5rem;\n$header-text-rendering: optimizeLegibility;\n$small-font-size: 80%;\n$header-small-font-color: $medium-gray;\n$paragraph-lineheight: 1.6;\n$paragraph-margin-bottom: 1rem;\n$paragraph-text-rendering: optimizeLegibility;\n$code-color: $black;\n$code-font-family: $font-family-monospace;\n$code-font-weight: $global-weight-normal;\n$code-background: $light-gray;\n$code-border: 1px solid $medium-gray;\n$code-padding: rem-calc(2 5 1);\n$anchor-color: $primary-color;\n$anchor-color-hover: scale-color($anchor-color, $lightness: -14%);\n$anchor-text-decoration: none;\n$anchor-text-decoration-hover: none;\n$hr-width: $global-width;\n$hr-border: 1px solid $medium-gray;\n$hr-margin: rem-calc(20) auto;\n$list-lineheight: $paragraph-lineheight;\n$list-margin-bottom: $paragraph-margin-bottom;\n$list-style-type: disc;\n$list-style-position: outside;\n$list-side-margin: 1.25rem;\n$list-nested-side-margin: 1.25rem;\n$defnlist-margin-bottom: 1rem;\n$defnlist-term-weight: $global-weight-bold;\n$defnlist-term-margin-bottom: 0.3rem;\n$blockquote-color: $dark-gray;\n$blockquote-padding: rem-calc(9 20 0 19);\n$blockquote-border: 1px solid $medium-gray;\n$cite-font-size: rem-calc(13);\n$cite-color: $dark-gray;\n$keystroke-font: $font-family-monospace;\n$keystroke-color: $black;\n$keystroke-background: $light-gray;\n$keystroke-padding: rem-calc(2 4 0);\n$keystroke-radius: $global-radius;\n$abbr-underline: 1px dotted $black;\n\n// 5. Typography Helpers\n// ---------------------\n\n$lead-font-size: $global-font-size * 1.25;\n$lead-lineheight: 1.6;\n$subheader-lineheight: 1.4;\n$subheader-color: $dark-gray;\n$subheader-font-weight: $global-weight-normal;\n$subheader-margin-top: 0.2rem;\n$subheader-margin-bottom: 0.5rem;\n$stat-font-size: 2.5rem;\n\n// 6. Abide\n// --------\n\n$abide-inputs: true;\n$abide-labels: true;\n$input-background-invalid: $alert-color;\n$form-label-color-invalid: $alert-color;\n$input-error-color: $alert-color;\n$input-error-font-size: rem-calc(12);\n$input-error-font-weight: $global-weight-bold;\n\n// 7. Accordion\n// ------------\n\n$accordion-background: $white;\n$accordion-plusminus: true;\n$accordion-item-color: foreground($accordion-background, $primary-color);\n$accordion-item-background-hover: $light-gray;\n$accordion-item-padding: 1.25rem 1rem;\n$accordion-content-background: $white;\n$accordion-content-border: 1px solid $light-gray;\n$accordion-content-color: foreground($accordion-background, $primary-color);\n$accordion-content-padding: 1rem;\n\n// 8. Accordion Menu\n// -----------------\n\n$accordionmenu-arrows: true;\n$accordionmenu-arrow-color: $primary-color;\n\n// 9. Badge\n// --------\n\n$badge-background: $primary-color;\n$badge-color: foreground($badge-background);\n$badge-padding: 0.3em;\n$badge-minwidth: 2.1em;\n$badge-font-size: 0.6rem;\n\n// 10. Breadcrumbs\n// ---------------\n\n$breadcrumbs-margin: 0 0 $global-margin 0;\n$breadcrumbs-item-font-size: rem-calc(11);\n$breadcrumbs-item-color: $primary-color;\n$breadcrumbs-item-color-current: $black;\n$breadcrumbs-item-color-disabled: $medium-gray;\n$breadcrumbs-item-margin: 0.75rem;\n$breadcrumbs-item-uppercase: true;\n$breadcrumbs-item-slash: true;\n\n// 11. Button\n// ----------\n\n$button-padding: 0.85em 1em;\n$button-margin: 0 0 $global-margin 0;\n$button-fill: solid;\n$button-background: $primary-color;\n$button-background-hover: scale-color($button-background, $lightness: -15%);\n$button-color: #fff;\n$button-color-alt: #000;\n$button-radius: $global-radius;\n$button-sizes: (\n tiny: 0.6rem,\n small: 0.75rem,\n default: 0.9rem,\n large: 1.25rem,\n);\n$button-opacity-disabled: 0.25;\n\n// 12. Button Group\n// ----------------\n\n$buttongroup-margin: 1rem;\n$buttongroup-spacing: 1px;\n$buttongroup-child-selector: '.button';\n$buttongroup-expand-max: 6;\n\n// 13. Callout\n// -----------\n\n$callout-background: $white;\n$callout-background-fade: 85%;\n$callout-border: 1px solid rgba($black, 0.25);\n$callout-margin: 0 0 1rem 0;\n$callout-padding: 1rem;\n$callout-font-color: $body-font-color;\n$callout-font-color-alt: $body-background;\n$callout-radius: $global-radius;\n$callout-link-tint: 30%;\n\n// 14. Close Button\n// ----------------\n\n$closebutton-position: right top;\n$closebutton-offset-horizontal: 1rem;\n$closebutton-offset-vertical: 0.5rem;\n$closebutton-size: 2em;\n$closebutton-lineheight: 1;\n$closebutton-color: $dark-gray;\n$closebutton-color-hover: $black;\n\n// 15. Drilldown\n// -------------\n\n$drilldown-transition: transform 0.15s linear;\n$drilldown-arrows: true;\n$drilldown-arrow-color: $primary-color;\n$drilldown-background: $white;\n\n// 16. Dropdown\n// ------------\n\n$dropdown-padding: 1rem;\n$dropdown-border: 1px solid $medium-gray;\n$dropdown-font-size: 1rem;\n$dropdown-width: 300px;\n$dropdown-radius: $global-radius;\n$dropdown-sizes: (\n tiny: 100px,\n small: 200px,\n large: 400px,\n);\n\n// 17. Dropdown Menu\n// -----------------\n\n$dropdownmenu-arrows: true;\n$dropdownmenu-arrow-color: $anchor-color;\n$dropdownmenu-min-width: 200px;\n$dropdownmenu-background: $white;\n$dropdownmenu-border: 1px solid $medium-gray;\n\n// 18. Flex Video\n// --------------\n\n$flexvideo-margin-bottom: rem-calc(16);\n$flexvideo-ratio: 4 by 3;\n$flexvideo-ratio-widescreen: 16 by 9;\n\n// 19. Forms\n// ---------\n\n$fieldset-border: 1px solid $medium-gray;\n$fieldset-padding: rem-calc(20);\n$fieldset-margin: rem-calc(18 0);\n$legend-padding: rem-calc(0 3);\n$form-spacing: rem-calc(16);\n$helptext-color: #333;\n$helptext-font-size: rem-calc(13);\n$helptext-font-style: italic;\n$input-prefix-color: $black;\n$input-prefix-background: $light-gray;\n$input-prefix-border: 1px solid $medium-gray;\n$input-prefix-padding: 1rem;\n$form-label-color: $black;\n$form-label-font-size: rem-calc(14);\n$form-label-font-weight: $global-weight-normal;\n$form-label-line-height: 1.8;\n$select-background: $white;\n$select-triangle-color: #333;\n$select-radius: $global-radius;\n$input-color: $black;\n$input-font-family: inherit;\n$input-font-size: rem-calc(16);\n$input-background: $white;\n$input-background-focus: $white;\n$input-background-disabled: $light-gray;\n$input-border: 1px solid $medium-gray;\n$input-border-focus: 1px solid $dark-gray;\n$input-shadow: inset 0 1px 2px rgba($black, 0.1);\n$input-shadow-focus: 0 0 5px $medium-gray;\n$input-cursor-disabled: default;\n$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out;\n$input-number-spinners: true;\n$input-radius: $global-radius;\n\n// 20. Label\n// ---------\n\n$label-background: $primary-color;\n$label-color: foreground($label-background);\n$label-font-size: 0.8rem;\n$label-padding: 0.33333rem 0.5rem;\n$label-radius: $global-radius;\n\n// 21. Media Object\n// ----------------\n\n$mediaobject-margin-bottom: $global-margin;\n$mediaobject-section-padding: $global-padding;\n$mediaobject-image-width-stacked: 100%;\n\n// 22. Menu\n// --------\n\n$menu-margin: 0;\n$menu-margin-nested: 1rem;\n$menu-item-padding: 0.7rem 1rem;\n$menu-icon-spacing: 0.25rem;\n$menu-expand-max: 6;\n\n// 23. Off-canvas\n// --------------\n\n$offcanvas-size: 250px;\n$offcanvas-background: $light-gray;\n$offcanvas-zindex: -1;\n$offcanvas-transition-length: 0.5s;\n$offcanvas-transition-timing: ease;\n$offcanvas-fixed-reveal: true;\n$offcanvas-exit-background: rgba($white, 0.25);\n$maincontent-class: 'off-canvas-content';\n$maincontent-shadow: 0 0 10px rgba($black, 0.5);\n\n// 24. Orbit\n// ---------\n\n$orbit-bullet-background: $medium-gray;\n$orbit-bullet-background-active: $dark-gray;\n$orbit-bullet-diameter: 1.2rem;\n$orbit-bullet-margin: 0.1rem;\n$orbit-bullet-margin-top: 0.8rem;\n$orbit-bullet-margin-bottom: 0.8rem;\n$orbit-caption-background: rgba($black, 0.5);\n$orbit-caption-padding: 1rem;\n$orbit-control-background-hover: rgba($black, 0.5);\n$orbit-control-padding: 1rem;\n$orbit-control-zindex: 10;\n\n// 25. Pagination\n// --------------\n\n$pagination-font-size: rem-calc(14);\n$pagination-margin-bottom: $global-margin;\n$pagination-item-color: $black;\n$pagination-item-padding: rem-calc(3 10);\n$pagination-item-spacing: rem-calc(1);\n$pagination-radius: $global-radius;\n$pagination-item-background-hover: $light-gray;\n$pagination-item-background-current: $primary-color;\n$pagination-item-color-current: foreground($pagination-item-background-current);\n$pagination-item-color-disabled: $medium-gray;\n$pagination-ellipsis-color: $black;\n$pagination-mobile-items: false;\n$pagination-arrows: true;\n\n// 26. Progress Bar\n// ----------------\n\n$progress-height: 1rem;\n$progress-background: $medium-gray;\n$progress-margin-bottom: $global-margin;\n$progress-meter-background: $primary-color;\n$progress-radius: $global-radius;\n\n// 27. Reveal\n// ----------\n\n$reveal-background: $white;\n$reveal-width: 600px;\n$reveal-max-width: $global-width;\n$reveal-offset: rem-calc(100);\n$reveal-padding: $global-padding;\n$reveal-border: 1px solid $medium-gray;\n$reveal-radius: $global-radius;\n$reveal-zindex: 1005;\n$reveal-overlay-background: rgba($black, 0.45);\n\n// 28. Slider\n// ----------\n\n$slider-height: 0.5rem;\n$slider-width-vertical: $slider-height;\n$slider-background: $light-gray;\n$slider-fill-background: $medium-gray;\n$slider-handle-height: 1.4rem;\n$slider-handle-width: 1.4rem;\n$slider-handle-background: $primary-color;\n$slider-opacity-disabled: 0.25;\n$slider-radius: $global-radius;\n$slider-transition: all 0.2s ease-in-out;\n\n// 29. Switch\n// ----------\n\n$switch-background: $medium-gray;\n$switch-background-active: $primary-color;\n$switch-height: 2rem;\n$switch-height-tiny: 1.5rem;\n$switch-height-small: 1.75rem;\n$switch-height-large: 2.5rem;\n$switch-radius: $global-radius;\n$switch-margin: $global-margin;\n$switch-paddle-background: $white;\n$switch-paddle-offset: 0.25rem;\n$switch-paddle-radius: $global-radius;\n$switch-paddle-transition: all 0.25s ease-out;\n\n// 30. Table\n// ---------\n\n$table-background: $white;\n$table-color-scale: 5%;\n$table-border: 1px solid smart-scale($table-background, $table-color-scale);\n$table-padding: rem-calc(8 10 10);\n$table-hover-scale: 2%;\n$table-row-hover: darken($table-background, $table-hover-scale);\n$table-row-stripe-hover: darken($table-background, $table-color-scale + $table-hover-scale);\n$table-striped-background: smart-scale($table-background, $table-color-scale);\n$table-stripe: even;\n$table-head-background: smart-scale($table-background, $table-color-scale / 2);\n$table-foot-background: smart-scale($table-background, $table-color-scale);\n$table-head-font-color: $body-font-color;\n$show-header-for-stacked: false;\n\n// 31. Tabs\n// --------\n\n$tab-margin: 0;\n$tab-background: $white;\n$tab-background-active: $light-gray;\n$tab-border: $light-gray;\n$tab-item-color: foreground($tab-background, $primary-color);\n$tab-item-background-hover: $white;\n$tab-item-padding: 1.25rem 1.5rem;\n$tab-expand-max: 6;\n$tab-content-background: $white;\n$tab-content-border: $light-gray;\n$tab-content-color: foreground($tab-background, $primary-color);\n$tab-content-padding: 1rem;\n\n// 32. Thumbnail\n// -------------\n\n$thumbnail-border: solid 4px $white;\n$thumbnail-margin-bottom: $global-margin;\n$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2);\n$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);\n$thumbnail-transition: box-shadow 200ms ease-out;\n$thumbnail-radius: $global-radius;\n\n// 33. Title Bar\n// -------------\n\n$titlebar-background: $black;\n$titlebar-color: $white;\n$titlebar-padding: 0.5rem;\n$titlebar-text-font-weight: bold;\n$titlebar-icon-color: $white;\n$titlebar-icon-color-hover: $medium-gray;\n$titlebar-icon-spacing: 0.25rem;\n\n// 34. Tooltip\n// -----------\n\n$has-tip-font-weight: $global-weight-bold;\n$has-tip-border-bottom: dotted 1px $dark-gray;\n$tooltip-background-color: $black;\n$tooltip-color: $white;\n$tooltip-padding: 0.75rem;\n$tooltip-font-size: $small-font-size;\n$tooltip-pip-width: 0.75rem;\n$tooltip-pip-height: $tooltip-pip-width * 0.866;\n$tooltip-pip-offset: 1.25rem;\n$tooltip-radius: $global-radius;\n\n// 35. Top Bar\n// -----------\n\n$topbar-padding: 0.5rem;\n$topbar-background: $light-gray;\n$topbar-title-spacing: 1rem;\n$topbar-input-width: 200px;\n\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group flex-grid\n////\n\n$-zf-flex-justify: (\n 'left': flex-start,\n 'right': flex-end,\n 'center': center,\n 'justify': space-between,\n 'spaced': space-around,\n);\n\n$-zf-flex-align: (\n 'top': flex-start,\n 'bottom': flex-end,\n 'middle': center,\n 'stretch': stretch,\n);\n\n/// Creates a container for a flex grid row.\n///\n/// @param {Keyword|List} $behavior [null]\n/// Modifications to the default grid styles. `nest` indicates the row will be placed inside another row. `collapse` indicates that the columns inside this row will not have padding. `nest collapse` combines both behaviors.\n/// @param {Number} $width [$grid-row-width] - Maximum width of the row.\n/// @param {Number} $columns [null] - Number of columns to use for this row. If set to `null` (the default), the global column count will be used.\n/// @param {Boolean} $base [true] - Set to `false` to prevent basic styles from being output. Useful if you're calling this mixin on the same element twice, as it prevents duplicate CSS output.\n/// @param {Number} $gutter [$grid-column-gutter] - Gutter to use when inverting margins, in case the row is nested.\n@mixin flex-grid-row(\n $behavior: null,\n $width: $grid-row-width,\n $columns: null,\n $base: true,\n $gutter: $grid-column-gutter\n) {\n $behavior: -zf-get-options($behavior, nest collapse);\n $margin: auto;\n\n @if map-get($behavior, nest) {\n @include grid-row-nest($gutter);\n\n @if map-get($behavior, collapse) {\n margin-left: 0;\n margin-right: 0;\n }\n }\n @else {\n max-width: $width;\n margin-left: auto;\n margin-right: auto;\n }\n\n @if $base {\n display: flex;\n flex-flow: row wrap;\n }\n\n @if $columns != null {\n @include grid-context($columns, $base) {\n @content;\n }\n }\n}\n\n/// Calculates the `flex` property for a flex grid column. It accepts all of the same values as the basic `grid-column()` function, along with two extras:\n/// - `null` (the default) will make the column expand to fill space.\n/// - `shrink` will make the column contract, so it only takes up the horizontal space it needs.\n///\n/// @param {Mixed} $columns [null] - Width of the column.\n@function flex-grid-column($columns: null) {\n // scss-lint:disable ZeroUnit\n $flex: 1 1 0px;\n\n @if $columns == shrink {\n $flex: 0 0 auto;\n }\n @else if $columns != null {\n $flex: 0 0 grid-column($columns);\n }\n\n @return $flex;\n}\n\n/// Creates a column for a flex grid. By default, the column will stretch to the full width of its container, but this can be overridden with sizing classes, or by using the `unstack` class on the parent flex row.\n///\n/// @param {Mixed} $columns [null] - Width of the column. Refer to the `flex-grid-column()` function to see possible values.\n/// @param {Number} $gutter [$grid-column-gutter] - Space between columns, added as a left and right padding.\n@mixin flex-grid-column(\n $columns: null,\n $gutter: $grid-column-gutter\n) {\n @if $gutter != null {\n $gutter: rem-calc($gutter) / 2;\n }\n @else {\n @each $breakpoint, $gutter in $grid-column-responsive-gutter {\n $padding: rem-calc($gutter) / 2;\n\n @include breakpoint($breakpoint) {\n padding-left: $padding;\n padding-right: $padding;\n }\n }\n }\n\n flex: flex-grid-column($columns);\n padding-left: $gutter;\n padding-right: $gutter;\n\n // max-width fixes IE 10/11 not respecting the flex-basis property\n @if $columns != null and $columns != shrink {\n max-width: grid-column($columns);\n }\n}\n\n/// Changes the source order of a flex grid column. Columns with lower numbers appear first in the layout.\n/// @param {Number} $order [0] - Order number to apply.\n@mixin flex-grid-order($order: 0) {\n order: $order;\n}\n\n/// Horizontally or vertically aligns the columns within a flex row. Apply this mixin to a flex row.\n///\n/// @param {Keyword} $x [null] - Horizontal alignment to use. Can be `left`, `right`, `center`, `justify`, or `spaced`. Or, set it to `null` (the default) to not set horizontal alignment.\n/// @param {Keyword} $y [null] - Vertical alignment to use. Can be `top`, `bottom`, `middle`, or `stretch`. Or, set it to `null` (the default) to not set vertical alignment.\n@mixin flex-grid-row-align($x: null, $y: null) {\n @if $x {\n @if map-has-key($-zf-flex-justify, $x) {\n $x: map-get($-zf-flex-justify, $x);\n }\n @else {\n @warn 'flex-grid-row-align(): #{$x} is not a valid value for horizontal alignment. Use left, right, center, justify, or spaced.'\n }\n }\n\n @if $y {\n @if map-has-key($-zf-flex-align, $y) {\n $y: map-get($-zf-flex-align, $y);\n }\n @else {\n @warn 'flex-grid-row-align(): #{$y} is not a valid value for vertical alignment. Use top, bottom, middle, or stretch.'\n }\n }\n\n justify-content: $x;\n align-items: $y;\n}\n\n/// Vertically align a single column within a flex row. Apply this mixin to a flex column.\n///\n/// @param {Keyword} $y [null] - Vertical alignment to use. Can be `top`, `bottom`, `middle`, or `stretch`. Or, set it to `null` (the default) to not set vertical alignment.\n@mixin flex-grid-column-align($y: null) {\n @if $y {\n @if map-has-key($-zf-flex-align, $y) {\n $y: map-get($-zf-flex-align, $y);\n }\n @else {\n @warn 'flex-grid-column-align(): #{$y} is not a valid value for alignment. Use top, bottom, middle, or stretch.'\n }\n }\n\n align-self: $y;\n}\n\n@mixin foundation-flex-grid {\n // Row\n .row {\n @include flex-grid-row;\n\n // Nesting behavior\n & & {\n @include flex-grid-row(nest, $base: false);\n }\n\n // Expanded row\n &.expanded {\n max-width: none;\n }\n\n &.collapse {\n > .column { @include grid-col-collapse; }\n }\n }\n\n // Column\n .column {\n @include flex-grid-column;\n }\n\n // Column row\n // The double .row class is needed to bump up the specificity\n .column.row.row {\n float: none;\n\n // To properly nest a column row, padding and margin is removed\n .row & {\n padding-left: 0;\n padding-right: 0;\n margin-left: 0;\n margin-right: 0;\n }\n }\n\n @include -zf-each-breakpoint {\n @for $i from 1 through $grid-column-count {\n // Sizing (percentage)\n .#{$-zf-size}-#{$i} {\n flex: flex-grid-column($i);\n max-width: grid-column($i);\n }\n\n // Offsets\n $o: $i - 1;\n\n .#{$-zf-size}-offset-#{$o} {\n @include grid-column-offset($o);\n }\n }\n\n @for $i from 1 through 6 {\n // Source ordering\n .#{$-zf-size}-order-#{$i} {\n @include flex-grid-order($i);\n }\n }\n\n @if $-zf-size != small {\n // Sizing (expand)\n @include breakpoint($-zf-size) {\n .#{$-zf-size}-expand {\n flex: flex-grid-column();\n }\n }\n\n // Auto-stacking/unstacking\n @at-root (without: media) {\n .row.#{$-zf-size}-unstack {\n .column {\n flex: flex-grid-column(100%);\n\n @include breakpoint($-zf-size) {\n flex: flex-grid-column();\n }\n }\n }\n }\n }\n\n // Responsive collapsing\n .#{$-zf-size}-collapse {\n > .column { @include grid-col-collapse; }\n }\n\n .#{$-zf-size}-uncollapse {\n $gutter: null;\n\n @if $grid-column-gutter {\n $gutter: $grid-column-gutter;\n }\n @else {\n $gutter: -zf-get-bp-val($grid-column-responsive-gutter, $-zf-size);\n }\n > .column { @include grid-col-uncollapse($gutter); }\n }\n }\n\n // Sizing (shrink)\n .shrink {\n flex: flex-grid-column(shrink);\n max-width: 100%;\n }\n\n // Horizontal alignment using justify-content\n @each $hdir, $prop in map-remove($-zf-flex-justify, left) {\n .row.align-#{$hdir} {\n @include flex-grid-row-align($x: $hdir);\n }\n }\n\n // Vertical alignment using align-items and align-self\n @each $vdir, $prop in $-zf-flex-align {\n .row.align-#{$vdir} {\n @include flex-grid-row-align($y: $vdir);\n }\n\n .column.align-#{$vdir} {\n @include flex-grid-column-align($vdir);\n }\n }\n\n .columns {\n // scss-lint:disable PlaceholderInExtend\n @extend .column;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Change the behavior of columns defined inside this mixin to use a different column count.\n/// @content\n///\n/// @param {Number} $columns - Number of columns to use.\n/// @param {Boolean} $root [false]\n/// If `false`, selectors inside this mixin will nest inside the parent selector.\n/// If `true`, selectors will not nest.\n@mixin grid-context(\n $columns,\n $root: false\n) {\n // Store the current column count so it can be re-set later\n $old-grid-column-count: $grid-column-count;\n $grid-column-count: $columns !global;\n\n @if $root {\n @at-root { @content; }\n }\n @else {\n @content;\n }\n\n // Restore the old column count\n $grid-column-count: $old-grid-column-count;\n}\n\n/// Creates a grid row.\n/// @content\n///\n/// @param {Number} $columns [null] - Column count for this row. `null` will use the default column count.\n/// @param {Keywords} $behavior [null]\n/// Modifications to the default grid styles. `nest` indicates the row will be placed inside another row. `collapse` indicates that the columns inside this row will not have padding. `nest collapse` combines both behaviors.\n/// @param {Number} $width [$grid-row-width] - Maximum width of the row.\n/// @param {Boolean} $cf [true] - Whether or not to include a clearfix.\n/// @param {Number} $gutter [$grid-column-gutter] - Gutter to use when inverting margins, in case the row is nested.\n@mixin grid-row(\n $columns: null,\n $behavior: null,\n $width: $grid-row-width,\n $cf: true,\n $gutter: $grid-column-gutter\n) {\n $behavior: -zf-get-options($behavior, nest collapse);\n $margin: auto;\n\n @if map-get($behavior, nest) {\n @include grid-row-nest($gutter);\n\n @if map-get($behavior, collapse) {\n margin-left: 0;\n margin-right: 0;\n }\n }\n @else {\n max-width: $width;\n margin-left: auto;\n margin-right: auto;\n }\n\n @if $cf {\n @include clearfix;\n }\n\n @if $columns != null {\n @include grid-context($columns) {\n @content;\n }\n }\n}\n\n/// Inverts the margins of a row to nest it inside of a column.\n///\n/// @param {Map|null} $gutter [null] - Gutter value to use when inverting the margins. Set to `null` to refer to the responsive gutter settings.\n@mixin grid-row-nest($gutter: null) {\n @if $gutter != null {\n $margin: rem-calc($gutter) / 2 * -1;\n margin-left: $margin;\n margin-right: $margin;\n }\n @else {\n @each $breakpoint, $value in $grid-column-responsive-gutter {\n $margin: rem-calc($value) / 2 * -1;\n\n @include breakpoint($breakpoint) {\n margin-left: $margin;\n margin-right: $margin;\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group breakpoints\n////\n\n// scss-lint:disable ZeroUnit\n\n/// A list of named breakpoints. You can use these with the `breakpoint()` mixin to quickly create media queries.\n/// @type Map\n$breakpoints: (\n small: 0,\n medium: 640px,\n large: 1024px,\n xlarge: 1200px,\n xxlarge: 1440px,\n) !default;\n\n/// All of the names in this list will be output as classes in your CSS, like `.small-12`, `.medium-6`, and so on. Each value in this list must also be in the `$breakpoints` map.\n/// @type List\n$breakpoint-classes: (small medium large) !default;\n\n/// Generates a media query string matching the input value. Refer to the documentation for the `breakpoint()` mixin to see what the possible inputs are.\n///\n/// @param {Keyword|Number} $val [small] - Breakpoint name, or px, rem, or em value to process.\n@function breakpoint($val: small) {\n // Size or keyword\n $bp: nth($val, 1);\n // Value for max-width media queries\n $bp-max: 0;\n // Direction of media query (up, down, or only)\n $dir: if(length($val) > 1, nth($val, 2), up);\n // Eventual output\n $str: '';\n // Is it a named media query?\n $named: false;\n\n // Orientation media queries have a unique syntax\n @if $bp == 'landscape' or $bp == 'portrait' {\n @return '(orientation: #{$bp})';\n }\n @else if $bp == 'retina' {\n @return '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)';\n }\n\n // Try to pull a named breakpoint out of the $breakpoints map\n @if type-of($bp) == 'string' {\n @if map-has-key($breakpoints, $bp) {\n @if $dir == 'only' or $dir == 'down' {\n $next-bp: -zf-map-next($breakpoints, $bp);\n\n @if $next-bp == null {\n $bp-max: null;\n @warn 'breakpoint(): the media query \"#{$val}\" cannot be used because #{$bp} is the largest breakpoint.';\n }\n @else {\n $bp-max: $next-bp;\n }\n }\n\n $bp: map-get($breakpoints, $bp);\n $named: true;\n }\n @else {\n $bp: 0;\n }\n }\n\n // Convert any pixel, rem, or unitless value to em\n $bp: -zf-bp-to-em($bp);\n @if $bp-max {\n $bp-max: -zf-bp-to-em($bp-max) - (1/16);\n }\n\n // Skip media query creation if the input is \"0 up\"\n @if $bp > 0em or $dir == 'only' or $dir == 'down' {\n // `only` ranges use the format `(min-width: n) and (max-width: n)`\n @if $dir == 'only' {\n @if $named == true {\n $str: $str + '(min-width: #{$bp})';\n\n @if $bp-max != null {\n $str: $str + ' and (max-width: #{$bp-max})';\n }\n }\n @else {\n @warn 'Only named media queries can have an `only` range.';\n }\n }\n\n // `down` ranges use the format `(max-width: n)`\n @else if $dir == 'down' {\n $max: 0;\n\n // For named breakpoints, subtract the breakpoint value by one \"pixel\", or 1/16em.\n @if $named {\n $max: $bp-max;\n }\n @else {\n $max: $bp;\n }\n\n // Skip media query creation if input value is exactly \"0 down\" but don't \"small down\"\n @if $named or $bp > 0em {\n $str: $str + '(max-width: #{$max})';\n }\n }\n\n // `up` ranges use the format `(min-width: n)`\n @else if $bp > 0em {\n $str: $str + '(min-width: #{$bp})';\n }\n }\n\n @return $str;\n}\n\n/// Wraps a media query around the content you put inside the mixin. This mixin accepts a number of values:\n/// - If a string is passed, the mixin will look for it in the `$breakpoints` map, and use a media query there.\n/// - If a pixel value is passed, it will be converted to an em value using `$global-font-size` as the base.\n/// - If a rem value is passed, the unit will be changed to em.\n/// - If an em value is passed, the value will be used as-is.\n///\n/// @param {Keyword|Number} $value - Breakpoint name, or px, rem, or em value to process.\n///\n/// @output If the breakpoint is \"0px and larger\", outputs the content as-is. Otherwise, outputs the content wrapped in a media query.\n@mixin breakpoint($value) {\n $str: breakpoint($value);\n\n // If $str is still an empty string, no media query is needed\n @if $str == '' {\n @content;\n }\n\n // Otherwise, wrap the content in a media query\n @else {\n @media screen and #{$str} {\n @content;\n }\n }\n}\n\n/// Convers the breakpoints map to a URL-encoded string, like this: `key1=value1&key2=value2`. The value is then dropped into the CSS for a special `<meta>` tag, which is read by the Foundation JavaScript. This is how we transfer values from Sass to JavaScript, so they can be defined in one place.\n/// @access private\n///\n/// @param {Map} $map - Map to convert.\n///\n/// @returns {String} A string containing the map's contents.\n@function -zf-bp-serialize($map) {\n $str: '';\n @each $key, $value in $map {\n $str: $str + $key + '=' + -zf-bp-to-em($value) + '&';\n }\n $str: str-slice($str, 1, -2);\n\n @return $str;\n}\n\n/// Find the next key in a map.\n/// @access private\n///\n/// @param {Map} $map - Map to traverse.\n/// @param {Mixed} $key - Key to use as a starting point.\n///\n/// @returns {Mixed} The value for the key after `$key`, if `$key` was found. If `$key` was not found, or `$key` was the last value in the map, returns `null`.\n@function -zf-map-next($map, $key) {\n // Store the values of the map as a list, so we can access them with nth\n $values: map-values($map);\n\n // Ghetto for loop\n $i: 1;\n $found: false;\n @each $val in map-keys($map) {\n @if $found == false {\n @if ($key == $val) {\n $found: true;\n }\n $i: $i + 1;\n }\n }\n\n // If the key doesn't exist, or it's the last key in the map, return null\n @if $i > length($map) {\n @return null;\n }\n // Otherwise, return the value\n @else {\n @return nth($values, $i);\n }\n}\n\n/// Get a value for a breakpoint from a responsive config map. If the config map has the key `$value`, the exact breakpoint value is returned. If the config map does *not* have the breakpoint, the value matching the next lowest breakpoint in the config map is returned.\n/// @access private\n///\n/// @param {Map} $map - Input config map.\n/// @param {Keyword} $value - Breakpoint name to use.\n///\n/// @return {Mixed} The corresponding breakpoint value.\n@function -zf-get-bp-val($map, $value) {\n // Check if the breakpoint name exists globally\n @if not map-has-key($breakpoints, $value) {\n @return null;\n }\n // Check if the breakpoint name exists in the local config map\n @else if map-has-key($map, $value) {\n // If it does, just return the value\n @return map-get($map, $value);\n }\n // Otherwise, find the next lowest breakpoint and return that value\n @else {\n $anchor: null;\n $found: false;\n\n @each $key, $val in $breakpoints {\n @if not $found {\n @if map-has-key($map, $key) {\n $anchor: $key;\n }\n @if $key == $value {\n $found: true;\n }\n }\n }\n\n @return map-get($map, $anchor);\n }\n}\n\n// Legacy breakpoint variables\n// These will be removed in 6.2\n$small-up: null;\n$small-only: null;\n$medium-up: null;\n$medium-only: null;\n$large-up: null;\n$large-only: null;\n$xlarge-up: null;\n$xlarge-only: null;\n$xxlarge-up: null;\n$xxlarge-only: null;\n\n@if map-has-key($breakpoints, small) {\n $small-up: screen;\n $small-only: unquote('screen and #{breakpoint(small only)}');\n}\n\n@if map-has-key($breakpoints, medium) {\n $medium-up: unquote('screen and #{breakpoint(medium)}');\n $medium-only: unquote('screen and #{breakpoint(medium only)}');\n}\n\n@if map-has-key($breakpoints, large) {\n $large-up: unquote('screen and #{breakpoint(large)}');\n $large-only: unquote('screen and #{breakpoint(large only)}');\n}\n\n@if map-has-key($breakpoints, xlarge) {\n $xlarge-up: unquote('screen and #{breakpoint(xlarge)}');\n $xlarge-only: unquote('screen and #{breakpoint(xlarge only)}');\n}\n\n@if map-has-key($breakpoints, xxlarge) {\n $xxlarge-up: unquote('screen and #{breakpoint(xxlarge)}');\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Collapse the gutters on a column by removing the padding. **Note:** only use this mixin within a breakpoint. To collapse a column's gutters on all screen sizes, use the `$gutter` parameter of the `grid-column()` mixin instead.\n@mixin grid-column-collapse {\n padding-left: 0;\n padding-right: 0;\n}\n\n/// Un-collapse the gutters on a column by re-adding the padding.\n///\n/// @param {Number} $gutter [$grid-column-gutter] - Spacing between columns.\n@mixin grid-column-uncollapse($gutter: $grid-column-gutter) {\n $gutter: rem-calc($gutter) / 2;\n padding-left: $gutter;\n padding-right: $gutter;\n}\n\n/// Shorthand for `grid-column-collapse()`.\n/// @alias grid-column-collapse\n@mixin grid-col-collapse {\n @include grid-column-collapse;\n}\n\n/// Shorthand for `grid-column-uncollapse()`.\n/// @alias grid-column-uncollapse\n@mixin grid-col-uncollapse($gutter: $grid-column-gutter) {\n @include grid-column-uncollapse($gutter);\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Calculates the width of a column based on a number of factors.\n///\n/// @param {Number|List} $columns\n/// Width of the column. Accepts multiple values:\n/// - A percentage value will make the column that exact size.\n/// - A single digit will make the column span that number of columns wide, taking into account the column count of the parent row.\n/// - A string of the format \"x of y\" will make a column that is *x* columns wide, assuming *y* total columns for the parent.\n///\n/// @returns {Number} A calculated percentage value.\n@function grid-column($columns) {\n $width: 0%;\n\n // Parsing percents, decimals, and column counts\n @if type-of($columns) == 'number' {\n @if unit($columns) == '%' {\n $width: $columns;\n }\n @else if $columns < 1 {\n $width: percentage($columns);\n }\n @else {\n $width: percentage($columns / $grid-column-count);\n }\n }\n\n // Parsing \"n of n\" expressions\n @else if type-of($columns) == 'list' {\n @if length($columns) != 3 {\n @error 'Wrong syntax for grid-column(). Use the format \"n of n\".';\n }\n @else {\n $width: percentage(nth($columns, 1) / nth($columns, 3));\n }\n }\n\n // Anything else is incorrect\n @else {\n @error 'Wrong syntax for grid-column(). Use a number, decimal, percentage, or \"n of n\".';\n }\n\n @return $width;\n}\n\n/// Creates a grid column.\n///\n/// @param {Mixed} $columns [$grid-column-count] - Width of the column. Refer to the `grid-column()` function to see possible values.\n/// @param {Number} $gutter [$grid-column-gutter] - Spacing between columns.\n@mixin grid-column(\n $columns: $grid-column-count,\n $gutter: $grid-column-gutter\n) {\n @if $gutter != null {\n $gutter: rem-calc($gutter) / 2;\n }\n @else {\n @each $breakpoint, $gutter in $grid-column-responsive-gutter {\n $padding: rem-calc($gutter) / 2;\n\n @include breakpoint($breakpoint) {\n padding-left: $padding;\n padding-right: $padding;\n }\n }\n }\n\n @include grid-column-size($columns);\n float: $global-left;\n padding-left: $gutter;\n padding-right: $gutter;\n\n @if $grid-column-align-edge {\n &:last-child:not(:first-child) {\n float: $global-right;\n }\n }\n}\n\n/// Creates a grid column row. This is the equivalent of adding `.row` and `.column` to the same element.\n///\n/// @param {Number} $gutter [$grid-column-gutter] - Width of the gutters on either side of the column row.\n@mixin grid-column-row(\n $gutter: $grid-column-gutter\n) {\n @include grid-row;\n @include grid-column($gutter: $gutter);\n\n &,\n &:last-child {\n float: none;\n }\n}\n\n/// Shorthand for `grid-column()`.\n/// @alias grid-column\n@function grid-col(\n $columns: $grid-column-count\n) {\n @return grid-column($columns);\n}\n\n/// Shorthand for `grid-column()`.\n/// @alias grid-column\n@mixin grid-col(\n $columns: $grid-column-count,\n $gutter: $grid-column-gutter\n) {\n @include grid-column($columns, $gutter);\n}\n\n/// Shorthand for `grid-column-row()`.\n/// @alias grid-column-row\n@mixin grid-col-row(\n $gutter: $grid-column-gutter\n) {\n @include grid-column-row($gutter);\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Reposition a column.\n///\n/// @param {Number} $position - Direction and amount to move. The column will move equal to the width of the column count specified. A positive number will push the column to the right, while a negative number will pull it to the left.\n@mixin grid-column-position($position) {\n @if type-of($position) == 'number' {\n $offset: percentage($position / $grid-column-count);\n\n position: relative;\n #{$global-left}: $offset;\n }\n @else if $position == center {\n float: none;\n margin-left: auto;\n margin-right: auto;\n }\n @else {\n @warn 'Wrong syntax for grid-column-position(). Enter a positive or negative number, or center.';\n }\n}\n\n/// Reset a position definition.\n@mixin grid-column-unposition {\n position: static;\n margin-left: 0;\n margin-right: 0;\n float: left;\n}\n\n/// Offsets a column to the right by `$n` columns.\n/// @param {Number|List} $n - Width to offset by. You can pass in any value accepted by the `grid-column()` mixin, such as `6`, `50%`, or `1 of 2`.\n@mixin grid-column-offset($n) {\n margin-#{$global-left}: grid-column($n);\n}\n\n/// Disable the default behavior of the last column in a row aligning to the opposite edge.\n@mixin grid-column-end {\n // This extra specificity is required for the property to be applied\n &:last-child:last-child {\n float: $global-left;\n }\n}\n\n/// Shorthand for `grid-column-position()`.\n/// @alias grid-column-position\n@mixin grid-col-pos($position) {\n @include grid-column-position($position);\n}\n\n/// Shorthand for `grid-column-unposition()`.\n/// @alias grid-column-unposition\n@mixin grid-col-unpos {\n @include grid-column-unposition;\n}\n\n/// Shorthand for `grid-column-offset()`.\n/// @alias grid-column-offset\n@mixin grid-col-off($n) {\n @include grid-column-offset($n);\n}\n\n/// Shorthand for `grid-column-end()`.\n/// @alias grid-column-end\n@mixin grid-col-end {\n @include grid-column-end;\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group typography-base\n////\n\n// Base Typography\n// - - - - - - - - - - - - - - -\n// These are styles applied to basic HTML tags, including:\n// - Paragraphs <p>\n// - Bold/italics <b> <strong> <i> <em>\n// - Small text <small>\n// - Headings <h1>—<h6>\n// - Anchors <a>\n// - Dividers <hr>\n// - Lists <ul> <ol> <dl>\n// - Blockquotes <blockquote>\n// - Code blocks <code>\n// - Abbreviations <abbr>\n// - Citations <cite>\n// - Keystrokes <kbd>\n\n/// Font family for header elements.\n/// @type String | List\n$header-font-family: $body-font-family !default;\n\n/// Font weight of headers.\n/// @type String\n$header-font-weight: $global-weight-normal !default;\n\n/// Font style (e.g. italicized) of headers.\n/// @type String\n$header-font-style: normal !default;\n\n/// Font stack used for elements that use monospaced type, such as code samples\n/// @type String | List\n$font-family-monospace: Consolas, 'Liberation Mono', Courier, monospace !default;\n\n/// Sizes of headings at various screen sizes. Each key is a breakpoint, and each value is a map of heading sizes.\n/// @type Map\n$header-sizes: (\n small: (\n 'h1': 24,\n 'h2': 20,\n 'h3': 19,\n 'h4': 18,\n 'h5': 17,\n 'h6': 16,\n ),\n medium: (\n 'h1': 48,\n 'h2': 40,\n 'h3': 31,\n 'h4': 25,\n 'h5': 20,\n 'h6': 16,\n ),\n) !default;\n\n/// Color of headers.\n/// @type Color\n$header-color: inherit !default;\n\n/// Line height of headers.\n/// @type Number\n$header-lineheight: 1.4 !default;\n\n/// Bottom margin of headers.\n/// @type Number\n$header-margin-bottom: 0.5rem !default;\n\n/// Text rendering method of headers.\n/// @type String\n$header-text-rendering: optimizeLegibility !default;\n\n/// Font size of `<small>` elements.\n/// @type Number\n$small-font-size: 80% !default;\n\n/// Color of `<small>` elements when placed inside headers.\n/// @type Color\n$header-small-font-color: $medium-gray !default;\n\n/// Line height of text inside `<p>` elements.\n/// @type Number\n$paragraph-lineheight: 1.6 !default;\n\n/// Bottom margin of paragraphs.\n/// @type Number\n$paragraph-margin-bottom: 1rem !default;\n\n/// Text rendering method for paragraph text.\n/// @type String\n$paragraph-text-rendering: optimizeLegibility !default;\n\n/// Text color of code samples.\n/// @type Color\n$code-color: $black !default;\n\n/// Font family of code samples.\n/// @type String | List\n$code-font-family: $font-family-monospace !default;\n\n/// Font weight of text in code samples.\n/// @type String\n$code-font-weight: $global-weight-normal !default;\n\n/// Background color of code samples.\n/// @type Color\n$code-background: $light-gray !default;\n\n/// Border around code samples.\n/// @type List\n$code-border: 1px solid $medium-gray !default;\n\n/// Padding around text of code samples.\n/// @type Number | List\n$code-padding: rem-calc(2 5 1) !default;\n\n/// Default color for links.\n/// @type Color\n$anchor-color: $primary-color !default;\n\n/// Default color for links on hover.\n/// @type Color\n$anchor-color-hover: scale-color($anchor-color, $lightness: -14%) !default;\n\n/// Default text deocration for links.\n/// @type String\n$anchor-text-decoration: none !default;\n\n/// Default text decoration for links on hover.\n/// @type String\n$anchor-text-decoration-hover: none !default;\n\n/// Maximum width of a divider.\n/// @type Number\n$hr-width: $global-width !default;\n\n/// Default border for a divider.\n/// @type List\n$hr-border: 1px solid $medium-gray !default;\n\n/// Default margin for a divider.\n/// @type Number | List\n$hr-margin: rem-calc(20) auto !default;\n\n/// Line height for items in a list.\n/// @type Number\n$list-lineheight: $paragraph-lineheight !default;\n\n/// Bottom margin for items in a list.\n/// @type Number\n$list-margin-bottom: $paragraph-margin-bottom !default;\n\n/// Bullet type to use for unordered lists (e.g., `square`, `circle`, `disc`).\n/// @type String\n$list-style-type: disc !default;\n\n/// Positioning for bullets on unordered list items.\n/// @type String\n$list-style-position: outside !default;\n\n/// Left (or right) margin for lists.\n/// @type Number\n$list-side-margin: 1.25rem !default;\n\n/// Left (or right) margin for a list inside a list.\n/// @type Number\n$list-nested-side-margin: 1.25rem !default;\n\n/// Bottom margin for `<dl>` elements.\n/// @type Number\n$defnlist-margin-bottom: 1rem !default;\n\n/// Font weight for `<dt>` elements.\n/// @type String\n$defnlist-term-weight: $global-weight-bold !default;\n\n/// Spacing between `<dt>` and `<dd>` elements.\n/// @type Number\n$defnlist-term-margin-bottom: 0.3rem !default;\n\n/// Text color of `<blockquote>` elements.\n/// @type Color\n$blockquote-color: $dark-gray !default;\n\n/// Padding inside a `<blockquote>` element.\n/// @type Number | List\n$blockquote-padding: rem-calc(9 20 0 19) !default;\n\n/// Side border for `<blockquote>` elements.\n/// @type List\n$blockquote-border: 1px solid $medium-gray !default;\n\n/// Font size for `<cite>` elements.\n/// @type Number\n$cite-font-size: rem-calc(13) !default;\n\n/// Text color for `<cite>` elements.\n/// @type Color\n$cite-color: $dark-gray !default;\n\n/// Font family for `<kbd>` elements.\n/// @type String | List\n$keystroke-font: $font-family-monospace !default;\n\n/// Text color for `<kbd>` elements.\n/// @type Color\n$keystroke-color: $black !default;\n\n/// Background color for `<kbd>` elements.\n/// @type Color\n$keystroke-background: $light-gray !default;\n\n/// Padding for `<kbd>` elements.\n/// @type Number | List\n$keystroke-padding: rem-calc(2 4 0) !default;\n\n/// Border radius for `<kbd>` elements.\n/// @type Number | List\n$keystroke-radius: $global-radius !default;\n\n/// Bottom border style for `<abbr>` elements.\n/// @type List\n$abbr-underline: 1px dotted $black !default;\n\n@mixin foundation-typography-base {\n // Typography resets\n div,\n dl,\n dt,\n dd,\n ul,\n ol,\n li,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n pre,\n form,\n p,\n blockquote,\n th,\n td {\n margin: 0;\n padding: 0;\n }\n\n // Paragraphs\n p {\n font-size: inherit;\n line-height: $paragraph-lineheight;\n margin-bottom: $paragraph-margin-bottom;\n text-rendering: $paragraph-text-rendering;\n }\n\n // Emphasized text\n em,\n i {\n font-style: italic;\n line-height: inherit;\n }\n\n // Strong text\n strong,\n b {\n font-weight: $global-weight-bold;\n line-height: inherit;\n }\n\n // Small text\n small {\n font-size: $small-font-size;\n line-height: inherit;\n }\n\n // Headings\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-family: $header-font-family;\n font-weight: $header-font-weight;\n font-style: $header-font-style;\n color: $header-color;\n text-rendering: $header-text-rendering;\n margin-top: 0;\n margin-bottom: $header-margin-bottom;\n line-height: $header-lineheight;\n\n small {\n color: $header-small-font-color;\n line-height: 0;\n }\n }\n\n // Heading sizes\n @each $size, $headers in $header-sizes {\n @include breakpoint($size) {\n @each $header, $font-size in $headers {\n #{$header} {\n font-size: rem-calc($font-size);\n }\n }\n }\n }\n\n // Links\n a {\n color: $anchor-color;\n text-decoration: $anchor-text-decoration;\n line-height: inherit;\n cursor: pointer;\n\n &:hover,\n &:focus {\n color: $anchor-color-hover;\n @if $anchor-text-decoration-hover != $anchor-text-decoration {\n text-decoration: $anchor-text-decoration-hover;\n }\n }\n\n img {\n border: 0;\n }\n }\n\n // Horizontal rule\n hr {\n max-width: $hr-width;\n height: 0;\n border-right: 0;\n border-top: 0;\n border-bottom: $hr-border;\n border-left: 0;\n margin: $hr-margin;\n clear: both;\n }\n\n // Lists\n ul,\n ol,\n dl {\n line-height: $list-lineheight;\n margin-bottom: $list-margin-bottom;\n list-style-position: $list-style-position;\n }\n\n // List items\n li {\n font-size: inherit;\n }\n\n // Unordered lists\n ul {\n list-style-type: $list-style-type;\n margin-#{$global-left}: $list-side-margin;\n }\n\n // Ordered lists\n ol {\n margin-#{$global-left}: $list-side-margin;\n }\n\n // Nested unordered/ordered lists\n ul, ol {\n & & {\n margin-#{$global-left}: $list-nested-side-margin;\n margin-bottom: 0;\n }\n }\n\n // Definition lists\n dl {\n margin-bottom: $defnlist-margin-bottom;\n\n dt {\n margin-bottom: $defnlist-term-margin-bottom;\n font-weight: $defnlist-term-weight;\n }\n }\n\n // Blockquotes\n blockquote {\n margin: 0 0 $paragraph-margin-bottom;\n padding: $blockquote-padding;\n border-#{$global-left}: $blockquote-border;\n\n &, p {\n line-height: $paragraph-lineheight;\n color: $blockquote-color;\n }\n }\n\n // Citations\n cite {\n display: block;\n font-size: $cite-font-size;\n color: $cite-color;\n\n &:before {\n content: '\\2014 \\0020';\n }\n }\n\n // Abbreviations\n abbr {\n color: $body-font-color;\n cursor: help;\n border-bottom: $abbr-underline;\n }\n\n // Code\n code {\n font-family: $code-font-family;\n font-weight: $code-font-weight;\n color: $code-color;\n background-color: $code-background;\n border: $code-border;\n padding: $code-padding;\n }\n\n // Keystrokes\n kbd {\n padding: $keystroke-padding;\n margin: 0;\n background-color: $keystroke-background;\n color: $keystroke-color;\n font-family: $keystroke-font;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group functions\n////\n\n$global-font-size: 100% !default;\n\n// scss-lint:disable ZeroUnit\n\n/// Removes the unit (e.g. px, em, rem) from a value, returning the number only.\n///\n/// @param {Number} $num - Number to strip unit from.\n///\n/// @returns {Number} The same number, sans unit.\n@function strip-unit($num) {\n @return $num / ($num * 0 + 1);\n}\n\n/// Converts one or more pixel values into matching rem values.\n///\n/// @param {Number|List} $values - One or more values to convert. Be sure to separate them with spaces and not commas. If you need to convert a comma-separated list, wrap the list in parentheses.\n/// @param {Number} $base [null] - The base value to use when calculating the `rem`. If you're using Foundation out of the box, this is 16px. If this parameter is `null`, the function will reference the `$base-font-size` variable as the base.\n///\n/// @returns {List} A list of converted values.\n@function rem-calc($values, $base: null) {\n $rem-values: ();\n $count: length($values);\n\n // If no base is defined, defer to the global font size\n @if $base == null {\n $base: $global-font-size;\n }\n\n // If the base font size is a %, then multiply it by 16px\n // This is because 100% font size = 16px in most all browsers\n @if unit($base) == '%' {\n $base: ($base / 100%) * 16px;\n }\n\n @if $count == 1 {\n @return -zf-to-rem($values, $base);\n }\n\n @for $i from 1 through $count {\n $rem-values: append($rem-values, -zf-to-rem(nth($values, $i), $base));\n }\n\n @return $rem-values;\n}\n\n// Converts a unitless, pixel, or rem value to em, for use in breakpoints.\n@function -zf-bp-to-em($value) {\n // Pixel and unitless values are converted to rems\n @if unit($value) == 'px' or unitless($value) {\n $value: rem-calc($value, $base: 16px);\n }\n\n // Then the value is converted to ems\n @return strip-unit($value) * 1em;\n}\n\n/// Converts a pixel value to matching rem value. *Any* value passed, regardless of unit, is assumed to be a pixel value. By default, the base pixel value used to calculate the rem value is taken from the `$global-font-size` variable.\n/// @access private\n///\n/// @param {Number} $value - Pixel value to convert.\n/// @param {Number} $base [null] - Base for pixel conversion.\n///\n/// @returns {Number} A number in rems, calculated based on the given value and the base pixel value. rem values are passed through as is.\n@function -zf-to-rem($value, $base: null) {\n // Check if the value is a number\n @if type-of($value) != 'number' {\n @warn inspect($value) + ' was passed to rem-calc(), which is not a number.';\n @return $value;\n }\n\n // Calculate rem if units for $value is not rem\n @if unit($value) != 'rem' {\n $value: strip-unit($value) / strip-unit($base) * 1rem;\n }\n\n // Turn 0rem into 0\n @if $value == 0rem {\n $value: 0;\n }\n\n @return $value;\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group typography-helpers\n////\n\n/// Default font size for lead paragraphs.\n/// @type Number\n$lead-font-size: $global-font-size * 1.25 !default;\n\n/// Default line height for lead paragraphs.\n/// @type String\n$lead-lineheight: 1.6 !default;\n\n/// Default line height for subheaders.\n/// @type Number\n$subheader-lineheight: 1.4 !default;\n\n/// Default font color for subheaders.\n/// @type Color\n$subheader-color: $dark-gray !default;\n\n/// Default font weight for subheaders.\n/// @type String\n$subheader-font-weight: $global-weight-normal !default;\n\n/// Default top margin for subhheaders.\n/// @type Number\n$subheader-margin-top: 0.2rem !default;\n\n/// Default bottom margin for subheaders.\n/// @type Number\n$subheader-margin-bottom: 0.5rem !default;\n\n/// Default font size for statistic numbers.\n/// @type Number\n$stat-font-size: 2.5rem !default;\n\n@mixin foundation-typography-helpers {\n // Use to create a subheading under a main header\n // Make sure you pair the two elements in a <header> element, like this:\n // <header>\n // <h1>Heading</h1>\n // <h2>Subheading</h2>\n // </header>\n .subheader {\n margin-top: $subheader-margin-top;\n margin-bottom: $subheader-margin-bottom;\n font-weight: $subheader-font-weight;\n line-height: $subheader-lineheight;\n color: $subheader-color;\n }\n\n // Use to style an introductory lead, deck, blurb, etc.\n .lead {\n font-size: $lead-font-size;\n line-height: $lead-lineheight;\n }\n\n // Use to style a large number to display a statistic\n .stat {\n font-size: $stat-font-size;\n line-height: 1;\n\n p + & {\n margin-top: -1rem;\n }\n }\n\n // Use to remove the bullets from an unordered list\n .no-bullet {\n margin-#{$global-left}: 0;\n list-style: none;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n@mixin foundation-text-alignment {\n @each $size in $breakpoint-classes {\n @include breakpoint($size) {\n @each $align in (left, right, center, justify) {\n @if $size != 'small' {\n .#{$size}-text-#{$align} {\n text-align: $align;\n }\n }\n @else {\n .text-#{$align} {\n text-align: $align;\n }\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group typography\n////\n\n// scss-lint:disable all\n\n@mixin foundation-print-styles {\n .show-for-print { display: none !important; }\n\n @media print {\n * {\n background: transparent !important;\n color: black !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n .show-for-print { display: block !important; }\n .hide-for-print { display: none !important; }\n\n table.show-for-print { display: table !important; }\n thead.show-for-print { display: table-header-group !important; }\n tbody.show-for-print { display: table-row-group !important; }\n tr.show-for-print { display: table-row !important; }\n td.show-for-print { display: table-cell !important; }\n th.show-for-print { display: table-cell !important; }\n\n // Display the URL of a link after the text\n a,\n a:visited { text-decoration: underline;}\n a[href]:after { content: ' (' attr(href) ')'; }\n\n // Don't display the URL for images or JavaScript/internal links\n .ir a:after,\n a[href^='javascript:']:after,\n a[href^='#']:after { content: ''; }\n\n // Display what an abbreviation stands for after the text\n abbr[title]:after { content: ' (' attr(title) ')'; }\n\n // Prevent page breaks in the middle of a blockquote or preformatted text block\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n // h5bp.com/t\n thead { display: table-header-group; }\n\n tr,\n img { page-break-inside: avoid; }\n\n img { max-width: 100% !important; }\n\n @page { margin: 0.5cm; }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n // Avoid page breaks after a heading\n h2,\n h3 { page-break-after: avoid; }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group button\n////\n\n/// Padding inside buttons.\n/// @type List\n$button-padding: 0.85em 1em !default;\n\n/// Margin around buttons.\n/// @type List\n$button-margin: 0 0 $global-margin 0 !default;\n\n/// Default fill for buttons. Can either be `solid` or `hollow`.\n/// @type Keyword\n$button-fill: solid !default;\n\n/// Default background color for buttons.\n/// @type Color\n$button-background: $primary-color !default;\n\n/// Background color on hover for buttons.\n/// @type Color\n$button-background-hover: scale-color($button-background, $lightness: -15%) !default;\n\n/// Font color for buttons.\n/// @type List\n$button-color: #fff !default;\n\n/// Font color for buttons, if the background is light.\n/// @type List\n$button-color-alt: #000 !default;\n\n/// Border radius for buttons, defaulted to global-radius.\n/// @type Number\n$button-radius: $global-radius !default;\n\n/// Sizes for buttons.\n/// @type Map\n$button-sizes: (\n tiny: 0.6rem,\n small: 0.75rem,\n default: 0.9rem,\n large: 1.25rem,\n) !default;\n\n/// opacity for a disabled button.\n/// @type List\n$button-opacity-disabled: 0.25 !default;\n\n// Internal: flip from margin-right to margin-left for defaults\n@if $global-text-direction == 'rtl' {\n $button-margin: 0 0 $global-margin $global-margin !default;\n}\n\n// TODO: Document button-base() mixin\n@mixin button-base {\n @include disable-mouse-outline;\n display: inline-block;\n text-align: center;\n line-height: 1;\n cursor: pointer;\n -webkit-appearance: none;\n transition: background-color 0.25s ease-out, color 0.25s ease-out;\n vertical-align: middle;\n border: 1px solid transparent;\n border-radius: $button-radius;\n padding: $button-padding;\n margin: $button-margin;\n font-size: map-get($button-sizes, default);\n}\n\n/// Expands a button to make it full-width.\n/// @param {Boolean} $expand [true] - Set to `true` to enable the expand behavior. Set to `false` to reverse this behavior.\n@mixin button-expand($expand: true) {\n @if $expand {\n display: block;\n width: 100%;\n margin-left: 0;\n margin-right: 0;\n }\n @else {\n display: inline-block;\n width: auto;\n margin: $button-margin;\n }\n}\n\n/// Sets the visual style of a button.\n/// @param {Color} $background [$button-background] - Background color of the button.\n/// @param {Color} $background-hover [$button-background-hover] - Background color of the button on hover. Set to `auto` to have the mixin automatically generate a hover color.\n/// @param {Color} $color [$button-color] - Text color of the button. Set to `auto` to automatically generate a color based on the background color.\n@mixin button-style(\n $background: $button-background,\n $background-hover: $button-background-hover,\n $color: $button-color\n) {\n @if $color == auto {\n $color: foreground($background);\n }\n\n @if $background-hover == auto {\n $background-hover: scale-color($background, $lightness: -20%);\n }\n\n background-color: $background;\n color: $color;\n\n &:hover, &:focus {\n background-color: $background-hover;\n color: $color;\n }\n}\n\n/// Removes background fill on hover and focus for hollow buttons.\n@mixin button-hollow {\n &,\n &:hover, &:focus {\n background-color: transparent;\n }\n}\n\n@mixin button-hollow-style($color: $primary-color) {\n $color-hover: scale-color($color, $lightness: -50%);\n\n border: 1px solid $color;\n color: $color;\n\n &:hover, &:focus {\n border-color: $color-hover;\n color: $color-hover;\n }\n}\n\n/// Adds disabled styles to a button by fading the element, reseting the cursor, and disabling pointer events.\n@mixin button-disabled {\n opacity: $button-opacity-disabled;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/// Adds a dropdown arrow to a button.\n/// @param {Number} $size [0.4em] - Size of the arrow. We recommend using an `em` value so the triangle scales when used inside different sizes of buttons.\n/// @param {Color} $color [white] - Color of the arrow.\n/// @param {Number} $offset [$button-padding] - Distance between the arrow and the text of the button. Defaults to whatever the right padding of a button is.\n@mixin button-dropdown(\n $size: 0.4em,\n $color: $white,\n $offset: get-side($button-padding, right)\n) {\n &::after {\n @include css-triangle($size, $color, down);\n position: relative;\n top: 0.4em; // Aligns the arrow with the text of the button\n float: #{$global-right};\n margin-#{$global-left}: get-side($button-padding, right);\n display: inline-block;\n }\n}\n\n/// Adds all styles for a button. For more granular control over styles, use the individual button mixins.\n/// @param {Boolean} $expand [false] - Set to `true` to make the button full-width.\n/// @param {Color} $background [$button-background] - Background color of the button.\n/// @param {Color} $background-hover [$button-background-hover] - Background color of the button on hover. Set to `auto` to have the mixin automatically generate a hover color.\n/// @param {Color} $color [$button-color] - Text color of the button. Set to `auto` to automatically generate a color based on the background color.\n/// @param {Keyword} $style [solid] - Set to `hollow` to create a hollow button. The color defined in `$background` will be used as the primary color of the button.\n@mixin button(\n $expand: false,\n $background: $button-background,\n $background-hover: $button-background-hover,\n $color: $button-color,\n $style: $button-fill\n) {\n @include button-base;\n\n @if $style == solid {\n @include button-style($background, $background-hover, $color);\n }\n @else if $style == hollow {\n @include button-hollow;\n @include button-hollow-style($background);\n }\n\n @if $expand {\n @include button-expand;\n }\n}\n\n@mixin foundation-button {\n .button {\n @include button;\n\n // Sizes\n &.tiny { font-size: map-get($button-sizes, tiny); }\n &.small { font-size: map-get($button-sizes, small); }\n &.large { font-size: map-get($button-sizes, large); }\n &.expanded { @include button-expand; }\n\n // Colors\n @each $name, $color in $foundation-colors {\n @if $button-fill != hollow {\n &.#{$name} {\n @include button-style($color, auto);\n }\n }\n @else {\n &.#{$name} {\n @include button-hollow-style($color);\n }\n\n &.#{$name}.dropdown::after {\n border-top-color: $color;\n }\n }\n }\n\n // Hollow style\n @if $button-fill != hollow {\n &.hollow {\n @include button-hollow;\n @include button-hollow-style;\n\n @each $name, $color in $foundation-colors {\n &.#{$name} {\n @include button-hollow-style($color);\n }\n }\n }\n }\n\n // Disabled style\n &.disabled,\n &[disabled] {\n @include button-disabled;\n }\n\n // Dropdown arrow\n &.dropdown {\n @include button-dropdown;\n\n @if $button-fill == hollow {\n &::after {\n border-top-color: $button-background;\n }\n }\n }\n\n // Button with dropdown arrow only\n &.arrow-only::after {\n margin-#{$global-left}: 0;\n float: none;\n top: 0.2em;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group functions\n////\n\n/// Creates a CSS triangle, which can be used for dropdown arrows, dropdown pips, and more. Use this mixin inside a `&::before` or `&::after` selector, to attach the triangle to an existing element.\n///\n/// @param {Number} $triangle-size - Width of the triangle.\n/// @param {Color} $triangle-color - Color of the triangle.\n/// @param {Keyword} $triangle-direction - Direction the triangle points. Can be `up`, `right`, `down`, or `left`.\n@mixin css-triangle(\n $triangle-size,\n $triangle-color,\n $triangle-direction\n) {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset $triangle-size;\n\n @if ($triangle-direction == down) {\n border-color: $triangle-color transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n }\n @if ($triangle-direction == up) {\n border-color: transparent transparent $triangle-color;\n border-bottom-style: solid;\n border-top-width: 0;\n }\n @if ($triangle-direction == right) {\n border-color: transparent transparent transparent $triangle-color;\n border-left-style: solid;\n border-right-width: 0;\n }\n @if ($triangle-direction == left) {\n border-color: transparent $triangle-color transparent transparent;\n border-right-style: solid;\n border-left-width: 0;\n }\n}\n\n/// Creates a menu icon with a set width, height, number of bars, and colors. The mixin uses the height of the icon and the weight of the bars to determine spacing. <div class=\"docs-example-burger\"></div>\n///\n/// @param {Color} $color - Color to use for the icon.\n/// @param {Color} $color-hover - Color to use when the icon is hovered over.\n/// @param {Number} $width - Width of the icon.\n/// @param {Number} $height - Height of the icon.\n/// @param {Number} $weight - Height of individual bars in the icon.\n/// @param {Number} $bars - Number of bars in the icon.\n@mixin hamburger(\n $color: $black,\n $color-hover: $dark-gray,\n $width: 20px,\n $height: 16px,\n $weight: 2px,\n $bars: 3\n) {\n // box-shadow CSS output\n $shadow: ();\n $hover-shadow: ();\n\n // Spacing between bars is calculated based on the total height of the icon and the weight of each bar\n $spacing: floor(($height - ($weight * $bars)) / ($bars - 1));\n\n // Icon container\n position: relative;\n display: inline-block;\n vertical-align: middle;\n cursor: pointer;\n width: $width;\n height: $height;\n\n // Icon bars\n &::after {\n content: '';\n position: absolute;\n display: block;\n width: 100%;\n height: $weight;\n background: $color;\n top: 0;\n left: 0;\n\n @for $i from 2 through $bars {\n $offset: ($weight + $spacing) * ($i - 1);\n $shadow: append($shadow, 0 $offset 0 $color, comma);\n }\n\n box-shadow: $shadow;\n }\n\n // Hover state\n @if $color-hover {\n // Generate CSS\n @for $i from 2 through $bars {\n $offset: ($weight + $spacing) * ($i - 1);\n $hover-shadow: append($hover-shadow, 0 $offset 0 $color-hover, comma);\n }\n\n &:hover::after {\n background: $color-hover;\n box-shadow: $hover-shadow;\n }\n }\n}\n\n/// Adds a downward-facing triangle as a background image to an element. The image is formatted as an SVG, making it easy to change the color. Because Internet Explorer doesn't support encoded SVGs as background images, a PNG fallback is also included.\n/// There are two PNG fallbacks: a black triangle and a white triangle. The one used depends on the lightness of the input color.\n///\n/// @param {Color} $color [$black] - Color to use for the triangle.\n@mixin background-triangle($color: $black) {\n $rgb: 'rgb%28#{red($color)}, #{green($color)}, #{blue($color)}%29';\n\n background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"32\" height=\"24\" viewBox=\"0 0 32 24\"><polygon points=\"0,0 32,0 16,24\" style=\"fill: #{$rgb}\"></polygon></svg>');\n\n @media screen and (min-width:0\\0) {\n @if lightness($color) < 50% {\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==');\n }\n @else {\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMBJREFUeNrEllsOhCAMRVszC9IlzU7KCmVHTJsoMWYMUtpyv9BgbuXQB5ZSdgBYYY4ycgBivk8KYFsQMfMiTTBP4o3nUzCKzOabLJbLy2/g31evGkAginR4/ZegKH5qX3bJCscA3t0x3kgO5tQFyhhFf50xRqFLbyMUNJQzgyjGS/wgCpvKqkRBpuWrE4V9d+1E4dPUXqIg107SQOE/2DRQxMwTDygIInVDET9T3lCoj/6j/VCmGjZOl2lKpZ8AAwDQP7zIimDGFQAAAABJRU5ErkJggg==');\n }\n }\n}\n\n/// Applies the micro clearfix hack popularized by Nicolas Gallagher. Include this mixin on a container if its children are all floated, to give the container a proper height.\n/// @link http://nicolasgallagher.com/micro-clearfix-hack/ Micro Clearfix Hack\n@mixin clearfix {\n &::before,\n &::after {\n content: ' ';\n display: table;\n }\n\n &::after {\n clear: both;\n }\n}\n\n/// Adds CSS for a \"quantity query\" selector that automatically sizes elements based on how many there are inside a container.\n/// @link http://alistapart.com/article/quantity-queries-for-css Quantity Queries for CSS\n///\n/// @param {Number} $max - Maximum number of items to detect. The higher this number is, the more CSS that's required to cover each number of items.\n/// @param {Keyword} $elem [li] - Tag to use for sibling selectors.\n@mixin auto-width($max, $elem: li) {\n @for $i from 2 through $max {\n &:nth-last-child(#{$i}):first-child,\n &:nth-last-child(#{$i}):first-child ~ #{$elem} {\n width: percentage(1 / $i);\n }\n }\n}\n\n/// Removes the focus ring around an element when a mouse input is detected.\n@mixin disable-mouse-outline {\n [data-whatinput='mouse'] & {\n outline: 0;\n }\n}\n\n/// Makes an element visually hidden, but still accessible to keyboards and assistive devices.\n/// @link http://snook.ca/archives/html_and_css/hiding-content-for-accessibility Hiding Content for Accessibility\n@mixin element-invisible {\n position: absolute !important;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n}\n\n/// Reverses the CSS output created by the `element-invisible()` mixin.\n@mixin element-invisible-off {\n position: static !important;\n height: auto;\n width: auto;\n overflow: visible;\n clip: auto;\n}\n\n/// Vertically centers the element inside of its first non-static parent,\n/// @link http://www.sitepoint.com/centering-with-sass/ Centering With Sass\n@mixin vertical-center {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/// Horizontally centers the element inside of its first non-static parent,\n/// @link http://www.sitepoint.com/centering-with-sass/ Centering With Sass\n@mixin horizontal-center {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n}\n\n/// Absolutely centers the element inside of its first non-static parent,\n/// @link http://www.sitepoint.com/centering-with-sass/ Centering With Sass\n@mixin absolute-center {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n/// Iterates through breakpoints defined in `$breakpoint-classes` and prints the CSS inside the mixin at each breakpoint's media query. Use this with the grid, or any other component that has responsive classes.\n///\n/// @param {Boolean} $small [true] - If `false`, the mixin will skip the `small` breakpoint. Use this with components that don't prefix classes with `small-`, only `medium-` and up.\n@mixin -zf-each-breakpoint($small: true) {\n $map: $breakpoint-classes;\n\n @if not $small {\n $map: map-remove($map, small);\n }\n\n @each $size in $map {\n $-zf-size: $size !global;\n\n @include breakpoint($size) {\n @content;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Font color of text inputs.\n/// @type Color\n$input-color: $black !default;\n\n/// Font family of text inputs.\n/// @type Font\n$input-font-family: inherit !default;\n\n/// Font size of text inputs.\n/// @type Number\n$input-font-size: rem-calc(16) !default;\n\n/// Background color of text inputs.\n/// @type Color\n$input-background: $white !default;\n\n/// Background color of focused of text inputs.\n/// @type Color\n$input-background-focus: $white !default;\n\n/// Background color of disabled text inputs.\n/// @type Color\n$input-background-disabled: $light-gray !default;\n\n/// Border around text inputs.\n/// @type Border\n$input-border: 1px solid $medium-gray !default;\n\n/// Border around focused text inputs.\n/// @type Color\n$input-border-focus: 1px solid $dark-gray !default;\n\n/// Box shadow inside text inputs when not focused.\n/// @type Shadow\n$input-shadow: inset 0 1px 2px rgba($black, 0.1) !default;\n\n/// Box shadow outside text inputs when focused.\n/// @type Shadow\n$input-shadow-focus: 0 0 5px $medium-gray !default;\n\n/// Cursor to use when hovering over a disabled text input.\n/// @type Cursor\n$input-cursor-disabled: default !default;\n\n/// Properties to transition on text inputs.\n/// @type Transition\n$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out !default;\n\n/// Enables the up/down buttons that Chrome and Firefox add to `<input type='number'>` elements.\n/// @type Boolean\n$input-number-spinners: true !default;\n\n/// Radius for text inputs.\n/// @type Border\n$input-radius: $global-radius !default;\n\n@mixin form-element {\n $height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1));\n\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: $height;\n padding: $form-spacing / 2;\n border: $input-border;\n margin: 0 0 $form-spacing;\n\n font-family: $input-font-family;\n font-size: $input-font-size;\n color: $input-color;\n background-color: $input-background;\n box-shadow: $input-shadow;\n border-radius: $input-radius;\n\n @if has-value($input-transition) {\n transition: $input-transition;\n }\n\n // Focus state\n &:focus {\n border: $input-border-focus;\n background-color: $input-background-focus;\n outline: none;\n box-shadow: $input-shadow-focus;\n\n @if has-value($input-transition) {\n transition: $input-transition;\n }\n }\n}\n\n@mixin foundation-form-text {\n // Text inputs\n #{text-inputs()},\n textarea {\n @include form-element;\n -webkit-appearance: none;\n -moz-appearance: none;\n }\n\n // Text areas\n textarea {\n max-width: 100%;\n\n &[rows] {\n height: auto;\n }\n }\n\n // Disabled/readonly state\n input,\n textarea {\n &:disabled,\n &[readonly] {\n background-color: $input-background-disabled;\n cursor: $input-cursor-disabled;\n }\n }\n\n // Reset styles on button-like inputs\n [type='submit'],\n [type='button'] {\n border-radius: $button-radius;\n -webkit-appearance: none;\n -moz-appearance: none;\n }\n\n // Reset Normalize setting content-box to search elements\n // scss-lint:disable QualifyingElement\n input[type='search'] {\n box-sizing: border-box;\n }\n\n // Number input styles\n [type='number'] {\n @if not $input-number-spinners {\n -moz-appearance: textfield;\n\n [type='number']::-webkit-inner-spin-button,\n [type='number']::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n@mixin foundation-form-checkbox {\n [type='file'],\n [type='checkbox'],\n [type='radio'] {\n margin: 0 0 $form-spacing;\n }\n\n // Styles for input/label siblings\n [type='checkbox'] + label,\n [type='radio'] + label {\n display: inline-block;\n margin-#{$global-left}: $form-spacing * 0.5;\n margin-#{$global-right}: $form-spacing;\n margin-bottom: 0;\n vertical-align: baseline;\n }\n\n // Styles for inputs inside labels\n label > [type='checkbox'],\n label > [type='label'] {\n margin-#{$global-right}: $form-spacing * 0.5;\n }\n\n // Normalize file input width\n [type='file'] {\n width: 100%;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Color for form labels.\n/// @type Color\n$form-label-color: $black !default;\n\n/// Font size for form labels.\n/// @type Number\n$form-label-font-size: rem-calc(14) !default;\n\n/// Font weight for form labels.\n/// @type Keyword\n$form-label-font-weight: $global-weight-normal !default;\n\n/// Line height for form labels. The higher the number, the more space between the label and its input field.\n/// @type Number\n$form-label-line-height: 1.8 !default;\n\n@mixin form-label {\n display: block;\n margin: 0;\n font-size: $form-label-font-size;\n font-weight: $form-label-font-weight;\n line-height: $form-label-line-height;\n color: $form-label-color;\n}\n\n@mixin form-label-middle {\n $input-border-width: get-border-value($input-border, width);\n margin: 0 0 $form-spacing;\n padding: ($form-spacing / 2 + rem-calc($input-border-width)) 0;\n}\n\n@mixin foundation-form-label {\n label {\n @include form-label;\n\n &.middle {\n @include form-label-middle;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Default color for help text.\n/// @type Color\n$helptext-color: #333 !default;\n\n/// Default font size for help text.\n/// @type Number\n$helptext-font-size: rem-calc(13) !default;\n\n/// Default font style for help text.\n/// @type Keyword\n$helptext-font-style: italic !default;\n\n@mixin foundation-form-helptext {\n .help-text {\n $margin-top: ($form-spacing * 0.5) * -1;\n\n margin-top: $margin-top;\n font-size: $helptext-font-size;\n font-style: $helptext-font-style;\n color: $helptext-color;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Color of labels prefixed to an input.\n/// @type Color\n$input-prefix-color: $black !default;\n\n/// Background color of labels prefixed to an input.\n/// @type Color\n$input-prefix-background: $light-gray !default;\n\n/// Border around labels prefixed to an input.\n/// @type Border\n$input-prefix-border: 1px solid $medium-gray !default;\n\n/// Left/right padding of an pre/postfixed input label\n$input-prefix-padding: 1rem !default;\n\n@mixin foundation-form-prepostfix {\n $height: ($input-font-size + $form-spacing * 1.5);\n\n\n .input-group {\n display: table;\n width: 100%;\n margin-bottom: $form-spacing;\n\n > :first-child {\n border-radius: $global-radius 0 0 $global-radius;\n }\n\n > :last-child {\n > * {\n border-radius: 0 $global-radius $global-radius 0;\n }\n }\n }\n\n %input-group-child {\n display: table-cell;\n margin: 0;\n vertical-align: middle;\n }\n\n .input-group-label {\n @extend %input-group-child;\n text-align: center;\n width: 1%;\n height: 100%;\n padding: 0 $input-prefix-padding;\n background: $input-prefix-background;\n color: $input-prefix-color;\n border: $input-prefix-border;\n white-space: nowrap;\n\n @if has-value($input-prefix-border) {\n &:first-child {\n border-#{$global-right}: 0;\n }\n\n &:last-child {\n border-#{$global-left}: 0;\n }\n }\n }\n\n .input-group-field {\n @extend %input-group-child;\n border-radius: 0;\n height: $height;\n }\n\n .input-group-button {\n @extend %input-group-child;\n height: 100%;\n padding-top: 0;\n padding-bottom: 0;\n text-align: center;\n width: 1%;\n\n a,\n input,\n button {\n margin: 0;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Default border around custom fieldsets.\n/// @type Border\n$fieldset-border: 1px solid $medium-gray !default;\n\n/// Default padding inside custom fieldsets.\n/// @type Number\n$fieldset-padding: rem-calc(20) !default;\n\n/// Default margin around custom fieldsets.\n/// @type Number\n$fieldset-margin: rem-calc(18 0) !default;\n\n/// Default padding between the legend text and fieldset border.\n/// @type Number\n$legend-padding: rem-calc(0 3) !default;\n\n@mixin fieldset {\n border: $fieldset-border;\n padding: $fieldset-padding;\n margin: $fieldset-margin;\n\n legend {\n // Covers up the fieldset's border to create artificial padding\n background: $body-background;\n padding: $legend-padding;\n margin: 0;\n margin-#{$global-left}: rem-calc(-3);\n }\n}\n\n@mixin foundation-form-fieldset {\n fieldset {\n border: 0;\n padding: 0;\n margin: 0;\n }\n\n legend {\n margin-bottom: $form-spacing * 0.5;\n max-width: 100%;\n }\n\n .fieldset {\n @include fieldset;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Background color for select menus.\n/// @type Color\n$select-background: $white !default;\n\n/// Color of the dropdown triangle inside select menus. Set to `transparent` to remove it entirely.\n/// @type Color\n$select-triangle-color: #333 !default;\n\n/// Default radius for select menus.\n/// @type Color\n$select-radius: $global-radius !default;\n\n@mixin form-select {\n $height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1));\n\n height: $height;\n padding: ($form-spacing / 2);\n border: $input-border;\n margin: 0 0 $form-spacing;\n font-size: $input-font-size;\n font-family: $input-font-family;\n line-height: normal;\n color: $input-color;\n background-color: $select-background;\n border-radius: $select-radius;\n -webkit-appearance: none;\n -moz-appearance: none;\n\n @if $select-triangle-color != transparent {\n @include background-triangle($select-triangle-color);\n background-size: 9px 6px;\n background-position: $global-right center;\n background-origin: content-box;\n background-repeat: no-repeat;\n }\n\n // Disabled state\n &:disabled {\n background-color: $input-background-disabled;\n cursor: $input-cursor-disabled;\n }\n\n // Hide the dropdown arrow shown in newer IE versions\n &::-ms-expand {\n display: none;\n }\n\n &[multiple] {\n height: auto;\n }\n}\n\n@mixin foundation-form-select {\n select {\n @include form-select;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group abide\n////\n\n/// Sets if error styles should be added to inputs.\n/// @type Boolean\n$abide-inputs: true !default;\n\n/// Sets if error styles should be added to labels.\n/// @type Boolean\n$abide-labels: true !default;\n\n/// Background color to use for invalid text inputs.\n/// @type Color\n$input-background-invalid: $alert-color !default;\n\n/// Color to use for labels of invalid inputs.\n/// @type Color\n$form-label-color-invalid: $alert-color !default;\n\n/// Default font color for form error text.\n/// @type Color\n$input-error-color: $alert-color !default;\n\n/// Default font size for form error text.\n/// @type Number\n$input-error-font-size: rem-calc(12) !default;\n\n/// Default font weight for form error text.\n/// @type Keyword\n$input-error-font-weight: $global-weight-bold !default;\n\n/// Styles the background and border of an input field to have an error state.\n///\n/// @param {Color} $background [$alert-color] - Color to use for the background and border.\n@mixin form-input-error(\n $background: $input-background-invalid\n) {\n &:not(:focus) {\n background-color: rgba($background, 0.1);\n border-color: $background;\n }\n}\n\n/// Adds error styles to a form element, using the values in the settings file.\n@mixin form-error {\n display: none;\n margin-top: $form-spacing * -0.5;\n margin-bottom: $form-spacing;\n font-size: $input-error-font-size;\n font-weight: $input-error-font-weight;\n color: $input-error-color;\n}\n\n@mixin foundation-form-error {\n @if $abide-inputs {\n // Error class for invalid inputs\n .is-invalid-input {\n @include form-input-error;\n }\n }\n\n @if $abide-labels {\n // Error class for labels of invalid outputs\n .is-invalid-label {\n color: $form-label-color-invalid;\n }\n }\n\n // Form error element\n .form-error {\n @include form-error;\n\n &.is-visible {\n display: block;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group float\n////\n\n@mixin foundation-float-classes {\n .float-left {\n float: left !important;\n }\n\n .float-right {\n float: right !important;\n }\n\n .float-center {\n display: block;\n margin-left: auto;\n margin-right: auto;\n }\n\n .clearfix {\n @include clearfix;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group accordion\n////\n\n/// Default background color of an accordion group.\n/// @type Color\n$accordion-background: $white !default;\n\n/// If `true`, adds plus and minus icons to the side of each accordion title.\n/// @type Boolean\n$accordion-plusminus: true !default;\n\n/// Default text color for items in a Menu.\n/// @type Color\n$accordion-item-color: foreground($accordion-background, $primary-color) !default;\n\n/// Default background color on hover for items in a Menu.\n/// @type Color\n$accordion-item-background-hover: $light-gray !default;\n\n/// Default padding of an accordion item.\n/// @type Number | List\n$accordion-item-padding: 1.25rem 1rem !default;\n\n/// Default background color of tab content.\n/// @type Color\n$accordion-content-background: $white !default;\n\n/// Default border color of tab content.\n/// @type Color\n$accordion-content-border: 1px solid $light-gray !default;\n\n/// Default text color of tab content.\n/// @type Color\n$accordion-content-color: foreground($accordion-background, $primary-color) !default;\n\n/// Default padding for tab content.\n/// @type Number | List\n$accordion-content-padding: 1rem !default;\n\n/// Adds styles for an accordion container. Apply this to the same element that gets `data-accordion`.\n@mixin accordion-container {\n list-style-type: none;\n background: $accordion-background;\n border: $accordion-content-border;\n border-bottom: 0;\n border-radius: $global-radius;\n margin-#{$global-left}: 0;\n}\n\n/// Adds styles for the title of an accordion item. Apply this to the link within an accordion item.\n@mixin accordion-title {\n display: block;\n padding: $accordion-item-padding;\n line-height: 1;\n font-size: rem-calc(12);\n color: $accordion-item-color;\n position: relative;\n border-bottom: $accordion-content-border;\n\n &:hover,\n &:focus {\n background-color: $accordion-item-background-hover;\n }\n\n @if $accordion-plusminus {\n &::before {\n content: '+';\n position: absolute;\n #{$global-right}: 1rem;\n top: 50%;\n margin-top: -0.5rem;\n }\n\n .is-active > &::before {\n content: '–';\n }\n }\n}\n\n/// Adds styles for accordion content. Apply this to the content pane below an accordion item's title.\n@mixin accordion-content {\n padding: $accordion-content-padding;\n display: none;\n border-bottom: $accordion-content-border;\n background-color: $accordion-content-background;\n}\n\n@mixin foundation-accordion {\n .accordion {\n @include accordion-container;\n }\n\n .accordion-item {\n // This class doesn't need styles!\n }\n\n .accordion-title {\n @include accordion-title;\n }\n\n .accordion-content {\n @include accordion-content;\n }\n}\n","////\n/// @group accordion-menu\n////\n\n/// Sets if accordion menus have the default arrow styles.\n/// @type Boolean\n$accordionmenu-arrows: true !default;\n\n/// Sets accordion menu arrow color if arrow is used.\n/// @type Color\n$accordionmenu-arrow-color: $primary-color !default;\n\n@mixin foundation-accordion-menu {\n @if $accordionmenu-arrows {\n .is-accordion-submenu-parent > a {\n position: relative;\n\n &::after {\n @include css-triangle(6px, $accordionmenu-arrow-color, down);\n position: absolute;\n top: 50%;\n margin-top: -4px;\n right: 1rem;\n }\n }\n\n .is-accordion-submenu-parent[aria-expanded='true'] > a::after {\n transform-origin: 50% 50%;\n transform: scaleY(-1);\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group badge\n////\n\n/// Default background color for badges.\n/// @type Color\n$badge-background: $primary-color !default;\n\n/// Default text color for badges.\n/// @type Color\n$badge-color: foreground($badge-background) !default;\n\n/// Default padding inside badges.\n/// @type Number\n$badge-padding: 0.3em !default;\n\n/// Minimum width of a badge.\n/// @type Number\n$badge-minwidth: 2.1em !default;\n\n/// Default font size for badges.\n/// @type Number\n$badge-font-size: 0.6rem !default;\n\n/// Generates the base styles for a badge.\n@mixin badge {\n display: inline-block;\n padding: $badge-padding;\n min-width: $badge-minwidth;\n font-size: $badge-font-size;\n text-align: center;\n border-radius: 50%;\n}\n\n@mixin foundation-badge {\n .badge {\n @include badge;\n\n background: $badge-background;\n color: $badge-color;\n\n @each $name, $color in $foundation-colors {\n @if $name != primary {\n &.#{$name} {\n background: $color;\n color: foreground($color);\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group breadcrumbs\n////\n\n/// Margin around a breadcrumbs container.\n/// @type Number\n$breadcrumbs-margin: 0 0 $global-margin 0 !default;\n\n/// Font size of breadcrumb links.\n/// @type Number\n$breadcrumbs-item-font-size: rem-calc(11) !default;\n\n/// Color of breadcrumb links.\n/// @type Color\n$breadcrumbs-item-color: $primary-color !default;\n\n/// Color of the active breadcrumb link.\n/// @type Color\n$breadcrumbs-item-color-current: $black !default;\n\n/// Opacity of disabled breadcrumb links.\n/// @type Number\n$breadcrumbs-item-color-disabled: $medium-gray !default;\n\n/// Margin between breadcrumb items.\n/// @type Number\n$breadcrumbs-item-margin: 0.75rem !default;\n\n/// If `true`, makes breadcrumb links uppercase.\n/// @type Boolean\n$breadcrumbs-item-uppercase: true !default;\n\n/// If `true`, adds a slash between breadcrumb links.\n/// @type Boolean\n$breadcrumbs-item-slash: true !default;\n\n/// Adds styles for a breadcrumbs container, along with the styles for the `<li>` and `<a>` elements inside of it.\n@mixin breadcrumbs-container {\n @include clearfix;\n list-style: none;\n margin: $breadcrumbs-margin;\n\n // Item wrapper\n li {\n float: #{$global-left};\n color: $breadcrumbs-item-color-current;\n font-size: $breadcrumbs-item-font-size;\n cursor: default;\n\n @if $breadcrumbs-item-uppercase {\n text-transform: uppercase;\n }\n\n @if $breadcrumbs-item-slash {\n // Need to escape the backslash\n $slash: if($global-text-direction == 'ltr', '/', '\\\\');\n\n &:not(:last-child)::after {\n color: $medium-gray;\n content: $slash;\n margin: 0 $breadcrumbs-item-margin;\n position: relative;\n top: 1px;\n opacity: 1;\n }\n }\n @else {\n margin-#{$global-right}: $breadcrumbs-item-margin;\n }\n }\n\n // Page links\n a {\n color: $breadcrumbs-item-color;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n\n@mixin foundation-breadcrumbs {\n .breadcrumbs {\n @include breadcrumbs-container;\n\n .disabled {\n color: $breadcrumbs-item-color-disabled;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group button-group\n////\n\n/// Margin for button groups.\n/// @type Number\n$buttongroup-margin: 1rem !default;\n\n/// Margin between buttons in a button group.\n/// @type Border\n$buttongroup-spacing: 1px !default;\n\n/// Selector for the buttons inside a button group.\n/// @type String\n$buttongroup-child-selector: '.button' !default;\n\n/// Maximum number of buttons that can be in an even-width button group.\n/// @type Number\n$buttongroup-expand-max: 6 !default;\n\n/// Add styles for a button group container.\n/// @param {String} $child-selector [$buttongroup-child-selector] - Selector for the buttons inside a button group.\n@mixin button-group(\n $child-selector: $buttongroup-child-selector\n) {\n @include clearfix;\n margin-bottom: $buttongroup-margin;\n font-size: map-get($button-sizes, default);\n\n #{$child-selector} {\n float: #{$global-left};\n margin: 0;\n font-size: inherit;\n\n &:not(:last-child) {\n border-#{$global-right}: $buttongroup-spacing solid $body-background;\n }\n }\n}\n\n/// Creates a full-width button group, making each button equal width.\n/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside a button group.\n@mixin button-group-expand(\n $selector: $buttongroup-child-selector,\n $count: null\n) {\n @if $count != null {\n @warn 'button-group-expand(): the $count property is no longer needed. This parameter will be removed in Foundation 6.2.';\n }\n\n display: table;\n table-layout: fixed;\n width: 100%;\n\n &::before,\n &::after {\n display: none;\n }\n\n #{$selector} {\n display: table-cell;\n float: none;\n }\n}\n\n/// Stacks the buttons in a button group.\n/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group.\n@mixin button-group-stack(\n $selector: $buttongroup-child-selector\n) {\n #{$selector} {\n width: 100%;\n\n &:not(:last-child) {\n border-#{$global-right}: $buttongroup-spacing solid;\n }\n }\n}\n\n/// Un-stacks the buttons in a button group.\n/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group.\n@mixin button-group-unstack(\n $selector: $buttongroup-child-selector\n) {\n #{$selector} {\n width: auto;\n\n &:not(:last-child) {\n border-#{$global-right}: $buttongroup-spacing solid $body-background;\n }\n }\n}\n\n@mixin foundation-button-group {\n .button-group {\n @include button-group;\n\n // Sizes\n &.tiny { font-size: map-get($button-sizes, tiny); }\n &.small { font-size: map-get($button-sizes, small); }\n &.large { font-size: map-get($button-sizes, large); }\n &.expanded { @include button-group-expand; }\n\n // Colors\n @each $name, $color in $foundation-colors {\n @if $button-fill != hollow {\n &.#{$name} #{$buttongroup-child-selector} {\n @include button-style($color, auto, auto);\n }\n }\n @else {\n &.#{$name} #{$buttongroup-child-selector} {\n @include button-hollow;\n @include button-hollow-style($color);\n }\n }\n }\n\n &.stacked,\n &.stacked-for-small {\n @include button-group-stack;\n }\n\n &.stacked-for-small {\n @include breakpoint(medium) {\n @include button-group-unstack;\n }\n }\n\n &.stacked-for-small.expanded {\n @include breakpoint(small only) {\n display: block;\n\n #{$buttongroup-child-selector} {\n display: block;\n border-right: 0;\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group callout\n////\n\n/// Defualt background color.\n/// @type Color\n$callout-background: $white !default;\n\n/// Default fade value for callout backgrounds.\n/// @type Number\n$callout-background-fade: 85% !default;\n\n/// Defualt border style for callouts.\n/// @type List\n$callout-border: 1px solid rgba($black, 0.25) !default;\n\n/// Default bottom margin for callouts.\n/// @type Number\n$callout-margin: 0 0 1rem 0 !default;\n\n/// Default inner padding for callouts.\n/// @type Number\n$callout-padding: 1rem !default;\n\n/// Default font color for callouts.\n/// @type Color\n$callout-font-color: $body-font-color !default;\n\n/// Default font color for callouts, if the callout has a dark background.\n/// @type Color\n$callout-font-color-alt: $body-background !default;\n\n/// Default border radius for callouts.\n/// @type Color\n$callout-radius: $global-radius !default;\n\n/// Amount to tint links used within colored panels. Set to `false` to disable this feature.\n/// @type Number | Boolean\n$callout-link-tint: 30% !default;\n\n/// Adds basic styles for a callout, including padding and margin.\n@mixin callout-base() {\n margin: $callout-margin;\n padding: $callout-padding;\n border: $callout-border;\n border-radius: $callout-radius;\n position: relative;\n color: $callout-font-color;\n\n // Respect the padding, fool.\n > :first-child {\n margin-top: 0;\n }\n\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n/// Generate quick styles for a callout using a single color as a baseline.\n/// @param {Color} $color [$callout-background] - Color to use.\n@mixin callout-style($color: $callout-background) {\n $background: scale-color($color, $lightness: $callout-background-fade);\n\n background-color: $background;\n}\n\n@mixin callout-size($padding) {\n padding-top: $padding;\n padding-right: $padding;\n padding-bottom: $padding;\n padding-left: $padding;\n}\n\n\n/// Adds styles for a callout.\n/// @param {Color} $color [$callout-background] - Color to use.\n@mixin callout($color: $callout-background) {\n @include callout-base;\n @include callout-style($color);\n}\n\n@mixin foundation-callout {\n .callout {\n @include callout;\n\n @each $name, $color in $foundation-colors {\n &.#{$name} {\n @include callout-style($color);\n }\n }\n\n &.small {\n @include callout-size(0.5rem);\n }\n\n &.large {\n @include callout-size(3rem);\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group close-button\n////\n\n/// Default position of the close button. The first value should be `right` or `left`, and the second value should be `top` or `bottom`.\n/// @type List\n$closebutton-position: right top !default;\n\n/// Right (or left) offset for a close button.\n/// @type Number\n$closebutton-offset-horizontal: 1rem !default;\n\n/// Top (or bottom) offset for a close button.\n/// @type Number\n$closebutton-offset-vertical: 0.5rem !default;\n\n/// Default font size of the close button.\n/// @type Number\n$closebutton-size: 2em !default;\n\n/// The line-height of the close button. It affects the spacing of the element.\n/// @type Number\n$closebutton-lineheight: 1 !default;\n\n/// Default color of the close button.\n/// @type Color\n$closebutton-color: $dark-gray !default;\n\n/// Default color of the close button when being hovered on.\n/// @type Color\n$closebutton-color-hover: $black !default;\n\n/// Adds styles for a close button, using the styles in the settings variables.\n@mixin close-button {\n $x: nth($closebutton-position, 1);\n $y: nth($closebutton-position, 2);\n\n @include disable-mouse-outline;\n position: absolute;\n color: $closebutton-color;\n #{$x}: $closebutton-offset-horizontal;\n #{$y}: $closebutton-offset-vertical;\n font-size: $closebutton-size;\n line-height: $closebutton-lineheight;\n cursor: pointer;\n\n &:hover,\n &:focus {\n color: $closebutton-color-hover;\n }\n}\n\n@mixin foundation-close-button {\n .close-button {\n @include close-button;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group drilldown\n////\n\n/// Transition property to use for animating menus.\n/// @type Transition\n$drilldown-transition: transform 0.15s linear !default;\n\n/// Adds arrows to drilldown items with submenus, as well as the back button.\n/// @type Boolean\n$drilldown-arrows: true !default;\n\n/// Sets drilldown arrow color if arrow is used.\n/// @type Color\n$drilldown-arrow-color: $primary-color !default;\n\n/// Background color for drilldown submenus.\n/// @type Color\n$drilldown-background: $white !default;\n\n@mixin foundation-drilldown-menu {\n // Applied to the Menu container\n .is-drilldown {\n position: relative;\n overflow: hidden;\n }\n\n // Applied to nested <ul>s\n .is-drilldown-submenu {\n position: absolute;\n top: 0;\n #{$global-left}: 100%;\n z-index: -1;\n height: 100%;\n width: 100%;\n background: $drilldown-background;\n transition: $drilldown-transition;\n\n &.is-active {\n z-index: 1;\n display: block;\n transform: translateX(if($global-text-direction == ltr, -100%, 100%));\n }\n\n &.is-closing {\n transform: translateX(if($global-text-direction == ltr, 100%, -100%));\n }\n }\n\n @if $drilldown-arrows {\n .is-drilldown-submenu-parent > a {\n position: relative;\n\n &::after {\n @include css-triangle(6px, $drilldown-arrow-color, $global-right);\n position: absolute;\n top: 50%;\n margin-top: -6px;\n #{$global-right}: 1rem;\n }\n }\n\n .js-drilldown-back > a::before {\n @include css-triangle(6px, $drilldown-arrow-color, $global-left);\n border-#{$global-left}-width: 0;\n display: inline-block;\n vertical-align: middle;\n margin-#{$global-right}: 0.75rem; // Creates space between the arrow and the text\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group dropdown\n////\n\n/// Padding for dropdown panes.\n/// @type List\n$dropdown-padding: 1rem !default;\n\n/// Border for dropdown panes.\n/// @type List\n$dropdown-border: 1px solid $medium-gray !default;\n\n/// Font size for dropdown panes.\n/// @type List\n$dropdown-font-size: 1rem !default;\n\n/// Width for dropdown panes.\n/// @type Number\n$dropdown-width: 300px !default;\n\n/// Border radius dropdown panes.\n/// @type Number\n$dropdown-radius: $global-radius !default;\n\n/// Sizes for dropdown panes. Each size is a CSS class you can apply.\n/// @type Map\n$dropdown-sizes: (\n tiny: 100px,\n small: 200px,\n large: 400px,\n) !default;\n\n/// Applies styles for a basic dropdown.\n@mixin dropdown-container {\n background-color: $body-background;\n border: $dropdown-border;\n border-radius: $dropdown-radius;\n display: block;\n font-size: $dropdown-font-size;\n padding: $dropdown-padding;\n position: absolute;\n visibility: hidden;\n width: $dropdown-width;\n z-index: 10;\n\n &.is-open {\n visibility: visible;\n }\n}\n\n@mixin foundation-dropdown {\n .dropdown-pane {\n @include dropdown-container;\n }\n\n @each $name, $size in $dropdown-sizes {\n .dropdown-pane.#{$name} {\n width: $size;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group dropdown-menu\n////\n\n/// Enables arrows for items with dropdown menus.\n/// @type Boolean\n$dropdownmenu-arrows: true !default;\n\n/// Sets dropdown menu arrow color if arrow is used.\n/// @type Color\n$dropdownmenu-arrow-color: $anchor-color !default;\n\n/// Minimum width of dropdown sub-menus.\n/// @type Length\n$dropdownmenu-min-width: 200px !default;\n\n/// Background color for dropdowns.\n/// @type Color\n$dropdownmenu-background: $white !default;\n\n/// Border for dropdown sub-menus.\n/// @type List\n$dropdownmenu-border: 1px solid $medium-gray !default;\n\n// Border width for dropdown sub-menus.\n// Used to adjust top margin of a sub-menu if a border is used.\n// @type Length\n$dropdownmenu-border-width: nth($dropdownmenu-border, 1);\n\n@mixin foundation-dropdown-menu {\n .dropdown.menu {\n a {\n @include disable-mouse-outline;\n }\n &:not(.vertical) {\n\n }\n .no-js & ul {\n display: none;\n }\n\n &:not(.vertical) {\n .is-dropdown-submenu {\n &.first-sub {\n top: 100%;\n #{$global-left}: 0;\n #{$global-right}: auto;\n }\n }\n }\n\n &.align-right {\n .is-dropdown-submenu.first-sub {\n top: 100%;\n left: auto;\n right: 0;\n }\n }\n }\n\n .is-dropdown-menu.vertical {\n width: 100px;\n\n &.align-right {\n float: right;\n }\n\n > li .is-dropdown-submenu {\n top: 0;\n left: 100%;\n }\n }\n\n .is-dropdown-submenu-parent {\n position: relative;\n\n a::after {\n float: $global-right;\n margin-top: 3px;\n margin-#{$global-left}: 10px;\n }\n\n @if $dropdownmenu-arrows {\n &.is-down-arrow a {\n padding-#{$global-right}: 1.5rem;\n position: relative;\n }\n\n &.is-down-arrow > a::after {\n @include css-triangle(5px, $dropdownmenu-arrow-color, down);\n position: absolute;\n top: rem-calc(2px) + rem-calc(get-side($menu-item-padding, top));\n #{$global-right}: 5px;\n }\n\n &.is-left-arrow > a::after {\n @include css-triangle(5px, $dropdownmenu-arrow-color, left);\n float: left;\n margin-left: 0;\n margin-right: 10px;\n }\n\n &.is-right-arrow > a::after {\n @include css-triangle(5px, $dropdownmenu-arrow-color, right);\n }\n }\n\n &.is-left-arrow.opens-inner .is-dropdown-submenu {\n right: 0;\n left: auto;\n }\n\n &.is-right-arrow.opens-inner .is-dropdown-submenu {\n left: 0;\n right: auto;\n }\n\n &.opens-inner .is-dropdown-submenu {\n top: 100%;\n }\n\n &.opens-left .is-dropdown-submenu {\n left: auto;\n right: 100%;\n }\n }\n\n\n .is-dropdown-submenu {\n display: none;\n position: absolute;\n top: 0;\n #{$global-left}: 100%;\n min-width: $dropdownmenu-min-width;\n z-index: 1;\n background: $dropdownmenu-background;\n border: $dropdownmenu-border;\n\n @if (type-of($dropdownmenu-border-width) == 'number') {\n .is-dropdown-submenu {\n margin-top: (-$dropdownmenu-border-width);\n }\n }\n\n > li {\n width: 100%;\n }\n\n\n // [TODO] Cut back specificity\n // scss-lint:disable SelectorDepth\n &:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > &,\n &.js-dropdown-active {\n display: block;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group flex-video\n////\n\n/// Margin below a flex video container.\n/// @type Number\n$flexvideo-margin-bottom: rem-calc(16) !default;\n\n/// Padding used to create a 4:3 aspect ratio.\n/// @type Number\n$flexvideo-ratio: 4 by 3 !default;\n\n/// Padding used to create a 16:9 aspect ratio.\n/// @type Number\n$flexvideo-ratio-widescreen: 16 by 9 !default;\n\n/// Creates a percentage height that can be used as padding in a flex video container.\n/// @param {List} $ratio - Ratio to use to calculate the height, formatted as `x by y`.\n/// @return {Number} A percentage value that can be used as the `padding-bottom` parameter of a flex video container.\n@function flex-video($ratio) {\n $w: nth($ratio, 1);\n $h: nth($ratio, 3);\n @return $h / $w * 100%;\n}\n\n/// Creates a flex video container.\n/// @param {List} $ratio [$flexvideo-ratio] - Ratio to use for the container, formatted as `x by y`.\n@mixin flex-video($ratio: $flexvideo-ratio) {\n position: relative;\n height: 0;\n padding-bottom: flex-video($ratio);\n margin-bottom: $flexvideo-margin-bottom;\n overflow: hidden;\n\n iframe,\n object,\n embed,\n video {\n position: absolute;\n top: 0;\n #{$global-left}: 0;\n width: 100%;\n height: 100%;\n }\n}\n\n@mixin foundation-flex-video {\n .flex-video {\n @include flex-video;\n\n &.widescreen {\n padding-bottom: flex-video($flexvideo-ratio-widescreen);\n }\n\n &.vimeo {\n padding-top: 0;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group label\n////\n\n/// Default background color for labels.\n/// @type Color\n$label-background: $primary-color !default;\n\n/// Default text color for labels.\n/// @type Color\n$label-color: foreground($label-background) !default;\n\n/// Default font size for labels.\n/// @type Number\n$label-font-size: 0.8rem !default;\n\n/// Default padding inside labels.\n/// @type Number\n$label-padding: 0.33333rem 0.5rem !default;\n\n/// Default radius of labels.\n/// @type Number\n$label-radius: $global-radius !default;\n\n/// Generates base styles for a label.\n@mixin label {\n display: inline-block;\n padding: $label-padding;\n font-size: $label-font-size;\n line-height: 1;\n white-space: nowrap;\n cursor: default;\n border-radius: $label-radius;\n}\n\n@mixin foundation-label {\n .label {\n @include label;\n\n background: $label-background;\n color: $label-color;\n\n @each $name, $color in $foundation-colors {\n @if $name != primary {\n &.#{$name} {\n background: $color;\n color: foreground($color);\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group media-object\n////\n\n/// Bottom margin of a media object.\n/// @type Number\n$mediaobject-margin-bottom: $global-margin !default;\n\n/// Left and right padding on sections within a media object.\n/// @type Number\n$mediaobject-section-padding: $global-padding !default;\n\n/// With of images within a media object, when the object is stacked vertically. Set to 'auto' to use the image's natural width.\n/// @type Number\n$mediaobject-image-width-stacked: 100% !default;\n\n/// Adds styles for a media object container.\n@mixin media-object-container {\n margin-bottom: $mediaobject-margin-bottom;\n display: block;\n}\n\n/// Adds styles for sections within a media object.\n/// @param {Number} $padding [$mediaobject-section-padding] - Padding between sections.\n@mixin media-object-section($padding: $mediaobject-section-padding) {\n display: table-cell;\n vertical-align: top;\n\n &:first-child {\n padding-#{$global-right}: $padding;\n }\n\n &:last-child:not(:nth-child(2)) {\n padding-#{$global-left}: $padding;\n }\n}\n\n/// Adds styles to stack sections of a media object. Apply this to the section elements, not the container.\n@mixin media-object-stack {\n display: block;\n padding: 0;\n padding-bottom: $mediaobject-section-padding;\n\n img {\n width: $mediaobject-image-width-stacked;\n }\n}\n\n@mixin foundation-media-object {\n .media-object {\n @include media-object-container;\n\n img {\n max-width: none;\n }\n\n &.stack-for-small .media-object-section {\n @include breakpoint(small only) {\n @include media-object-stack;\n }\n }\n }\n\n .media-object-section {\n @include media-object-section;\n\n &.middle { vertical-align: middle; }\n &.bottom { vertical-align: bottom; }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group menu\n////\n\n/// Margin of a menu.\n/// @type Number\n$menu-margin: 0 !default;\n\n/// Left-hand margin of a nested menu.\n/// @type Number\n$menu-margin-nested: 1rem !default;\n\n/// Padding for items in a menu.\n/// @type Number\n$menu-item-padding: 0.7rem 1rem !default;\n\n/// Spacing between an icon and text in a menu item.\n/// @type Number\n$menu-icon-spacing: 0.25rem !default;\n\n/// Maximum number of `expand-n` classes to include in the CSS.\n/// @type Number\n$menu-expand-max: 6 !default;\n\n/// Creates the base styles for a Menu.\n@mixin menu-base {\n margin: $menu-margin;\n list-style-type: none;\n\n // List items are table cell to allow for vertical alignment\n > li {\n @include disable-mouse-outline;\n display: table-cell;\n vertical-align: middle;\n }\n\n // Reset line height to make the height of the overall item easier to calculate\n > li > a {\n display: block;\n padding: $menu-item-padding;\n line-height: 1;\n }\n\n // Reset styles of inner elements\n input,\n a,\n button {\n margin-bottom: 0;\n }\n}\n\n/// Expands the items of a Menu, so each item is the same width.\n@mixin menu-expand {\n display: table;\n table-layout: fixed;\n width: 100%;\n}\n\n/// Sets the direction of a Menu.\n/// @param {Keyword} $dir [horizontal] - Direction of the Menu. Can be `horizontal` or `vertical`.\n@mixin menu-direction($dir: horizontal) {\n @if $dir == horizontal {\n > li {\n display: table-cell;\n }\n }\n @else if $dir == vertical {\n > li {\n display: block;\n }\n }\n @else {\n @warn 'The direction used for menu-direction() must be horizontal or vertical.';\n }\n}\n\n/// Creates a simple Menu, which has no padding or hover state.\n@mixin menu-simple {\n li {\n line-height: 1;\n display: inline-block;\n margin-#{$global-right}: get-side($menu-item-padding, $global-right);\n }\n\n a {\n padding: 0;\n }\n}\n\n/// Adds styles for a nested Menu, by adding `margin-left` to the menu.\n/// @param {Keyword|Number} $padding [auto] - Length of the margin.\n@mixin menu-nested($margin: $menu-margin-nested) {\n margin-#{$global-left}: $margin;\n}\n\n/// Adds support for icons to Menu items.\n/// @param {Keyword} $position [side] - Positioning for icons. Can be `side` (left, or right on RTL) or `top`.\n/// @param {Boolean} $base [true] - Set to `false` to prevent the shared CSS between side- and top-aligned icons from being printed. Set this to `false` if you're calling the mixin multiple times on the same element.\n@mixin menu-icons($position: side, $base: true) {\n @if $base {\n > li > a {\n > img,\n > i {\n vertical-align: middle;\n }\n\n > span {\n vertical-align: middle;\n }\n }\n }\n\n @if $position == side {\n > li > a {\n > img,\n > i {\n display: inline-block;\n margin-#{$global-right}: $menu-icon-spacing;\n }\n }\n }\n @else if $position == top {\n > li > a {\n text-align: center;\n\n > img,\n > i {\n display: block;\n margin: 0 auto $menu-icon-spacing;\n }\n }\n }\n}\n\n@mixin menu-text {\n font-weight: bold;\n color: inherit;\n line-height: 1;\n padding-top: 0;\n padding-bottom: 0;\n padding: $menu-item-padding;\n}\n\n@mixin foundation-menu {\n .menu {\n @include menu-base;\n @include menu-icons;\n\n // Orientation\n @include menu-direction(horizontal);\n\n &.vertical {\n @include menu-direction(vertical);\n }\n\n @each $size in $breakpoint-classes {\n @if $size != small {\n @include breakpoint($size) {\n &.#{$size}-horizontal {\n @include menu-direction(horizontal);\n }\n\n &.#{$size}-vertical {\n @include menu-direction(vertical);\n }\n }\n }\n }\n\n // Simple\n &.simple {\n @include menu-simple;\n }\n\n // Align right\n &.align-#{$global-right} {\n > li {\n float: $global-right;\n }\n }\n\n // Even-width\n &.expanded {\n @include menu-expand;\n\n > li:first-child:last-child {\n width: 100%;\n }\n }\n\n // Vertical icons\n &.icon-top {\n @include menu-icons(top, $base: false);\n }\n\n // Nesting\n &.nested {\n @include menu-nested;\n }\n }\n\n .menu-text {\n @include menu-text;\n }\n\n // Prevent FOUC when using the Responsive Menu plugin\n .no-js [data-responsive-menu] ul {\n display: none;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group off-canvas\n////\n\n/// Width of an off-canvas menu.\n/// @type Number\n$offcanvas-size: 250px !default;\n\n/// Background color of an off-canvas menu.\n/// @type Color\n$offcanvas-background: $light-gray !default;\n\n/// Z-index of an off-canvas menu.\n/// @type Number\n$offcanvas-zindex: -1 !default;\n\n/// Length of the animation on an off-canvas menu.\n/// @type Number\n$offcanvas-transition-length: 0.5s !default;\n\n/// Timing function of the animation on an off-canvas menu.\n/// @type Keyword\n$offcanvas-transition-timing: ease !default;\n\n/// If `true`, a revealed off-canvas will be fixed-position, and scroll with the screen.\n$offcanvas-fixed-reveal: true !default;\n\n/// Background color for the overlay that appears when an off-canvas menu is open.\n/// @type Color\n$offcanvas-exit-background: rgba($white, 0.25) !default;\n\n/// CSS class used for the main content area. The off-canvas mixins use this to target the page body.\n$maincontent-class: 'off-canvas-content' !default;\n\n/// Box shadow to place under the main content area. This shadow overlaps the off-canvas menus.\n/// @type Shadow\n$maincontent-shadow: 0 0 10px rgba($black, 0.5) !default;\n\n/// Adds baseline styles for off-canvas. This CSS is required to make the other pieces work.\n@mixin off-canvas-basics {\n // Extra properties needed on <html> and <body> to make off-canvas work\n html,\n body {\n height: 100%;\n }\n\n .off-canvas-wrapper {\n width: 100%;\n overflow-x: hidden;\n position: relative;\n backface-visibility: hidden;\n -webkit-overflow-scrolling: auto;\n }\n\n .off-canvas-wrapper-inner {\n @include clearfix;\n position: relative;\n width: 100%;\n transition: transform $offcanvas-transition-length $offcanvas-transition-timing;\n }\n\n // Container for page content\n .off-canvas-content,\n .#{$maincontent-class} {\n min-height: 100%;\n background: $body-background;\n transition: transform $offcanvas-transition-length $offcanvas-transition-timing;\n backface-visibility: hidden;\n z-index: 1;\n\n @if has-value($maincontent-shadow) {\n box-shadow: $maincontent-shadow;\n }\n }\n\n // Click-to-exit overlay (generated by JavaScript)\n .js-off-canvas-exit {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: $offcanvas-exit-background;\n cursor: pointer;\n transition: background $offcanvas-transition-length $offcanvas-transition-timing;\n }\n}\n\n/// Adds basic styles for an off-canvas menu.\n@mixin off-canvas-base {\n @include disable-mouse-outline;\n position: absolute;\n background: $offcanvas-background;\n z-index: $offcanvas-zindex;\n max-height: 100%;\n overflow-y: auto;\n transform: translateX(0);\n}\n\n@mixin off-canvas-position(\n $position: left,\n $size: $offcanvas-size,\n $fixed: false\n) {\n @if $position == left {\n left: -$size;\n top: 0;\n width: $size;\n }\n @else if $position == right {\n right: -$size;\n top: 0;\n width: $size;\n }\n\n // Generates an open state class that matches the width of the menu\n @at-root {\n .is-open-#{$position} {\n @if $position == left {\n transform: translateX($size);\n }\n @else if $position == right {\n transform: translateX(-$size);\n }\n }\n }\n}\n\n/// Adds styles that reveal an off-canvas menu.\n/// @param {Keyword} $position [left] - Position of the off-canvas menu being revealed.\n@mixin off-canvas-reveal(\n $position: left\n) {\n #{$position}: 0;\n z-index: auto;\n\n @if $offcanvas-fixed-reveal {\n position: fixed;\n }\n\n & ~ .#{$maincontent-class} {\n margin-#{$position}: $offcanvas-size;\n }\n}\n\n@mixin foundation-off-canvas {\n @include off-canvas-basics;\n\n // Off-canvas container\n .off-canvas {\n @include off-canvas-base;\n\n &.position-left { @include off-canvas-position(left); }\n &.position-right { @include off-canvas-position(right); }\n }\n\n // Reveal off-canvas menu on larger screens\n @each $name, $value in $breakpoint-classes {\n @if $name != small {\n @include breakpoint($name) {\n .position-left.reveal-for-#{$name} {\n @include off-canvas-reveal(left);\n }\n\n .position-right.reveal-for-#{$name} {\n @include off-canvas-reveal(right);\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group orbit\n////\n\n/// Default color for Orbit's bullets.\n/// @type Color\n$orbit-bullet-background: $medium-gray !default;\n\n/// Default active color for Orbit's bullets.\n/// @type Color\n$orbit-bullet-background-active: $dark-gray !default;\n\n/// Default diameter for Orbit's bullets.\n/// @type Number\n$orbit-bullet-diameter: 1.2rem !default;\n\n/// Default margin between Orbit's bullets.\n/// @type Number\n$orbit-bullet-margin: 0.1rem !default;\n\n/// Default distance from slide region for Orbit's bullets.\n/// @type Number\n$orbit-bullet-margin-top: 0.8rem !default;\n\n/// Default bottom margin from Orbit's bullets to whatever content may lurk below it.\n/// @type Number\n$orbit-bullet-margin-bottom: 0.8rem !default;\n\n/// Default background color for Orbit's caption.\n/// @type Color\n$orbit-caption-background: rgba($black, 0.5) !default;\n\n/// Default padding for Orbit's caption.\n/// @type Number\n$orbit-caption-padding: 1rem !default;\n\n/// Default background color for Orbit's controls when hovered.\n/// @type Color\n$orbit-control-background-hover: rgba($black, 0.5) !default;\n\n/// Default padding for Orbit's controls.\n/// @type Number\n$orbit-control-padding: 1rem !default;\n\n/// Default z-index for Orbit's controls.\n/// @type Number\n$orbit-control-zindex: 10 !default;\n\n/// Adds styles for the outer Orbit wrapper. These styles are used on the `.orbit` class.\n@mixin orbit-wrapper {\n position: relative;\n}\n\n/// Adds styles for the inner Orbit slide container. These styles are used on the `.orbit-container` class.\n@mixin orbit-container {\n position: relative;\n margin: 0;\n overflow: hidden;\n list-style: none;\n}\n\n/// Adds styles for the individual slides of an Orbit slider. These styles are used on the `.orbit-slide` class.\n@mixin orbit-slide {\n width: 100%;\n max-height: 100%;\n\n &.no-motionui {\n &.is-active {\n top: 0;\n left: 0;\n }\n }\n}\n\n@mixin orbit-figure {\n margin: 0;\n}\n\n@mixin orbit-image {\n margin: 0;\n width: 100%;\n max-width: 100%;\n}\n\n/// Adds styles for an orbit slide caption. These styles are used on the `.orbit-caption` class.\n@mixin orbit-caption {\n position: absolute;\n bottom: 0;\n width: 100%;\n padding: $orbit-caption-padding;\n margin-bottom: 0;\n color: foreground($orbit-caption-background);\n background-color: $orbit-caption-background;\n}\n\n/// Adds base styles for the next/previous buttons in an Orbit slider. These styles are shared between the `.orbit-next` and `.orbit-previous` classes in the default CSS.\n@mixin orbit-control {\n @include disable-mouse-outline;\n @include vertical-center;\n z-index: $orbit-control-zindex;\n padding: $orbit-control-padding;\n color: $white;\n\n &:hover,\n &:active,\n &:focus {\n background-color: $orbit-control-background-hover;\n }\n}\n\n/// Adds styles for the Orbit previous button. These styles are used on the `.orbit-previous` class.\n@mixin orbit-previous {\n #{$global-left}: 0;\n}\n\n/// Adds styles for the Orbit next button. These styles are used on the `.orbit-next` class.\n@mixin orbit-next {\n #{$global-left}: auto;\n #{$global-right}: 0;\n}\n\n/// Adds styles for a container of Orbit bullets. /// Adds styles for the Orbit previous button. These styles are used on the `.orbit-bullets` class.\n@mixin orbit-bullets {\n @include disable-mouse-outline;\n position: relative;\n margin-top: $orbit-bullet-margin-top;\n margin-bottom: $orbit-bullet-margin-bottom;\n text-align: center;\n\n button {\n width: $orbit-bullet-diameter;\n height: $orbit-bullet-diameter;\n margin: $orbit-bullet-margin;\n background-color: $orbit-bullet-background;\n border-radius: 50%;\n\n &:hover {\n background-color: $orbit-bullet-background-active;\n }\n\n &.is-active {\n background-color: $orbit-bullet-background-active;\n }\n }\n}\n\n@mixin foundation-orbit {\n .orbit {\n @include orbit-wrapper;\n }\n\n .orbit-container {\n @include orbit-container;\n }\n\n .orbit-slide {\n @include orbit-slide;\n }\n\n .orbit-figure {\n @include orbit-figure;\n }\n\n .orbit-image {\n @include orbit-image;\n }\n\n .orbit-caption {\n @include orbit-caption;\n }\n\n %orbit-control {\n @include orbit-control;\n }\n\n .orbit-previous {\n @extend %orbit-control;\n @include orbit-previous;\n }\n\n .orbit-next {\n @extend %orbit-control;\n @include orbit-next;\n }\n\n .orbit-bullets {\n @include orbit-bullets;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group pagination\n////\n\n/// Font size of pagination items.\n/// @type Number\n$pagination-font-size: rem-calc(14) !default;\n\n/// Default bottom margin of the media object.\n/// @type Number\n$pagination-margin-bottom: $global-margin !default;\n\n/// Text color of pagination items.\n/// @type Color\n$pagination-item-color: $black !default;\n\n/// Padding inside of pagination items.\n/// @type Number\n$pagination-item-padding: rem-calc(3 10) !default;\n\n/// Right margin to separate pagination items.\n/// @type Number\n$pagination-item-spacing: rem-calc(1) !default;\n\n/// Default radius for pagination items.\n/// @type Number\n$pagination-radius: $global-radius !default;\n\n/// Background color of pagination items on hover.\n/// @type Color\n$pagination-item-background-hover: $light-gray !default;\n\n/// Background color of pagination item for the current page.\n/// @type Color\n$pagination-item-background-current: $primary-color !default;\n\n/// Text color of the pagination item for the current page.\n/// @type Color\n$pagination-item-color-current: foreground($pagination-item-background-current) !default;\n\n/// Text color of a disabled pagination item.\n/// @type Color\n$pagination-item-color-disabled: $medium-gray !default;\n\n/// Color of the ellipsis in a pagination menu.\n/// @type Color\n$pagination-ellipsis-color: $black !default;\n\n/// If `false`, don't display page number links on mobile, only next/previous links.\n/// @type Boolean\n$pagination-mobile-items: false !default;\n\n/// If `true`, arrows are added to the next and previous links of pagination.\n/// @type Boolean\n$pagination-arrows: true !default;\n\n/// Adds styles for a pagination container. Apply this to a `<ul>`.\n@mixin pagination-container {\n @include clearfix;\n margin-#{$global-left}: 0;\n margin-bottom: $pagination-margin-bottom;\n\n // List item\n li {\n font-size: $pagination-font-size;\n margin-#{$global-right}: $pagination-item-spacing;\n border-radius: $pagination-radius;\n\n @if $pagination-mobile-items {\n display: inline-block;\n }\n @else {\n display: none;\n\n &:last-child,\n &:first-child {\n display: inline-block;\n }\n\n @include breakpoint(medium) {\n display: inline-block;\n }\n }\n }\n\n // Page links\n a,\n button {\n color: $pagination-item-color;\n display: block;\n padding: $pagination-item-padding;\n border-radius: $global-radius;\n\n &:hover {\n background: $pagination-item-background-hover;\n }\n }\n}\n\n/// Adds styles for the current pagination item. Apply this to an `<a>`.\n@mixin pagination-item-current {\n padding: $pagination-item-padding;\n background: $pagination-item-background-current;\n color: $pagination-item-color-current;\n cursor: default;\n}\n\n/// Adds styles for a disabled pagination item. Apply this to an `<a>`.\n@mixin pagination-item-disabled {\n padding: $pagination-item-padding;\n color: $pagination-item-color-disabled;\n cursor: default;\n\n &:hover {\n background: transparent;\n }\n}\n\n/// Adds styles for an ellipsis for use in a pagination list.\n@mixin pagination-ellipsis {\n content: '…';\n padding: $pagination-item-padding;\n color: $pagination-ellipsis-color;\n}\n\n@mixin foundation-pagination {\n .pagination {\n @include pagination-container;\n\n .current {\n @include pagination-item-current;\n }\n\n .disabled {\n @include pagination-item-disabled;\n }\n\n .ellipsis::after {\n @include pagination-ellipsis;\n }\n }\n\n @if $pagination-arrows {\n .pagination-previous a::before,\n .pagination-previous.disabled::before {\n content: '«';\n display: inline-block;\n margin-#{$global-right}: 0.5rem;\n }\n\n .pagination-next a::after,\n .pagination-next.disabled::after {\n content: '»';\n display: inline-block;\n margin-#{$global-left}: 0.5rem;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group progress-bar\n////\n\n/// Height of a progress bar.\n/// @type Number\n$progress-height: 1rem !default;\n\n/// Background color of a progress bar.\n/// @type Color\n$progress-background: $medium-gray !default;\n\n/// Bottom margin of a progress bar.\n/// @type Number\n$progress-margin-bottom: $global-margin !default;\n\n/// Default color of a progress bar's meter.\n/// @type Color\n$progress-meter-background: $primary-color !default;\n\n/// Default radius of a progress bar.\n/// @type Number\n$progress-radius: $global-radius !default;\n\n/// Adds styles for a progress bar container.\n@mixin progress-container {\n background-color: $progress-background;\n height: $progress-height;\n margin-bottom: $progress-margin-bottom;\n border-radius: $progress-radius;\n}\n\n/// Adds styles for the inner meter of a progress bar.\n@mixin progress-meter {\n position: relative;\n display: block;\n width: 0%;\n height: 100%;\n background-color: $progress-meter-background;\n\n @if has-value($progress-radius) {\n border-radius: $global-radius;\n }\n}\n\n/// Adds styles for text in the progress meter.\n@mixin progress-meter-text {\n @include absolute-center;\n position: absolute;\n margin: 0;\n font-size: 0.75rem;\n font-weight: bold;\n color: $white;\n white-space: nowrap;\n\n @if has-value($progress-radius) {\n border-radius: $progress-radius;\n }\n}\n\n@mixin foundation-progress-bar {\n // Progress bar\n .progress {\n @include progress-container;\n\n @each $name, $color in $foundation-colors {\n &.#{$name} {\n .progress-meter {\n background-color: $color;\n }\n }\n }\n }\n\n // Inner meter\n .progress-meter {\n @include progress-meter;\n }\n\n // Inner meter text\n .progress-meter-text {\n @include progress-meter-text;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n// [TODO] Check how plugin confirms disabled or vertical status\n// [TODO] Check if transition: all; is necessary\n\n////\n/// @group slider\n////\n\n/// Default height of the slider.\n/// @type Number\n$slider-height: 0.5rem !default;\n\n/// Default slider width of a vertical slider.\n/// @type Number\n$slider-width-vertical: $slider-height !default;\n\n/// Default background color of the slider's track.\n/// @type Color\n$slider-background: $light-gray !default;\n\n/// Default color of the active fill color of the slider.\n/// @type Color\n$slider-fill-background: $medium-gray !default;\n\n/// Default height of the handle of the slider.\n/// @type Number\n$slider-handle-height: 1.4rem !default;\n\n/// Default width of the handle of the slider.\n/// @type Number\n$slider-handle-width: 1.4rem !default;\n\n/// Default color of the handle for the slider.\n/// @type Color\n$slider-handle-background: $primary-color !default;\n\n/// Default fade amount of a disabled slider.\n/// @type Number\n$slider-opacity-disabled: 0.25 !default;\n\n/// Default radius for slider.\n/// @type Number\n$slider-radius: $global-radius !default;\n\n/// Transition properties to apply to the slider handle and fill.\n/// @type Transition\n$slider-transition: all 0.2s ease-in-out !default;\n\n/// Adds the general styles for sliders.\n@mixin slider-container {\n position: relative;\n height: $slider-height;\n margin-top: 1.25rem;\n margin-bottom: 2.25rem;\n background-color: $slider-background;\n cursor: pointer;\n user-select: none;\n touch-action: none;\n}\n\n/// Adds the general styles for active fill for sliders.\n@mixin slider-fill {\n position: absolute;\n top: 0;\n left: 0;\n display: inline-block;\n max-width: 100%;\n height: $slider-height;\n background-color: $slider-fill-background;\n transition: $slider-transition;\n\n &.is-dragging {\n transition: all 0s linear;\n }\n}\n\n/// Adds the general styles for the slider handles.\n@mixin slider-handle {\n @include disable-mouse-outline;\n @include vertical-center;\n position: absolute;\n left: 0;\n z-index: 1;\n display: inline-block;\n width: $slider-handle-width;\n height: $slider-handle-height;\n background-color: $slider-handle-background;\n transition: $slider-transition;\n touch-action: manipulation;\n border-radius: $slider-radius;\n\n &:hover {\n background-color: scale-color($slider-handle-background, $lightness: -15%);\n }\n\n &.is-dragging {\n transition: all 0s linear;\n }\n}\n\n@mixin slider-disabled {\n opacity: $slider-opacity-disabled;\n cursor: not-allowed;\n}\n\n@mixin slider-vertical {\n display: inline-block;\n width: $slider-width-vertical;\n height: 12.5rem;\n margin: 0 1.25rem;\n transform: scale(1, -1);\n\n .slider-fill {\n top: 0;\n width: $slider-width-vertical;\n max-height: 100%;\n }\n\n .slider-handle {\n position: absolute;\n top: 0;\n left: 50%;\n width: $slider-handle-height;\n height: $slider-handle-width;\n transform: translateX(-50%);\n }\n}\n\n@mixin foundation-slider {\n // Container\n .slider {\n @include slider-container;\n }\n\n // Fill area\n .slider-fill {\n @include slider-fill;\n }\n\n // Draggable handle\n .slider-handle {\n @include slider-handle;\n }\n\n // Disabled state\n .slider.disabled,\n .slider[disabled] {\n @include slider-disabled;\n }\n\n // Vertical slider\n .slider.vertical {\n @include slider-vertical;\n }\n\n // RTL support\n @if $global-text-direction == rtl {\n .slider:not(.vertical) {\n transform: scale(-1, 1);\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n@mixin foundation-sticky {\n .sticky-container {\n position: relative;\n }\n\n .sticky {\n position: absolute;\n z-index: 0;\n transform: translate3d(0, 0, 0);\n }\n\n .sticky.is-stuck {\n position: fixed;\n z-index: 5;\n\n &.is-at-top {\n top: 0;\n }\n\n &.is-at-bottom {\n bottom: 0;\n }\n }\n\n .sticky.is-anchored {\n position: absolute;\n left: auto;\n right: auto;\n\n &.is-at-bottom {\n bottom: 0;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group reveal\n////\n\n/// Default background color of a modal.\n/// @type Color\n$reveal-background: $white !default;\n\n/// Default width of a modal, with no class applied.\n/// @type Number\n$reveal-width: 600px !default;\n\n/// Default maximum width of a modal.\n/// @type Number\n$reveal-max-width: $global-width !default;\n\n/// Offset from the top of the window when a modal is added.\n/// @type Number\n$reveal-offset: rem-calc(100) !default;\n\n/// Default padding inside a modal.\n/// @type Number\n$reveal-padding: $global-padding !default;\n\n/// Default border around a modal.\n/// @type Number\n$reveal-border: 1px solid $medium-gray !default;\n\n/// Default radius for modal.\n/// @type Number\n$reveal-radius: $global-radius !default;\n\n/// z-index for modals. The overlay uses this value, while the modal itself uses this value plus one.\n/// @type Number\n$reveal-zindex: 1005 !default;\n\n/// Background color of modal overlays.\n/// @type Color\n$reveal-overlay-background: rgba($black, 0.45) !default;\n\n/// Adds styles for a modal overlay.\n/// @param {Color} $background [$reveal-overlay-background] - Background color of the overlay.\n@mixin reveal-overlay {\n display: none;\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: $reveal-zindex;\n background-color: $reveal-overlay-background;\n overflow-y: scroll;\n}\n\n/// Adds base styles for a modal.\n@mixin reveal-modal-base {\n @include disable-mouse-outline;\n display: none;\n z-index: $reveal-zindex + 1;\n padding: $reveal-padding;\n border: $reveal-border;\n margin: $reveal-offset auto 0;\n background-color: $reveal-background;\n border-radius: $reveal-radius;\n\n @include breakpoint(medium) {\n min-height: 0;\n }\n\n // Make sure rows don't have a min-width on them\n .column,\n .columns {\n min-width: 0;\n }\n\n // Strip margins from the last item in the modal\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n/// Adjusts the width of a modal.\n/// @param {Number} $width - Width of the modal. Generally a percentage.\n/// @param {Number} $max-width [$reveal-max-width] - Maximum width of the modal.\n@mixin reveal-modal-width(\n $width: $reveal-width,\n $max-width: $reveal-max-width\n) {\n @include breakpoint(medium) {\n @extend %reveal-centered;\n width: $width;\n max-width: $reveal-max-width;\n }\n}\n\n/// Creates a full-screen modal, which stretches the full width and height of the window.\n@mixin reveal-modal-fullscreen {\n // scss-lint:disable DuplicateProperty\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n height: 100vh;\n min-height: 100vh;\n max-width: none;\n margin-left: 0;\n border: 0;\n}\n\n@mixin foundation-reveal {\n // [TODO] Is this necessary?\n // scss-lint:disable QualifyingElement\n body.is-reveal-open {\n overflow: hidden;\n }\n\n // Overlay\n .reveal-overlay {\n @include reveal-overlay;\n }\n\n // Modal container\n .reveal {\n @include reveal-modal-base;\n @include reveal-modal-width($reveal-width);\n position: absolute;\n overflow-y: auto;\n\n // Placeholder selector for medium-and-up modals\n // Prevents duplicate CSS when defining multiple Reveal sizes\n @include breakpoint(medium) {\n %reveal-centered {\n left: auto;\n right: auto;\n margin: 0 auto;\n }\n }\n\n // Remove padding\n &.collapse {\n padding: 0;\n }\n\n // Sizing classes\n &.tiny { @include reveal-modal-width(30%); }\n &.small { @include reveal-modal-width(50%); }\n &.large { @include reveal-modal-width(90%); }\n\n // Full-screen mode\n &.full {\n @include reveal-modal-fullscreen;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group switch\n////\n\n/// Background color of a switch.\n/// @type Color\n$switch-background: $medium-gray !default;\n\n/// Background active color of a switch.\n/// @type Color\n$switch-background-active: $primary-color !default;\n\n/// Height of a switch, with no class applied.\n/// @type Number\n$switch-height: 2rem !default;\n\n/// Height of a switch with .tiny class.\n/// @type Number\n$switch-height-tiny: 1.5rem !default;\n\n/// Height of a switch with .small class.\n/// @type Number\n$switch-height-small: 1.75rem !default;\n\n/// Height of a switch with .large class.\n/// @type Number\n$switch-height-large: 2.5rem !default;\n\n/// Border radius of the switch\n/// @type Number\n$switch-radius: $global-radius !default;\n\n/// border around a modal.\n/// @type Number\n$switch-margin: $global-margin !default;\n\n/// Background color for the switch container and paddle.\n/// @type Color\n$switch-paddle-background: $white !default;\n\n/// Spacing between a switch paddle and the edge of the body.\n/// @type Number\n$switch-paddle-offset: 0.25rem !default;\n\n/// border radius of the switch paddle\n/// @type Number\n$switch-paddle-radius: $global-radius !default;\n\n/// switch transition.\n/// @type Number\n$switch-paddle-transition: all 0.25s ease-out !default;\n\n// make them variables\n// ask about accessibility on label\n// change class name for text\n\n/// Adds styles for a switch container. Apply this to a container class.\n@mixin switch-container {\n margin-bottom: $switch-margin;\n outline: 0;\n position: relative;\n user-select: none;\n\n // These properties cascade down to the switch text\n color: $white;\n font-weight: bold;\n font-size: rem-calc(14);\n}\n\n/// Adds styles for a switch input. Apply this to an `<input>` within a switch.\n@mixin switch-input {\n opacity: 0;\n position: absolute;\n}\n\n/// Adds styles for the background and paddle of a switch. Apply this to a `<label>` within a switch.\n@mixin switch-paddle {\n background: $switch-background;\n cursor: pointer;\n display: block;\n position: relative;\n width: 4rem;\n height: $switch-height;\n transition: $switch-paddle-transition;\n border-radius: $switch-radius;\n\n // Resetting these <label> presets so type styles cascade down\n color: inherit;\n font-weight: inherit;\n\n // Needed to override specificity\n input + & {\n margin: 0;\n }\n\n // The paddle itself\n &::after {\n background: $switch-paddle-background;\n content: '';\n display: block;\n position: absolute;\n height: 1.5rem;\n #{$global-left}: 0.25rem;\n top: 0.25rem;\n width: 1.5rem;\n transition: $switch-paddle-transition;\n transform: translate3d(0, 0, 0);\n border-radius: $switch-paddle-radius;\n }\n\n // Change the visual style when the switch is active\n input:checked ~ & {\n background: $switch-background-active;\n\n &::after {\n #{$global-left}: 2.25rem;\n }\n }\n\n input:focus ~ & {\n @include disable-mouse-outline;\n }\n}\n\n/// Adds base styles for active/inactive text inside a switch. Apply this to text elements inside the switch `<label>`.\n@mixin switch-text {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/// Adds styles for the active state text within a switch.\n@mixin switch-text-active {\n #{$global-left}: 8%;\n display: none;\n\n input:checked + label > & {\n display: block;\n }\n}\n\n/// Adds styles for the inactive state text within a switch.\n@mixin switch-text-inactive {\n #{$global-right}: 15%;\n\n input:checked + label > & {\n display: none;\n }\n}\n\n/// Changes the size of a switch by modifying the size of the body and paddle. Apply this to a switch container.\n/// @param {Number} $font-size [1rem] - Font size of label text within the switch.\n/// @param {Number} $width [4rem] - Width of the switch body.\n/// @param {Number} $height [2rem] - Height of the switch body.\n/// @param {Number} $paddle-width [1.5rem] - Width of the switch paddle.\n/// @param {Number} $paddle-offset [0.25rem] - Spacing between the switch paddle and the edge of the switch body.\n@mixin switch-size(\n $font-size: 1rem,\n $width: 4rem,\n $height: 2rem,\n $paddle-width: 1.5rem,\n $paddle-offset: 0.25rem\n) {\n $paddle-height: $height - ($paddle-offset * 2);\n $paddle-left-active: $width - $paddle-width - $paddle-offset;\n\n .switch-paddle {\n width: $width;\n height: $height;\n font-size: $font-size;\n }\n\n .switch-paddle::after {\n width: $paddle-width;\n height: $paddle-height;\n }\n\n input:checked ~ .switch-paddle:after {\n #{$global-left}: $paddle-left-active;\n }\n}\n\n@mixin foundation-switch {\n // Container class\n .switch {\n @include switch-container;\n }\n\n // <input> element\n .switch-input {\n @include switch-input;\n }\n\n // <label> element\n .switch-paddle {\n @include switch-paddle;\n }\n\n // Base label text styles\n %switch-text {\n @include switch-text;\n }\n\n // Active label text styles\n .switch-active {\n @extend %switch-text;\n @include switch-text-active;\n }\n\n // Inactive label text styles\n .switch-inactive {\n @extend %switch-text;\n @include switch-text-inactive;\n }\n\n // Switch sizes\n .switch.tiny {\n @include switch-size(rem-calc(10), 3rem, $switch-height-tiny, 1rem, $switch-paddle-offset);\n }\n\n .switch.small {\n @include switch-size(rem-calc(12), 3.5rem, $switch-height-small, 1.25rem, $switch-paddle-offset);\n }\n\n .switch.large {\n @include switch-size(rem-calc(16), 5rem, $switch-height-large, 2rem, $switch-paddle-offset);\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n// scss-lint:disable MergeableSelector, QualifyingElement\n\n////\n/// @group table\n////\n\n/// Default color for table background.\n/// @type Color\n$table-background: $white !default;\n\n/// Default scale for darkening the striped table rows and the table border.\n/// @type Number\n$table-color-scale: 5% !default;\n\n/// Default style for table border.\n/// @type List\n$table-border: 1px solid smart-scale($table-background, $table-color-scale) !default;\n\n/// Default padding for table.\n/// @type Number\n$table-padding: rem-calc(8 10 10) !default;\n\n/// Default scale for darkening the table rows on hover.\n/// @type Number\n$table-hover-scale: 2% !default;\n\n/// Default color of standard rows on hover.\n/// @type List\n$table-row-hover: darken($table-background, $table-hover-scale) !default;\n\n/// Default color of striped rows on hover.\n/// @type List\n$table-row-stripe-hover: darken($table-background, $table-color-scale + $table-hover-scale) !default;\n\n/// Default background color for striped rows.\n/// @type Color\n$table-striped-background: smart-scale($table-background, $table-color-scale) !default;\n\n/// Default value for showing the stripe on rows of the tables, excluding the header and footer If even, the even rows will have a background color. If odd, the odd rows will have a background color. If empty, or anyother value, the table rows will have no striping.\n/// @type Keyoword\n$table-stripe: even !default;\n\n/// Default color for header background.\n/// @type Color\n$table-head-background: smart-scale($table-background, $table-color-scale / 2) !default;\n\n/// Default color for footer background.\n/// @type Color\n$table-foot-background: smart-scale($table-background, $table-color-scale) !default;\n\n/// Default font color for header.\n/// @type Color\n$table-head-font-color: $body-font-color !default;\n\n/// Default value for showing the header when using stacked tables.\n/// @type Boolean\n$show-header-for-stacked: false !default;\n\n@mixin -zf-table-children-styles($stripe: $table-stripe) {\n thead,\n tbody,\n tfoot {\n border: $table-border;\n background-color: $table-background;\n }\n\n // Caption\n caption {\n font-weight: $global-weight-bold;\n padding: $table-padding;\n }\n\n // Table head and foot\n thead,\n tfoot {\n background: $table-head-background;\n color: $table-head-font-color;\n\n // Rows within head and foot\n tr {\n background: transparent;\n }\n\n // Cells within head and foot\n th,\n td {\n padding: $table-padding;\n font-weight: $global-weight-bold;\n text-align: #{$global-left};\n }\n }\n\n // Table rows\n tbody {\n tr {\n // If stripe is set to even, darken the even rows.\n @if $stripe == even {\n &:nth-child(even) {\n background-color: $table-striped-background;\n }\n }\n\n // If stripe is set to odd, darken the odd rows.\n @else if $stripe == odd {\n &:nth-child(odd) {\n background-color: $table-striped-background;\n }\n }\n }\n\n th,\n td {\n padding: $table-padding;\n }\n }\n}\n\n/// Adds the general styles for tables.\n/// @param {Keyword} $stripe [$table-stripe] - Uses keywords even, odd, or none to darken rows of the table. The default value is even.\n@mixin table(\n $stripe: $table-stripe,\n $nest: false\n) {\n width: 100%;\n margin-bottom: $global-margin;\n border-radius: $global-radius;\n\n @if $nest {\n @include -zf-table-children-styles($stripe);\n }\n @else {\n @at-root {\n @include -zf-table-children-styles($stripe);\n }\n }\n}\n\n/// Adds the ability to horizontally scroll the table when the content overflows horizontally.\n@mixin table-scroll {\n display: block;\n width: 100%;\n overflow-x: auto;\n}\n\n/// Slightly darkens the table rows on hover.\n@mixin table-hover {\n tr {\n //Darkens the non-striped table rows on hover.\n &:hover {\n background-color: $table-row-hover;\n }\n\n //Darkens the even striped table rows.\n @if($table-stripe == even) {\n &:nth-of-type(even):hover {\n background-color: $table-row-stripe-hover;\n }\n }\n\n //Darkens the odd striped table rows.\n @elseif($table-stripe == odd) {\n &:nth-of-type(odd):hover {\n background-color: $table-row-stripe-hover;\n }\n }\n }\n}\n\n/// Adds styles for a stacked table. Useful for small-screen layouts.\n/// @param {Boolean} $header [$show-header-for-stacked] - Show the first th of header when stacked.\n@mixin table-stack($header: $show-header-for-stacked) {\n @if $header {\n thead {\n th:first-child {\n display: block;\n }\n\n th {\n display: none;\n }\n }\n }\n @else {\n thead {\n display: none;\n }\n }\n\n tfoot {\n display: none;\n }\n\n tr,\n th,\n td {\n display: block;\n }\n\n td {\n border-top: 0;\n }\n}\n\n@mixin foundation-table($nest: false) {\n table {\n @include table($nest: $nest);\n }\n\n table.stack {\n @include breakpoint(medium down) {\n @include table-stack;\n }\n }\n\n table.scroll {\n @include table-scroll;\n }\n\n table.hover {\n @include table-hover;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group functions\n////\n\n/// Checks the lightness of `$color`, and if it passes the `$threshold` of lightness, it returns the `$yes` color. Otherwise, it returns the `$no` color. Use this function to dynamically output a foreground color based on a given background color.\n///\n/// @param {Color} $color - Color to check the lightness of.\n/// @param {Color} $yes [$black] - Color to return if `$color` is light.\n/// @param {Color} $no [$white] - Color to return if `$color` is dark.\n/// @param {Percentage} $threshold [60%] - Threshold of lightness to check against.\n///\n/// @returns {Color} The $yes color or $no color.\n@function foreground($color, $yes: $black, $no: $white, $threshold: 60%) {\n @if $color == transparent {\n $color: $body-background;\n }\n @if (lightness($color) > $threshold) {\n @return $yes;\n }\n @else {\n @return $no;\n }\n}\n\n/// Scales a color to be lighter if it's light, or darker if it's dark. Use this function to tint a color appropriate to its lightness.\n///\n/// @param {Color} $color - Color to scale.\n/// @param {Percentage} $scale [5%] - Amount to scale up or down.\n/// @param {Percentage} $threshold [40%] - Threshold of lightness to check against.\n///\n/// @returns {Color} A scaled color.\n@function smart-scale($color, $scale: 5%, $threshold: 40%) {\n @if lightness($color) > $threshold {\n $scale: -$scale;\n }\n @return scale-color($color, $lightness: $scale);\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group tabs\n////\n\n/// Default margin of the tab bar.\n/// @type Number\n$tab-margin: 0 !default;\n\n/// Default background color of a tab bar.\n/// @type Color\n$tab-background: $white !default;\n\n/// active background color of a tab bar.\n/// @type Color\n$tab-background-active: $light-gray !default;\n\n/// Default border color of tab content.\n/// @type Color\n$tab-border: $light-gray !default;\n\n/// Default text color for items in a Menu.\n/// @type Color\n$tab-item-color: foreground($tab-background, $primary-color) !default;\n\n/// Default background color on hover for items in a Menu.\n$tab-item-background-hover: $white !default;\n\n/// Default padding of a a tab item.\n/// @type Number\n$tab-item-padding: 1.25rem 1.5rem !default;\n\n/// Maximum number of `expand-n` classes to include in the CSS.\n/// @type Number\n$tab-expand-max: 6 !default;\n\n/// Default background color of tab content.\n/// @type Color\n$tab-content-background: $white !default;\n\n/// Default border color of tab content.\n/// @type Color\n$tab-content-border: $light-gray !default;\n\n/// Default text color of tab content.\n/// @type Color\n$tab-content-color: foreground($tab-background, $primary-color) !default;\n\n/// Default padding for tab content.\n/// @type Number | List\n$tab-content-padding: 1rem !default;\n\n/// Adds styles for a tab container. Apply this to a `<ul>`.\n@mixin tabs-container {\n @include clearfix;\n margin: $tab-margin;\n list-style-type: none;\n background: $tab-background;\n border: 1px solid $tab-content-border;\n}\n\n/// Augments a tab container to have vertical tabs. Use this in conjunction with `tabs-container()`.\n@mixin tabs-container-vertical {\n > li {\n width: auto;\n float: none;\n display: block;\n }\n}\n\n/// Adds styles for the links within a tab container. Apply this to the `<li>` elements inside a tab container.\n@mixin tabs-title {\n float: #{$global-left};\n\n > a {\n display: block;\n padding: $tab-item-padding;\n line-height: 1;\n font-size: 12px;\n color: $tab-item-color;\n\n &:hover {\n background: $tab-item-background-hover;\n }\n\n &:focus,\n &[aria-selected='true'] {\n background: $tab-background-active;\n }\n }\n}\n\n/// Adds styles for the wrapper that surrounds a tab group's content panes.\n@mixin tabs-content {\n background: $tab-content-background;\n transition: all 0.5s ease;\n border: 1px solid $tab-content-border;\n border-top: 0;\n}\n\n/// Augments a tab content container to have a vertical style, by shifting the border around. Use this in conjunction with `tabs-content()`.\n@mixin tabs-content-vertical {\n border: 1px solid $tab-content-border;\n border-#{$global-left}: 0;\n}\n\n/// Adds styles for an individual tab content panel within the tab content container.\n@mixin tabs-panel {\n display: none;\n padding: $tab-content-padding;\n\n &.is-active {\n display: block;\n }\n}\n\n@mixin foundation-tabs {\n .tabs {\n @include tabs-container;\n }\n\n // Vertical\n .tabs.vertical {\n @include tabs-container-vertical;\n }\n\n // Simple\n .tabs.simple {\n > li > a {\n padding: 0;\n\n &:hover {\n background: transparent;\n }\n }\n }\n\n // Primary color\n .tabs.primary {\n background: $primary-color;\n\n > li > a {\n color: foreground($primary-color);\n\n &:hover,\n &:focus {\n background: smart-scale($primary-color);\n }\n }\n }\n\n .tabs-title {\n @include tabs-title;\n }\n\n .tabs-content {\n @include tabs-content;\n }\n\n .tabs-content.vertical {\n @include tabs-content-vertical;\n }\n\n .tabs-panel {\n @include tabs-panel;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group thumbnail\n////\n\n/// Border around thumbnail images.\n/// @type Border\n$thumbnail-border: solid 4px $white !default;\n\n/// Bottom margin for thumbnail images.\n/// @type Length\n$thumbnail-margin-bottom: $global-margin !default;\n\n/// Box shadow under thumbnail images.\n/// @type Shadow\n$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2) !default;\n\n/// Box shadow under thumbnail images.\n/// @type Shadow\n$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5) !default;\n\n/// Transition proprties for thumbnail images.\n/// @type Transition\n$thumbnail-transition: box-shadow 200ms ease-out !default;\n\n/// Default radius for thumbnail images.\n/// @type Number\n$thumbnail-radius: $global-radius !default;\n\n/// Adds thumbnail styles to an element.\n@mixin thumbnail {\n border: $thumbnail-border;\n box-shadow: $thumbnail-shadow;\n display: inline-block;\n line-height: 0;\n max-width: 100%;\n transition: $thumbnail-transition;\n border-radius: $thumbnail-radius;\n margin-bottom: $thumbnail-margin-bottom;\n\n &:hover,\n &:focus {\n box-shadow: $thumbnail-shadow-hover;\n }\n}\n\n@mixin foundation-thumbnail {\n .thumbnail {\n @include thumbnail;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group title-bar\n////\n\n/// Background color of a title bar.\n/// @type Color\n$titlebar-background: $black !default;\n\n/// Color of text inside a title bar.\n/// @type Color\n$titlebar-color: $white !default;\n\n/// Padding inside a title bar.\n/// @type Length\n$titlebar-padding: 0.5rem !default;\n\n/// Font weight of text inside a title bar.\n/// @type Weight\n$titlebar-text-font-weight: bold !default;\n\n/// Color of menu icons inside a title bar.\n/// @type Color\n$titlebar-icon-color: $white !default;\n\n/// Color of menu icons inside a title bar on hover.\n/// @type Color\n$titlebar-icon-color-hover: $medium-gray !default;\n\n/// Spacing between the menu icon and text inside a title bar.\n/// @type Length\n$titlebar-icon-spacing: 0.25rem !default;\n\n@mixin foundation-title-bar {\n .title-bar {\n @include clearfix;\n background: $titlebar-background;\n color: $titlebar-color;\n padding: $titlebar-padding;\n\n .menu-icon {\n margin-#{$global-left}: $titlebar-icon-spacing;\n margin-#{$global-right}: $titlebar-padding;\n }\n }\n\n .title-bar-left {\n float: left;\n }\n\n .title-bar-right {\n float: right;\n text-align: right;\n }\n\n .title-bar-title {\n font-weight: $titlebar-text-font-weight;\n vertical-align: middle;\n display: inline-block;\n }\n\n .menu-icon {\n @include hamburger($color: $titlebar-icon-color, $color-hover: $titlebar-icon-color-hover);\n }\n\n .menu-icon.dark {\n @include hamburger;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group tooltip\n////\n\n/// Default font weight of the defined term.\n/// @type Keyword | Number\n$has-tip-font-weight: $global-weight-bold !default;\n\n/// Default border bottom of the defined term.\n/// @type List\n$has-tip-border-bottom: dotted 1px $dark-gray !default;\n\n/// Default color of the tooltip background.\n/// @type Color\n$tooltip-background-color: $black !default;\n\n/// Default color of the tooltip font.\n/// @type Color\n$tooltip-color: $white !default;\n\n/// Default padding of the tooltip background.\n/// @type Number\n$tooltip-padding: 0.75rem !default;\n\n/// Default font size of the tooltip text. By default, we recommend a smaller font size than the body copy.\n/// @type Number\n$tooltip-font-size: $small-font-size !default;\n\n/// Default pip width for tooltips.\n/// @type Number\n$tooltip-pip-width: 0.75rem !default;\n\n/// Default pip height for tooltips. This is helpful for calculating the distance of the tooltip from the tooltip word.\n/// @type Number\n$tooltip-pip-height: $tooltip-pip-width * 0.866 !default;\n\n/// Default pip offset for tooltips. This controls how far the pip is indented from the left edge of the tooltip.\n/// @type Number\n$tooltip-pip-offset: 1.25rem !default;\n\n/// Default radius for tooltips.\n/// @type Number\n$tooltip-radius: $global-radius !default;\n\n@mixin has-tip {\n border-bottom: $has-tip-border-bottom;\n font-weight: $has-tip-font-weight;\n position: relative;\n display: inline-block;\n cursor: help;\n}\n\n@mixin tooltip {\n background-color: $tooltip-background-color;\n color: $tooltip-color;\n font-size: $tooltip-font-size;\n padding: $tooltip-padding;\n position: absolute;\n z-index: 10;\n top: calc(100% + #{$tooltip-pip-height});\n max-width: 10rem !important;\n border-radius: $tooltip-radius;\n\n &::before {\n @include css-triangle($tooltip-pip-width, $tooltip-background-color, up);\n bottom: 100%;\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n }\n\n &.top::before {\n @include css-triangle($tooltip-pip-width, $tooltip-background-color, down);\n top: 100%;\n bottom: auto;\n }\n\n &.left::before {\n @include css-triangle($tooltip-pip-width, $tooltip-background-color, right);\n bottom: auto;\n left: 100%;\n top: 50%;\n transform: translateY(-50%);\n }\n\n &.right::before {\n @include css-triangle($tooltip-pip-width, $tooltip-background-color, left);\n bottom: auto;\n left: auto;\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n }\n}\n\n@mixin foundation-tooltip {\n .has-tip {\n @include has-tip;\n }\n\n .tooltip {\n @include tooltip;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group top-bar\n////\n\n/// Padding for the top bar.\n/// @type Number\n$topbar-padding: 0.5rem !default;\n\n/// Background color for the top bar. This color also cascades to menus within the top bar.\n/// @type Color\n$topbar-background: $light-gray !default;\n\n/// Spacing for the top bar title.\n/// @type Number\n$topbar-title-spacing: 1rem !default;\n\n/// Width of `<input>` elements inside the top bar.\n/// @type Number\n$topbar-input-width: 200px !default;\n\n/// Adds styles for a top bar container.\n@mixin top-bar-container {\n @include clearfix;\n padding: $topbar-padding;\n\n &,\n ul {\n background-color: $topbar-background;\n }\n\n input {\n width: $topbar-input-width;\n margin-#{$global-right}: 1rem;\n }\n\n // scss-lint:disable QualifyingElement\n input.button {\n width: auto;\n }\n}\n\n/// makes sections stacked\n@mixin top-bar-stacked {\n // Sub-sections\n .top-bar-title {\n width: 100%;\n }\n\n .top-bar-right {\n width: 100%;\n }\n\n .top-bar-left {\n width: 100%;\n }\n}\n\n@mixin foundation-top-bar {\n // Top bar container\n .top-bar {\n @include top-bar-container;\n }\n\n // Generate classes for stacking on each screen size (defined in $breakpoint-classes)\n @each $size in $breakpoint-classes {\n .stacked-for-#{$size} {\n @include breakpoint($size down) {\n @include top-bar-stacked;\n }\n }\n }\n\n // Stack on small screens as default\n @include breakpoint(small only) {\n @include top-bar-stacked;\n }\n\n // Sub-sections\n .top-bar-title {\n float: left;\n margin-right: $topbar-title-spacing;\n }\n .top-bar-left {\n float: left;\n }\n\n .top-bar-right {\n float: right;\n }\n}\n"],"sourceRoot":"/source/"}
\ No newline at end of file
diff --git a/stylesheets/foundation.css b/stylesheets/foundation.css
--- a/stylesheets/foundation.css
+++ b/stylesheets/foundation.css
@@ -1,1247 +1,3773 @@
-/* Requires: normalize.css */
-/* Global Reset & Standards ---------------------- */
-*, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
+@charset "UTF-8";
+/**
+ * Foundation for Sites by ZURB
+ * Version 6.1.2
+ * foundation.zurb.com
+ * Licensed under MIT Open Source
+ */
+.slide-in-down.mui-enter, .slide-in-left.mui-enter, .slide-in-up.mui-enter, .slide-in-right.mui-enter, .slide-out-down.mui-leave, .slide-out-right.mui-leave, .slide-out-up.mui-leave, .slide-out-left.mui-leave, .fade-in.mui-enter, .fade-out.mui-leave, .hinge-in-from-top.mui-enter, .hinge-in-from-right.mui-enter, .hinge-in-from-bottom.mui-enter, .hinge-in-from-left.mui-enter, .hinge-in-from-middle-x.mui-enter, .hinge-in-from-middle-y.mui-enter, .hinge-out-from-top.mui-leave, .hinge-out-from-right.mui-leave, .hinge-out-from-bottom.mui-leave, .hinge-out-from-left.mui-leave, .hinge-out-from-middle-x.mui-leave, .hinge-out-from-middle-y.mui-leave, .scale-in-up.mui-enter, .scale-in-down.mui-enter, .scale-out-up.mui-leave, .scale-out-down.mui-leave, .spin-in.mui-enter, .spin-out.mui-leave, .spin-in-ccw.mui-enter, .spin-out-ccw.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear; }
+
+.slide-in-down.mui-enter {
+ -webkit-transform: translateY(-100%);
+ -ms-transform: translateY(-100%);
+ transform: translateY(-100%);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-down.mui-enter.mui-enter-active {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0); }
+
+.slide-in-left.mui-enter {
+ -webkit-transform: translateX(-100%);
+ -ms-transform: translateX(-100%);
+ transform: translateX(-100%);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-left.mui-enter.mui-enter-active {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0); }
+
+.slide-in-up.mui-enter {
+ -webkit-transform: translateY(100%);
+ -ms-transform: translateY(100%);
+ transform: translateY(100%);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-up.mui-enter.mui-enter-active {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0); }
+
+.slide-in-right.mui-enter {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-right.mui-enter.mui-enter-active {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0); }
+
+.slide-out-down.mui-leave {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-down.mui-leave.mui-leave-active {
+ -webkit-transform: translateY(-100%);
+ -ms-transform: translateY(-100%);
+ transform: translateY(-100%); }
+
+.slide-out-right.mui-leave {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-right.mui-leave.mui-leave-active {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%); }
+
+.slide-out-up.mui-leave {
+ -webkit-transform: translateY(0);
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-up.mui-leave.mui-leave-active {
+ -webkit-transform: translateY(-100%);
+ -ms-transform: translateY(-100%);
+ transform: translateY(-100%); }
+
+.slide-out-left.mui-leave {
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-left.mui-leave.mui-leave-active {
+ -webkit-transform: translateX(-100%);
+ -ms-transform: translateX(-100%);
+ transform: translateX(-100%); }
+
+.fade-in.mui-enter {
+ opacity: 0;
+ transition-property: opacity; }
+
+.fade-in.mui-enter.mui-enter-active {
+ opacity: 1; }
+
+.fade-out.mui-leave {
+ opacity: 1;
+ transition-property: opacity; }
+
+.fade-out.mui-leave.mui-leave-active {
+ opacity: 0; }
+
+.hinge-in-from-top.mui-enter {
+ -webkit-transform: perspective(2000px) rotateX(-90deg);
+ transform: perspective(2000px) rotateX(-90deg);
+ -webkit-transform-origin: top;
+ -ms-transform-origin: top;
+ transform-origin: top;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-top.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-right.mui-enter {
+ -webkit-transform: perspective(2000px) rotateY(-90deg);
+ transform: perspective(2000px) rotateY(-90deg);
+ -webkit-transform-origin: right;
+ -ms-transform-origin: right;
+ transform-origin: right;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-right.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-bottom.mui-enter {
+ -webkit-transform: perspective(2000px) rotateX(90deg);
+ transform: perspective(2000px) rotateX(90deg);
+ -webkit-transform-origin: bottom;
+ -ms-transform-origin: bottom;
+ transform-origin: bottom;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-bottom.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-left.mui-enter {
+ -webkit-transform: perspective(2000px) rotateY(90deg);
+ transform: perspective(2000px) rotateY(90deg);
+ -webkit-transform-origin: left;
+ -ms-transform-origin: left;
+ transform-origin: left;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-left.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-middle-x.mui-enter {
+ -webkit-transform: perspective(2000px) rotateX(-90deg);
+ transform: perspective(2000px) rotateX(-90deg);
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-middle-x.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-middle-y.mui-enter {
+ -webkit-transform: perspective(2000px) rotateY(-90deg);
+ transform: perspective(2000px) rotateY(-90deg);
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-middle-y.mui-enter.mui-enter-active {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-out-from-top.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: top;
+ -ms-transform-origin: top;
+ transform-origin: top;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-top.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateX(-90deg);
+ transform: perspective(2000px) rotateX(-90deg);
+ opacity: 0; }
+
+.hinge-out-from-right.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: right;
+ -ms-transform-origin: right;
+ transform-origin: right;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-right.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateY(-90deg);
+ transform: perspective(2000px) rotateY(-90deg);
+ opacity: 0; }
+
+.hinge-out-from-bottom.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: bottom;
+ -ms-transform-origin: bottom;
+ transform-origin: bottom;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-bottom.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateX(90deg);
+ transform: perspective(2000px) rotateX(90deg);
+ opacity: 0; }
+
+.hinge-out-from-left.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: left;
+ -ms-transform-origin: left;
+ transform-origin: left;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-left.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateY(90deg);
+ transform: perspective(2000px) rotateY(90deg);
+ opacity: 0; }
+
+.hinge-out-from-middle-x.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-middle-x.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateX(-90deg);
+ transform: perspective(2000px) rotateX(-90deg);
+ opacity: 0; }
+
+.hinge-out-from-middle-y.mui-leave {
+ -webkit-transform: perspective(2000px) rotate(0deg);
+ transform: perspective(2000px) rotate(0deg);
+ -webkit-transform-origin: center;
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-middle-y.mui-leave.mui-leave-active {
+ -webkit-transform: perspective(2000px) rotateY(-90deg);
+ transform: perspective(2000px) rotateY(-90deg);
+ opacity: 0; }
+
+.scale-in-up.mui-enter {
+ -webkit-transform: scale(0.5);
+ -ms-transform: scale(0.5);
+ transform: scale(0.5);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.scale-in-up.mui-enter.mui-enter-active {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ opacity: 1; }
+
+.scale-in-down.mui-enter {
+ -webkit-transform: scale(1.5);
+ -ms-transform: scale(1.5);
+ transform: scale(1.5);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.scale-in-down.mui-enter.mui-enter-active {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ opacity: 1; }
+
+.scale-out-up.mui-leave {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.scale-out-up.mui-leave.mui-leave-active {
+ -webkit-transform: scale(1.5);
+ -ms-transform: scale(1.5);
+ transform: scale(1.5);
+ opacity: 0; }
+
+.scale-out-down.mui-leave {
+ -webkit-transform: scale(1);
+ -ms-transform: scale(1);
+ transform: scale(1);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.scale-out-down.mui-leave.mui-leave-active {
+ -webkit-transform: scale(0.5);
+ -ms-transform: scale(0.5);
+ transform: scale(0.5);
+ opacity: 0; }
+
+.spin-in.mui-enter {
+ -webkit-transform: rotate(-0.75turn);
+ -ms-transform: rotate(-0.75turn);
+ transform: rotate(-0.75turn);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.spin-in.mui-enter.mui-enter-active {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1; }
+
+.spin-out.mui-leave {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.spin-out.mui-leave.mui-leave-active {
+ -webkit-transform: rotate(0.75turn);
+ -ms-transform: rotate(0.75turn);
+ transform: rotate(0.75turn);
+ opacity: 0; }
+
+.spin-in-ccw.mui-enter {
+ -webkit-transform: rotate(0.75turn);
+ -ms-transform: rotate(0.75turn);
+ transform: rotate(0.75turn);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.spin-in-ccw.mui-enter.mui-enter-active {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1; }
+
+.spin-out-ccw.mui-leave {
+ -webkit-transform: rotate(0);
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ transition-property: -webkit-transform, opacity;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.spin-out-ccw.mui-leave.mui-leave-active {
+ -webkit-transform: rotate(-0.75turn);
+ -ms-transform: rotate(-0.75turn);
+ transform: rotate(-0.75turn);
+ opacity: 0; }
+
+.slow {
+ transition-duration: 750ms !important; }
+
+.fast {
+ transition-duration: 250ms !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(0.485, 0.155, 0.24, 1.245) !important; }
+
+.bounce-out {
+ transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }
+
+.bounce-in-out {
+ transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }
+
+.short-delay {
+ transition-delay: 300ms !important; }
+
+.long-delay {
+ transition-delay: 700ms !important; }
+
+.shake {
+ -webkit-animation-name: shake-7;
+ animation-name: shake-7; }
+
+@-webkit-keyframes shake-7 {
+ 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% {
+ -webkit-transform: translateX(7%);
+ transform: translateX(7%); }
+ 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% {
+ -webkit-transform: translateX(-7%);
+ transform: translateX(-7%); } }
+
+@keyframes shake-7 {
+ 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% {
+ -webkit-transform: translateX(7%);
+ transform: translateX(7%); }
+ 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% {
+ -webkit-transform: translateX(-7%);
+ transform: translateX(-7%); } }
+
+.spin-cw {
+ -webkit-animation-name: spin-cw-1turn;
+ animation-name: spin-cw-1turn; }
+
+@-webkit-keyframes spin-cw-1turn {
+ 0% {
+ -webkit-transform: rotate(-1turn);
+ transform: rotate(-1turn); }
+ 100% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); } }
+
+@keyframes spin-cw-1turn {
+ 0% {
+ -webkit-transform: rotate(-1turn);
+ transform: rotate(-1turn); }
+ 100% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); } }
+
+.spin-ccw {
+ -webkit-animation-name: spin-cw-1turn;
+ animation-name: spin-cw-1turn; }
+
+@keyframes spin-cw-1turn {
+ 0% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); }
+ 100% {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn); } }
+
+.wiggle {
+ -webkit-animation-name: wiggle-7deg;
+ animation-name: wiggle-7deg; }
+
+@-webkit-keyframes wiggle-7deg {
+ 40%, 50%, 60% {
+ -webkit-transform: rotate(7deg);
+ transform: rotate(7deg); }
+ 35%, 45%, 55%, 65% {
+ -webkit-transform: rotate(-7deg);
+ transform: rotate(-7deg); }
+ 0%, 30%, 70%, 100% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); } }
+
+@keyframes wiggle-7deg {
+ 40%, 50%, 60% {
+ -webkit-transform: rotate(7deg);
+ transform: rotate(7deg); }
+ 35%, 45%, 55%, 65% {
+ -webkit-transform: rotate(-7deg);
+ transform: rotate(-7deg); }
+ 0%, 30%, 70%, 100% {
+ -webkit-transform: rotate(0);
+ transform: rotate(0); } }
+
+.infinite {
+ -webkit-animation-iteration-count: infinite;
+ animation-iteration-count: infinite; }
+
+.slow {
+ -webkit-animation-duration: 750ms !important;
+ animation-duration: 750ms !important; }
+
+.fast {
+ -webkit-animation-duration: 250ms !important;
+ animation-duration: 250ms !important; }
+
+.linear {
+ -webkit-animation-timing-function: linear !important;
+ animation-timing-function: linear !important; }
+
+.ease {
+ -webkit-animation-timing-function: ease !important;
+ animation-timing-function: ease !important; }
+
+.ease-in {
+ -webkit-animation-timing-function: ease-in !important;
+ animation-timing-function: ease-in !important; }
+
+.ease-out {
+ -webkit-animation-timing-function: ease-out !important;
+ animation-timing-function: ease-out !important; }
+
+.ease-in-out {
+ -webkit-animation-timing-function: ease-in-out !important;
+ animation-timing-function: ease-in-out !important; }
+
+.bounce-in {
+ -webkit-animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important;
+ animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; }
+
+.bounce-out {
+ -webkit-animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important;
+ animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }
+
+.bounce-in-out {
+ -webkit-animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important;
+ animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }
+
+.short-delay {
+ -webkit-animation-delay: 300ms !important;
+ animation-delay: 300ms !important; }
+
+.long-delay {
+ -webkit-animation-delay: 700ms !important;
+ animation-delay: 700ms !important; }
+
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS and IE text size adjust after device orientation change,
+ * without disabling user zoom.
+ */
+html {
+ font-family: sans-serif;
+ /* 1 */
+ -ms-text-size-adjust: 100%;
+ /* 2 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */ }
+
+/**
+ * Remove default margin.
+ */
+body {
+ margin: 0; }
+
+/* HTML5 display definitions
+ ========================================================================== */
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block; }
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ /* 1 */
+ vertical-align: baseline;
+ /* 2 */ }
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+audio:not([controls]) {
+ display: none;
+ height: 0; }
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
+ */
+[hidden],
+template {
+ display: none; }
+
+/* Links
+ ========================================================================== */
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+a {
+ background-color: transparent; }
+
+/**
+ * Improve readability of focused elements when they are also in an
+ * active/hover state.
+ */
+a:active,
+a:hover {
+ outline: 0; }
+
+/* Text-level semantics
+ ========================================================================== */
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+abbr[title] {
+ border-bottom: 1px dotted; }
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+b,
+strong {
+ font-weight: bold; }
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+dfn {
+ font-style: italic; }
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0; }
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+mark {
+ background: #ff0;
+ color: #000; }
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+small {
+ font-size: 80%; }
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline; }
+
+sup {
+ top: -0.5em; }
+
+sub {
+ bottom: -0.25em; }
+
+/* Embedded content
+ ========================================================================== */
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+img {
+ border: 0; }
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+svg:not(:root) {
+ overflow: hidden; }
+
+/* Grouping content
+ ========================================================================== */
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+figure {
+ margin: 1em 40px; }
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+hr {
+ box-sizing: content-box;
+ height: 0; }
+
+/**
+ * Contain overflow in all browsers.
+ */
+pre {
+ overflow: auto; }
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em; }
+
+/* Forms
+ ========================================================================== */
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+ margin: 0;
+ /* 3 */ }
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+button {
+ overflow: visible; }
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+button,
+select {
+ text-transform: none; }
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ /* 2 */
+ cursor: pointer;
+ /* 3 */ }
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+button[disabled],
+html input[disabled] {
+ cursor: default; }
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0; }
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+input {
+ line-height: normal; }
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */ }
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto; }
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
+ */
+input[type="search"] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ box-sizing: content-box;
+ /* 2 */ }
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none; }
+
+/**
+ * Define consistent border, margin, and padding.
+ * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.
+ */
+/* fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+ } */
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+legend {
+ border: 0;
+ /* 1 */
+ padding: 0;
+ /* 2 */ }
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+textarea {
+ overflow: auto; }
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+optgroup {
+ font-weight: bold; }
+
+/* Tables
+ ========================================================================== */
+/**
+ * Remove most spacing between table cells.
+ */
+table {
+ border-collapse: collapse;
+ border-spacing: 0; }
+
+td,
+th {
+ padding: 0; }
+
+.foundation-mq {
+ font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; }
+
+html {
+ font-size: 100%;
+ box-sizing: border-box; }
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit; }
+
+body {
+ padding: 0;
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
+ font-weight: normal;
+ line-height: 1.5;
+ color: #222222;
+ background: #fefefe;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale; }
+
+img {
+ max-width: 100%;
+ height: auto;
+ -ms-interpolation-mode: bicubic;
+ display: inline-block;
+ vertical-align: middle; }
+
+textarea {
+ height: auto;
+ min-height: 50px;
+ border-radius: 3px; }
+
+select {
+ width: 100%;
+ border-radius: 3px; }
+
+#map_canvas img,
+#map_canvas embed,
+#map_canvas object,
+.map_canvas img,
+.map_canvas embed,
+.map_canvas object,
+.mqa-display img,
+.mqa-display embed,
+.mqa-display object {
+ max-width: none !important; }
+
+button {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ background: transparent;
+ padding: 0;
+ border: 0;
+ border-radius: 3px;
+ line-height: 1; }
+
+.is-visible {
+ display: block !important; }
+
+.is-hidden {
+ display: none !important; }
+
+.row {
+ max-width: 62.5rem;
+ margin-left: auto;
+ margin-right: auto; }
+ .row::before, .row::after {
+ content: ' ';
+ display: table; }
+ .row::after {
+ clear: both; }
+ .row.collapse > .column, .row.collapse > .columns {
+ padding-left: 0;
+ padding-right: 0; }
+ .row .row {
+ margin-left: -0.625rem;
+ margin-right: -0.625rem; }
+ @media screen and (min-width: 40em) {
+ .row .row {
+ margin-left: -0.9375rem;
+ margin-right: -0.9375rem; } }
+ .row .row.collapse {
+ margin-left: 0;
+ margin-right: 0; }
+ .row.expanded {
+ max-width: none; }
+ .row.expanded .row {
+ margin-left: auto;
+ margin-right: auto; }
+
+.column, .columns {
+ padding-left: 0.625rem;
+ padding-right: 0.625rem;
+ width: 100%;
+ float: left; }
+ @media screen and (min-width: 40em) {
+ .column, .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.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 {
+ padding-left: 0;
+ padding-right: 0;
+ margin-left: 0;
+ margin-right: 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%; }
-html { font-size: 62.5%; }
+.small-6 {
+ width: 50%; }
-body { background: white; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; font-size: 14px; line-height: 1; color: #222222; position: relative; -webkit-font-smoothing: antialiased; }
+.small-push-6 {
+ position: relative;
+ left: 50%; }
-/* Links ---------------------- */
-a img { border: none; }
+.small-pull-6 {
+ position: relative;
+ left: -50%; }
-a { color: #2f343b; text-decoration: none; line-height: inherit; }
+.small-offset-5 {
+ margin-left: 41.66667%; }
-a:hover { color: #24272d; }
+.small-7 {
+ width: 58.33333%; }
-a:focus { color: #24272d; }
+.small-push-7 {
+ position: relative;
+ left: 58.33333%; }
-p a, p a:visited { line-height: inherit; }
+.small-pull-7 {
+ position: relative;
+ left: -58.33333%; }
-/* Misc ---------------------- */
-.left { float: left; }
+.small-offset-6 {
+ margin-left: 50%; }
-.right { float: right; }
+.small-8 {
+ width: 66.66667%; }
-.text-left { text-align: left; }
-
-.text-right { text-align: right; }
-
-.text-center { text-align: center; }
-
-.hide { display: none; }
-
-.hide-override { display: none !important; }
-
-.highlight { background: #e3cda4; }
-
-#googlemap img, object, embed { max-width: none; }
-
-#map_canvas embed { max-width: none; }
-
-#map_canvas img { max-width: none; }
-
-#map_canvas object { max-width: none; }
-
-/* Reset for strange margins by default on <figure> elements */
-figure { margin: 0; }
-
-/* Base Type Styles Using Modular Scale ---------------------- */
-body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, p, blockquote, th, td { margin: 0; padding: 0; font-size: 14px; direction: ltr; }
-
-p { font-family: inherit; font-weight: normal; font-size: 14px; line-height: 1.6; margin-bottom: 17px; }
-p.lead { font-size: 17.5px; line-height: 1.6; margin-bottom: 17px; }
-
-aside p { font-size: 13px; line-height: 1.35; font-style: italic; }
-
-h1, h2, h3, h4, h5, h6 { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: bold; font-style: normal; color: #222222; text-rendering: optimizeLegibility; line-height: 1.1; margin-bottom: 14px; margin-top: 14px; }
-h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-size: 60%; color: #6f6f6f; line-height: 0; }
-
-h1 { font-size: 44px; }
-
-h2 { font-size: 37px; }
-
-h3 { font-size: 27px; }
-
-h4 { font-size: 23px; }
-
-h5 { font-size: 17px; }
-
-h6 { font-size: 14px; }
-
-hr { border: solid #ddd; border-width: 1px 0 0; clear: both; margin: 22px 0 21px; height: 0; }
-
-.subheader { line-height: 1.3; color: #6f6f6f; font-weight: 300; margin-bottom: 17px; }
-
-em, i { font-style: italic; line-height: inherit; }
-
-strong, b { font-weight: bold; line-height: inherit; }
-
-small { font-size: 60%; line-height: inherit; }
-
-code { font-weight: bold; background: #e3cda4; }
-
-/* Lists ---------------------- */
-ul, ol, dl { font-size: 14px; line-height: 1.6; margin-bottom: 17px; list-style-position: outside; }
-
-ul li ul, ul li ol { margin-left: 20px; margin-bottom: 0; }
-ul.square, ul.circle, ul.disc { margin-left: 17px; }
-ul.square { list-style-type: square; }
-ul.square li ul { list-style: inherit; }
-ul.circle { list-style-type: circle; }
-ul.circle li ul { list-style: inherit; }
-ul.disc { list-style-type: disc; }
-ul.disc li ul { list-style: inherit; }
-ul.no-bullet { list-style: none; }
-ul.large li { line-height: 21px; }
-
-ol { margin-left: 20px; }
-ol li ul, ol li ol { margin-left: 20px; margin-bottom: 0; }
-
-/* Blockquotes ---------------------- */
-blockquote, blockquote p { line-height: 1.5; color: #6f6f6f; }
-
-blockquote { margin: 0 0 17px; padding: 9px 20px 0 19px; border-left: 1px solid #ddd; }
-blockquote cite { display: block; font-size: 13px; color: #555555; }
-blockquote cite:before { content: "\2014 \0020"; }
-blockquote cite a, blockquote cite a:visited { color: #555555; }
-
-abbr, acronym { text-transform: uppercase; font-size: 90%; color: #222222; border-bottom: 1px solid #ddd; cursor: help; }
-
-abbr { text-transform: none; }
-
-/* Print styles. Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com)
-*/
-.print-only { display: none !important; }
-
-@media print { * { background: transparent !important; color: black !important; box-shadow: none !important; text-shadow: none !important; filter: none !important; -ms-filter: none !important; }
- /* Black prints faster: h5bp.com/s */
- a, a:visited { text-decoration: underline; }
- a[href]:after { content: " (" attr(href) ")"; }
- abbr[title]:after { content: " (" attr(title) ")"; }
- .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
- /* Don't show links for images, or javascript/internal links */
- pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
- thead { display: table-header-group; }
- /* h5bp.com/t */
- tr, img { page-break-inside: avoid; }
- img { max-width: 100% !important; }
- @page { margin: 0.5cm; }
- p, h2, h3 { orphans: 3; widows: 3; }
- h2, h3 { page-break-after: avoid; }
- .hide-on-print { display: none !important; }
- .print-only { display: block !important; }
- .hide-for-print { display: none !important; }
- .show-for-print { display: inherit !important; } }
-/* Requires globals.css */
-/* Standard Forms ---------------------- */
-form { margin: 0 0 19.41641px; }
-
-.row form .row { margin: 0 -6px; }
-.row form .row .column, .row form .row .columns { padding: 0 6px; }
-.row form .row.collapse { margin: 0; }
-.row form .row.collapse .column, .row form .row.collapse .columns { padding: 0; }
-
-label { font-size: 14px; color: #4d4d4d; cursor: pointer; display: block; font-weight: 500; margin-bottom: 3px; }
-label.right { float: none; text-align: right; }
-label.inline { line-height: 32px; margin: 0 0 12px 0; }
-
-.prefix, .postfix { display: block; position: relative; z-index: 2; text-align: center; width: 100%; padding-top: 0; padding-bottom: 0; height: 32px; line-height: 31px; }
-
-a.button.prefix, a.button.postfix { padding-left: 0; padding-right: 0; text-align: center; }
-
-span.prefix, span.postfix { background: #f2f2f2; border: 1px solid #cccccc; }
-
-.prefix { left: 2px; -moz-border-radius-topleft: 2px; -webkit-border-top-left-radius: 2px; border-top-left-radius: 2px; -moz-border-radius-bottomleft: 2px; -webkit-border-bottom-left-radius: 2px; border-bottom-left-radius: 2px; overflow: hidden; }
-
-.postfix { right: 2px; -moz-border-radius-topright: 2px; -webkit-border-top-right-radius: 2px; border-top-right-radius: 2px; -moz-border-radius-bottomright: 2px; -webkit-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; }
-
-input[type="text"], input[type="password"], input[type="date"], input[type="datetime"], input[type="email"], input[type="number"], input[type="search"], input[type="tel"], input[type="time"], input[type="url"], textarea { background-color: white; border: 1px solid #cccccc; -webkit-border-radius: 2px; -moz-border-radius: 2px; -ms-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); color: rgba(0, 0, 0, 0.75); display: block; font-size: 14px; margin: 0 0 12px 0; padding: 6px; height: 32px; width: 100%; -webkit-transition: all 0.15s linear; -moz-transition: all 0.15s linear; -o-transition: all 0.15s linear; transition: all 0.15s linear; }
-input[type="text"].oversize, input[type="password"].oversize, input[type="date"].oversize, input[type="datetime"].oversize, input[type="email"].oversize, input[type="number"].oversize, input[type="search"].oversize, input[type="tel"].oversize, input[type="time"].oversize, input[type="url"].oversize, textarea.oversize { font-size: 17px; padding: 4px 6px; }
-input[type="text"]:focus, input[type="password"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="time"]:focus, input[type="url"]:focus, textarea:focus { background: #fafafa; border-color: #b3b3b3; }
-input[type="text"][disabled], input[type="password"][disabled], input[type="date"][disabled], input[type="datetime"][disabled], input[type="email"][disabled], input[type="number"][disabled], input[type="search"][disabled], input[type="tel"][disabled], input[type="time"][disabled], input[type="url"][disabled], textarea[disabled] { background-color: #ddd; }
-
-textarea { height: auto; }
-
-select { width: 100%; }
-
-/* Fieldsets */
-fieldset { border: solid 1px #ddd; -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; padding: 12px; margin: 18px 0; }
-fieldset legend { font-weight: bold; background: white; padding: 0 3px; margin: 0; margin-left: -3px; }
-
-/* Errors */
-.error input, input.error, .error textarea, textarea.error, .error input:focus, input.error:focus, .error textarea:focus, textarea.error:focus { border-color: #703030; background-color: rgba(112, 48, 48, 0.1); }
-
-.error input:focus, input.error:focus, .error textarea:focus, textarea.error:focus { outline-color: #c47575; }
-
-.error label, label.error { color: #703030; }
-
-.error small, small.error { display: block; padding: 6px 4px; margin-top: -13px; margin-bottom: 12px; background: #703030; color: #fff; font-size: 12px; font-weight: bold; -moz-border-radius-bottomleft: 2px; -webkit-border-bottom-left-radius: 2px; border-bottom-left-radius: 2px; -moz-border-radius-bottomright: 2px; -webkit-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; }
-
-/* Custom Forms ---------------------- */
-form.custom { /* Custom input, disabled */ }
-form.custom span.custom { display: inline-block; width: 16px; height: 16px; position: relative; top: 2px; border: solid 1px #cccccc; background: white; }
-form.custom span.custom.radio { -webkit-border-radius: 100px; -moz-border-radius: 100px; -ms-border-radius: 100px; -o-border-radius: 100px; border-radius: 100px; }
-form.custom span.custom.checkbox:before { content: ""; display: block; line-height: 0.8; height: 14px; width: 14px; text-align: center; position: absolute; top: 0; left: 0; font-size: 14px; color: #fff; }
-form.custom span.custom.radio.checked:before { content: ""; display: block; width: 8px; height: 8px; -webkit-border-radius: 100px; -moz-border-radius: 100px; -ms-border-radius: 100px; -o-border-radius: 100px; border-radius: 100px; background: #222222; position: relative; top: 3px; left: 3px; }
-form.custom span.custom.checkbox.checked:before { content: "\00d7"; color: #222222; }
-form.custom div.custom.dropdown { display: block; position: relative; width: auto; height: 28px; margin-bottom: 9px; margin-top: 2px; }
-form.custom div.custom.dropdown ul { overflow-y: auto; max-height: 200px; }
-form.custom div.custom.dropdown a.current { display: block; width: auto; line-height: 26px; min-height: 28px; padding: 0; padding-left: 6px; padding-right: 38px; border: solid 1px #dddddd; color: #141414; background-color: white; white-space: nowrap; }
-form.custom div.custom.dropdown a.selector { position: absolute; width: 27px; height: 28px; display: block; right: 0; top: 0; border: solid 1px #dddddd; }
-form.custom div.custom.dropdown a.selector:after { content: ""; display: block; content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: #aaaaaa transparent transparent transparent; position: absolute; left: 50%; top: 50%; margin-top: -2px; margin-left: -5px; }
-form.custom div.custom.dropdown:hover a.selector:after, form.custom div.custom.dropdown.open a.selector:after { content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: #222222 transparent transparent transparent; }
-form.custom div.custom.dropdown.open ul { display: block; z-index: 10; }
-form.custom div.custom.dropdown.small { width: 134px !important; }
-form.custom div.custom.dropdown.medium { width: 254px !important; }
-form.custom div.custom.dropdown.large { width: 434px !important; }
-form.custom div.custom.dropdown.expand { width: 100% !important; }
-form.custom div.custom.dropdown.open.small ul { width: 134px !important; }
-form.custom div.custom.dropdown.open.medium ul { width: 254px !important; }
-form.custom div.custom.dropdown.open.large ul { width: 434px !important; }
-form.custom div.custom.dropdown.open.expand ul { width: 100% !important; }
-form.custom div.custom.dropdown ul { position: absolute; width: auto; display: none; margin: 0; left: 0; top: 27px; margin: 0; padding: 0; background: white; background: rgba(255, 255, 255, 0.95); border: solid 1px #cccccc; }
-form.custom div.custom.dropdown ul li { color: #555555; font-size: 13px; cursor: pointer; padding: 3px; padding-left: 6px; padding-right: 38px; min-height: 18px; line-height: 18px; margin: 0; white-space: nowrap; list-style: none; }
-form.custom div.custom.dropdown ul li.selected { background: #cdebf5; color: black; }
-form.custom div.custom.dropdown ul li.selected:after { content: "\2013"; position: absolute; right: 10px; }
-form.custom div.custom.dropdown ul li:hover { background-color: #cdebf5; color: black; }
-form.custom div.custom.dropdown ul li:hover:after { content: "\2013"; position: absolute; right: 10px; color: #a3dbec; }
-form.custom div.custom.dropdown ul li.selected:hover { background: #cdebf5; cursor: default; color: black; }
-form.custom div.custom.dropdown ul li.selected:hover:after { color: black; }
-form.custom div.custom.dropdown ul.show { display: block; }
-form.custom .custom.disabled { background-color: #dddddd; }
-
-/* Correct FF custom dropdown height */
-@-moz-document url-prefix() { form.custom div.custom.dropdown a.selector { height: 28px; } }
-
-.lt-ie9 form.custom div.custom.dropdown a.selector { height: 28px; }
-
-/* The Grid ---------------------- */
-.row { width: 940px; max-width: 100%; min-width: 768px; margin: 0 auto; }
-.row .row { width: auto; max-width: none; min-width: 0; margin: 0 -15px; }
-.row.collapse .column, .row.collapse .columns { padding: 0; }
-.row .row { width: auto; max-width: none; min-width: 0; margin: 0 -15px; }
-.row .row.collapse { margin: 0; }
-
-.column, .columns { float: left; min-height: 1px; padding: 0 15px; position: relative; }
-.column.centered, .columns.centered { float: none; margin: 0 auto; }
-
-[class*="column"] + [class*="column"]:last-child { float: right; }
-
-[class*="column"] + [class*="column"].end { float: left; }
-
-.one, .row .one { width: 8.33333%; }
-
-.two, .row .two { width: 16.66667%; }
-
-.three, .row .three { width: 25%; }
-
-.four, .row .four { width: 33.33333%; }
-
-.five, .row .five { width: 41.66667%; }
-
-.six, .row .six { width: 50%; }
-
-.seven, .row .seven { width: 58.33333%; }
-
-.eight, .row .eight { width: 66.66667%; }
-
-.nine, .row .nine { width: 75%; }
-
-.ten, .row .ten { width: 83.33333%; }
-
-.eleven, .row .eleven { width: 91.66667%; }
-
-.twelve, .row .twelve { width: 100%; }
-
-.row .offset-by-one { margin-left: 8.33333%; }
-
-.row .offset-by-two { margin-left: 16.66667%; }
-
-.row .offset-by-three { margin-left: 25%; }
-
-.row .offset-by-four { margin-left: 33.33333%; }
-
-.row .offset-by-five { margin-left: 41.66667%; }
-
-.row .offset-by-six { margin-left: 50%; }
-
-.row .offset-by-seven { margin-left: 58.33333%; }
-
-.row .offset-by-eight { margin-left: 66.66667%; }
-
-.row .offset-by-nine { margin-left: 75%; }
-
-.row .offset-by-ten { margin-left: 83.33333%; }
-
-.push-two { left: 16.66667%; }
-
-.pull-two { right: 16.66667%; }
-
-.push-three { left: 25%; }
-
-.pull-three { right: 25%; }
-
-.push-four { left: 33.33333%; }
-
-.pull-four { right: 33.33333%; }
-
-.push-five { left: 41.66667%; }
-
-.pull-five { right: 41.66667%; }
-
-.push-six { left: 50%; }
-
-.pull-six { right: 50%; }
-
-.push-seven { left: 58.33333%; }
-
-.pull-seven { right: 58.33333%; }
-
-.push-eight { left: 66.66667%; }
-
-.pull-eight { right: 66.66667%; }
-
-.push-nine { left: 75%; }
-
-.pull-nine { right: 75%; }
-
-.push-ten { left: 83.33333%; }
-
-.pull-ten { right: 83.33333%; }
-
-img { height: auto; }
-
-img, object, embed { max-width: 100%; }
-
-img { -ms-interpolation-mode: bicubic; }
-
-#map_canvas img, .map_canvas img { max-width: none!important; }
-
-/* Nicolas Gallagher's micro clearfix */
-.row { *zoom: 1; }
-.row:before, .row:after { content: " "; display: table; }
-.row:after { clear: both; }
-
-/* Block Grids ---------------------- */
-/* These are 2-up, 3-up, 4-up and 5-up ULs, suited
-for repeating blocks of content. Add 'mobile' to
-them to switch them just like the layout grid
-(one item per line) on phones
-
-For IE7/8 compatibility block-grid items need to be
-the same height. You can optionally uncomment the
-lines below to support arbitrary height, but know
-that IE7/8 do not support :nth-child.
--------------------------------------------------- */
-.block-grid { display: block; overflow: hidden; padding: 0; }
-.block-grid > li { display: block; height: auto; float: left; }
-.block-grid.one-up { margin: 0; }
-.block-grid.one-up > li { width: 100%; padding: 0 0 15px; }
-.block-grid.two-up { margin: 0 -15px; }
-.block-grid.two-up > li { width: 50%; padding: 0 15px 15px; }
-.block-grid.two-up > li:nth-child(2n+1) { clear: both; }
-.block-grid.three-up { margin: 0 -12px; }
-.block-grid.three-up > li { width: 33.33333%; padding: 0 12px 12px; }
-.block-grid.three-up > li:nth-child(3n+1) { clear: both; }
-.block-grid.four-up { margin: 0 -10px; }
-.block-grid.four-up > li { width: 25%; padding: 0 10px 10px; }
-.block-grid.four-up > li:nth-child(4n+1) { clear: both; }
-.block-grid.five-up { margin: 0 -8px; }
-.block-grid.five-up > li { width: 20%; padding: 0 8px 8px; }
-.block-grid.five-up > li:nth-child(5n+1) { clear: both; }
-.block-grid.six-up { margin: 0 -8px; }
-.block-grid.six-up > li { width: 16.66667%; padding: 0 8px 8px; }
-.block-grid.six-up > li:nth-child(6n+1) { clear: both; }
-.block-grid.seven-up { margin: 0 -8px; }
-.block-grid.seven-up > li { width: 14.28571%; padding: 0 8px 8px; }
-.block-grid.seven-up > li:nth-child(7n+1) { clear: both; }
-.block-grid.eight-up { margin: 0 -8px; }
-.block-grid.eight-up > li { width: 12.5%; padding: 0 8px 8px; }
-.block-grid.eight-up > li:nth-child(8n+1) { clear: both; }
-.block-grid.nine-up { margin: 0 -8px; }
-.block-grid.nine-up > li { width: 11.11111%; padding: 0 8px 8px; }
-.block-grid.nine-up > li:nth-child(9n+1) { clear: both; }
-.block-grid.ten-up { margin: 0 -8px; }
-.block-grid.ten-up > li { width: 10%; padding: 0 8px 8px; }
-.block-grid.ten-up > li:nth-child(10n+1) { clear: both; }
-.block-grid.eleven-up { margin: 0 -8px; }
-.block-grid.eleven-up > li { width: 9.09091%; padding: 0 8px 8px; }
-.block-grid.eleven-up > li:nth-child(11n+1) { clear: both; }
-.block-grid.twelve-up { margin: 0 -8px; }
-.block-grid.twelve-up > li { width: 8.33333%; padding: 0 8px 8px; }
-.block-grid.twelve-up > li:nth-child(12n+1) { clear: both; }
-
-/* Normal Buttons ---------------------- */
-.button { width: auto; background: #2f343b; border: 1px solid #0d0e10; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; color: white; cursor: pointer; display: inline-block; font-family: inherit; font-size: 14px; font-weight: bold; line-height: 1; margin: 0; padding: 10px 20px 11px; position: relative; text-align: center; text-decoration: none; -webkit-transition: background-color 0.15s ease-in-out; -moz-transition: background-color 0.15s ease-in-out; -o-transition: background-color 0.15s ease-in-out; transition: background-color 0.15s ease-in-out; /* Hovers */ /* Sizes */ /* Colors */ /* Radii */ /* Layout */ /* Disabled ---------- */ }
-.button:hover, .button:focus { color: white; background-color: #181b1f; }
-.button:active { -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2) inset; -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2) inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2) inset; }
-.button.large { font-size: 17px; padding: 15px 30px 16px; }
-.button.medium { font-size: 14px; }
-.button.small { font-size: 11px; padding: 7px 14px 8px; }
-.button.tiny { font-size: 10px; padding: 5px 10px 6px; }
-.button.expand { width: 100%; text-align: center; }
-.button.primary { background-color: #2f343b; border: 1px solid #0d0e10; }
-.button.primary:hover, .button.primary:focus { background-color: #181b1f; }
-.button.success { background-color: #c77966; border: 1px solid #a4513c; }
-.button.success:hover, .button.success:focus { background-color: #b75a43; }
-.button.alert { background-color: #703030; border: 1px solid #3a1919; }
-.button.alert:hover, .button.alert:focus { background-color: #4c2121; }
-.button.secondary { background-color: #7e827a; color: black; border: 1px solid #585b55; }
-.button.secondary:hover, .button.secondary:focus { background-color: #656861; }
-.button.radius { -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
-.button.round { -webkit-border-radius: 1000px; -moz-border-radius: 1000px; -ms-border-radius: 1000px; -o-border-radius: 1000px; border-radius: 1000px; }
-.button.full-width { width: 100%; text-align: center; padding-left: 0px !important; padding-right: 0px !important; }
-.button.left-align { text-align: left; text-indent: 12px; }
-.button.disabled, .button[disabled] { opacity: 0.6; cursor: default; background: #2f343b; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; }
-.button.disabled:hover, .button[disabled]:hover { background: #2f343b; }
-.button.disabled.success, .button[disabled].success { background-color: #c77966; }
-.button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success:hover, .button[disabled].success:focus { background-color: #c77966; outline: none; }
-.button.disabled.alert, .button[disabled].alert { background-color: #703030; }
-.button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert:hover, .button[disabled].alert:focus { background-color: #703030; outline: none; }
-.button.disabled.secondary, .button[disabled].secondary { background-color: #7e827a; }
-.button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary:hover, .button[disabled].secondary:focus { background-color: #7e827a; outline: none; }
-
-/* Don't use native buttons on iOS */
-input[type=submit].button, button.button { -webkit-appearance: none; }
-
-/* Correct FF button padding */
-@-moz-document url-prefix() { button::-moz-focus-inner, input[type="reset"]::-moz-focus-inner, input[type="button"]::-moz-focus-inner, input[type="submit"]::-moz-focus-inner, input[type="file"] > input[type="button"]::-moz-focus-inner { border: none; padding: 0; }
- input[type="submit"].tiny.button { padding: 3px 10px 4px; }
- input[type="submit"].small.button { padding: 5px 14px 6px; }
- input[type="submit"].button, input[type=submit].medium.button { padding: 8px 20px 9px; }
- input[type="submit"].large.button { padding: 13px 30px 14px; } }
-
-/* Buttons with Dropdowns ---------------------- */
-.button.dropdown { position: relative; padding-right: 44px; /* Sizes */ /* Triangles */ /* Flyout List */ /* Split Dropdown Buttons */ }
-.button.dropdown.large { padding-right: 60px; }
-.button.dropdown.small { padding-right: 28px; }
-.button.dropdown.tiny { padding-right: 20px; }
-.button.dropdown:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: white transparent transparent transparent; position: absolute; top: 50%; right: 20px; margin-top: -2px; }
-.button.dropdown.large:after { content: ""; display: block; width: 0; height: 0; border: solid 7px; border-color: white transparent transparent transparent; margin-top: -3px; right: 30px; }
-.button.dropdown.small:after { content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: white transparent transparent transparent; margin-top: -2px; right: 14px; }
-.button.dropdown.tiny:after { content: ""; display: block; width: 0; height: 0; border: solid 4px; border-color: white transparent transparent transparent; margin-top: -1px; right: 10px; }
-.button.dropdown > ul { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; display: none; position: absolute; left: -1px; background: #fff; background: rgba(255, 255, 255, 0.95); list-style: none; margin: 0; padding: 0; border: 1px solid #cccccc; border-top: none; min-width: 100%; z-index: 40; }
-.button.dropdown > ul li { width: 100%; cursor: pointer; padding: 0; min-height: 18px; line-height: 18px; margin: 0; white-space: nowrap; list-style: none; }
-.button.dropdown > ul li a, .button.dropdown > ul li button { display: block; color: #555; font-size: 13px; font-weight: normal; padding: 6px 14px; text-align: left; }
-.button.dropdown > ul li button { width: 100%; border: inherit; background: inherit; font-family: inherit; margin: inherit; -webkit-font-smoothing: antialiased; }
-.button.dropdown > ul li:hover, .button.dropdown > ul li:focus { background-color: #9ea6b2; color: #222; }
-.button.dropdown > ul li.divider { min-height: 0; padding: 0; height: 1px; margin: 4px 0; background: #ededed; }
-.button.dropdown.up > ul { border-top: 1px solid #cccccc; border-bottom: none; }
-.button.dropdown ul.no-hover.show-dropdown { display: block !important; }
-.button.dropdown:hover > ul.no-hover { display: none; }
-.button.dropdown.split { padding: 0; position: relative; /* Sizes */ /* Triangle Spans */ /* Colors */ }
-.button.dropdown.split:after { display: none; }
-.button.dropdown.split:hover, .button.dropdown.split:focus { background-color: #2f343b; }
-.button.dropdown.split.alert:hover, .button.dropdown.split.alert:focus { background-color: #703030; }
-.button.dropdown.split.success:hover, .button.dropdown.split.success:focus { background-color: #c77966; }
-.button.dropdown.split.secondary:hover, .button.dropdown.split.secondary:focus { background-color: #7e827a; }
-.button.dropdown.split > a { color: white; display: block; padding: 10px 50px 11px 20px; padding-left: 20px; padding-right: 50px; -webkit-transition: background-color 0.15s ease-in-out; -moz-transition: background-color 0.15s ease-in-out; -o-transition: background-color 0.15s ease-in-out; transition: background-color 0.15s ease-in-out; }
-.button.dropdown.split > a:hover, .button.dropdown.split > a:focus { background-color: #181b1f; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; }
-.button.dropdown.split.large > a { padding: 15px 75px 16px 30px; padding-left: 30px; padding-right: 75px; }
-.button.dropdown.split.small > a { padding: 7px 35px 8px 14px; padding-left: 14px; padding-right: 35px; }
-.button.dropdown.split.tiny > a { padding: 5px 25px 6px 10px; padding-left: 10px; padding-right: 25px; }
-.button.dropdown.split > span { background-color: #2f343b; position: absolute; right: 0; top: 0; height: 100%; width: 30px; border-left: 1px solid #0d0e10; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.5) inset; -webkit-transition: background-color 0.15s ease-in-out; -moz-transition: background-color 0.15s ease-in-out; -o-transition: background-color 0.15s ease-in-out; transition: background-color 0.15s ease-in-out; }
-.button.dropdown.split > span:hover, .button.dropdown.split > span:focus { background-color: #181b1f; }
-.button.dropdown.split > span:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: white transparent transparent transparent; position: absolute; top: 50%; left: 50%; margin-left: -6px; margin-top: -2px; }
-.button.dropdown.split.secondary > span:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: black transparent transparent transparent; }
-.button.dropdown.split.large span { width: 45px; }
-.button.dropdown.split.small span { width: 21px; }
-.button.dropdown.split.tiny span { width: 15px; }
-.button.dropdown.split.large span:after { content: ""; display: block; width: 0; height: 0; border: solid 7px; border-color: white transparent transparent transparent; margin-top: -3px; margin-left: -7px; }
-.button.dropdown.split.small span:after { content: ""; display: block; width: 0; height: 0; border: solid 4px; border-color: white transparent transparent transparent; margin-top: -1px; margin-left: -4px; }
-.button.dropdown.split.tiny span:after { content: ""; display: block; width: 0; height: 0; border: solid 3px; border-color: white transparent transparent transparent; margin-top: -1px; margin-left: -3px; }
-.button.dropdown.split.alert > span { background-color: #703030; border-left-color: #3a1919; }
-.button.dropdown.split.success > span { background-color: #c77966; border-left-color: #a4513c; }
-.button.dropdown.split.secondary > span { background-color: #7e827a; border-left-color: #585b55; }
-.button.dropdown.split.secondary > a { color: black; }
-.button.dropdown.split.alert > a:hover, .button.dropdown.split.alert > span:hover, .button.dropdown.split.alert > a:focus, .button.dropdown.split.alert > span:focus { background-color: #4c2121; }
-.button.dropdown.split.success > a:hover, .button.dropdown.split.success > span:hover, .button.dropdown.split.success > a:focus, .button.dropdown.split.success > span:focus { background-color: #b75a43; }
-.button.dropdown.split.secondary > a:hover, .button.dropdown.split.secondary > span:hover, .button.dropdown.split.secondary > a:focus, .button.dropdown.split.secondary > span:focus { background-color: #656861; }
-
-/* Button Groups ---------------------- */
-ul.button-group { list-style: none; padding: 0; margin: 0 0 12px; *zoom: 1; }
-ul.button-group:before, ul.button-group:after { content: " "; display: table; }
-ul.button-group:after { clear: both; }
-ul.button-group li { padding: 0; margin: 0 0 0 -1px; float: left; }
-ul.button-group li:first-child { margin-left: 0; }
-ul.button-group.radius li .button, ul.button-group.radius li .button.radius, ul.button-group.radius li .button-rounded { -webkit-border-radius: 0px; -moz-border-radius: 0px; -ms-border-radius: 0px; -o-border-radius: 0px; border-radius: 0px; }
-ul.button-group.radius li:first-child .button, ul.button-group.radius li:first-child .button.radius { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
-ul.button-group.radius li:first-child .button.rounded { -moz-border-radius-topleft: 1000px; -webkit-border-top-left-radius: 1000px; border-top-left-radius: 1000px; -moz-border-radius-bottomleft: 1000px; -webkit-border-bottom-left-radius: 1000px; border-bottom-left-radius: 1000px; }
-ul.button-group.radius li:last-child .button, ul.button-group.radius li:last-child .button.radius { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
-ul.button-group.radius li:last-child .button.rounded { -moz-border-radius-topright: 1000px; -webkit-border-top-right-radius: 1000px; border-top-right-radius: 1000px; -moz-border-radius-bottomright: 1000px; -webkit-border-bottom-right-radius: 1000px; border-bottom-right-radius: 1000px; }
-ul.button-group.even .button { width: 100%; }
-ul.button-group.even.two-up li { width: 50%; }
-ul.button-group.even.three-up li { width: 33.3%; }
-ul.button-group.even.three-up li:first-child { width: 33.4%; }
-ul.button-group.even.four-up li { width: 25%; }
-ul.button-group.even.five-up li { width: 20%; }
-
-div.button-bar { overflow: hidden; }
-div.button-bar ul.button-group { float: left; margin-right: 8px; }
-div.button-bar ul.button-group:last-child { margin-left: 0; }
-
-.nav-bar { height: 40px; background: #4d4d4d; margin-left: 0; margin-top: 20px; padding: 0; }
-.nav-bar > li { float: left; display: block; position: relative; padding: 0; margin: 0; border: 1px solid #333333; border-right: none; line-height: 38px; -webkit-box-shadow: 1px 0 0 rgba(255, 255, 255, 0.2) inset; -moz-box-shadow: 1px 0 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 1px 0 0 rgba(255, 255, 255, 0.2) inset; }
-.nav-bar > li:first-child { -webkit-box-shadow: 0 0 0; -moz-box-shadow: 0 0 0; box-shadow: 0 0 0; }
-.nav-bar > li:last-child { border-right: solid 1px #333333; -webkit-box-shadow: 1px 0 0 rgba(255, 255, 255, 0.2) inset, 1px 0 0 rgba(255, 255, 255, 0.2); -moz-box-shadow: 1px 0 0 rgba(255, 255, 255, 0.2) inset, 1px 0 0 rgba(255, 255, 255, 0.2); box-shadow: 1px 0 0 rgba(255, 255, 255, 0.2) inset, 1px 0 0 rgba(255, 255, 255, 0.2); }
-.nav-bar > li.active { background: #2f343b; border-color: #181b1f; }
-.nav-bar > li.active > a { color: white; cursor: default; }
-.nav-bar > li.active:hover { background: #2f343b; cursor: default; }
-.nav-bar > li:hover { background: #333333; }
-.nav-bar > li > a { color: #e6e6e6; }
-.nav-bar > li ul { margin-bottom: 0; }
-.nav-bar > li .flyout { display: none; }
-.nav-bar > li.has-flyout > a:first-child { padding-right: 40px; position: relative; }
-.nav-bar > li.has-flyout > a:first-child:after { content: ""; display: block; width: 0; height: 0; border: solid 4px; border-color: #e6e6e6 transparent transparent transparent; position: absolute; right: 20px; top: 17px; }
-.nav-bar > li.has-flyout > a.flyout-toggle { border-left: 0 !important; position: absolute; right: 0; top: 0; padding: 20px; z-index: 2; display: block; }
-.nav-bar > li.has-flyout.is-touch > a:first-child { padding-right: 55px; }
-.nav-bar > li.has-flyout.is-touch > a.flyout-toggle { border-left: 1px dashed #666; }
-.nav-bar > li > a:first-child { position: relative; padding: 0 20px; display: block; text-decoration: none; font-size: 14px; }
-.nav-bar > li > input { margin: 0 10px; }
-.nav-bar.vertical { height: auto; margin-top: 0; }
-.nav-bar.vertical > li { float: none; border-bottom: none; border-right: solid 1px #333333; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; }
-.nav-bar.vertical > li.has-flyout > a:first-child:after { content: ""; display: block; width: 0; height: 0; border: solid 4px; border-color: transparent transparent transparent #e6e6e6; }
-.nav-bar.vertical > li .flyout { left: 100%; top: -1px; }
-.nav-bar.vertical > li .flyout.right { left: auto; right: 100%; }
-.nav-bar.vertical > li.active { border-right: solid 1px #181b1f; }
-.nav-bar.vertical > li:last-child { border-bottom: solid 1px #333333; }
-
-.flyout { background: #f2f2f2; padding: 20px; margin: 0; border: 1px solid #d9d9d9; position: absolute; top: 39px; left: -1px; width: 250px; z-index: 40; -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1); /* remove margin on any first-child element */ /* remove margin on last element */ }
-.flyout p { line-height: 1.2; font-size: 13px; }
-.flyout *:first-child { margin-top: 0; }
-.flyout *:last-child { margin-bottom: 0; }
-.flyout.small { width: 166.66667px; }
-.flyout.large { width: 437.5px; }
-.flyout.right { left: auto; right: -2px; }
-.flyout.left { right: auto; left: -2px; }
-.flyout.up { top: auto; bottom: 39px; }
-
-ul.flyout, .nav-bar li ul { padding: 0; list-style: none; }
-ul.flyout li, .nav-bar li ul li { border-left: solid 3px #CCC; }
-ul.flyout li a, .nav-bar li ul li a { background: #f2f2f2; border: 1px solid #e6e6e6; border-width: 1px 1px 0 0; color: #555; display: block; font-size: 14px; height: auto; line-height: 1; padding: 15px 20px; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; }
-ul.flyout li a:hover, ul.flyout li a:focus, .nav-bar li ul li a:hover, .nav-bar li ul li a:focus { background: #ebebeb; color: #333; }
-ul.flyout li.active, .nav-bar li ul li.active { margin-top: 0; border-top: 1px solid #4d4d4d; border-left: 4px solid #1a1a1a; }
-ul.flyout li.active a, .nav-bar li ul li.active a { background: #4d4d4d; border: none; color: #fff; height: auto; margin: 0; position: static; top: 0; -webkit-box-shadow: 0 0 0; -moz-box-shadow: 0 0 0; box-shadow: 0 0 0; }
-
-/* CSS for jQuery Orbit Plugin 1.4.0 Maintained for Foundation. foundation.zurb.com Free to use under the MIT license. http://www.opensource.org/licenses/mit-license.php
-*/
-/* Container ---------------------- */
-.orbit-wrapper { width: 1px; height: 1px; position: relative; }
-
-.orbit { width: 1px; height: 1px; position: relative; overflow: hidden; margin-bottom: 17px; }
-.orbit.with-bullets { margin-bottom: 40px; }
-.orbit .orbit-slide { max-width: 100%; position: absolute; top: 0; left: 0; }
-.orbit a.orbit-slide { border: none; line-height: 0; display: none; }
-.orbit div.orbit-slide { width: 100%; height: 100%; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); opacity: 0; }
-
-/* Note: If your slider only uses content or anchors, you're going to want to put the width and height declarations on the ".orbit>div" and "div.orbit>a" tags in addition to just the .orbit-wrapper */
-/* Timer ---------------------- */
-.orbit-wrapper .timer { width: 40px; height: 40px; overflow: hidden; position: absolute; top: 10px; right: 10px; opacity: .6; cursor: pointer; z-index: 31; }
-.orbit-wrapper span.rotator { display: block; width: 40px; height: 40px; position: absolute; top: 0; left: -20px; background: url('../images/foundation/orbit/rotator-black.png') no-repeat; z-index: 3; }
-.orbit-wrapper span.rotator.move { left: 0; }
-.orbit-wrapper span.mask { display: block; width: 20px; height: 40px; position: absolute; top: 0; right: 0; z-index: 2; overflow: hidden; }
-.orbit-wrapper span.mask.move { width: 40px; left: 0; background: url('../images/foundation/orbit/timer-black.png') repeat 0 0; }
-.orbit-wrapper span.pause { display: block; width: 40px; height: 40px; position: absolute; top: 0; left: 0; background: url('../images/foundation/orbit/pause-black.png') no-repeat; z-index: 4; opacity: 0; }
-.orbit-wrapper span.pause.active { background: url('../images/foundation/orbit/pause-black.png') no-repeat 0 -40px; }
-.orbit-wrapper .timer:hover span.pause, .orbit-wrapper .timer:focus span.pause, .orbit-wrapper span.pause.active { opacity: 1; }
-
-/* Captions ---------------------- */
-.orbit-caption { display: none; font-family: inherit; }
-
-.orbit-wrapper .orbit-caption { background: black; background: rgba(0, 0, 0, 0.6); z-index: 30; color: white; text-align: center; padding: 7px 0; font-size: 13px; position: absolute; right: 0; bottom: 0; width: 100%; }
-
-/* Directional Nav ---------------------- */
-.orbit-wrapper .slider-nav { display: block; }
-.orbit-wrapper .slider-nav span { width: 39px; height: 50px; text-indent: -9999px; position: absolute; z-index: 30; top: 50%; margin-top: -25px; cursor: pointer; }
-.orbit-wrapper .slider-nav span.right { background: url('../images/foundation/orbit/right-arrow.png'); background-size: 100%; right: 0; }
-.orbit-wrapper .slider-nav span.left { background: url('../images/foundation/orbit/left-arrow.png'); background-size: 100%; left: 0; }
-
-.lt-ie9 .orbit-wrapper .slider-nav span.right { background: url('../images/foundation/orbit/right-arrow-small.png'); }
-.lt-ie9 .orbit-wrapper .slider-nav span.left { background: url('../images/foundation/orbit/left-arrow-small.png'); }
-
-/* Bullet Nav ---------------------- */
-ul.orbit-bullets { position: absolute; z-index: 30; list-style: none; bottom: -40px; left: 50%; margin-left: -50px; padding: 0; }
-ul.orbit-bullets li { float: left; margin-left: 5px; cursor: pointer; color: #999999; text-indent: -9999px; background: url('../images/foundation/orbit/bullets.jpg') no-repeat 4px 0; width: 13px; height: 12px; overflow: hidden; }
-ul.orbit-bullets li.active { color: #222222; background-position: -8px 0; }
-ul.orbit-bullets li.has-thumb { background: none; width: 100px; height: 75px; }
-ul.orbit-bullets li.active.has-thumb { background-position: 0 0; border-top: 2px solid black; }
-
-/* Orbit Slide Counter */
-.orbit-slide-counter { position: absolute; bottom: 0; z-index: 99; background: rgba(0, 0, 0, 0.7); color: white; padding: 5px; }
-
-/* Fluid Layout ---------------------- */
-.orbit img.fluid-placeholder { visibility: hidden; position: static; display: block; width: 100%; }
-
-.orbit, .orbit-wrapper { width: 100% !important; }
-
-/* Correct timer in IE */
-.lt-ie9 .timer { display: none !important; }
-
-.lt-ie9 .orbit-caption { background: black; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000,endColorstr=#99000000); zoom: 1; }
-
-@media only screen and (max-width: 767px) { .orbit.orbit-stack-on-small img.fluid-placeholder { visibility: visible; }
- .orbit.orbit-stack-on-small .orbit-slide { position: static; margin-bottom: 10px; } }
-/* CSS for jQuery Reveal Plugin Maintained for Foundation. foundation.zurb.com Free to use under the MIT license. http://www.opensource.org/licenses/mit-license.php */
-/* Reveal Modals ---------------------- */
-.reveal-modal-bg { position: fixed; height: 100%; width: 100%; background: #000; background: rgba(0, 0, 0, 0.45); z-index: 40; display: none; top: 0; left: 0; }
-
-.reveal-modal { background: #fff; visibility: hidden; display: none; top: 100px; left: 50%; margin-left: -260px; width: 520px; position: absolute; z-index: 41; padding: 30px; -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); }
-.reveal-modal .close-reveal-modal:not(.button) { font-size: 22px; font-size: 2.2rem; line-height: .5; position: absolute; top: 8px; right: 11px; color: #aaa; text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.6); font-weight: bold; cursor: pointer; }
-.reveal-modal.small { width: 30%; margin-left: -15%; }
-.reveal-modal.medium { width: 40%; margin-left: -20%; }
-.reveal-modal.large { width: 60%; margin-left: -30%; }
-.reveal-modal.xlarge { width: 70%; margin-left: -35%; }
-.reveal-modal.expand { width: 90%; margin-left: -45%; }
-.reveal-modal .row { min-width: 0; margin-bottom: 10px; }
-.reveal-modal > :first-child { margin-top: 0; }
-.reveal-modal > :last-child { margin-bottom: 0; }
-
-@media print { .reveal-modal { border: solid 1px #000; background: #fff; } }
-/* Tabs ---------------------- */
-.tabs { list-style: none; border-bottom: solid 1px #e6e6e6; display: block; height: 40px; padding: 0; margin-bottom: 20px; }
-.tabs.contained { margin-bottom: 0; margin-left: 0; }
-.tabs dt, .tabs li.section-title { color: #b3b3b3; cursor: default; display: block; float: left; font-size: 12px; height: 40px; line-height: 40px; padding: 0; padding-right: 9px; padding-left: 20px; font-weight: normal; width: auto; text-transform: uppercase; }
-.tabs dt:first-child, .tabs li.section-title:first-child { padding: 0; padding-right: 9px; }
-.tabs dd, .tabs li { display: block; float: left; padding: 0; margin: 0; }
-.tabs dd a, .tabs li a { color: #6f6f6f; display: block; font-size: 14px; height: 40px; line-height: 40px; padding: 0px 23.8px; }
-.tabs dd a:focus, .tabs li a:focus { font-weight: bold; color: #2f343b; }
-.tabs dd.active, .tabs li.active { border-top: 3px solid #2f343b; margin-top: -3px; }
-.tabs dd.active a, .tabs li.active a { cursor: default; color: #3c3c3c; background: #fff; border-left: 1px solid #e6e6e6; border-right: 1px solid #e6e6e6; font-weight: bold; }
-.tabs dd:first-child, .tabs li:first-child { margin-left: 0; }
-.tabs.vertical { height: auto; border-bottom: 1px solid #e6e6e6; }
-.tabs.vertical dt, .tabs.vertical dd, .tabs.vertical li { float: none; height: auto; }
-.tabs.vertical dd, .tabs.vertical li { border-left: 3px solid #cccccc; }
-.tabs.vertical dd a, .tabs.vertical li a { background: #f2f2f2; border: none; border: 1px solid #e6e6e6; border-width: 1px 1px 0 0; color: #555; display: block; font-size: 14px; height: auto; line-height: 1; padding: 15px 20px; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) inset; }
-.tabs.vertical dd.active, .tabs.vertical li.active { margin-top: 0; border-top: 1px solid #4d4d4d; border-left: 4px solid #1a1a1a; }
-.tabs.vertical dd.active a, .tabs.vertical li.active a { background: #4d4d4d; border: none; color: #fff; height: auto; margin: 0; position: static; top: 0; -webkit-box-shadow: 0 0 0; -moz-box-shadow: 0 0 0; box-shadow: 0 0 0; }
-.tabs.vertical dd:first-child a.active, .tabs.vertical li:first-child a.active { margin: 0; }
-.tabs.pill { border-bottom: none; margin-bottom: 10px; }
-.tabs.pill dd, .tabs.pill li { margin-right: 10px; }
-.tabs.pill dd:last-child, .tabs.pill li:last-child { margin-right: 0; }
-.tabs.pill dd a, .tabs.pill li a { -webkit-border-radius: 1000px; -moz-border-radius: 1000px; -ms-border-radius: 1000px; -o-border-radius: 1000px; border-radius: 1000px; background: #e6e6e6; height: 26px; line-height: 26px; color: #666; }
-.tabs.pill dd.active, .tabs.pill li.active { border: none; margin-top: 0; }
-.tabs.pill dd.active a, .tabs.pill li.active a { background-color: #2f343b; border: none; color: #fff; }
-.tabs.pill.contained { border-bottom: solid 1px #eee; margin-bottom: 0; }
-.tabs.pill.two-up dd, .tabs.pill.two-up li, .tabs.pill.three-up dd, .tabs.pill.three-up li, .tabs.pill.four-up dd, .tabs.pill.four-up li, .tabs.pill.five-up dd, .tabs.pill.five-up li { margin-right: 0; }
-.tabs.two-up dt a, .tabs.two-up dd a, .tabs.two-up li a, .tabs.three-up dt a, .tabs.three-up dd a, .tabs.three-up li a, .tabs.four-up dt a, .tabs.four-up dd a, .tabs.four-up li a, .tabs.five-up dt a, .tabs.five-up dd a, .tabs.five-up li a { padding: 0 17px; text-align: center; overflow: hidden; }
-.tabs.two-up dt, .tabs.two-up dd, .tabs.two-up li { width: 50%; }
-.tabs.three-up dt, .tabs.three-up dd, .tabs.three-up li { width: 33.33%; }
-.tabs.four-up dt, .tabs.four-up dd, .tabs.four-up li { width: 25%; }
-.tabs.five-up dt, .tabs.five-up dd, .tabs.five-up li { width: 20%; }
-
-ul.tabs-content { display: block; margin: 0 0 20px; padding: 0; }
-ul.tabs-content > li { display: none; }
-ul.tabs-content > li.active { display: block; }
-ul.tabs-content.contained { padding: 0; }
-ul.tabs-content.contained > li { border: solid 0 #e6e6e6; border-width: 0 1px 1px 1px; padding: 20px; }
-ul.tabs-content.contained.vertical > li { border-width: 1px 1px 1px 1px; }
-
-.no-js ul.tabs-content > li { display: block; }
-
-/* Table of Contents
-
-:: Visibility
-:: Alerts
-:: Labels
-:: Tooltips
-:: Panels
-:: Accordion
-:: Side Nav
-:: Sub Nav
-:: Pagination
-:: Breadcrumbs
-:: Lists
-:: Inline/Link Lists
-:: Keystroke Chars
-:: Image Thumbnails
-:: Video
-:: Tables
-:: Microformats
-:: Progress Bars
-:: Pricing Tables
-
-*/
-/* Alerts ---------------------- */
-div.alert-box { display: block; padding: 6px 7px 7px; font-weight: bold; font-size: 14px; color: white; background-color: #2f343b; border: 1px solid rgba(0, 0, 0, 0.1); margin-bottom: 12px; -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; text-shadow: 0 -1px rgba(0, 0, 0, 0.3); position: relative; }
-div.alert-box.success { background-color: #c77966; color: #fff; text-shadow: 0 -1px rgba(0, 0, 0, 0.3); }
-div.alert-box.alert { background-color: #703030; color: #fff; text-shadow: 0 -1px rgba(0, 0, 0, 0.3); }
-div.alert-box.secondary { background-color: #7e827a; color: black; text-shadow: 0 1px rgba(255, 255, 255, 0.3); }
-div.alert-box a.close { color: #333; position: absolute; right: 4px; top: -1px; font-size: 17px; opacity: 0.2; padding: 4px; }
-div.alert-box a.close:hover, div.alert-box a.close:focus { opacity: 0.4; }
-
-/* Labels ---------------------- */
-.label { padding: 1px 4px 2px; font-size: 12px; font-weight: bold; text-align: center; text-decoration: none; line-height: 1; white-space: nowrap; display: inline; position: relative; bottom: 1px; color: #fff; background: #2f343b; }
-.label.radius { -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
-.label.round { padding: 1px 7px 2px; -webkit-border-radius: 1000px; -moz-border-radius: 1000px; -ms-border-radius: 1000px; -o-border-radius: 1000px; border-radius: 1000px; }
-.label.alert { background-color: #703030; }
-.label.success { background-color: #c77966; }
-.label.secondary { background-color: #7e827a; color: black; }
-
-/* Tooltips ---------------------- */
-.has-tip { border-bottom: dotted 1px #cccccc; cursor: help; font-weight: bold; color: #333333; }
-.has-tip:hover, .has-tip:focus { border-bottom: dotted 1px #020202; color: #2f343b; }
-.has-tip.tip-left, .has-tip.tip-right { float: none !important; }
-
-.tooltip { display: none; background: black; background: rgba(0, 0, 0, 0.85); position: absolute; color: white; font-weight: bold; font-size: 12px; padding: 5px; z-index: 999; -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; line-height: normal; }
-.tooltip > .nub { display: block; width: 0; height: 0; border: solid 5px; border-color: transparent transparent black transparent; border-color: transparent transparent rgba(0, 0, 0, 0.85) transparent; position: absolute; top: -10px; left: 10px; }
-.tooltip.tip-override > .nub { border-color: transparent transparent black transparent !important; border-color: transparent transparent rgba(0, 0, 0, 0.85) transparent !important; top: -10px !important; }
-.tooltip.tip-top > .nub, .tooltip.tip-centered-top > .nub { border-color: black transparent transparent transparent; border-color: rgba(0, 0, 0, 0.85) transparent transparent transparent; top: auto; bottom: -10px; }
-.tooltip.tip-left, .tooltip.tip-right { float: none !important; }
-.tooltip.tip-left > .nub { border-color: transparent transparent transparent black; border-color: transparent transparent transparent rgba(0, 0, 0, 0.85); right: -10px; left: auto; }
-.tooltip.tip-right > .nub { border-color: transparent black transparent transparent; border-color: transparent rgba(0, 0, 0, 0.85) transparent transparent; right: auto; left: -10px; }
-.tooltip.noradius { -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; -o-border-radius: 0; border-radius: 0; }
-.tooltip.opened { color: #2f343b !important; border-bottom: dotted 1px #020202 !important; }
-
-.tap-to-close { display: block; font-size: 10px; font-size: 1rem; color: #888888; font-weight: normal; }
-
-/* Panels ---------------------- */
-.panel { background: #f2f2f2; border: solid 1px #e6e6e6; margin: 0 0 22px 0; padding: 20px; }
-.panel > :first-child { margin-top: 0; }
-.panel > :last-child { margin-bottom: 0; }
-.panel.callout { background: #2f343b; color: #fff; border-color: #181b1f; -webkit-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.5); -moz-box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.5); box-shadow: inset 0px 1px 0px rgba(255, 255, 255, 0.5); }
-.panel.callout a { color: #fff; }
-.panel.callout .button { background: white; border: none; color: #2f343b; text-shadow: none; }
-.panel.callout .button:hover, .panel.callout .button:focus { background: rgba(255, 255, 255, 0.8); }
-.panel.radius { -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
-
-/* Accordion ---------------------- */
-ul.accordion { margin: 0 0 22px 0; border-bottom: 1px solid #7e827a; }
-ul.accordion > li { list-style: none; margin: 0; padding: 0; border-top: 1px solid #7e827a; }
-ul.accordion > li > div.title { cursor: pointer; background: #8b8e87; padding: 15px; margin: 0; position: relative; border-left: 1px solid #7e827a; border-right: 1px solid #7e827a; -webkit-transition: 0.15s background linear; -moz-transition: 0.15s background linear; -o-transition: 0.15s background linear; transition: 0.15s background linear; }
-ul.accordion > li > div.title h1, ul.accordion > li > div.title h2, ul.accordion > li > div.title h3, ul.accordion > li > div.title h4, ul.accordion > li > div.title h5 { margin: 0; }
-ul.accordion > li > div.title:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: transparent #323330 transparent transparent; position: absolute; right: 15px; top: 21px; }
-ul.accordion > li .content { display: none; padding: 15px; }
-ul.accordion > li.active { border-top: 3px solid #2f343b; }
-ul.accordion > li.active .title { background: white; padding-top: 13px; }
-ul.accordion > li.active .title:after { content: ""; display: block; width: 0; height: 0; border: solid 6px; border-color: #323330 transparent transparent transparent; }
-ul.accordion > li.active .content { background: white; display: block; border-left: 1px solid #7e827a; border-right: 1px solid #7e827a; }
-
-/* Side Nav ---------------------- */
-ul.side-nav { display: block; list-style: none; margin: 0; padding: 17px 0; }
-ul.side-nav li { display: block; list-style: none; margin: 0 0 7px 0; }
-ul.side-nav li a { display: block; }
-ul.side-nav li.active a { color: #4d4d4d; font-weight: bold; }
-ul.side-nav li.divider { border-top: 1px solid #e6e6e6; height: 0; padding: 0; }
-
-/* Sub Navs http://www.zurb.com/article/292/how-to-create-simple-and-effective-sub-na ---------------------- */
-dl.sub-nav { display: block; width: auto; overflow: hidden; margin: -4px 0 18px; margin-right: 0; margin-left: -9px; padding-top: 4px; }
-dl.sub-nav dt, dl.sub-nav dd { float: left; display: inline; margin-left: 9px; margin-bottom: 10px; }
-dl.sub-nav dt { color: #999; font-weight: normal; }
-dl.sub-nav dd a { text-decoration: none; -webkit-border-radius: 1000px; -moz-border-radius: 1000px; -ms-border-radius: 1000px; -o-border-radius: 1000px; border-radius: 1000px; }
-dl.sub-nav dd.active a { font-weight: bold; background: #2f343b; color: #fff; padding: 3px 9px; cursor: default; }
-
-/* Pagination ---------------------- */
-ul.pagination { display: block; height: 24px; margin-left: -5px; }
-ul.pagination li { float: left; display: block; height: 24px; color: #999; font-size: 14px; margin-left: 5px; }
-ul.pagination li a { display: block; padding: 1px 7px 1px; color: #555; }
-ul.pagination li:hover a, ul.pagination li a:focus { background: #e6e6e6; }
-ul.pagination li.unavailable a { cursor: default; color: #999; }
-ul.pagination li.unavailable:hover a, ul.pagination li.unavailable a:focus { background: transparent; }
-ul.pagination li.current a { background: #2f343b; color: white; font-weight: bold; cursor: default; }
-ul.pagination li.current a:hover, ul.pagination li.current a:focus { background: #2f343b; }
-
-div.pagination-centered { text-align: center; }
-div.pagination-centered ul > li { float: none; display: inline-block; }
-
-/* Breadcrums ---------------------- */
-ul.breadcrumbs { display: block; background: #8b8e87; padding: 6px 10px 7px; border: 1px solid #7e827a; -webkit-border-radius: 2px; -moz-border-radius: 2px; -ms-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px; overflow: hidden; margin-left: 0; }
-ul.breadcrumbs li { margin: 0; padding: 0 12px 0 0; float: left; list-style: none; }
-ul.breadcrumbs li a, ul.breadcrumbs li span { text-transform: uppercase; font-size: 11px; font-size: 1.1rem; padding-left: 12px; }
-ul.breadcrumbs li:first-child a, ul.breadcrumbs li:first-child span { padding-left: 0; }
-ul.breadcrumbs li:before { content: "/"; color: #aaa; }
-ul.breadcrumbs li:first-child:before { content: " "; }
-ul.breadcrumbs li.current a { cursor: default; color: #333; }
-ul.breadcrumbs li:hover a, ul.breadcrumbs li a:focus { text-decoration: underline; }
-ul.breadcrumbs li.current:hover a, ul.breadcrumbs li.current a:focus { text-decoration: none; }
-ul.breadcrumbs li.unavailable a { color: #999; }
-ul.breadcrumbs li.unavailable:hover a, ul.breadcrumbs li.unavailable a:focus { text-decoration: none; color: #999; cursor: default; }
-
-/* Inline Link List */
-ul.inline-list, ul.link-list { margin: 0 0 17px -22px; padding: 0; list-style: none; overflow: hidden; }
-ul.inline-list > li, ul.link-list > li { list-style: none; float: left; margin-left: 22px; display: block; }
-ul.inline-list > li > *, ul.link-list > li > * { display: block; }
-
-/* Keytroke Characters ---------------------- */
-.keystroke, kbd { font-family: "Consolas", "Menlo", "Courier", monospace; font-size: 13px; padding: 2px 4px 0px; margin: 0; background: #ededed; border: solid 1px #dbdbdb; -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
-
-/* Image Thumbnails ---------------------- */
-.th { display: block; }
-.th img { display: block; border: solid 4px #fff; -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; -webkit-transition-property: box-shadow; -moz-transition-property: box-shadow; -o-transition-property: box-shadow; transition-property: box-shadow; -webkit-transition-duration: 300ms; -moz-transition-duration: 300ms; -o-transition-duration: 300ms; transition-duration: 300ms; }
-.th:hover img, .th:focus img { -webkit-box-shadow: 0 0 6px 1px rgba(47, 52, 59, 0.5); -moz-box-shadow: 0 0 6px 1px rgba(47, 52, 59, 0.5); box-shadow: 0 0 6px 1px rgba(47, 52, 59, 0.5); }
-
-/* Video - Mad props to http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ ---------------------- */
-.flex-video { position: relative; padding-top: 25px; padding-bottom: 67.5%; height: 0; margin-bottom: 16px; overflow: hidden; }
-.flex-video.widescreen { padding-bottom: 57.25%; }
-.flex-video.vimeo { padding-top: 0; }
-.flex-video iframe, .flex-video object, .flex-video embed, .flex-video video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-/* Tables ---------------------- */
-table { background: #fff; -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; margin: 0 0 18px; border: 1px solid #ddd; }
-
-table thead, table tfoot { background: #f5f5f5; }
-
-table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; font-size: 14px; line-height: 18px; text-align: left; }
-
-table thead tr th, table tfoot tr td { padding: 8px 10px 9px; font-size: 14px; font-weight: bold; color: #222; }
-
-table thead tr th:first-child, table tfoot tr td:first-child { border-left: none; }
-
-table thead tr th:last-child, table tfoot tr td:last-child { border-right: none; }
-
-table tbody tr.even, table tbody tr.alt { background: #f9f9f9; }
-
-table tbody tr:nth-child(even) { background: #f9f9f9; }
-
-table tbody tr td { color: #333; padding: 9px 10px; vertical-align: top; border: none; }
-
-/* Microformats ---------------------- */
-ul.vcard { display: inline-block; margin: 0 0 12px 0; border: 1px solid #ddd; padding: 10px; }
-ul.vcard li { margin: 0; display: block; }
-ul.vcard li.fn { font-weight: bold; font-size: 15px; }
-
-p.vevent span.summary { font-weight: bold; }
-p.vevent abbr { cursor: default; text-decoration: none; font-weight: bold; border: none; padding: 0 1px; }
-
-/* Progress Bar ---------------------- */
-div.progress { padding: 2px; margin-bottom: 10px; border: 1px solid #cccccc; height: 25px; /* meter */ /* border radii */ }
-div.progress .meter { background: #2f343b; height: 100%; display: block; width: 50%; }
-div.progress.secondary .meter { background: #7e827a; }
-div.progress.success .meter { background: #c77966; }
-div.progress.alert .meter { background: #703030; }
-div.progress.radius { -webkit-border-radius: 3px; -moz-border-radius: 3px; -ms-border-radius: 3px; -o-border-radius: 3px; border-radius: 3px; }
-div.progress.radius .meter { -webkit-border-radius: 2px; -moz-border-radius: 2px; -ms-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px; }
-div.progress.round { -webkit-border-radius: 1000px; -moz-border-radius: 1000px; -ms-border-radius: 1000px; -o-border-radius: 1000px; border-radius: 1000px; }
-div.progress.round .meter { -webkit-border-radius: 1000px; -moz-border-radius: 1000px; -ms-border-radius: 1000px; -o-border-radius: 1000px; border-radius: 1000px; }
-
-/* Pricing Tables ---------------------- */
-.pricing-table { border: solid 1px #dddddd; margin-left: 0; margin-bottom: 20px; }
-.pricing-table * { list-style: none; line-height: 1; }
-.pricing-table .title { background-color: #dddddd; padding: 15px 20px; text-align: center; color: #333333; font-weight: bold; font-size: 16px; }
-.pricing-table .price { background-color: #eeeeee; padding: 15px 20px; text-align: center; color: #333333; font-weight: normal; font-size: 20px; }
-.pricing-table .description { background-color: white; padding: 15px; text-align: center; color: #777777; font-size: 12px; font-weight: normal; line-height: 1.4; border-bottom: dotted 1px #dddddd; }
-.pricing-table .bullet-item { background-color: white; padding: 15px; text-align: center; color: #333333; font-size: 14px; font-weight: normal; border-bottom: dotted 1px #dddddd; }
-.pricing-table .cta-button { background-color: whitesmoke; text-align: center; padding: 20px; }
-
-/* Foundation Top Bar
- Requires: -jquery.foundation.topbar.js
- Notes: - <nav class="top-bar"> can have .fixed added to make it stick to the top of viewport. Can add .contain-to-grid to top-bar to make it full width but content on grid. - <li class="name"> creates a branding area that can be linked to homepage - Can include text, image or both inside this <li>. - <li class="divider"> creates a divider between nav items, add margins for space - <li class="search"> Needs to hold a <form> which can use .row.collapse and pre/postfix buttons or default type="search"
-*/
-/* Element that controls breakpoint, no need to change this ever */
-.top-bar-js-breakpoint { width: 940px !important; visibility: hidden; }
-
-/* Wrapped around .top-bar to contain to grid width */
-.contain-to-grid { width: 100%; background: #222222; }
-
-/* Wrapped around .top-bar to make it fixed at the top */
-.fixed { width: 100%; left: 0; position: fixed; top: 0; z-index: 99; }
-
-/* Add .sticky class for using top bar as a sticky navigation when scrolling passed it. Add the class .sticky to a top bar using .contain-to-grid but leave off .fixed, javascript will take care of that */
-.sticky { float: left; overflow: hidden; }
-.sticky.fixed { float: none; }
-
-/* <nav> */
-.top-bar { background: #222222; min-height: 45px; line-height: 45px; margin: 0 0 30px 0; padding: 0; width: 100%; position: relative; /* Contain width to .row width */ /* First <ul> for branding, title, name, etc */ /* topbar global <ul> styles */ }
-.contain-to-grid .top-bar { max-width: 940px; margin: 0 auto; }
-.top-bar > ul .name h1 { line-height: 45px; margin: 0; }
-.top-bar > ul .name h1 a { font-weight: bold; padding: 0 22.5px; font-size: 17px !important; }
-.top-bar > ul .name img { margin-top: -5px; vertical-align: middle; }
-.top-bar.expanded { height: inherit; }
-.top-bar ul { margin-left: 0; display: inline; height: 45px; line-height: 45px; list-style: none; /* Main Navigation links style */ /* Left Side <ul> */ /* Right Side <ul> */ }
-.top-bar ul > li { float: left; /* Dividers between navigation */ /* Put a button in an <li> but give is a class */ /* Put a search bar or text input in the bar */ /* Put login bar in the top bar */ /* Hide the triangle for breakpoint menu */ /* li.has-dropdown */ }
-.top-bar ul > li a:not(.button) { color: white; display: block; font-size: 13px; font-weight: bold; height: 45px; line-height: 45px; padding: 0 15px; }
-.top-bar ul > li:not(.name):hover, .top-bar ul > li:not(.name).active, .top-bar ul > li:not(.name):focus { background: black; }
-.top-bar ul > li:not(.name):hover a, .top-bar ul > li:not(.name).active a, .top-bar ul > li:not(.name):focus a { color: #d9d9d9; }
-.top-bar ul > li.divider { background: black; -webkit-box-shadow: 1px 0 0 rgba(255, 255, 255, 0.1); -moz-box-shadow: 1px 0 0 rgba(255, 255, 255, 0.1); box-shadow: 1px 0 0 rgba(255, 255, 255, 0.1); height: 100%; margin-right: 1px; width: 1px; }
-.top-bar ul > li.has-button a.button { margin: 0 11.25px; }
-.top-bar ul > li.has-button:hover, .top-bar ul > li.has-button:focus { background: #222222; }
-.top-bar ul > li.has-button:hover a, .top-bar ul > li.has-button:focus a { color: #fff; }
-.top-bar ul > li.search { padding: 0 15px; }
-.top-bar ul > li.search form { display: inline-block; margin-bottom: 0; vertical-align: middle; width: 200px; }
-.top-bar ul > li.search form input[type=text] { -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; float: left; font-size: 13px; margin-top: -1px; height: 22.5px; margin-bottom: 0; width: 130px; }
-.top-bar ul > li.search form input[type=text] + .button { border-left: none; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; float: left; font-size: 12px; margin-top: -1px; padding: 5px 12px 4px; }
-.top-bar ul > li.search form input[type=search] { font-size: 16px; margin-bottom: 0; }
-.top-bar ul > li.search:hover, .top-bar ul > li.search:focus { background: #222222; }
-.top-bar ul > li.login { padding: 0 15px; }
-.top-bar ul > li.login form { display: inline-block; margin-bottom: 0; vertical-align: middle; width: 300px; }
-.top-bar ul > li.login form input { float: left; width: auto; font-size: 13px; margin-top: -1px; height: 22.5px; margin-bottom: 0; }
-.top-bar ul > li.login form input[type=text] { -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; width: 120px; }
-.top-bar ul > li.login form input[type=password] { margin-bottom: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; width: 120px; }
-.top-bar ul > li.login form input[type=password] + .button { border-left: none; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; -moz-border-radius-topright: 2px; -webkit-border-top-right-radius: 2px; border-top-right-radius: 2px; -moz-border-radius-bottomright: 2px; -webkit-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; float: left; font-size: 12px; margin-top: -1px; padding: 5px 12px 4px; width: 60px; }
-.top-bar ul > li.login:hover, .top-bar ul > li.login:focus { background: #222222; }
-.top-bar ul > li.toggle-topbar { display: none; }
-.top-bar ul > li.has-dropdown { position: relative; /* Dropdown Level 2+ */ }
-.top-bar ul > li.has-dropdown:hover > .dropdown, .top-bar ul > li.has-dropdown:focus > .dropdown { display: block; visibility: visible; }
-.top-bar ul > li.has-dropdown a { padding-right: 33.75px; }
-.top-bar ul > li.has-dropdown a:after { content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: white transparent transparent transparent; margin-right: 15px; margin-top: -2.5px; position: absolute; right: 0; top: 50%; }
-.top-bar ul > li.has-dropdown .dropdown { background: #222222; left: 0; margin: 0; padding: 9px 0 0 0; position: absolute; visibility: hidden; z-index: 99; }
-.top-bar ul > li.has-dropdown .dropdown li { background: #222222; line-height: 1; min-width: 100%; padding-bottom: 5px; }
-.top-bar ul > li.has-dropdown .dropdown li a { color: white; font-weight: normal; height: 100%; line-height: 1; padding: 5px 17px 5px 15px; white-space: nowrap; }
-.top-bar ul > li.has-dropdown .dropdown li a:after { border: none; }
-.top-bar ul > li.has-dropdown .dropdown li a:hover, .top-bar ul > li.has-dropdown .dropdown li a:focus { background: #3c3c3c; }
-.top-bar ul > li.has-dropdown .dropdown li label { color: #6f6f6f; font-size: 10px; font-weight: bold; margin: 0; padding-left: 15px; text-transform: uppercase; }
-.top-bar ul > li.has-dropdown .dropdown li.divider { border-top: solid 1px black; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1) inset; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1) inset; height: 10px; padding: 0; width: 100%; }
-.top-bar ul > li.has-dropdown .dropdown li:last-child { padding-bottom: 10px; }
-.top-bar ul > li.has-dropdown .dropdown li.active a { background: black; }
-.top-bar ul > li.has-dropdown .dropdown li.has-dropdown > a { padding-right: 30px; }
-.top-bar ul > li.has-dropdown .dropdown li.has-dropdown > a:after { border: none; content: "\00bb"; right: 5px; top: 6px; }
-.top-bar ul > li.has-dropdown .dropdown li.has-dropdown .dropdown { position: absolute; left: 100%; top: 0; }
-.top-bar ul > li.has-dropdown .dropdown li.has-dropdown:hover > .dropdown, .top-bar ul > li.has-dropdown .dropdown li.has-dropdown:focus > .dropdown { display: block; }
-.top-bar ul.left { float: left; width: auto; margin-bottom: 0; }
-.top-bar ul.right { float: right; width: auto; margin-bottom: 0; /* Dropdown Right Side Alignment */ }
-.top-bar ul.right .has-dropdown .dropdown { left: auto; right: 0px; }
-.top-bar ul.right .has-dropdown .dropdown li.has-dropdown > .dropdown { right: 100%; left: auto; width: 100%; }
-.top-bar .js-generated { display: none; }
-
-/* Firefox Fixes */
-@-moz-document url-prefix() { .top-bar ul li .button.small { padding-bottom: 6px; }
- .top-bar ul li.search form input[type=search] { font-size: 14px; height: 22px; padding: 3px; } }
-
-/* IE8 Fixes */
-.lt-ie9 .top-bar ul li a { color: white; display: block; font-weight: bold; font-size: 13px; height: 45px; line-height: 45px; padding: 0 15px; }
-.lt-ie9 .top-bar ul li a.button { height: auto; line-height: 30px; margin-top: 7px; }
-.lt-ie9 .top-bar ul li a img { margin-top: -5px; vertical-align: middle; }
-
-.lt-ie9 .top-bar section > ul > li a:hover, .lt-ie9 .top-bar section > ul > li a:focus { color: #cccccc; }
-.lt-ie9 .top-bar section > ul > li:hover, .lt-ie9 .top-bar section > ul > li:focus { background: black; }
-.lt-ie9 .top-bar section > ul > li.search:hover, .lt-ie9 .top-bar section > ul > li.search:focus, .lt-ie9 .top-bar section > ul > li.has-button:hover, .lt-ie9 .top-bar section > ul > li.has-button:focus { background: none; }
-.lt-ie9 .top-bar section > ul > li.active { background: black; color: #d9d9d9; }
-
-.lt-ie9 .top-bar ul li.has-dropdown { padding-right: 33.75px; }
-.lt-ie9 .top-bar ul li.has-dropdown > ul li { padding-right: 0; }
-
-#joyRideTipContent { display: none; }
-
-/* Default styles for the container */
-.joyride-tip-guide { display: none; position: absolute; background: black; background: rgba(0, 0, 0, 0.8); color: white; width: 300px; z-index: 101; top: 0; left: 0; font-family: inherit; font-weight: normal; -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; }
-
-.joyride-content-wrapper { padding: 18px 20px 24px; }
-
-/* Add a little css triangle pip, older browser just miss out on the fanciness of it */
-.joyride-tip-guide span.joyride-nub { display: block; position: absolute; left: 22px; width: 0; height: 0; border: solid 14px; }
-.joyride-tip-guide span.joyride-nub.top { border-color: black; border-color: rgba(0, 0, 0, 0.8); border-top-color: transparent !important; border-left-color: transparent !important; border-right-color: transparent !important; top: -28px; bottom: none; }
-.joyride-tip-guide span.joyride-nub.bottom { border-color: black; border-color: rgba(0, 0, 0, 0.8) !important; border-bottom-color: transparent !important; border-left-color: transparent !important; border-right-color: transparent !important; bottom: -28px; bottom: none; }
-.joyride-tip-guide span.joyride-nub.right { border-color: black; border-color: rgba(0, 0, 0, 0.8) !important; border-top-color: transparent !important; border-right-color: transparent !important; border-bottom-color: transparent !important; top: 22px; bottom: none; left: auto; right: -28px; }
-.joyride-tip-guide span.joyride-nub.left { border-color: black; border-color: rgba(0, 0, 0, 0.8) !important; border-top-color: transparent !important; border-left-color: transparent !important; border-bottom-color: transparent !important; top: 22px; left: -28px; right: auto; bottom: none; }
-
-/* Typography */
-.joyride-tip-guide h1, .joyride-tip-guide h2, .joyride-tip-guide h3, .joyride-tip-guide h4, .joyride-tip-guide h5, .joyride-tip-guide h6 { line-height: 1.25; margin: 0; font-weight: bold; color: white; }
-
-.joyride-tip-guide p { margin: 0 0 18px 0; font-size: 14px; line-height: 1.3; }
-
-.joyride-timer-indicator-wrap { width: 50px; height: 3px; border: solid 1px #555555; position: absolute; right: 17px; bottom: 16px; }
-
-.joyride-timer-indicator { display: block; width: 0; height: inherit; background: #666666; }
-
-.joyride-close-tip { position: absolute; right: 10px; top: 10px; color: #777777 !important; text-decoration: none; font-size: 20px; font-weight: normal; line-height: .5 !important; }
-.joyride-close-tip:hover, .joyride-close-tip:focus { color: #eee !important; }
-
-.joyride-modal-bg { position: fixed; height: 100%; width: 100%; background: transparent; background: rgba(0, 0, 0, 0.5); z-index: 100; display: none; top: 0; left: 0; cursor: pointer; }
-
-.clearing-blackout { background: black; background: rgba(0, 0, 0, 0.8); position: fixed; width: 100%; height: 100%; top: 0; left: 0; z-index: 999; }
-.clearing-blackout .clearing-close { display: block; }
-
-.clearing-container { position: relative; z-index: 999; height: 100%; overflow: hidden; }
-
-.visible-img { height: 75%; position: relative; }
-.visible-img img { position: absolute; left: 50%; top: 50%; margin-left: -50%; max-height: 100%; max-width: 100%; }
-.visible-img .clearing-caption { color: white; margin-bottom: 0; text-align: center; position: absolute; bottom: 0; background: black; background: rgba(0, 0, 0, 0.7); width: 100%; padding: 10px 100px; }
-
-.clearing-close { z-index: 999; position: absolute; top: 10px; right: 20px; font-size: 30px; line-height: 1; color: white; display: none; }
-.clearing-close:hover, .clearing-close:focus { color: #ccc; }
-
-.clearing-main-left, .clearing-main-right { position: absolute; top: 50%; margin-top: -16px; }
-
-.clearing-main-left.disabled, .clearing-main-right.disabled { opacity: 0.5; }
-
-.clearing-main-left:active, .clearing-main-right:active { margin-top: -15px; }
-
-.clearing-main-left { left: 10px; content: ""; display: block; width: 0; height: 0; border: solid 16px; border-color: transparent white transparent transparent; }
-
-.clearing-main-right { right: 10px; content: ""; display: block; width: 0; height: 0; border: solid 16px; border-color: transparent transparent transparent white; }
-
-ul[data-clearing].block-grid.three-up > li:nth-child(3n+1) { clear: none; }
-
-ul[data-clearing] li { cursor: pointer; display: block; }
-ul[data-clearing] li.clearing-feature ~ li { display: none; }
-
-.clearing-assembled .clearing-container .carousel { background: black; background: rgba(0, 0, 0, 0.75); height: 150px; margin-top: 5px; }
-.clearing-assembled .clearing-container .visible-img { background: black; background: rgba(0, 0, 0, 0.75); overflow: hidden; }
-.clearing-assembled .clearing-container ul[data-clearing] { z-index: 999; width: 200%; height: 100%; margin-left: 0; position: relative; left: 0; }
-.clearing-assembled .clearing-container ul[data-clearing] li { display: block; width: 175px; height: inherit; padding: 0; float: left; overflow: hidden; background: #222; margin-right: 1px; position: relative; }
-.clearing-assembled .clearing-container ul[data-clearing] li.fix-height img { min-height: 100%; height: 100%; max-width: none; }
-.clearing-assembled .clearing-container ul[data-clearing] li img { cursor: pointer !important; min-width: 100% !important; }
-.clearing-assembled .clearing-container ul[data-clearing] li.visible { border-top: 4px solid white; }
-
-/* Overrides clear:both; when using block-grid with Clearing. Also overrided .th styling when Clearing is open */
-ul.block-grid[data-clearing] { overflow: visible; }
-
-.clearing-blackout ul.block-grid[data-clearing].two-up > li:nth-child(2n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].three-up > li:nth-child(3n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].four-up > li:nth-child(4n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].five-up > li:nth-child(5n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].six-up > li:nth-child(6n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].seven-up > li:nth-child(7n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].eight-up > li:nth-child(8n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].nine-up > li:nth-child(9n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].ten-up > li:nth-child(10n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].eleven-up > li:nth-child(11n+1) { clear: none; }
-.clearing-blackout ul.block-grid[data-clearing].twelve-up > li:nth-child(12n+1) { clear: none; }
-.clearing-blackout .th img { border: none; -webkit-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); -webkit-border-radius: 0; -moz-border-radius: 0; -ms-border-radius: 0; -o-border-radius: 0; border-radius: 0; }
-.clearing-blackout:hover img, .clearing-blackout:focus img { -webkit-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); }
-
-/* Visibility Classes ---------------------- */
-/* */
-/* Standard (large) display targeting */
-.show-for-small, .show-for-medium, .show-for-medium-down, .hide-for-large, .hide-for-large-up, .show-for-xlarge, .show-for-print { display: none !important; }
-
-.hide-for-small, .hide-for-medium, .hide-for-medium-down, .show-for-large, .show-for-large-up, .hide-for-xlarge, .hide-for-print { display: inherit !important; }
-
-/* Very large display targeting */
-@media only screen and (min-width: 1441px) { .hide-for-small, .hide-for-medium, .hide-for-medium-down, .hide-for-large, .show-for-large-up, .show-for-xlarge { display: inherit !important; }
- .show-for-small, .show-for-medium, .show-for-medium-down, .show-for-large, .hide-for-large-up, .hide-for-xlarge { display: none !important; } }
-/* Medium display targeting */
-@media only screen and (max-width: 1279px) and (min-width: 768px) { .hide-for-small, .show-for-medium, .show-for-medium-down, .hide-for-large, .hide-for-large-up, .hide-for-xlarge { display: inherit !important; }
- .show-for-small, .hide-for-medium, .hide-for-medium-down, .show-for-large, .show-for-large-up, .show-for-xlarge { display: none !important; } }
-/* Small display targeting */
-@media only screen and (max-width: 767px) { .show-for-small, .hide-for-medium, .show-for-medium-down, .hide-for-large, .hide-for-large-up, .hide-for-xlarge { display: inherit !important; }
- .hide-for-small, .show-for-medium, .hide-for-medium-down, .show-for-large, .show-for-large-up, .show-for-xlarge { display: none !important; } }
-/* Orientation targeting */
-.show-for-landscape, .hide-for-portrait { display: inherit !important; }
-
-.hide-for-landscape, .show-for-portrait { display: none !important; }
-
-@media screen and (orientation: landscape) { .show-for-landscape, .hide-for-portrait { display: inherit !important; }
- .hide-for-landscape, .show-for-portrait { display: none !important; } }
-@media screen and (orientation: portrait) { .show-for-portrait, .hide-for-landscape { display: inherit !important; }
- .hide-for-portrait, .show-for-landscape { display: none !important; } }
-/* Touch-enabled device targeting */
-.show-for-touch { display: none !important; }
-
-.hide-for-touch { display: inherit !important; }
-
-.touch .show-for-touch { display: inherit !important; }
-
-.touch .hide-for-touch { display: none !important; }
-
-/* Specific overrides for elements that require something other than display: block */
-table.show-for-xlarge, table.show-for-large, table.hide-for-small, table.hide-for-medium { display: table !important; }
-
-@media only screen and (max-width: 1279px) and (min-width: 768px) { .touch table.hide-for-xlarge, .touch table.hide-for-large, .touch table.hide-for-small, .touch table.show-for-medium { display: table !important; } }
-@media only screen and (max-width: 767px) { table.hide-for-xlarge, table.hide-for-large, table.hide-for-medium, table.show-for-small { display: table !important; } }
-/* 1280 tablet ------------ */
-@media only screen and (max-device-width: 1280px) { /* NavBar --- */
- /* */
- .touch .nav-bar li.has-flyout > a { padding-right: 36px !important; } }
-/* Covering almost all ----- */
-@media only screen and (max-device-width: 800px), only screen and (device-width: 1024px) and (device-height: 600px), only screen and (width: 1280px) and (orientation: landscape), only screen and (device-width: 800px), only screen and (max-width: 767px) { .flex-video { padding-top: 0; } }
-/* Between Medium and Small */
-@media only screen and (max-width: 1279px) and (min-width: 768px) { /* NavBar --- */
- /* */
- .touch .nav-bar li a { font-size: 13px; }
- .touch .nav-bar li.has-flyout > a.flyout-toggle { padding: 20px !important; }
- .touch .nav-bar li.has-flyout > a { padding-right: 36px !important; }
- /* Clearing --- */
- /* */
- .clearing-main-right, .clearing-main-left { height: 100%; width: 40px; top: 0; border: none; }
- .clearing-main-right:before, .clearing-main-left:before { position: absolute; top: 50%; }
- .clearing-main-left { left: 0; }
- .clearing-main-left:before { left: 5px; content: ""; display: block; width: 0; height: 0; border: solid 16px; border-color: transparent white transparent transparent; }
- .clearing-main-right { height: 100%; right: 0; }
- .clearing-main-right:before { content: ""; display: block; width: 0; height: 0; border: solid 16px; border-color: transparent transparent transparent white; } }
-/* Small Devices ------------ */
-@media only screen and (max-width: 767px) { /* Global Misc --- */
- /* */
- .left, .right { float: none; }
- body { -webkit-text-size-adjust: none; -ms-text-size-adjust: none; width: 100%; min-width: 0; margin-left: 0; margin-right: 0; padding-left: 0; padding-right: 0; }
- /* The Grid --- */
- /* */
- .row { width: auto; min-width: 0; margin-left: 0; margin-right: 0; }
- .column, .columns { width: auto !important; float: none; }
- .column:last-child, .columns:last-child { float: none; }
- [class*="column"] + [class*="column"]:last-child { float: none; }
- .column:before, .columns:before, .column:after, .columns:after { content: ""; display: table; }
- .column:after, .columns:after { clear: both; }
- .offset-by-one, .offset-by-two, .offset-by-three, .offset-by-four, .offset-by-five, .offset-by-six, .offset-by-seven, .offset-by-eight, .offset-by-nine, .offset-by-ten { margin-left: 0 !important; }
- .push-two, .push-three, .push-four, .push-five, .push-six, .push-seven, .push-eight, .push-nine, .push-ten { left: auto; }
- .pull-two, .pull-three, .pull-four, .pull-five, .pull-six, .pull-seven, .pull-eight, .pull-nine, .pull-ten { right: auto; }
- /* Mobile 4-column Grid */
- .row .mobile-one { width: 25% !important; float: left; padding: 0 15px; }
- .row .mobile-one:last-child { float: right; }
- .row .mobile-one.end { float: left; }
- .row.collapse .mobile-one { padding: 0; }
- .row .mobile-two { width: 50% !important; float: left; padding: 0 15px; }
- .row .mobile-two:last-child { float: right; }
- .row .mobile-two.end { float: left; }
- .row.collapse .mobile-two { padding: 0; }
- .row .mobile-three { width: 75% !important; float: left; padding: 0 15px; }
- .row .mobile-three:last-child { float: right; }
- .row .mobile-three.end { float: left; }
- .row.collapse .mobile-three { padding: 0; }
- .row .mobile-four { width: 100% !important; float: left; padding: 0 15px; }
- .row .mobile-four:last-child { float: right; }
- .row .mobile-four.end { float: left; }
- .row.collapse .mobile-four { padding: 0; }
- .push-one-mobile { left: 25%; }
- .pull-one-mobile { right: 25%; }
- .push-two-mobile { left: 50%; }
- .pull-two-mobile { right: 50%; }
- .push-three-mobile { left: 75%; }
- .pull-three-mobile { right: 75%; }
- /* Block Grids --- */
- /* */
- .block-grid.mobile > li { float: none; width: 100%; margin-left: 0; }
- .block-grid > li { clear: none; }
- .block-grid.mobile-one-up > li { width: 100%; }
- .block-grid.mobile-two-up > li { width: 50%; }
- .block-grid.mobile-two-up > li:nth-child(2n+1) { clear: both; }
- .block-grid.mobile-three-up > li { width: 33.33333%; }
- .block-grid.mobile-three-up > li:nth-child(3n+1) { clear: both; }
- .block-grid.mobile-four-up > li { width: 25%; }
- .block-grid.mobile-four-up > li:nth-child(4n+1) { clear: both; }
- .block-grid.mobile-five-up > li { width: 20%; }
- .block-grid.mobile-five-up > li:nth-child(5n+1) { clear: both; }
- .block-grid.mobile-six-up > li { width: 16.66667%; }
- .block-grid.mobile-six-up > li:nth-child(6n+1) { clear: both; }
- .block-grid.mobile-seven-up > li { width: 14.28571%; }
- .block-grid.mobile-seven-up > li:nth-child(7n+1) { clear: both; }
- .block-grid.mobile-eight-up > li { width: 12.5%; }
- .block-grid.mobile-eight-up > li:nth-child(8n+1) { clear: both; }
- .block-grid.mobile-nine-up > li { width: 11.11111%; }
- .block-grid.mobile-nine-up > li:nth-child(9n+1) { clear: both; }
- .block-grid.mobile-ten-up > li { width: 10%; }
- .block-grid.mobile-ten-up > li:nth-child(10n+1) { clear: both; }
- .block-grid.mobile-eleven-up > li { width: 9.09091%; }
- .block-grid.mobile-eleven-up > li:nth-child(11n+1) { clear: both; }
- .block-grid.mobile-twelve-up > li { width: 8.33333%; }
- .block-grid.mobile-twelve-up > li:nth-child(12n+1) { clear: both; }
- /* Forms --- */
- /* */
- /* Label alignment */
- label.right { text-align: left; }
- /* Extend width of all inputs */
- input[type="text"].one, .row input[type="text"].one, input[type="password"].one, .row input[type="password"].one, input[type="date"].one, .row input[type="date"].one, input[type="datetime"].one, .row input[type="datetime"].one, input[type="email"].one, .row input[type="email"].one, input[type="number"].one, .row input[type="number"].one, input[type="search"].one, .row input[type="search"].one, input[type="tel"].one, .row input[type="tel"].one, input[type="time"].one, .row input[type="time"].one, input[type="url"].one, .row input[type="url"].one, textarea.one, .row textarea.one { width: 100% !important; }
- input[type="text"].two, .row input[type="text"].two, input[type="password"].two, .row input[type="password"].two, input[type="date"].two, .row input[type="date"].two, input[type="datetime"].two, .row input[type="datetime"].two, input[type="email"].two, .row input[type="email"].two, input[type="number"].two, .row input[type="number"].two, input[type="search"].two, .row input[type="search"].two, input[type="tel"].two, .row input[type="tel"].two, input[type="time"].two, .row input[type="time"].two, input[type="url"].two, .row input[type="url"].two, textarea.two, .row textarea.two { width: 100% !important; }
- input[type="text"].three, .row input[type="text"].three, input[type="password"].three, .row input[type="password"].three, input[type="date"].three, .row input[type="date"].three, input[type="datetime"].three, .row input[type="datetime"].three, input[type="email"].three, .row input[type="email"].three, input[type="number"].three, .row input[type="number"].three, input[type="search"].three, .row input[type="search"].three, input[type="tel"].three, .row input[type="tel"].three, input[type="time"].three, .row input[type="time"].three, input[type="url"].three, .row input[type="url"].three, textarea.three, .row textarea.three { width: 100% !important; }
- input[type="text"].four, .row input[type="text"].four, input[type="password"].four, .row input[type="password"].four, input[type="date"].four, .row input[type="date"].four, input[type="datetime"].four, .row input[type="datetime"].four, input[type="email"].four, .row input[type="email"].four, input[type="number"].four, .row input[type="number"].four, input[type="search"].four, .row input[type="search"].four, input[type="tel"].four, .row input[type="tel"].four, input[type="time"].four, .row input[type="time"].four, input[type="url"].four, .row input[type="url"].four, textarea.four, .row textarea.four { width: 100% !important; }
- input[type="text"].five, .row input[type="text"].five, input[type="password"].five, .row input[type="password"].five, input[type="date"].five, .row input[type="date"].five, input[type="datetime"].five, .row input[type="datetime"].five, input[type="email"].five, .row input[type="email"].five, input[type="number"].five, .row input[type="number"].five, input[type="search"].five, .row input[type="search"].five, input[type="tel"].five, .row input[type="tel"].five, input[type="time"].five, .row input[type="time"].five, input[type="url"].five, .row input[type="url"].five, textarea.five, .row textarea.five { width: 100% !important; }
- input[type="text"].six, .row input[type="text"].six, input[type="password"].six, .row input[type="password"].six, input[type="date"].six, .row input[type="date"].six, input[type="datetime"].six, .row input[type="datetime"].six, input[type="email"].six, .row input[type="email"].six, input[type="number"].six, .row input[type="number"].six, input[type="search"].six, .row input[type="search"].six, input[type="tel"].six, .row input[type="tel"].six, input[type="time"].six, .row input[type="time"].six, input[type="url"].six, .row input[type="url"].six, textarea.six, .row textarea.six { width: 100% !important; }
- input[type="text"].seven, .row input[type="text"].seven, input[type="password"].seven, .row input[type="password"].seven, input[type="date"].seven, .row input[type="date"].seven, input[type="datetime"].seven, .row input[type="datetime"].seven, input[type="email"].seven, .row input[type="email"].seven, input[type="number"].seven, .row input[type="number"].seven, input[type="search"].seven, .row input[type="search"].seven, input[type="tel"].seven, .row input[type="tel"].seven, input[type="time"].seven, .row input[type="time"].seven, input[type="url"].seven, .row input[type="url"].seven, textarea.seven, .row textarea.seven { width: 100% !important; }
- input[type="text"].eight, .row input[type="text"].eight, input[type="password"].eight, .row input[type="password"].eight, input[type="date"].eight, .row input[type="date"].eight, input[type="datetime"].eight, .row input[type="datetime"].eight, input[type="email"].eight, .row input[type="email"].eight, input[type="number"].eight, .row input[type="number"].eight, input[type="search"].eight, .row input[type="search"].eight, input[type="tel"].eight, .row input[type="tel"].eight, input[type="time"].eight, .row input[type="time"].eight, input[type="url"].eight, .row input[type="url"].eight, textarea.eight, .row textarea.eight { width: 100% !important; }
- input[type="text"].nine, .row input[type="text"].nine, input[type="password"].nine, .row input[type="password"].nine, input[type="date"].nine, .row input[type="date"].nine, input[type="datetime"].nine, .row input[type="datetime"].nine, input[type="email"].nine, .row input[type="email"].nine, input[type="number"].nine, .row input[type="number"].nine, input[type="search"].nine, .row input[type="search"].nine, input[type="tel"].nine, .row input[type="tel"].nine, input[type="time"].nine, .row input[type="time"].nine, input[type="url"].nine, .row input[type="url"].nine, textarea.nine, .row textarea.nine { width: 100% !important; }
- input[type="text"].ten, .row input[type="text"].ten, input[type="password"].ten, .row input[type="password"].ten, input[type="date"].ten, .row input[type="date"].ten, input[type="datetime"].ten, .row input[type="datetime"].ten, input[type="email"].ten, .row input[type="email"].ten, input[type="number"].ten, .row input[type="number"].ten, input[type="search"].ten, .row input[type="search"].ten, input[type="tel"].ten, .row input[type="tel"].ten, input[type="time"].ten, .row input[type="time"].ten, input[type="url"].ten, .row input[type="url"].ten, textarea.ten, .row textarea.ten { width: 100% !important; }
- input[type="text"].eleven, .row input[type="text"].eleven, input[type="password"].eleven, .row input[type="password"].eleven, input[type="date"].eleven, .row input[type="date"].eleven, input[type="datetime"].eleven, .row input[type="datetime"].eleven, input[type="email"].eleven, .row input[type="email"].eleven, input[type="number"].eleven, .row input[type="number"].eleven, input[type="search"].eleven, .row input[type="search"].eleven, input[type="tel"].eleven, .row input[type="tel"].eleven, input[type="time"].eleven, .row input[type="time"].eleven, input[type="url"].eleven, .row input[type="url"].eleven, textarea.eleven, .row textarea.eleven { width: 100% !important; }
- input[type="text"].twelve, .row input[type="text"].twelve, input[type="password"].twelve, .row input[type="password"].twelve, input[type="date"].twelve, .row input[type="date"].twelve, input[type="datetime"].twelve, .row input[type="datetime"].twelve, input[type="email"].twelve, .row input[type="email"].twelve, input[type="number"].twelve, .row input[type="number"].twelve, input[type="search"].twelve, .row input[type="search"].twelve, input[type="tel"].twelve, .row input[type="tel"].twelve, input[type="time"].twelve, .row input[type="time"].twelve, input[type="url"].twelve, .row input[type="url"].twelve, textarea.twelve, .row textarea.twelve { width: 100% !important; }
- /* Buttons --- */
- /* */
- /* Basic overrides */
- .button { display: block; }
- button.button, input[type="submit"].button, input[type="reset"].button { width: 100%; padding-left: 0; padding-right: 0; }
- /* Button Groups */
- .button-group button.button, .button-group input[type="submit"].button { width: auto; padding: 10px 20px 11px; }
- .button-group button.button.large, .button-group input[type="submit"].button.large { padding: 15px 30px 16px; }
- .button-group button.button.medium, .button-group input[type="submit"].button.medium { padding: 10px 20px 11px; }
- .button-group button.button.small, .button-group input[type="submit"].button.small { padding: 7px 14px 8px; }
- .button-group button.button.tiny, .button-group input[type="submit"].button.tiny { padding: 5px 10px 6px; }
- .button-group.even button.button, .button-group.even input[type="submit"].button { width: 100%; padding-left: 0; padding-right: 0; }
- /* Navbar --- */
- /* */
- .nav-bar { height: auto; }
- .nav-bar > li { float: none; display: block; border-right: none; }
- .nav-bar > li > a.main { text-align: left; border-top: 1px solid #ddd; border-right: none; }
- .nav-bar > li:first-child > a.main { border-top: none; }
- .nav-bar > li.has-flyout > a.flyout-toggle { position: absolute; right: 0; top: 0; padding: 22px; z-index: 2; display: block; }
- .nav-bar > li.has-flyout.is-touch > a.flyout-toggle span { content: ""; width: 0; height: 0; display: block; }
- .nav-bar > li.has-flyout > a.flyout-toggle:hover span { border-top-color: #141414; }
- .nav-bar.vertical > li.has-flyout > .flyout { left: 0; }
- .flyout { position: relative; width: 100% !important; top: auto; margin-right: -2px; border-width: 1px 1px 0 1px; }
- .flyout.right { float: none; right: auto; left: -1px; }
- .flyout.small, .flyout.large { width: 100% !important; }
- .flyout p:last-child { margin-bottom: 18px; }
- /* Reveal --- */
- /* */
- .reveal-modal-bg { position: absolute; }
- .reveal-modal, .reveal-modal.small, .reveal-modal.medium, .reveal-modal.large, .reveal-modal.xlarge { width: 80%; top: 15px; left: 50%; margin-left: -40%; padding: 20px; height: auto; }
- /* Clearing --- */
- /* */
- .clearing-container { margin: 0; }
- .clearing-close { z-index: 99; font-size: 37px; top: 0px; right: 5px; }
- .clearing-caption { position: fixed; bottom: 0; left: 0; padding: 10px !important; line-height: 1.3; }
- .clearing-main-right, .clearing-main-left { display: none; }
- .clearing-blackout.clearing-assembled .visible-img, .clearing-blackout.clearing-assembled .clearing-container { height: 100%; }
- .clearing-blackout.clearing-assembled ul[data-clearing] { display: none; }
- /* Joyride --- */
- /* */
- .joyride-tip-guide { width: 95% !important; left: 2.5% !important; -webkit-border-radius: 4px; -moz-border-radius: 4px; -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; }
- .joyride-tip-guide-wrapper { width: 100%; }
- /* Tabs --- */
- /* */
- .tabs.mobile { width: auto; margin: 20px -20px 40px; border-bottom: solid 1px #ccc; height: auto; margin: 20px -15px 0px -15px; }
- .tabs.mobile dt, .tabs.mobile li, .tabs.mobile dd { float: none; height: auto; }
- .tabs.mobile dd a, .tabs.mobile li a { font-size: 15px; display: block; width: auto; height: auto; padding: 18px 20px; margin: 0; color: #555; line-height: 1; border: none; border-left: none; border-right: none; border-top: 1px solid #ccc; background: #fff; }
- .tabs.mobile dd a.active, .tabs.mobile li a.active { border: none; background: #2f343b; color: #fff; margin: 0; position: static; top: 0; height: auto; }
- .tabs.mobile dd:first-child a.active, .tabs.mobile li:first-child a.active { margin: 0; }
- .tabs.mobile + .tabs-content.contained { margin-left: -15px; margin-right: -15px; }
- .tabs.mobile .section-title { padding-left: 20px !important; }
- .contained.mobile { margin-bottom: 0; }
- .contained.tabs.mobile dd a, .contained.tabs.mobile li a { padding: 18px 20px; }
- .tabs.mobile + ul.contained { margin-left: -20px; margin-right: -20px; border-width: 0 0 1px 0; }
- /* UI Elements --- */
- /* */
- /* Tooltips */
- .tooltip { font-size: 14px; line-height: 1.4; padding: 7px 10px 9px 10px; left: 50% !important; max-width: 80% !important; margin-left: -40%; font-size: 110%; }
- .tooltip > .nub, .tooltip.top > .nub, .tooltip.left > .nub, .tooltip.right > .nub { border-color: transparent transparent black transparent; border-color: transparent transparent rgba(0, 0, 0, 0.85) transparent; top: -12px; left: 10px; } }
-/* Topbar Specific Breakpoint that you can customize */
-@media only screen and (max-width: 940px) { .top-bar { margin-bottom: 0; overflow: hidden; height: 45px; background: #222222; /* Override contain to grid stuff for breakpoint */ /* Setting up the sliding area */ /* When the Small Nav is Showing */ }
- .top-bar .js-generated { display: block; }
- .contain-to-grid .top-bar { width: auto; }
- .top-bar section { left: 0; position: relative; width: auto; -webkit-transition: left 300ms 0; -moz-transition: left 300ms 0; -o-transition: left 300ms 0; transition: left 300ms 0; }
- .top-bar ul { width: 100%; height: 100%; margin-bottom: 0; display: block; }
- .top-bar ul > li { float: none; /* Branding and name */ /* Dropdown Toggle */ /* Divider for breakpoint */ /* Search Overrides for breakpoint size */ /* Dropdown Level 1 */ /* Dropdown Level 2 */ }
- .top-bar ul > li.active, .top-bar ul > li:hover { background: #151515; }
- .top-bar ul > li.name { height: 45px; }
- .top-bar ul > li.name h1 { line-height: 1; }
- .top-bar ul > li.name h1 a { color: white; display: block; line-height: 45px !important; padding-left: 15px; height: 45px; }
- .top-bar ul > li:hover a, .top-bar ul > li.active a { color: white; }
- .top-bar ul > li a:not(.button) { color: white; }
- .top-bar ul > li.toggle-topbar { cursor: pointer; display: block; height: 45px; position: absolute; right: 0; top: 0; width: 50%; }
- .top-bar ul > li.toggle-topbar a { content: ""; display: block; width: 0; height: 0; border: solid 8px; border-color: white transparent transparent transparent; padding: 0; position: absolute; top: 50%; right: 22.5px; margin-top: -4px; }
- .top-bar ul > li.toggle-topbar:hover { background: inherit; }
- .top-bar ul > li.toggle-topbar a { padding: 0 !important; }
- .top-bar ul > li.divider { border-bottom: solid 1px #3c3c3c; border-top: solid 1px black; clear: both; height: 1px !important; margin: 8px 0 !important; width: 100%; }
- .top-bar ul > li.search { padding: 0 22.5px; }
- .top-bar ul > li.search form { width: 100%; }
- .top-bar ul > li.search form input[type=text] { width: 75%; }
- .top-bar ul > li.search form .button { top: -1px; width: 25%; }
- .top-bar ul > li.has-dropdown a { padding-right: 33.75px; }
- .top-bar ul > li.has-dropdown a:after { content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: transparent transparent transparent rgba(255, 255, 255, 0.5); margin-right: 15px; margin-top: -4.5px; position: absolute; top: 50%; }
- .top-bar ul > li.has-dropdown:hover > .dropdown { display: block; visibility: hidden; }
- .top-bar ul > li.has-dropdown .dropdown { visibility: hidden; z-index: 0 !important; }
- .top-bar ul > li.has-dropdown.moved { position: static; }
- .top-bar ul > li.has-dropdown.moved > .dropdown { top: 0; visibility: visible; }
- .top-bar ul > li.has-dropdown.moved > .dropdown li label { margin-bottom: 6px; padding-top: 6px !important; font-size: 11px; }
- .top-bar ul > li.has-dropdown.moved > .dropdown li:not(.title) { padding-bottom: 0; }
- .top-bar ul > li.has-dropdown.moved > .dropdown li:not(.title) a { padding: 8px 22.5px; font-size: 14px; }
- .top-bar ul > li.has-dropdown.moved > .dropdown li a, .top-bar ul > li.has-dropdown.moved > .dropdown li label { padding: 0 22.5px; }
- .top-bar ul > li.has-dropdown.moved > .dropdown li a:hover { background: #3c3c3c; display: block; }
- .top-bar ul > li.has-dropdown.moved > .dropdown li.divider { border-bottom: solid 1px rgba(255, 255, 255, 0.1); margin-top: 8px !important; margin-bottom: 8px !important; }
- .top-bar ul > li.has-dropdown.moved .back.title { padding-bottom: 0; }
- .top-bar ul > li.has-dropdown.moved .back.title a:before { position: absolute; top: 50%; left: 17.5px; margin-top: -5px; width: 0; height: 0; content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: transparent white transparent transparent; }
- .top-bar ul > li.has-dropdown.moved .back.title h5 { margin: 0; padding-left: 15px; position: relative; }
- .top-bar ul > li.has-dropdown.moved .back.title h5 a { background: transparent; padding-top: 8px; padding-bottom: 8px; font-size: 23px; font-weight: bold; }
- .top-bar ul > li.has-dropdown .dropdown li { background: transparent; }
- .top-bar ul > li.has-dropdown .dropdown li.has-dropdown .dropdown { left: 100% !important; top: 0; right: auto !important; }
- .top-bar ul > li.has-dropdown .dropdown li.has-dropdown > a { padding-right: 33.75px; }
- .top-bar ul > li.has-dropdown .dropdown li.has-dropdown > a:after { content: ""; margin-right: 15px; content: ""; display: block; width: 0; height: 0; border: solid 5px; border-color: transparent transparent transparent rgba(255, 255, 255, 0.5); position: absolute; top: 50%; margin-top: -4.5px; }
- .top-bar ul > li.has-dropdown .dropdown li.has-dropdown > a li a:hover { background: #3c3c3c; }
- .top-bar ul > li.has-dropdown .dropdown li.has-dropdown.moved { position: static; }
- .top-bar ul > li.has-dropdown .dropdown li.has-dropdown.moved .dropdown { top: 0; visibility: visible; }
- .top-bar ul > li.has-dropdown .dropdown li.has-dropdown:hover { display: block; }
- .top-bar ul.left, .top-bar ul.right { float: none; width: 100%; }
- .top-bar ul.left > li, .top-bar ul.right > li { display: block; float: none; margin: 0 !important; }
- .top-bar ul.left > li.has-dropdown .dropdown, .top-bar ul.right > li.has-dropdown .dropdown { left: 100% !important; top: 0; right: auto !important; }
- .top-bar section > ul li a:not(.button) { padding-left: 22.5px !important; }
- .top-bar.expanded { height: 100%; }
- .top-bar.expanded ul li.toggle-topbar a { content: ""; display: block; width: 0; height: 0; border: solid 8px; border-color: transparent transparent #cccccc transparent; top: auto; bottom: 50%; margin-bottom: -4px; }
- .top-bar ul li.has-button { padding: 5px 15px; }
- .top-bar ul li .button.small { margin: 0 !important; display: inline-block; width: 100%; }
- .top-bar ul > li.has-button a.button { margin: 0; } }
+.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 {
+ width: 100%;
+ float: left; }
+ .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 {
+ width: 50%;
+ float: left; }
+ .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 {
+ width: 33.33333%;
+ float: left; }
+ .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 {
+ width: 25%;
+ float: left; }
+ .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 {
+ width: 20%;
+ float: left; }
+ .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 {
+ width: 16.66667%;
+ float: left; }
+ .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 {
+ width: 14.28571%;
+ float: left; }
+ .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 {
+ width: 12.5%;
+ float: left; }
+ .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-left: 0;
+ padding-right: 0; }
+
+.small-collapse .row {
+ margin-left: 0;
+ margin-right: 0; }
+
+.small-uncollapse > .column, .small-uncollapse > .columns {
+ padding-left: 0.625rem;
+ padding-right: 0.625rem; }
+
+.small-centered {
+ float: none;
+ margin-left: auto;
+ margin-right: auto; }
+
+.small-uncentered,
+.small-push-0,
+.small-pull-0 {
+ position: static;
+ margin-left: 0;
+ margin-right: 0;
+ float: left; }
+
+@media 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 {
+ width: 100%;
+ float: left; }
+ .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 {
+ width: 50%;
+ float: left; }
+ .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 {
+ width: 33.33333%;
+ float: left; }
+ .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 {
+ width: 25%;
+ float: left; }
+ .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 {
+ width: 20%;
+ float: left; }
+ .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 {
+ width: 16.66667%;
+ float: left; }
+ .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 {
+ width: 14.28571%;
+ float: left; }
+ .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 {
+ width: 12.5%;
+ float: left; }
+ .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-left: 0;
+ padding-right: 0; }
+ .medium-collapse .row {
+ margin-left: 0;
+ margin-right: 0; }
+ .medium-uncollapse > .column, .medium-uncollapse > .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem; }
+ .medium-centered {
+ float: none;
+ margin-left: auto;
+ margin-right: auto; }
+ .medium-uncentered,
+ .medium-push-0,
+ .medium-pull-0 {
+ position: static;
+ margin-left: 0;
+ margin-right: 0;
+ float: left; } }
+
+@media 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 {
+ width: 100%;
+ float: left; }
+ .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 {
+ width: 50%;
+ float: left; }
+ .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 {
+ width: 33.33333%;
+ float: left; }
+ .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 {
+ width: 25%;
+ float: left; }
+ .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 {
+ width: 20%;
+ float: left; }
+ .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 {
+ width: 16.66667%;
+ float: left; }
+ .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 {
+ width: 14.28571%;
+ float: left; }
+ .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 {
+ width: 12.5%;
+ float: left; }
+ .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-left: 0;
+ padding-right: 0; }
+ .large-collapse .row {
+ margin-left: 0;
+ margin-right: 0; }
+ .large-uncollapse > .column, .large-uncollapse > .columns {
+ padding-left: 0.9375rem;
+ padding-right: 0.9375rem; }
+ .large-centered {
+ float: none;
+ margin-left: auto;
+ margin-right: auto; }
+ .large-uncentered,
+ .large-push-0,
+ .large-pull-0 {
+ position: static;
+ margin-left: 0;
+ margin-right: 0;
+ float: left; } }
+
+div,
+dl,
+dt,
+dd,
+ul,
+ol,
+li,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+pre,
+form,
+p,
+blockquote,
+th,
+td {
+ margin: 0;
+ padding: 0; }
+
+p {
+ font-size: inherit;
+ line-height: 1.6;
+ margin-bottom: 1rem;
+ text-rendering: optimizeLegibility; }
+
+em,
+i {
+ font-style: italic;
+ line-height: inherit; }
+
+strong,
+b {
+ font-weight: bold;
+ line-height: inherit; }
+
+small {
+ font-size: 80%;
+ line-height: inherit; }
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
+ font-weight: normal;
+ font-style: normal;
+ color: #222222;
+ text-rendering: optimizeLegibility;
+ margin-top: 0;
+ margin-bottom: 0.5rem;
+ line-height: 1.4; }
+ h1 small,
+ h2 small,
+ h3 small,
+ h4 small,
+ h5 small,
+ h6 small {
+ color: #cacaca;
+ line-height: 0; }
+
+h1 {
+ font-size: 1.5rem; }
+
+h2 {
+ font-size: 1.25rem; }
+
+h3 {
+ font-size: 1.1875rem; }
+
+h4 {
+ font-size: 1.125rem; }
+
+h5 {
+ font-size: 1.0625rem; }
+
+h6 {
+ font-size: 1rem; }
+
+@media 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 {
+ color: #2F343B;
+ text-decoration: none;
+ line-height: inherit;
+ cursor: pointer; }
+ a:hover, a:focus {
+ color: #282d33; }
+ a img {
+ border: 0; }
+
+hr {
+ max-width: 62.5rem;
+ height: 0;
+ border-right: 0;
+ border-top: 0;
+ border-bottom: 1px solid #cacaca;
+ border-left: 0;
+ margin: 1.25rem auto;
+ clear: both; }
+
+ul,
+ol,
+dl {
+ line-height: 1.6;
+ margin-bottom: 1rem;
+ list-style-position: outside; }
+
+li {
+ font-size: inherit; }
+
+ul {
+ list-style-type: disc;
+ margin-left: 1.25rem; }
+
+ol {
+ margin-left: 1.25rem; }
+
+ul ul, ol ul, ul ol, ol ol {
+ margin-left: 1.25rem;
+ margin-bottom: 0; }
+
+dl {
+ margin-bottom: 1rem; }
+ dl dt {
+ margin-bottom: 0.3rem;
+ font-weight: bold; }
+
+blockquote {
+ margin: 0 0 1rem;
+ padding: 0.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: 0.8125rem;
+ color: #8a8a8a; }
+ cite:before {
+ content: '\2014 \0020'; }
+
+abbr {
+ color: #222222;
+ cursor: help;
+ border-bottom: 1px dotted #0a0a0a; }
+
+code {
+ font-family: Consolas, "Liberation Mono", Courier, monospace;
+ font-weight: normal;
+ color: #0a0a0a;
+ background-color: #e6e6e6;
+ border: 1px solid #cacaca;
+ padding: 0.125rem 0.3125rem 0.0625rem; }
+
+kbd {
+ padding: 0.125rem 0.25rem 0;
+ margin: 0;
+ background-color: #e6e6e6;
+ color: #0a0a0a;
+ font-family: Consolas, "Liberation Mono", Courier, monospace; }
+
+.subheader {
+ margin-top: 0.2rem;
+ margin-bottom: 0.5rem;
+ font-weight: normal;
+ 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 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 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;
+ color: black !important;
+ box-shadow: none !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 {
+ display: table-cell !important; }
+ 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^='javascript:']:after,
+ a[href^='#']:after {
+ content: ''; }
+ abbr[title]:after {
+ content: " (" attr(title) ")"; }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid; }
+ thead {
+ display: table-header-group; }
+ tr,
+ img {
+ page-break-inside: avoid; }
+ img {
+ max-width: 100% !important; }
+ @page {
+ margin: 0.5cm; }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3; }
+ h2,
+ h3 {
+ page-break-after: avoid; } }
+
+.button {
+ display: inline-block;
+ text-align: center;
+ line-height: 1;
+ cursor: pointer;
+ -webkit-appearance: none;
+ transition: background-color 0.25s ease-out, color 0.25s ease-out;
+ vertical-align: middle;
+ border: 1px solid transparent;
+ border-radius: 3px;
+ padding: 0.85em 1em;
+ margin: 0 0 1rem 0;
+ font-size: 0.9rem;
+ background-color: #2F343B;
+ color: #fff; }
+ [data-whatinput='mouse'] .button {
+ outline: 0; }
+ .button:hover, .button:focus {
+ background-color: #282c32;
+ color: #fff; }
+ .button.tiny {
+ font-size: 0.6rem; }
+ .button.small {
+ font-size: 0.75rem; }
+ .button.large {
+ font-size: 1.25rem; }
+ .button.expanded {
+ display: block;
+ width: 100%;
+ margin-left: 0;
+ margin-right: 0; }
+ .button.primary {
+ background-color: #2F343B;
+ color: #fff; }
+ .button.primary:hover, .button.primary:focus {
+ background-color: #262a2f;
+ color: #fff; }
+ .button.secondary {
+ background-color: #703030;
+ color: #fff; }
+ .button.secondary:hover, .button.secondary:focus {
+ background-color: #5a2626;
+ color: #fff; }
+ .button.success {
+ background-color: #5da423;
+ color: #fff; }
+ .button.success:hover, .button.success:focus {
+ background-color: #4a831c;
+ color: #fff; }
+ .button.alert {
+ background-color: #703030;
+ color: #fff; }
+ .button.alert:hover, .button.alert:focus {
+ background-color: #5a2626;
+ color: #fff; }
+ .button.warning {
+ background-color: #ffae00;
+ color: #fff; }
+ .button.warning:hover, .button.warning:focus {
+ background-color: #cc8b00;
+ color: #fff; }
+ .button.hollow {
+ border: 1px solid #2F343B;
+ color: #2F343B; }
+ .button.hollow, .button.hollow:hover, .button.hollow:focus {
+ background-color: transparent; }
+ .button.hollow:hover, .button.hollow:focus {
+ border-color: #181a1e;
+ color: #181a1e; }
+ .button.hollow.primary {
+ border: 1px solid #2F343B;
+ color: #2F343B; }
+ .button.hollow.primary:hover, .button.hollow.primary:focus {
+ border-color: #181a1e;
+ color: #181a1e; }
+ .button.hollow.secondary {
+ border: 1px solid #703030;
+ color: #703030; }
+ .button.hollow.secondary:hover, .button.hollow.secondary:focus {
+ border-color: #381818;
+ color: #381818; }
+ .button.hollow.success {
+ border: 1px solid #5da423;
+ color: #5da423; }
+ .button.hollow.success:hover, .button.hollow.success:focus {
+ border-color: #2f5212;
+ color: #2f5212; }
+ .button.hollow.alert {
+ border: 1px solid #703030;
+ color: #703030; }
+ .button.hollow.alert:hover, .button.hollow.alert:focus {
+ border-color: #381818;
+ color: #381818; }
+ .button.hollow.warning {
+ border: 1px solid #ffae00;
+ color: #ffae00; }
+ .button.hollow.warning:hover, .button.hollow.warning:focus {
+ border-color: #805700;
+ color: #805700; }
+ .button.disabled, .button[disabled] {
+ opacity: 0.25;
+ cursor: not-allowed;
+ pointer-events: none; }
+ .button.dropdown::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.4em;
+ border-color: #fefefe transparent transparent;
+ border-top-style: solid;
+ border-bottom-width: 0;
+ position: relative;
+ top: 0.4em;
+ float: right;
+ margin-left: 1em;
+ display: inline-block; }
+ .button.arrow-only::after {
+ margin-left: 0;
+ float: none;
+ top: 0.2em; }
+
+[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'],
+textarea {
+ display: block;
+ box-sizing: border-box;
+ width: 100%;
+ height: 2.4375rem;
+ padding: 0.5rem;
+ border: 1px solid #cacaca;
+ margin: 0 0 1rem;
+ font-family: inherit;
+ font-size: 1rem;
+ color: #0a0a0a;
+ background-color: #fefefe;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);
+ border-radius: 3px;
+ transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
+ -webkit-appearance: none;
+ -moz-appearance: none; }
+ [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,
+ textarea:focus {
+ border: 1px solid #8a8a8a;
+ background-color: #fefefe;
+ outline: none;
+ box-shadow: 0 0 5px #cacaca;
+ transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }
+
+textarea {
+ max-width: 100%; }
+ textarea[rows] {
+ height: auto; }
+
+input:disabled, input[readonly],
+textarea:disabled,
+textarea[readonly] {
+ background-color: #e6e6e6;
+ cursor: default; }
+
+[type='submit'],
+[type='button'] {
+ border-radius: 3px;
+ -webkit-appearance: none;
+ -moz-appearance: none; }
+
+input[type='search'] {
+ box-sizing: border-box; }
+
+[type='file'],
+[type='checkbox'],
+[type='radio'] {
+ margin: 0 0 1rem; }
+
+[type='checkbox'] + label,
+[type='radio'] + label {
+ display: inline-block;
+ margin-left: 0.5rem;
+ margin-right: 1rem;
+ margin-bottom: 0;
+ vertical-align: baseline; }
+
+label > [type='checkbox'],
+label > [type='label'] {
+ margin-right: 0.5rem; }
+
+[type='file'] {
+ width: 100%; }
+
+label {
+ display: block;
+ margin: 0;
+ font-size: 0.875rem;
+ font-weight: normal;
+ line-height: 1.8;
+ color: #0a0a0a; }
+ label.middle {
+ margin: 0 0 1rem;
+ padding: 0.5625rem 0; }
+
+.help-text {
+ margin-top: -0.5rem;
+ font-size: 0.8125rem;
+ font-style: italic;
+ color: #333; }
+
+.input-group {
+ display: table;
+ width: 100%;
+ margin-bottom: 1rem; }
+ .input-group > :first-child {
+ border-radius: 3px 0 0 3px; }
+ .input-group > :last-child > * {
+ border-radius: 0 3px 3px 0; }
+
+.input-group-label, .input-group-field, .input-group-button {
+ display: table-cell;
+ margin: 0;
+ vertical-align: middle; }
+
+.input-group-label {
+ text-align: center;
+ width: 1%;
+ height: 100%;
+ padding: 0 1rem;
+ background: #e6e6e6;
+ color: #0a0a0a;
+ border: 1px solid #cacaca;
+ white-space: nowrap; }
+ .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 {
+ height: 100%;
+ padding-top: 0;
+ padding-bottom: 0;
+ text-align: center;
+ width: 1%; }
+ .input-group-button a,
+ .input-group-button input,
+ .input-group-button button {
+ margin: 0; }
+
+fieldset {
+ border: 0;
+ padding: 0;
+ margin: 0; }
+
+legend {
+ margin-bottom: 0.5rem;
+ max-width: 100%; }
+
+.fieldset {
+ border: 1px solid #cacaca;
+ padding: 1.25rem;
+ margin: 1.125rem 0; }
+ .fieldset legend {
+ background: #fefefe;
+ padding: 0 0.1875rem;
+ margin: 0;
+ margin-left: -0.1875rem; }
+
+select {
+ height: 2.4375rem;
+ padding: 0.5rem;
+ border: 1px solid #cacaca;
+ margin: 0 0 1rem;
+ font-size: 1rem;
+ font-family: inherit;
+ line-height: normal;
+ color: #0a0a0a;
+ background-color: #fefefe;
+ border-radius: 3px;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="24" viewBox="0 0 32 24"><polygon points="0,0 32,0 16,24" style="fill: rgb%2851, 51, 51%29"></polygon></svg>');
+ background-size: 9px 6px;
+ background-position: right center;
+ background-origin: content-box;
+ background-repeat: no-repeat; }
+ @media screen and (min-width: 0\0) {
+ select {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } }
+ select:disabled {
+ background-color: #e6e6e6;
+ cursor: default; }
+ select::-ms-expand {
+ display: none; }
+ select[multiple] {
+ height: auto; }
+
+.is-invalid-input:not(:focus) {
+ background-color: rgba(112, 48, 48, 0.1);
+ border-color: #703030; }
+
+.is-invalid-label {
+ color: #703030; }
+
+.form-error {
+ display: none;
+ margin-top: -0.5rem;
+ margin-bottom: 1rem;
+ font-size: 0.75rem;
+ font-weight: bold;
+ color: #703030; }
+ .form-error.is-visible {
+ display: block; }
+
+.float-left {
+ float: left !important; }
+
+.float-right {
+ float: right !important; }
+
+.float-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto; }
+
+.clearfix::before, .clearfix::after {
+ content: ' ';
+ display: table; }
+
+.clearfix::after {
+ clear: both; }
+
+.accordion {
+ list-style-type: none;
+ background: #fefefe;
+ border: 1px solid #e6e6e6;
+ border-bottom: 0;
+ border-radius: 3px;
+ margin-left: 0; }
+
+.accordion-title {
+ display: block;
+ padding: 1.25rem 1rem;
+ line-height: 1;
+ font-size: 0.75rem;
+ color: #2F343B;
+ position: relative;
+ border-bottom: 1px solid #e6e6e6; }
+ .accordion-title:hover, .accordion-title:focus {
+ background-color: #e6e6e6; }
+ .accordion-title::before {
+ content: '+';
+ position: absolute;
+ right: 1rem;
+ top: 50%;
+ margin-top: -0.5rem; }
+ .is-active > .accordion-title::before {
+ content: '–'; }
+
+.accordion-content {
+ padding: 1rem;
+ display: none;
+ border-bottom: 1px solid #e6e6e6;
+ background-color: #fefefe; }
+
+.is-accordion-submenu-parent > a {
+ position: relative; }
+ .is-accordion-submenu-parent > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ border-color: #2F343B transparent transparent;
+ border-top-style: solid;
+ border-bottom-width: 0;
+ position: absolute;
+ top: 50%;
+ margin-top: -4px;
+ right: 1rem; }
+
+.is-accordion-submenu-parent[aria-expanded='true'] > a::after {
+ -webkit-transform-origin: 50% 50%;
+ -ms-transform-origin: 50% 50%;
+ transform-origin: 50% 50%;
+ -webkit-transform: scaleY(-1);
+ -ms-transform: scaleY(-1);
+ transform: scaleY(-1); }
+
+.badge {
+ display: inline-block;
+ padding: 0.3em;
+ min-width: 2.1em;
+ font-size: 0.6rem;
+ text-align: center;
+ border-radius: 50%;
+ background: #2F343B;
+ color: #fefefe; }
+ .badge.secondary {
+ background: #703030;
+ color: #fefefe; }
+ .badge.success {
+ background: #5da423;
+ color: #fefefe; }
+ .badge.alert {
+ background: #703030;
+ color: #fefefe; }
+ .badge.warning {
+ background: #ffae00;
+ color: #fefefe; }
+
+.breadcrumbs {
+ list-style: none;
+ margin: 0 0 1rem 0; }
+ .breadcrumbs::before, .breadcrumbs::after {
+ content: ' ';
+ display: table; }
+ .breadcrumbs::after {
+ clear: both; }
+ .breadcrumbs li {
+ float: left;
+ color: #0a0a0a;
+ font-size: 0.6875rem;
+ cursor: default;
+ text-transform: uppercase; }
+ .breadcrumbs li:not(:last-child)::after {
+ color: #cacaca;
+ content: "/";
+ margin: 0 0.75rem;
+ position: relative;
+ top: 1px;
+ opacity: 1; }
+ .breadcrumbs a {
+ color: #2F343B; }
+ .breadcrumbs a:hover {
+ text-decoration: underline; }
+ .breadcrumbs .disabled {
+ color: #cacaca; }
+
+.button-group {
+ margin-bottom: 1rem;
+ font-size: 0.9rem; }
+ .button-group::before, .button-group::after {
+ content: ' ';
+ display: table; }
+ .button-group::after {
+ clear: both; }
+ .button-group .button {
+ float: left;
+ margin: 0;
+ font-size: inherit; }
+ .button-group .button:not(:last-child) {
+ border-right: 1px solid #fefefe; }
+ .button-group.tiny {
+ font-size: 0.6rem; }
+ .button-group.small {
+ font-size: 0.75rem; }
+ .button-group.large {
+ font-size: 1.25rem; }
+ .button-group.expanded {
+ display: table;
+ table-layout: fixed;
+ width: 100%; }
+ .button-group.expanded::before, .button-group.expanded::after {
+ display: none; }
+ .button-group.expanded .button {
+ display: table-cell;
+ float: none; }
+ .button-group.primary .button {
+ background-color: #2F343B;
+ color: #fefefe; }
+ .button-group.primary .button:hover, .button-group.primary .button:focus {
+ background-color: #262a2f;
+ color: #fefefe; }
+ .button-group.secondary .button {
+ background-color: #703030;
+ color: #fefefe; }
+ .button-group.secondary .button:hover, .button-group.secondary .button:focus {
+ background-color: #5a2626;
+ color: #fefefe; }
+ .button-group.success .button {
+ background-color: #5da423;
+ color: #fefefe; }
+ .button-group.success .button:hover, .button-group.success .button:focus {
+ background-color: #4a831c;
+ color: #fefefe; }
+ .button-group.alert .button {
+ background-color: #703030;
+ color: #fefefe; }
+ .button-group.alert .button:hover, .button-group.alert .button:focus {
+ background-color: #5a2626;
+ color: #fefefe; }
+ .button-group.warning .button {
+ background-color: #ffae00;
+ color: #fefefe; }
+ .button-group.warning .button:hover, .button-group.warning .button:focus {
+ background-color: #cc8b00;
+ color: #fefefe; }
+ .button-group.stacked .button, .button-group.stacked-for-small .button {
+ width: 100%; }
+ .button-group.stacked .button:not(:last-child), .button-group.stacked-for-small .button:not(:last-child) {
+ border-right: 1px solid; }
+ @media screen and (min-width: 40em) {
+ .button-group.stacked-for-small .button {
+ width: auto; }
+ .button-group.stacked-for-small .button:not(:last-child) {
+ border-right: 1px solid #fefefe; } }
+ @media screen and (min-width: 0em) and (max-width: 39.9375em) {
+ .button-group.stacked-for-small.expanded {
+ display: block; }
+ .button-group.stacked-for-small.expanded .button {
+ display: block;
+ border-right: 0; } }
+
+.callout {
+ margin: 0 0 1rem 0;
+ padding: 1rem;
+ border: 1px solid rgba(10, 10, 10, 0.25);
+ border-radius: 3px;
+ position: relative;
+ color: #222222;
+ background-color: white; }
+ .callout > :first-child {
+ margin-top: 0; }
+ .callout > :last-child {
+ margin-bottom: 0; }
+ .callout.primary {
+ background-color: #dde0e4; }
+ .callout.secondary {
+ background-color: #efdada; }
+ .callout.success {
+ background-color: #e6f7d9; }
+ .callout.alert {
+ background-color: #efdada; }
+ .callout.warning {
+ background-color: #fff3d9; }
+ .callout.small {
+ padding-top: 0.5rem;
+ padding-right: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 0.5rem; }
+ .callout.large {
+ padding-top: 3rem;
+ padding-right: 3rem;
+ padding-bottom: 3rem;
+ padding-left: 3rem; }
+
+.close-button {
+ position: absolute;
+ color: #8a8a8a;
+ right: 1rem;
+ top: 0.5rem;
+ font-size: 2em;
+ line-height: 1;
+ cursor: pointer; }
+ [data-whatinput='mouse'] .close-button {
+ outline: 0; }
+ .close-button:hover, .close-button:focus {
+ color: #0a0a0a; }
+
+.is-drilldown {
+ position: relative;
+ overflow: hidden; }
+
+.is-drilldown-submenu {
+ position: absolute;
+ top: 0;
+ left: 100%;
+ z-index: -1;
+ height: 100%;
+ width: 100%;
+ background: #fefefe;
+ transition: -webkit-transform 0.15s linear;
+ transition: transform 0.15s linear; }
+ .is-drilldown-submenu.is-active {
+ z-index: 1;
+ display: block;
+ -webkit-transform: translateX(-100%);
+ -ms-transform: translateX(-100%);
+ transform: translateX(-100%); }
+ .is-drilldown-submenu.is-closing {
+ -webkit-transform: translateX(100%);
+ -ms-transform: translateX(100%);
+ transform: translateX(100%); }
+
+.is-drilldown-submenu-parent > a {
+ position: relative; }
+ .is-drilldown-submenu-parent > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ border-color: transparent transparent transparent #2F343B;
+ border-left-style: solid;
+ border-right-width: 0;
+ position: absolute;
+ top: 50%;
+ margin-top: -6px;
+ right: 1rem; }
+
+.js-drilldown-back > a::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ border-color: transparent #2F343B transparent transparent;
+ border-right-style: solid;
+ border-left-width: 0;
+ border-left-width: 0;
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: 0.75rem; }
+
+.dropdown-pane {
+ background-color: #fefefe;
+ border: 1px solid #cacaca;
+ border-radius: 3px;
+ display: block;
+ font-size: 1rem;
+ padding: 1rem;
+ position: absolute;
+ visibility: hidden;
+ width: 300px;
+ z-index: 10; }
+ .dropdown-pane.is-open {
+ visibility: visible; }
+
+.dropdown-pane.tiny {
+ width: 100px; }
+
+.dropdown-pane.small {
+ width: 200px; }
+
+.dropdown-pane.large {
+ width: 400px; }
+
+[data-whatinput='mouse'] .dropdown.menu a {
+ outline: 0; }
+
+.no-js .dropdown.menu ul {
+ display: none; }
+
+.dropdown.menu:not(.vertical) .is-dropdown-submenu.first-sub {
+ top: 100%;
+ left: 0;
+ right: auto; }
+
+.dropdown.menu.align-right .is-dropdown-submenu.first-sub {
+ top: 100%;
+ left: auto;
+ right: 0; }
+
+.is-dropdown-menu.vertical {
+ width: 100px; }
+ .is-dropdown-menu.vertical.align-right {
+ float: right; }
+ .is-dropdown-menu.vertical > li .is-dropdown-submenu {
+ top: 0;
+ left: 100%; }
+
+.is-dropdown-submenu-parent {
+ position: relative; }
+ .is-dropdown-submenu-parent a::after {
+ float: right;
+ margin-top: 3px;
+ margin-left: 10px; }
+ .is-dropdown-submenu-parent.is-down-arrow a {
+ padding-right: 1.5rem;
+ position: relative; }
+ .is-dropdown-submenu-parent.is-down-arrow > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 5px;
+ border-color: #2F343B transparent transparent;
+ border-top-style: solid;
+ border-bottom-width: 0;
+ position: absolute;
+ top: 0.825rem;
+ right: 5px; }
+ .is-dropdown-submenu-parent.is-left-arrow > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 5px;
+ border-color: transparent #2F343B transparent transparent;
+ border-right-style: solid;
+ border-left-width: 0;
+ float: left;
+ margin-left: 0;
+ margin-right: 10px; }
+ .is-dropdown-submenu-parent.is-right-arrow > a::after {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 5px;
+ border-color: transparent transparent transparent #2F343B;
+ border-left-style: solid;
+ border-right-width: 0; }
+ .is-dropdown-submenu-parent.is-left-arrow.opens-inner .is-dropdown-submenu {
+ right: 0;
+ left: auto; }
+ .is-dropdown-submenu-parent.is-right-arrow.opens-inner .is-dropdown-submenu {
+ left: 0;
+ right: auto; }
+ .is-dropdown-submenu-parent.opens-inner .is-dropdown-submenu {
+ top: 100%; }
+ .is-dropdown-submenu-parent.opens-left .is-dropdown-submenu {
+ left: auto;
+ right: 100%; }
+
+.is-dropdown-submenu {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 100%;
+ min-width: 200px;
+ z-index: 1;
+ background: #fefefe;
+ border: 1px solid #cacaca; }
+ .is-dropdown-submenu .is-dropdown-submenu {
+ margin-top: -1px; }
+ .is-dropdown-submenu > li {
+ width: 100%; }
+ .is-dropdown-submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .is-dropdown-submenu, .is-dropdown-submenu.js-dropdown-active {
+ display: block; }
+
+.flex-video {
+ position: relative;
+ height: 0;
+ padding-bottom: 75%;
+ margin-bottom: 1rem;
+ overflow: hidden; }
+ .flex-video iframe,
+ .flex-video object,
+ .flex-video embed,
+ .flex-video video {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%; }
+ .flex-video.widescreen {
+ padding-bottom: 56.25%; }
+ .flex-video.vimeo {
+ padding-top: 0; }
+
+.label {
+ display: inline-block;
+ padding: 0.33333rem 0.5rem;
+ font-size: 0.8rem;
+ line-height: 1;
+ white-space: nowrap;
+ cursor: default;
+ border-radius: 3px;
+ background: #2F343B;
+ color: #fefefe; }
+ .label.secondary {
+ background: #703030;
+ color: #fefefe; }
+ .label.success {
+ background: #5da423;
+ color: #fefefe; }
+ .label.alert {
+ background: #703030;
+ color: #fefefe; }
+ .label.warning {
+ background: #ffae00;
+ color: #fefefe; }
+
+.media-object {
+ margin-bottom: 1rem;
+ display: block; }
+ .media-object img {
+ max-width: none; }
+ @media screen and (min-width: 0em) and (max-width: 39.9375em) {
+ .media-object.stack-for-small .media-object-section {
+ display: block;
+ padding: 0;
+ padding-bottom: 1rem; }
+ .media-object.stack-for-small .media-object-section img {
+ width: 100%; } }
+
+.media-object-section {
+ display: table-cell;
+ vertical-align: top; }
+ .media-object-section:first-child {
+ padding-right: 1rem; }
+ .media-object-section:last-child:not(:nth-child(2)) {
+ padding-left: 1rem; }
+ .media-object-section.middle {
+ vertical-align: middle; }
+ .media-object-section.bottom {
+ vertical-align: bottom; }
+
+.menu {
+ margin: 0;
+ list-style-type: none; }
+ .menu > li {
+ display: table-cell;
+ vertical-align: middle; }
+ [data-whatinput='mouse'] .menu > li {
+ outline: 0; }
+ .menu > li > a {
+ display: block;
+ padding: 0.7rem 1rem;
+ line-height: 1; }
+ .menu input,
+ .menu a,
+ .menu button {
+ margin-bottom: 0; }
+ .menu > li > a > img,
+ .menu > li > a > i {
+ vertical-align: middle; }
+ .menu > li > a > span {
+ vertical-align: middle; }
+ .menu > li > a > img,
+ .menu > li > a > i {
+ display: inline-block;
+ margin-right: 0.25rem; }
+ .menu > li {
+ display: table-cell; }
+ .menu.vertical > li {
+ display: block; }
+ @media screen and (min-width: 40em) {
+ .menu.medium-horizontal > li {
+ display: table-cell; }
+ .menu.medium-vertical > li {
+ display: block; } }
+ @media screen and (min-width: 64em) {
+ .menu.large-horizontal > li {
+ display: table-cell; }
+ .menu.large-vertical > li {
+ display: block; } }
+ .menu.simple li {
+ line-height: 1;
+ display: inline-block;
+ margin-right: 1rem; }
+ .menu.simple a {
+ padding: 0; }
+ .menu.align-right > li {
+ float: right; }
+ .menu.expanded {
+ display: table;
+ table-layout: fixed;
+ width: 100%; }
+ .menu.expanded > li:first-child:last-child {
+ width: 100%; }
+ .menu.icon-top > li > a {
+ text-align: center; }
+ .menu.icon-top > li > a > img,
+ .menu.icon-top > li > a > i {
+ display: block;
+ margin: 0 auto 0.25rem; }
+ .menu.nested {
+ margin-left: 1rem; }
+
+.menu-text {
+ font-weight: bold;
+ color: inherit;
+ line-height: 1;
+ padding-top: 0;
+ padding-bottom: 0;
+ padding: 0.7rem 1rem; }
+
+.no-js [data-responsive-menu] ul {
+ display: none; }
+
+html,
+body {
+ height: 100%; }
+
+.off-canvas-wrapper {
+ width: 100%;
+ overflow-x: hidden;
+ position: relative;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-overflow-scrolling: auto; }
+
+.off-canvas-wrapper-inner {
+ position: relative;
+ width: 100%;
+ transition: -webkit-transform 0.5s ease;
+ transition: transform 0.5s ease; }
+ .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after {
+ content: ' ';
+ display: table; }
+ .off-canvas-wrapper-inner::after {
+ clear: both; }
+
+.off-canvas-content,
+.off-canvas-content {
+ min-height: 100%;
+ background: #fefefe;
+ transition: -webkit-transform 0.5s ease;
+ transition: transform 0.5s ease;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ z-index: 1;
+ box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); }
+
+.js-off-canvas-exit {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(254, 254, 254, 0.25);
+ cursor: pointer;
+ transition: background 0.5s ease; }
+
+.off-canvas {
+ position: absolute;
+ background: #e6e6e6;
+ z-index: -1;
+ max-height: 100%;
+ overflow-y: auto;
+ -webkit-transform: translateX(0);
+ -ms-transform: translateX(0);
+ transform: translateX(0); }
+ [data-whatinput='mouse'] .off-canvas {
+ outline: 0; }
+ .off-canvas.position-left {
+ left: -250px;
+ top: 0;
+ width: 250px; }
+ .is-open-left {
+ -webkit-transform: translateX(250px);
+ -ms-transform: translateX(250px);
+ transform: translateX(250px); }
+ .off-canvas.position-right {
+ right: -250px;
+ top: 0;
+ width: 250px; }
+ .is-open-right {
+ -webkit-transform: translateX(-250px);
+ -ms-transform: translateX(-250px);
+ transform: translateX(-250px); }
+
+@media screen and (min-width: 40em) {
+ .position-left.reveal-for-medium {
+ left: 0;
+ z-index: auto;
+ position: fixed; }
+ .position-left.reveal-for-medium ~ .off-canvas-content {
+ margin-left: 250px; }
+ .position-right.reveal-for-medium {
+ right: 0;
+ z-index: auto;
+ position: fixed; }
+ .position-right.reveal-for-medium ~ .off-canvas-content {
+ margin-right: 250px; } }
+
+@media screen and (min-width: 64em) {
+ .position-left.reveal-for-large {
+ left: 0;
+ z-index: auto;
+ position: fixed; }
+ .position-left.reveal-for-large ~ .off-canvas-content {
+ margin-left: 250px; }
+ .position-right.reveal-for-large {
+ right: 0;
+ z-index: auto;
+ position: fixed; }
+ .position-right.reveal-for-large ~ .off-canvas-content {
+ margin-right: 250px; } }
+
+.orbit {
+ position: relative; }
+
+.orbit-container {
+ position: relative;
+ margin: 0;
+ overflow: hidden;
+ list-style: none; }
+
+.orbit-slide {
+ width: 100%;
+ max-height: 100%; }
+ .orbit-slide.no-motionui.is-active {
+ top: 0;
+ left: 0; }
+
+.orbit-figure {
+ margin: 0; }
+
+.orbit-image {
+ margin: 0;
+ width: 100%;
+ max-width: 100%; }
+
+.orbit-caption {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ padding: 1rem;
+ margin-bottom: 0;
+ color: #fefefe;
+ background-color: rgba(10, 10, 10, 0.5); }
+
+.orbit-previous, .orbit-next {
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ z-index: 10;
+ padding: 1rem;
+ color: #fefefe; }
+ [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next {
+ outline: 0; }
+ .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus {
+ background-color: rgba(10, 10, 10, 0.5); }
+
+.orbit-previous {
+ left: 0; }
+
+.orbit-next {
+ left: auto;
+ right: 0; }
+
+.orbit-bullets {
+ position: relative;
+ margin-top: 0.8rem;
+ margin-bottom: 0.8rem;
+ text-align: center; }
+ [data-whatinput='mouse'] .orbit-bullets {
+ outline: 0; }
+ .orbit-bullets button {
+ width: 1.2rem;
+ height: 1.2rem;
+ margin: 0.1rem;
+ background-color: #cacaca;
+ border-radius: 50%; }
+ .orbit-bullets button:hover {
+ background-color: #8a8a8a; }
+ .orbit-bullets button.is-active {
+ background-color: #8a8a8a; }
+
+.pagination {
+ margin-left: 0;
+ margin-bottom: 1rem; }
+ .pagination::before, .pagination::after {
+ content: ' ';
+ display: table; }
+ .pagination::after {
+ clear: both; }
+ .pagination li {
+ font-size: 0.875rem;
+ margin-right: 0.0625rem;
+ border-radius: 3px;
+ display: none; }
+ .pagination li:last-child, .pagination li:first-child {
+ display: inline-block; }
+ @media screen and (min-width: 40em) {
+ .pagination li {
+ display: inline-block; } }
+ .pagination a,
+ .pagination button {
+ color: #0a0a0a;
+ display: block;
+ padding: 0.1875rem 0.625rem;
+ border-radius: 3px; }
+ .pagination a:hover,
+ .pagination button:hover {
+ background: #e6e6e6; }
+ .pagination .current {
+ padding: 0.1875rem 0.625rem;
+ background: #2F343B;
+ color: #fefefe;
+ cursor: default; }
+ .pagination .disabled {
+ padding: 0.1875rem 0.625rem;
+ color: #cacaca;
+ cursor: default; }
+ .pagination .disabled:hover {
+ background: transparent; }
+ .pagination .ellipsis::after {
+ content: '…';
+ padding: 0.1875rem 0.625rem;
+ color: #0a0a0a; }
+
+.pagination-previous a::before,
+.pagination-previous.disabled::before {
+ content: '«';
+ display: inline-block;
+ margin-right: 0.5rem; }
+
+.pagination-next a::after,
+.pagination-next.disabled::after {
+ content: '»';
+ display: inline-block;
+ margin-left: 0.5rem; }
+
+.progress {
+ background-color: #cacaca;
+ height: 1rem;
+ margin-bottom: 1rem;
+ border-radius: 3px; }
+ .progress.primary .progress-meter {
+ background-color: #2F343B; }
+ .progress.secondary .progress-meter {
+ background-color: #703030; }
+ .progress.success .progress-meter {
+ background-color: #5da423; }
+ .progress.alert .progress-meter {
+ background-color: #703030; }
+ .progress.warning .progress-meter {
+ background-color: #ffae00; }
+
+.progress-meter {
+ position: relative;
+ display: block;
+ width: 0%;
+ height: 100%;
+ background-color: #2F343B;
+ border-radius: 3px; }
+
+.progress-meter-text {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ -ms-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ position: absolute;
+ margin: 0;
+ font-size: 0.75rem;
+ font-weight: bold;
+ color: #fefefe;
+ white-space: nowrap;
+ border-radius: 3px; }
+
+.slider {
+ position: relative;
+ height: 0.5rem;
+ margin-top: 1.25rem;
+ margin-bottom: 2.25rem;
+ background-color: #e6e6e6;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -ms-touch-action: none;
+ touch-action: none; }
+
+.slider-fill {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: inline-block;
+ max-width: 100%;
+ height: 0.5rem;
+ background-color: #cacaca;
+ transition: all 0.2s ease-in-out; }
+ .slider-fill.is-dragging {
+ transition: all 0s linear; }
+
+.slider-handle {
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ position: absolute;
+ left: 0;
+ z-index: 1;
+ display: inline-block;
+ width: 1.4rem;
+ height: 1.4rem;
+ background-color: #2F343B;
+ transition: all 0.2s ease-in-out;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ border-radius: 3px; }
+ [data-whatinput='mouse'] .slider-handle {
+ outline: 0; }
+ .slider-handle:hover {
+ background-color: #282c32; }
+ .slider-handle.is-dragging {
+ transition: all 0s linear; }
+
+.slider.disabled,
+.slider[disabled] {
+ opacity: 0.25;
+ cursor: not-allowed; }
+
+.slider.vertical {
+ display: inline-block;
+ width: 0.5rem;
+ height: 12.5rem;
+ margin: 0 1.25rem;
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ transform: scale(1, -1); }
+ .slider.vertical .slider-fill {
+ top: 0;
+ width: 0.5rem;
+ max-height: 100%; }
+ .slider.vertical .slider-handle {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ width: 1.4rem;
+ height: 1.4rem;
+ -webkit-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%); }
+
+.sticky-container {
+ position: relative; }
+
+.sticky {
+ position: absolute;
+ z-index: 0;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0); }
+
+.sticky.is-stuck {
+ position: fixed;
+ z-index: 5; }
+ .sticky.is-stuck.is-at-top {
+ top: 0; }
+ .sticky.is-stuck.is-at-bottom {
+ bottom: 0; }
+
+.sticky.is-anchored {
+ position: absolute;
+ left: auto;
+ right: auto; }
+ .sticky.is-anchored.is-at-bottom {
+ bottom: 0; }
+
+body.is-reveal-open {
+ overflow: hidden; }
+
+.reveal-overlay {
+ display: none;
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 1005;
+ background-color: rgba(10, 10, 10, 0.45);
+ overflow-y: scroll; }
+
+.reveal {
+ display: none;
+ z-index: 1006;
+ padding: 1rem;
+ border: 1px solid #cacaca;
+ margin: 6.25rem auto 0;
+ background-color: #fefefe;
+ border-radius: 3px;
+ position: absolute;
+ overflow-y: auto; }
+ [data-whatinput='mouse'] .reveal {
+ outline: 0; }
+ @media screen and (min-width: 40em) {
+ .reveal {
+ min-height: 0; } }
+ .reveal .column, .reveal .columns,
+ .reveal .columns {
+ min-width: 0; }
+ .reveal > :last-child {
+ margin-bottom: 0; }
+ @media screen and (min-width: 40em) {
+ .reveal {
+ width: 600px;
+ max-width: 62.5rem; } }
+ @media screen and (min-width: 40em) {
+ .reveal .reveal {
+ left: auto;
+ right: auto;
+ margin: 0 auto; } }
+ .reveal.collapse {
+ padding: 0; }
+ @media screen and (min-width: 40em) {
+ .reveal.tiny {
+ width: 30%;
+ max-width: 62.5rem; } }
+ @media screen and (min-width: 40em) {
+ .reveal.small {
+ width: 50%;
+ max-width: 62.5rem; } }
+ @media screen and (min-width: 40em) {
+ .reveal.large {
+ width: 90%;
+ max-width: 62.5rem; } }
+ .reveal.full {
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ height: 100vh;
+ min-height: 100vh;
+ max-width: none;
+ margin-left: 0;
+ border: 0; }
+
+.switch {
+ margin-bottom: 1rem;
+ outline: 0;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ color: #fefefe;
+ font-weight: bold;
+ font-size: 0.875rem; }
+
+.switch-input {
+ opacity: 0;
+ position: absolute; }
+
+.switch-paddle {
+ background: #cacaca;
+ cursor: pointer;
+ display: block;
+ position: relative;
+ width: 4rem;
+ height: 2rem;
+ transition: all 0.25s ease-out;
+ border-radius: 3px;
+ color: inherit;
+ font-weight: inherit; }
+ input + .switch-paddle {
+ margin: 0; }
+ .switch-paddle::after {
+ background: #fefefe;
+ content: '';
+ display: block;
+ position: absolute;
+ height: 1.5rem;
+ left: 0.25rem;
+ top: 0.25rem;
+ width: 1.5rem;
+ transition: all 0.25s ease-out;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ border-radius: 3px; }
+ input:checked ~ .switch-paddle {
+ background: #2F343B; }
+ input:checked ~ .switch-paddle::after {
+ left: 2.25rem; }
+ [data-whatinput='mouse'] input:focus ~ .switch-paddle {
+ outline: 0; }
+
+.switch-active, .switch-inactive {
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%); }
+
+.switch-active {
+ left: 8%;
+ display: none; }
+ input:checked + label > .switch-active {
+ display: block; }
+
+.switch-inactive {
+ right: 15%; }
+ input:checked + label > .switch-inactive {
+ display: none; }
+
+.switch.tiny .switch-paddle {
+ width: 3rem;
+ height: 1.5rem;
+ font-size: 0.625rem; }
+
+.switch.tiny .switch-paddle::after {
+ width: 1rem;
+ height: 1rem; }
+
+.switch.tiny input:checked ~ .switch-paddle:after {
+ left: 1.75rem; }
+
+.switch.small .switch-paddle {
+ width: 3.5rem;
+ height: 1.75rem;
+ font-size: 0.75rem; }
+
+.switch.small .switch-paddle::after {
+ width: 1.25rem;
+ height: 1.25rem; }
+
+.switch.small input:checked ~ .switch-paddle:after {
+ left: 2rem; }
+
+.switch.large .switch-paddle {
+ width: 5rem;
+ height: 2.5rem;
+ font-size: 1rem; }
+
+.switch.large .switch-paddle::after {
+ width: 2rem;
+ height: 2rem; }
+
+.switch.large input:checked ~ .switch-paddle:after {
+ left: 2.75rem; }
+
+table {
+ width: 100%;
+ margin-bottom: 1rem;
+ border-radius: 3px; }
+ table thead,
+ table tbody,
+ table tfoot {
+ border: 1px solid #f1f1f1;
+ background-color: #fefefe; }
+ table caption {
+ font-weight: bold;
+ padding: 0.5rem 0.625rem 0.625rem; }
+ table thead,
+ table tfoot {
+ background: #f8f8f8;
+ color: #222222; }
+ table thead tr,
+ table tfoot tr {
+ background: transparent; }
+ table thead th,
+ table thead td,
+ table tfoot th,
+ table tfoot td {
+ padding: 0.5rem 0.625rem 0.625rem;
+ font-weight: bold;
+ text-align: left; }
+ table tbody tr:nth-child(even) {
+ background-color: #f1f1f1; }
+ table tbody th,
+ table tbody td {
+ padding: 0.5rem 0.625rem 0.625rem; }
+
+@media screen and (max-width: 63.9375em) {
+ table.stack thead {
+ display: none; }
+ table.stack tfoot {
+ display: none; }
+ table.stack tr,
+ table.stack th,
+ table.stack td {
+ display: block; }
+ table.stack td {
+ border-top: 0; } }
+
+table.scroll {
+ display: block;
+ width: 100%;
+ overflow-x: auto; }
+
+table.hover tr:hover {
+ background-color: #f9f9f9; }
+
+table.hover tr:nth-of-type(even):hover {
+ background-color: #ececec; }
+
+.tabs {
+ margin: 0;
+ list-style-type: none;
+ background: #fefefe;
+ border: 1px solid #e6e6e6; }
+ .tabs::before, .tabs::after {
+ content: ' ';
+ display: table; }
+ .tabs::after {
+ clear: both; }
+
+.tabs.vertical > li {
+ width: auto;
+ float: none;
+ display: block; }
+
+.tabs.simple > li > a {
+ padding: 0; }
+ .tabs.simple > li > a:hover {
+ background: transparent; }
+
+.tabs.primary {
+ background: #2F343B; }
+ .tabs.primary > li > a {
+ color: #fefefe; }
+ .tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
+ background: #383e46; }
+
+.tabs-title {
+ float: left; }
+ .tabs-title > a {
+ display: block;
+ padding: 1.25rem 1.5rem;
+ line-height: 1;
+ font-size: 12px;
+ color: #2F343B; }
+ .tabs-title > a:hover {
+ background: #fefefe; }
+ .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] {
+ background: #e6e6e6; }
+
+.tabs-content {
+ background: #fefefe;
+ transition: all 0.5s ease;
+ border: 1px solid #e6e6e6;
+ border-top: 0; }
+
+.tabs-content.vertical {
+ border: 1px solid #e6e6e6;
+ border-left: 0; }
+
+.tabs-panel {
+ display: none;
+ padding: 1rem; }
+ .tabs-panel.is-active {
+ display: block; }
+
+.thumbnail {
+ border: solid 4px #fefefe;
+ box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2);
+ display: inline-block;
+ line-height: 0;
+ max-width: 100%;
+ transition: box-shadow 200ms ease-out;
+ border-radius: 3px;
+ margin-bottom: 1rem; }
+ .thumbnail:hover, .thumbnail:focus {
+ box-shadow: 0 0 6px 1px rgba(47, 52, 59, 0.5); }
+
+.title-bar {
+ background: #0a0a0a;
+ color: #fefefe;
+ padding: 0.5rem; }
+ .title-bar::before, .title-bar::after {
+ content: ' ';
+ display: table; }
+ .title-bar::after {
+ clear: both; }
+ .title-bar .menu-icon {
+ margin-left: 0.25rem;
+ margin-right: 0.5rem; }
+
+.title-bar-left {
+ float: left; }
+
+.title-bar-right {
+ float: right;
+ text-align: right; }
+
+.title-bar-title {
+ font-weight: bold;
+ vertical-align: middle;
+ display: inline-block; }
+
+.menu-icon {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ cursor: pointer;
+ width: 20px;
+ height: 16px; }
+ .menu-icon::after {
+ content: '';
+ position: absolute;
+ display: block;
+ width: 100%;
+ height: 2px;
+ background: #fefefe;
+ top: 0;
+ left: 0;
+ box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; }
+ .menu-icon:hover::after {
+ background: #cacaca;
+ box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; }
+
+.menu-icon.dark {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ cursor: pointer;
+ width: 20px;
+ height: 16px; }
+ .menu-icon.dark::after {
+ content: '';
+ position: absolute;
+ display: block;
+ width: 100%;
+ height: 2px;
+ background: #0a0a0a;
+ top: 0;
+ left: 0;
+ box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; }
+ .menu-icon.dark:hover::after {
+ background: #8a8a8a;
+ box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; }
+
+.has-tip {
+ border-bottom: dotted 1px #8a8a8a;
+ font-weight: bold;
+ position: relative;
+ display: inline-block;
+ cursor: help; }
+
+.tooltip {
+ background-color: #0a0a0a;
+ color: #fefefe;
+ font-size: 80%;
+ padding: 0.75rem;
+ position: absolute;
+ z-index: 10;
+ top: calc(100% + 0.6495rem);
+ max-width: 10rem !important;
+ border-radius: 3px; }
+ .tooltip::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ border-color: transparent transparent #0a0a0a;
+ border-bottom-style: solid;
+ border-top-width: 0;
+ bottom: 100%;
+ position: absolute;
+ left: 50%;
+ -webkit-transform: translateX(-50%);
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%); }
+ .tooltip.top::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ border-color: #0a0a0a transparent transparent;
+ border-top-style: solid;
+ border-bottom-width: 0;
+ top: 100%;
+ bottom: auto; }
+ .tooltip.left::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ border-color: transparent transparent transparent #0a0a0a;
+ border-left-style: solid;
+ border-right-width: 0;
+ bottom: auto;
+ left: 100%;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%); }
+ .tooltip.right::before {
+ content: '';
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ border-color: transparent #0a0a0a transparent transparent;
+ border-right-style: solid;
+ border-left-width: 0;
+ bottom: auto;
+ left: auto;
+ right: 100%;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%); }
+
+.top-bar {
+ padding: 0.5rem; }
+ .top-bar::before, .top-bar::after {
+ content: ' ';
+ display: table; }
+ .top-bar::after {
+ clear: both; }
+ .top-bar,
+ .top-bar ul {
+ background-color: #e6e6e6; }
+ .top-bar input {
+ width: 200px;
+ margin-right: 1rem; }
+ .top-bar input.button {
+ width: auto; }
+
+@media screen and (max-width: 39.9375em) {
+ .stacked-for-small .top-bar-title {
+ width: 100%; }
+ .stacked-for-small .top-bar-right {
+ width: 100%; }
+ .stacked-for-small .top-bar-left {
+ width: 100%; } }
+
+@media screen and (max-width: 63.9375em) {
+ .stacked-for-medium .top-bar-title {
+ width: 100%; }
+ .stacked-for-medium .top-bar-right {
+ width: 100%; }
+ .stacked-for-medium .top-bar-left {
+ width: 100%; } }
+
+@media screen and (max-width: 74.9375em) {
+ .stacked-for-large .top-bar-title {
+ width: 100%; }
+ .stacked-for-large .top-bar-right {
+ width: 100%; }
+ .stacked-for-large .top-bar-left {
+ width: 100%; } }
+
+@media screen and (min-width: 0em) and (max-width: 39.9375em) {
+ .top-bar-title {
+ width: 100%; }
+ .top-bar-right {
+ width: 100%; }
+ .top-bar-left {
+ width: 100%; } }
+
+.top-bar-title {
+ float: left;
+ margin-right: 1rem; }
+
+.top-bar-left {
+ float: left; }
+
+.top-bar-right {
+ float: right; }
+
+/*# sourceMappingURL=foundation.css.map */
diff --git a/stylesheets/foundation.css.map b/stylesheets/foundation.css.map
new file mode 100644
--- /dev/null
+++ b/stylesheets/foundation.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["foundation.css","../scss/foundation.scss","../../../../../f6/node_modules/motion-ui/src/_classes.scss","../../../../../f6/node_modules/motion-ui/src/_settings.scss","../../../../../f6/node_modules/motion-ui/src/util/_keyframe.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_slide.scss","../../../../../f6/node_modules/motion-ui/src/util/_transition.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_fade.scss","../../../../../f6/node_modules/motion-ui/src/effects/_hinge.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_hinge.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_zoom.scss","../../../../../f6/node_modules/motion-ui/src/transitions/_spin.scss","../../../../../f6/node_modules/motion-ui/src/util/_animation.scss","../scss/_global.scss","../scss/settings/_settings.scss","../scss/grid/_classes.scss","../scss/grid/_row.scss","../scss/util/_mixins.scss","../scss/grid/_gutter.scss","../scss/util/_breakpoint.scss","../scss/grid/_column.scss","../scss/grid/_size.scss","../scss/grid/_position.scss","../scss/grid/_layout.scss","../scss/typography/_base.scss","../scss/util/_unit.scss","../scss/typography/_helpers.scss","../scss/typography/_alignment.scss","../scss/typography/_print.scss","../scss/components/_button.scss","../scss/forms/_text.scss","../scss/forms/_checkbox.scss","../scss/forms/_label.scss","../scss/forms/_help-text.scss","../scss/forms/_input-group.scss","../scss/forms/_fieldset.scss","../scss/forms/_select.scss","../scss/forms/_error.scss","../scss/components/_float.scss","../scss/components/_accordion.scss","../scss/components/_accordion-menu.scss","../scss/components/_badge.scss","../scss/components/_breadcrumbs.scss","../scss/components/_button-group.scss","../scss/components/_callout.scss","../scss/components/_close-button.scss","../scss/components/_drilldown.scss","../scss/components/_dropdown.scss","../scss/components/_dropdown-menu.scss","../scss/components/_flex-video.scss","../scss/components/_label.scss","../scss/components/_media-object.scss","../scss/components/_menu.scss","../scss/components/_off-canvas.scss","../scss/components/_orbit.scss","../scss/components/_pagination.scss","../scss/components/_progress-bar.scss","../scss/components/_slider.scss","../scss/components/_sticky.scss","../scss/components/_reveal.scss","../scss/components/_switch.scss","../scss/components/_table.scss","../scss/util/_color.scss","../scss/components/_tabs.scss","../scss/components/_thumbnail.scss","../scss/components/_title-bar.scss","../scss/components/_tooltip.scss","../scss/components/_top-bar.scss"],"names":[],"mappings":"AAAA,iBAAiB;ACCjB;;;;;GAKG;ACKD;EARA,2BCkBc;EDjBd,mCCiCe,EDhChB;;AAMC;EE0CE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJZH;EE0CE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB,EEhBhB;;AJvBH;EEyCE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJXH;EEyCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB,EEhBhB;;AJtBH;EEwCE,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJVH;EEwCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB,EEhBhB;;AJrBH;EEuCE,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJTH;EEuCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB,EEhBhB;;AJpBH;EEsCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJRH;EEsCE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB,EEhBhB;;AJnBH;EEqCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJPH;EEqCE,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB,EEhBhB;;AJlBH;EEoCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJNH;EEoCE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB,EEhBhB;;AJjBH;EEmCE,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;ECvBf,gDAAwC;EAAxC,wCAAwC;EAG1C,oCAA4B;UAA5B,4BAA4B,ECR3B;;AJLH;EEmCE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB,EEhBhB;;AJdH;EEgCE,WFhCkC;EKAlC,6BAA6B,EDE5B;;AJFH;EEgCE,WFhCqC,EIcpC;;AJbH;EE+BE,WF/BkC;EKDlC,6BAA6B,EDE5B;;AJDH;EE+BE,WF/BqC,EIapC;;AJVH;EE4BE,uDIrCY;UJqCZ,+CIrCY;EJqCZ,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJEH;EE4BE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJTH;EE2BE,uDIpCc;UJoCd,+CIpCc;EJoCd,gCAFiB;MAEjB,4BAFiB;UAEjB,wBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJGH;EE2BE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJRH;EE0BE,sDInCe;UJmCf,8CInCe;EJmCf,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJIH;EE0BE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJPH;EEyBE,sDIlCa;UJkCb,8CIlCa;EJkCb,+BAFiB;MAEjB,2BAFiB;UAEjB,uBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJKH;EEyBE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJNH;EEwBE,uDIrCY;UJqCZ,+CIrCY;EJqCZ,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJMH;EEwBE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJLH;EEuBE,uDIpCc;UJoCd,+CIpCc;EJoCd,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EHN5B;;AJOH;EEuBE,oDIVsC;UJUtC,4CIVsC;ECJpC,WAA2B,EHJ5B;;AJJH;EEsBE,oDIRwC;UJQxC,4CIRwC;EJQxC,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJQH;EEsBE,uDIrCY;UJqCZ,+CIrCY;ECuBV,WAA8B,EHJ/B;;AJHH;EEqBE,oDIRwC;UJQxC,4CIRwC;EJQxC,gCAFiB;MAEjB,4BAFiB;UAEjB,wBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJSH;EEqBE,uDIpCc;UJoCd,+CIpCc;ECsBZ,WAA8B,EHJ/B;;AJFH;EEoBE,oDIRwC;UJQxC,4CIRwC;EJQxC,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJUH;EEoBE,sDInCe;UJmCf,8CInCe;ECqBb,WAA8B,EHJ/B;;AJDH;EEmBE,oDIRwC;UJQxC,4CIRwC;EJQxC,+BAFiB;MAEjB,2BAFiB;UAEjB,uBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJWH;EEmBE,sDIlCa;UJkCb,8CIlCa;ECoBX,WAA8B,EHJ/B;;AJAH;EEkBE,oDIRwC;UJQxC,4CIRwC;EJQxC,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJYH;EEkBE,uDIrCY;UJqCZ,+CIrCY;ECuBV,WAA8B,EHJ/B;;AJCH;EEiBE,oDIRwC;UJQxC,4CIRwC;EJQxC,iCAFiB;MAEjB,6BAFiB;UAEjB,yBAFiB;EKvBf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EHN/B;;AJaH;EEiBE,uDIpCc;UJoCd,+CIpCc;ECsBZ,WAA8B,EHJ/B;;AJIH;EEcE,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EM3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EJF5B;;AJgBH;EEcE,4BAFiB;MAEjB,wBAFiB;UAEjB,oBAFiB;EMhBf,WAA2B,EJA5B;;AJKH;EEaE,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EM3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,EJF5B;;AJiBH;EEaE,4BAFiB;MAEjB,wBAFiB;UAEjB,oBAFiB;EMhBf,WAA2B,EJA5B;;AJMH;EEYE,4BAFiB;MAEjB,wBAFiB;UAEjB,oBAFiB;EM3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EJF/B;;AJkBH;EEYE,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EMhBf,WAA8B,EJA/B;;AJOH;EEWE,4BAFiB;MAEjB,wBAFiB;UAEjB,oBAFiB;EM3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,EJF/B;;AJmBH;EEWE,8BAFiB;MAEjB,0BAFiB;UAEjB,sBAFiB;EMhBf,WAA8B,EJA/B;;AJUH;EEQE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB;EO3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,ELF5B;;AJsBH;EEQE,6BAFiB;MAEjB,yBAFiB;UAEjB,qBAFiB;EOhBf,WAA2B,ELA5B;;AJWH;EEOE,6BAFiB;MAEjB,yBAFiB;UAEjB,qBAFiB;EO3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,ELF/B;;AJuBH;EEOE,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB;EOhBf,WAA8B,ELA/B;;AJYH;EEME,oCAFiB;MAEjB,gCAFiB;UAEjB,4BAFiB;EO3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA2B,ELF5B;;AJwBH;EEME,6BAFiB;MAEjB,yBAFiB;UAEjB,qBAFiB;EOhBf,WAA2B,ELA5B;;AJaH;EEKE,6BAFiB;MAEjB,yBAFiB;UAEjB,qBAFiB;EO3Bf,gDAAwC;EAAxC,wCAAwC;EACxC,WAA8B,ELF/B;;AJyBH;EEKE,qCAFiB;MAEjB,iCAFiB;UAEjB,6BAFiB;EOhBf,WAA8B,ELA/B;;AJoBC;EAAE,sCAAsC,EAAI;;AAA5C;EAAE,sCAAsC,EAAI;;AAM5C;EAAE,8CAA6C,EAAI;;AAAnD;EAAE,4CAA6C,EAAI;;AAAnD;EAAE,+CAA6C,EAAI;;AAAnD;EAAE,gDAA6C,EAAI;;AAAnD;EAAE,mDAA6C,EAAI;;AAAnD;EAAE,+EAA6C,EAAI;;AAAnD;EAAE,gFAA6C,EAAI;;AAAnD;EAAE,+EAA6C,EAAI;;AAMnD;EAAE,mCAAmC,EAAI;;AAAzC;EAAE,mCAAmC,EAAI;;AAQ7C;EUtEA,gCAAuB;UAAvB,wBAAuB,EVsEsB;;AEjE7C;EAGI;IAGI,kCAAU;YAAV,0BAAU,EAAA;EAHd;IAGI,mCAAU;YAAV,2BAAU,EAAA,EAAA;;AANlB;EAGI;IAGI,kCAAU;YAAV,0BAAU,EAAA;EAHd;IAGI,mCAAU;YAAV,2BAAU,EAAA,EAAA;;AF4DlB;EUvEA,sCAAuB;UAAvB,8BAAuB,EVuEqB;;AElE5C;EAGI;IAGI,kCAAU;YAAV,0BAAU,EAAA;EAHd;IAGI,6BAAU;YAAV,qBAAU,EAAA,EAAA;;AANlB;EAGI;IAGI,kCAAU;YAAV,0BAAU,EAAA;EAHd;IAGI,6BAAU;YAAV,qBAAU,EAAA,EAAA;;AF6DlB;EUxEA,sCAAuB;UAAvB,8BAAuB,EVwE0B;;AEnEjD;EAGI;IAGI,6BAAU;YAAV,qBAAU,EAAA;EAHd;IAGI,iCAAU;YAAV,yBAAU,EAAA,EAAA;;AF8DlB;EUzEA,oCAAuB;UAAvB,4BAAuB,EVyEuB;;AEpE9C;EAGI;IAGI,gCAAU;YAAV,wBAAU,EAAA;EAHd;IAGI,iCAAU;YAAV,yBAAU,EAAA;EAHd;IAGI,6BAAU;YAAV,qBAAU,EAAA,EAAA;;AANlB;EAGI;IAGI,gCAAU;YAAV,wBAAU,EAAA;EAHd;IAGI,iCAAU;YAAV,yBAAU,EAAA;EAHd;IAGI,6BAAU;YAAV,qBAAU,EAAA,EAAA;;AFkElB;EAAY,4CAAoC;UAApC,oCAAoC,EAAI;;AAIhD;EAAE,6CAAqC;UAArC,qCAAqC,EAAI;;AAA3C;EAAE,6CAAqC;UAArC,qCAAqC,EAAI;;AAM3C;EAAE,qDAA4C;UAA5C,6CAA4C,EAAI;;AAAlD;EAAE,mDAA4C;UAA5C,2CAA4C,EAAI;;AAAlD;EAAE,sDAA4C;UAA5C,8CAA4C,EAAI;;AAAlD;EAAE,uDAA4C;UAA5C,+CAA4C,EAAI;;AAAlD;EAAE,0DAA4C;UAA5C,kDAA4C,EAAI;;AAAlD;EAAE,sFAA4C;UAA5C,8EAA4C,EAAI;;AAAlD;EAAE,uFAA4C;UAA5C,+EAA4C,EAAI;;AAAlD;EAAE,sFAA4C;UAA5C,8EAA4C,EAAI;;AAMlD;EAAE,0CAAkC;UAAlC,kCAAkC,EAAI;;AAAxC;EAAE,0CAAkC;UAAlC,kCAAkC,EAAI;;AWgH5C,4EAA4E;AAE5E;;;;KAIG;AAEH;EACE,wBAAwB;EAAE,OAAO;EACjC,2BAA2B;EAAE,OAAO;EACpC,+BAA+B;EAAE,OAAO,EACzC;;AAED;;KAEG;AAEH;EACE,UAAU,EACX;;AAED;kFACgF;AAEhF;;;;;KAKG;AAEH;;;;;;;;;;;;;EAaE,eAAe,EAChB;;AAED;;;KAGG;AAEH;;;;EAIE,sBAAsB;EAAE,OAAO;EAC/B,yBAAyB;EAAE,OAAO,EACnC;;AAED;;;KAGG;AAEH;EACE,cAAc;EACd,UAAU,EACX;;AAED;;;KAGG;AbkLL;;Ea9KI,cAAc,EACf;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,8BAA8B,EAC/B;;AAED;;;KAGG;AAEH;;EAEE,WAAW,EACZ;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,0BAA0B,EAC3B;;AAED;;KAEG;AAEH;;EAEE,kBAAkB,EACnB;;AAED;;KAEG;AAEH;EACE,mBAAmB,EACpB;;AAED;;;KAGG;AAEH;EACE,eAAe;EACf,iBAAiB,EAClB;;AAED;;KAEG;AAEH;EACE,iBAAiB;EACjB,YAAY,EACb;;AAED;;KAEG;AAEH;EACE,eAAe,EAChB;;AAED;;KAEG;AAEH;;EAEE,eAAe;EACf,eAAe;EACf,mBAAmB;EACnB,yBAAyB,EAC1B;;AAED;EACE,YAAY,EACb;;AAED;EACE,gBAAgB,EACjB;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,UAAU,EACX;;AAED;;KAEG;AAEH;EACE,iBAAiB,EAClB;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,iBAAiB,EAClB;;AAED;;KAEG;AAEH;EACE,wBAAwB;EACxB,UAAU,EACX;;AAED;;KAEG;AAEH;EACE,eAAe,EAChB;;AAED;;KAEG;AAEH;;;;EAIE,kCAAkC;EAClC,eAAe,EAChB;;AAED;kFACgF;AAEhF;;;KAGG;AAEH;;;;;KAKG;AAEH;;;;;EAKE,eAAe;EAAE,OAAO;EACxB,cAAc;EAAE,OAAO;EACvB,UAAU;EAAE,OAAO,EACpB;;AAED;;KAEG;AAEH;EACE,kBAAkB,EACnB;;AAED;;;;;KAKG;AAEH;;EAEE,qBAAqB,EACtB;;AAED;;;;;;KAMG;AAEH;;;;EAIE,2BAA2B;EAAE,OAAO;EACpC,gBAAgB;EAAE,OAAO,EAC1B;;AAED;;KAEG;AAEH;;EAEE,gBAAgB,EACjB;;AAED;;KAEG;AAEH;;EAEE,UAAU;EACV,WAAW,EACZ;;AAED;;;KAGG;AAEH;EACE,oBAAoB,EACrB;;AAED;;;;;;KAMG;AAEH;;EAEE,uBAAuB;EAAE,OAAO;EAChC,WAAW;EAAE,OAAO,EACrB;;AAED;;;;KAIG;AAEH;;EAEE,aAAa,EACd;;AAED;;;KAGG;AAEH;EACE,8BAA8B;EAAE,OAAO;EACvC,wBAAwB;EAAE,OAAO,EAClC;;AAED;;;;KAIG;AAEH;;EAEE,yBAAyB,EAC1B;;AAED;;;KAGG;AAEH;;;;MAII;AAEJ;;;KAGG;AAEH;EACE,UAAU;EAAE,OAAO;EACnB,WAAW;EAAE,OAAO,EACrB;;AAED;;KAEG;AAEH;EACE,eAAe,EAChB;;AAED;;;KAGG;AAEH;EACE,kBAAkB,EACnB;;AAED;kFACgF;AAEhF;;KAEG;AAEH;EACE,0BAA0B;EAC1B,kBAAkB,EACnB;;AAED;;EAEE,WAAW,EACZ;;AApgBD;EACE,yEAAgD,EACjD;;AAED;EACE,gBC7EmB;ED8EnB,uBAAuB,EACxB;;AAGD;;;EAGE,oBAAoB,EACrB;;AAGD;EACE,WAAW;EACX,UAAU;EACV,oEC7EqE;ED8ErE,oBC1EyB;ED2EzB,iBC5FmB;ED6FnB,eCjFqB;EDkFrB,oBCpFW;EDuFT,oCAAoC;EACpC,mCAAmC,EAEtC;;AAED;EAEE,gBAAgB;EAChB,aAAa;EACb,gCAAgC;EAGhC,sBAAsB;EACtB,uBAAuB,EACxB;;AAGD;EACE,aAAa;EACb,iBAAiB;EACjB,mBClGe,EDmGhB;;AAGD;EACE,YAAY;EACZ,mBCxGe,EDyGhB;;AAID;;;;;;;;;EAMI,2BAA2B,EAC5B;;AAIH;EACE,yBAAyB;EACzB,sBAAsB;EACtB,wBAAwB;EACxB,WAAW;EACX,UAAU;EACV,mBC9He;ED+Hf,eAAe,EAChB;;AAGD;EACE,0BAA0B,EAC3B;;AAED;EACE,yBAAyB,EAC1B;;AEnLD;ECqCE,mBFfkB;EEgBlB,kBAAkB;EAClB,mBAAmB,EDHpB;EApCD;IE8GE,aAAa;IACb,eAAe,EAChB;EFhHD;IEmHE,YAAY,EACb;EFpHD;IGfA,gBAAgB;IAChB,iBAAiB,EHmBmB;EALpC;IC2DE,uBADiB;IAEjB,wBAFiB,EDjChB;IIwFD;MJjHF;QC2DE,wBADiB;QAEjB,yBAFiB,EDjChB,EAAA;IAzBH;MAsBM,eAAe;MACf,gBAAgB,EACjB;EAxBL;IA6BI,gBAAgB,EAMjB;IAnCH;MAgCM,kBAAkB;MAClB,mBAAmB,EACpB;;AAKL;EKGM,uBAHgB;EAIhB,wBAJgB;EClDtB,YDesB;EA6CtB,YP4ByD,EE9BxD;EIkEC;IJ1EF;MKGM,wBAHgB;MAIhB,yBAJgB,ELQrB,EAAA;EARD;IKgBI,aPuBsD,EOtBvD;ELjBH;IOlBE,YTwDuD,ESvDxD;;AP6BD;EACE,YAAY,EASb;EANC;IACE,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,gBAAgB,EACjB;;AAMC;EM7EJ,gBDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,eAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,gBAHmB,EP0Fd;;AAMH;EOtEJ,gBFbsB,ELqFjB;;AApBD;EM7EJ,iBDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,gBAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,iBAHmB,EP0Fd;;AAMH;EOtEJ,sBFVsB,ELkFjB;;AApBD;EM7EJ,WDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,UAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,WAHmB,EP0Fd;;AAMH;EOtEJ,uBFVsB,ELkFjB;;AApBD;EM7EJ,iBDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,gBAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,iBAHmB,EP0Fd;;AAMH;EOtEJ,iBFVsB,ELkFjB;;AApBD;EM7EJ,iBDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,gBAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,iBAHmB,EP0Fd;;AAMH;EOtEJ,uBFVsB,ELkFjB;;AApBD;EM7EJ,WDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,UAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,WAHmB,EP0Fd;;AAMH;EOtEJ,uBFVsB,ELkFjB;;AApBD;EM7EJ,iBDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,gBAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,iBAHmB,EP0Fd;;AAMH;EOtEJ,iBFVsB,ELkFjB;;AApBD;EM7EJ,iBDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,gBAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,iBAHmB,EP0Fd;;AAMH;EOtEJ,uBFVsB,ELkFjB;;AApBD;EM7EJ,WDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,UAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,WAHmB,EP0Fd;;AAMH;EOtEJ,uBFVsB,ELkFjB;;AApBD;EM7EJ,iBDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,gBAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,iBAHmB,EP0Fd;;AAMH;EOtEJ,iBFVsB,ELkFjB;;AApBD;EM7EJ,iBDesB,ELgEjB;;AAIC;EOlFJ,mBAAmB;EACnB,gBAHmB,EPsFd;;AAED;EOtFJ,mBAAmB;EACnB,iBAHmB,EP0Fd;;AAMH;EOtEJ,uBFVsB,ELkFjB;;AApBD;EM7EJ,YDesB,ELgEjB;;AAgBD;EOtEJ,uBFVsB,ELkFjB;;AAKD;EQnGF,YAAiB;EACjB,YVoFuD,EUvExD;ERqFG;IQ/FA,YAAY,EACb;ER8FC;IQ3FA,YAAY,EACb;ER0FC;IQvFA,YAAY,EACb;;ARsFC;EQnGF,WAAiB;EACjB,YVoFuD,EUvExD;ERqFG;IQ/FA,YAAY,EACb;ER8FC;IQ3FA,YAAY,EACb;ER0FC;IQvFA,YAAY,EACb;;ARsFC;EQnGF,iBAAiB;EACjB,YVoFuD,EUvExD;ERqFG;IQ/FA,YAAY,EACb;ER8FC;IQ3FA,YAAY,EACb;ER0FC;IQvFA,YAAY,EACb;;ARsFC;EQnGF,WAAiB;EACjB,YVoFuD,EUvExD;ERqFG;IQ/FA,YAAY,EACb;ER8FC;IQ3FA,YAAY,EACb;ER0FC;IQvFA,YAAY,EACb;;ARsFC;EQnGF,WAAiB;EACjB,YVoFuD,EUvExD;ERqFG;IQ/FA,YAAY,EACb;ER8FC;IQ3FA,YAAY,EACb;ER0FC;IQvFA,YAAY,EACb;;ARsFC;EQnGF,iBAAiB;EACjB,YVoFuD,EUvExD;ERqFG;IQ/FA,YAAY,EACb;ER8FC;IQ3FA,YAAY,EACb;ER0FC;IQvFA,YAAY,EACb;;ARsFC;EQnGF,iBAAiB;EACjB,YVoFuD,EUvExD;ERqFG;IQ/FA,YAAY,EACb;ER8FC;IQ3FA,YAAY,EACb;ER0FC;IQvFA,YAAY,EACb;;ARsFC;EQnGF,aAAiB;EACjB,YVoFuD,EUvExD;ERqFG;IQ/FA,YAAY,EACb;ER8FC;IQ3FA,YAAY,EACb;ER0FC;IQvFA,YAAY,EACb;;AR4FD;EGhHF,gBAAgB;EAChB,iBAAiB,EHgHmB;;AADlC;EAII,eAAe;EACf,gBAAgB,EACjB;;AAGH;EGhHF,uBADiB;EAEjB,wBAFiB,EH0H8B;;AAI7C;EO7HA,YAAY;EACZ,kBAAkB;EAClB,mBAAmB,EP6HlB;;AAGD;;;EOvHF,iBAAiB;EACjB,eAAe;EACf,gBAAgB;EAChB,YAAY,EPsHT;;AIbD;EJ/CE;IM7EJ,gBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,eAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,gBAHmB,EP0Fd;EAMH;IOtEJ,gBFbsB,ELqFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,sBFVsB,ELkFjB;EApBD;IM7EJ,WDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,UAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,WAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,iBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,WDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,UAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,WAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,iBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,WDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,UAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,WAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,iBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,YDesB,ELgEjB;EAgBD;IOtEJ,uBFVsB,ELkFjB;EAKD;IQnGF,YAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,WAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,iBAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,WAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,WAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,iBAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,iBAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,aAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ER4FD;IGhHF,gBAAgB;IAChB,iBAAiB,EHgHmB;EADlC;IAII,eAAe;IACf,gBAAgB,EACjB;EAGH;IGhHF,wBADiB;IAEjB,yBAFiB,EH0H8B;EAI7C;IO7HA,YAAY;IACZ,kBAAkB;IAClB,mBAAmB,EP6HlB;EAGD;;;IOvHF,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,YAAY,EPsHT,EAAA;;AIbD;EJ/CE;IM7EJ,gBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,eAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,gBAHmB,EP0Fd;EAMH;IOtEJ,gBFbsB,ELqFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,sBFVsB,ELkFjB;EApBD;IM7EJ,WDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,UAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,WAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,iBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,WDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,UAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,WAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,iBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,WDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,UAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,WAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,iBFVsB,ELkFjB;EApBD;IM7EJ,iBDesB,ELgEjB;EAIC;IOlFJ,mBAAmB;IACnB,gBAHmB,EPsFd;EAED;IOtFJ,mBAAmB;IACnB,iBAHmB,EP0Fd;EAMH;IOtEJ,uBFVsB,ELkFjB;EApBD;IM7EJ,YDesB,ELgEjB;EAgBD;IOtEJ,uBFVsB,ELkFjB;EAKD;IQnGF,YAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,WAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,iBAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,WAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,WAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,iBAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,iBAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ERsFC;IQnGF,aAAiB;IACjB,YVoFuD,EUvExD;IRqFG;MQ/FA,YAAY,EACb;IR8FC;MQ3FA,YAAY,EACb;IR0FC;MQvFA,YAAY,EACb;ER4FD;IGhHF,gBAAgB;IAChB,iBAAiB,EHgHmB;EADlC;IAII,eAAe;IACf,gBAAgB,EACjB;EAGH;IGhHF,wBADiB;IAEjB,yBAFiB,EH0H8B;EAI7C;IO7HA,YAAY;IACZ,kBAAkB;IAClB,mBAAmB,EP6HlB;EAGD;;;IOvHF,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,YAAY,EPsHT,EAAA;;ASgFH;;;;;;;;;;;;;;;;;;;EAmBE,UAAU;EACV,WAAW,EACZ;;AAGD;EACE,mBAAmB;EACnB,iBVpIsB;EUqItB,oBVpI0B;EUqI1B,mCVpIyC,EUqI1C;;AAGD;;EAEE,mBAAmB;EACnB,qBAAqB,EACtB;;AAGD;;EAEE,kBV9MqB;EU+MrB,qBAAqB,EACtB;;AAGD;EACE,eV3JiB;EU4JjB,qBAAqB,EACtB;;AAGD;;;;;;EAME,oEVpOqE;EUqOrE,oBVjOyB;EUkOzB,mBVhMsB;EUiMtB,eV7KkB;EU8KlB,mCV3KsC;EU4KtC,cAAc;EACd,sBV9KyB;EU+KzB,iBVhLmB,EUsLpB;EAnBD;;;;;;IAgBI,eVpPe;IUqPf,eAAe,EAChB;;AAOG;EACE,kBCrOY,EDsOb;;AAFD;EACE,mBCrOY,EDsOb;;AAFD;EACE,qBCrOY,EDsOb;;AAFD;EACE,oBCrOY,EDsOb;;AAFD;EACE,qBCrOY,EDsOb;;AAFD;EACE,gBCrOY,EDsOb;;AL5KL;EK0KI;IACE,gBCrOY,EDsOb;EAFD;IACE,kBCrOY,EDsOb;EAFD;IACE,qBCrOY,EDsOb;EAFD;IACE,qBCrOY,EDsOb;EAFD;IACE,mBCrOY,EDsOb;EAFD;IACE,gBCrOY,EDsOb,EAAA;;AAMP;EACE,eV5QmB;EU6QnB,sBVtLyB;EUuLzB,qBAAqB;EACrB,gBAAgB,EAajB;EAjBD;IAQI,eV7L0B,EUiM3B;EAZH;IAeI,UAAU,EACX;;AAIH;EACE,mBVlSkB;EUmSlB,UAAU;EACV,gBAAgB;EAChB,cAAc;EACd,iCV9RiB;EU+RjB,eAAe;EACf,qBV3MyB;EU4MzB,YAAY,EACb;;AAGD;;;EAGE,iBVlOsB;EUmOtB,oBVlO0B;EUmO1B,6BVjNyB,EUkN1B;;AAGD;EACE,mBAAmB,EACpB;;AAGD;EACE,sBV5NkB;EU6NlB,qBV3NsB,EU4NvB;;AAGD;EACE,qBVhOsB,EUiOvB;;AAGD;EAEI,qBVrO2B;EUsO3B,iBAAiB,EAClB;;AAIH;EACE,oBV3OyB,EUiP1B;EAPD;IAII,sBV5O8B;IU6O9B,kBVhUmB,EUiUpB;;AAIH;EACE,iBV1Q0B;EU2Q1B,uCCzTkB;ED0TlB,+BVnViB,EUyVlB;EATD;IAMI,iBVhRoB;IUiRpB,eVtVa,EUuVd;;AAIH;EACE,eAAe;EACf,qBCrUkB;EDsUlB,eV9Ve,EUmWhB;EARD;IAMI,uBAAuB,EACxB;;AAIH;EACE,eVnWqB;EUoWrB,aAAa;EACb,kCVxWW,EUyWZ;;AAGD;EACE,6DVlUmE;EUmUnE,oBVtWyB;EUuWzB,eV/WW;EUgXX,0BVnXgB;EUoXhB,0BVnXiB;EUoXjB,sCC3VkB,ED4VnB;;AAGD;EACE,4BC3VS;ED4VT,UAAU;EACV,0BV5XgB;EU6XhB,eV1XW;EU2XX,6DVhVmE,EUiVpE;;AEtYD;EACE,mBZ0HyB;EYzHzB,sBZ0H4B;EYzH5B,oBZeyB;EYdzB,iBZoHsB;EYnHtB,eZIe,EYHhB;;AAGD;EACE,gBZ4G8B;EY3G9B,iBZ4GiB,EY3GlB;;AAGD;EACE,kBZ6GmB;EY5GnB,eAAe,EAKhB;EAHC;IACE,kBAAkB,EACnB;;AAIH;EACE,eAAiC;EACjC,iBAAiB,EAClB;;AC7DO;EACE,iBARe,EAShB;;AAFD;EACE,kBARsB,EASvB;;AAFD;EACE,mBAR8B,EAS/B;;AAFD;EACE,oBARuC,EASxC;;AR0HP;EQjIM;IACE,iBAHe,EAIhB;EAFD;IACE,kBAHsB,EAIvB;EAFD;IACE,mBAH8B,EAI/B;EAFD;IACE,oBAHuC,EAIxC,EAAA;;AR+HP;EQjIM;IACE,iBAHe,EAIhB;EAFD;IACE,kBAHsB,EAIvB;EAFD;IACE,mBAH8B,EAI/B;EAFD;IACE,oBAHuC,EAIxC,EAAA;;ACAT;EAAkB,yBAAyB,EAAI;;AAE/C;EACE;IACE,mCAAmC;IACnC,wBAAwB;IACxB,4BAA4B;IAC5B,6BAA6B,EAC9B;EAED;IAAkB,0BAA0B,EAAI;EAChD;IAAkB,yBAAyB,EAAI;EAE/C;IAAuB,0BAA0B,EAAI;EACrD;IAAuB,uCAAuC,EAAI;EAClE;IAAuB,oCAAoC,EAAI;EAC/D;IAAoB,8BAA8B,EAAI;EACtD;IAAoB,+BAA+B,EAAI;EACvD;IAAoB,+BAA+B,EAAI;EAGvD;;IACY,2BAA2B,EAAG;EAC1C;IAAgB,6BAA4B,EAAI;EAGhD;;;IAEqB,YAAY,EAAI;EAGrC;IAAoB,8BAA6B,EAAI;EAGrD;;IAEE,uBAAuB;IACvB,yBAAyB,EAC1B;EAGD;IAAQ,4BAA4B,EAAI;EAExC;;IACM,yBAAyB,EAAI;EAEnC;IAAM,2BAA2B,EAAI;EAErC;IAAQ,cAAc,EAAA;EAEtB;;;IAGE,WAAW;IACX,UAAU,EACX;EAGD;;IACK,wBAAwB,EAAI,EAAA;;AC0HnC;EAnIA,sBAAsB;EACtB,mBAAmB;EACnB,eAAe;EACf,gBAAgB;EAChB,yBAAyB;EACzB,kEAAkE;EAClE,uBAAuB;EACvB,8BAA8B;EAC9B,mBfFiB;EeGjB,oBf8JyB;Ee7JzB,mBf8JkC;Ee7JlC,kBfuKe;EenIf,0Bf3DqB;Ee4DrB,Yf4HiB,EeuBhB;E7B2jDD;IiB3pDE,WAAW,EACZ;EY+BD;IAhFE,0BfwHiC;IevHjC,YfwHe,EevHhB;EA8ED;IAIe,kBfyCH,EezC8C;EAJ1D;IAKe,mBfyCD,EezC6C;EAL3D;IAMe,mBf0CD,Ee1C6C;EAN3D;IAjHE,eAAe;IACf,YAAY;IACZ,eAAe;IACf,gBAAgB,EAqHuB;EAPzC;IApFA,0Bf3DqB;Ie4DrB,Yf4HiB,Ee3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YfwHe,EevHhB;EA8ED;IApFA,0Bf1DuB;Ie2DvB,Yf4HiB,Ee3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YfwHe,EevHhB;EA8ED;IApFA,0BfzDqB;Ie0DrB,Yf4HiB,Ee3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YfwHe,EevHhB;EA8ED;IApFA,0BfvDmB;IewDnB,Yf4HiB,Ee3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YfwHe,EevHhB;EA8ED;IApFA,0BfxDqB;IeyDrB,Yf4HiB,Ee3BV;IAdP;MAhFE,0BAP8B;MAQ9B,YfwHe,EevHhB;EA8ED;IAhEA,0Bf/EqB;IegFrB,efhFqB,EeqLhB;IAtCL;MAvEE,8BAA8B,EAC/B;IAsED;MA5DE,sBANuB;MAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0Bf/EqB;MegFrB,efhFqB,EemLZ;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0Bf9EuB;Me+EvB,ef/EuB,EekLd;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0Bf7EqB;Me8ErB,ef9EqB,EeiLZ;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0Bf3EmB;Me4EnB,ef5EmB,Ee+KV;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;IA0DD;MAhEA,0Bf5EqB;Me6ErB,ef7EqB,EegLZ;MApCT;QA5DE,sBANuB;QAOvB,eAPuB,EAQxB;EA0DD;IArDA,cfuG4B;IetG5B,oBAAoB;IACpB,qBAAqB,EAgGlB;EA7CH;IZ9KA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,oBY+HY;IZ5HV,8CAAqD;IACrD,wBAAwB;IACxB,uBAAuB;IYgIvB,mBAAmB;IACnB,WAAW;IACX,aAAO;IACP,iBfsEuB;IerEvB,sBAAsB,EACvB;EAgCD;IA4DI,eAAiC;IACjC,YAAY;IACZ,WAAW,EACZ;;A7BuqDL;;E8Bn2DE,eAAe;EACf,uBAAuB;EACvB,YAAY;EACZ,kBAL0B;EAM1B,gBAAsB;EACtB,0BhBjBmB;EgBkBnB,iBLOoB;EKLpB,qBhBsQyB;EgBrQzB,gBLIoB;EKHpB,ehBpBa;EgBqBb,0BhBpBa;EgBqBb,kDhBtBa;EgBuBb,mBhBbiB;EgBgBf,4DhBwQ8D;EgBpP9D,yBAAyB;EACzB,sBAAsB,EACvB;E9B+0DD;;I8Bh2DE,0BhBhCe;IgBiCf,0BhB/BW;IgBgCX,cAAc;IACd,4BhBpCiB;IgBuCf,4DhB6P4D,EgB3P/D;;AAYD;EACE,gBAAgB,EAKjB;EAND;IAII,aAAa,EACd;;AAIH;;;EAII,0BhBnEc;EgBoEd,gBhBgOyB,EgB/N1B;;A9Bg1DL;;E8B10DI,mBhB9De;EgB+Df,yBAAyB;EACzB,sBAAsB,EACvB;;AAID;EACE,uBAAuB,EACxB;;A9B00DH;;;E+Bx8DI,iBNoEkB,EMnEnB;;A/B48DH;;E+Bv8DI,sBAAsB;EACtB,oBAA4C;EAC5C,mBN4DkB;EM3DlB,iBAAiB;EACjB,yBAAyB,EAC1B;;AAGD;;EAEE,qBAA6C,EAC9C;;A/Bw8DH;E+Bp8DI,YAAY,EACb;;ACMD;EAfA,eAAe;EACf,UAAU;EACV,oBPqDoB;EOpDpB,oBlBqC2B;EkBpC3B,iBlB+S0B;EkB9S1B,elB2Ba,EkBXZ;EAND;IALA,iBP6CoB;IO5CpB,qBAA8D,EAS3D;;ACxBH;EAGE,oBAF2B;EAG3B,qBRuDkB;EQtDlB,mBnB0SwB;EmBzSxB,YnBuSiB,EmBtSlB;;ACDD;EACE,eAAe;EACf,YAAY;EACZ,oBTkDkB,ESvCnB;EAdD;IAMI,2BpBkCa,EoBjCd;EAPH;IAWM,2BAAgD,EACjD;;AAUL;EALE,oBAAoB;EACpB,UAAU;EACV,uBAAuB,EACxB;;AAED;EAEE,mBAAmB;EACnB,UAAU;EACV,aAAa;EACb,gBpBkRuB;EoBjRvB,oBpBDgB;EoBEhB,epBCW;EoBAX,0BpBFiB;EoBGjB,oBAAoB,EAWrB;EApBD;IAaM,gBAAkC,EACnC;EAdL;IAiBM,eAAiC,EAClC;;AAIL;EAEE,iBAAiB;EACjB,eAlDwB,EAmDzB;;AAED;EAEE,aAAa;EACb,eAAe;EACf,kBAAkB;EAClB,mBAAmB;EACnB,UAAU,EAOX;EAbD;;;IAWI,UAAU,EACX;;AClDH;EACE,UAAU;EACV,WAAW;EACX,UAAU,EACX;;AAED;EACE,sBAA4B;EAC5B,gBAAgB,EACjB;;AAED;EAzBA,0BrB8BmB;EqB7BnB,iBVsDoB;EUrDpB,mBV0DW,EUjCV;EAFD;IAnBE,oBrB2BW;IqB1BX,qBVgDkB;IU/ClB,UAAU;IACV,wBV8CkB,EU7CnB;;AC0BD;EAtCA,kBAF0B;EAG1B,gBAAuB;EACvB,0BtB8BmB;EsB7BnB,iBXsDoB;EWrDpB,gBXqDoB;EWpDpB,qBtBqTyB;EsBpTzB,oBAAoB;EACpB,etB2Ba;EsB1Bb,0BtB2Ba;EsB1Bb,mBtBmCiB;EsBlCjB,yBAAyB;EACzB,sBAAsB;EnBoFtB,sOAAqB;EmBhFnB,yBAAyB;EACzB,kCAAyC;EACzC,+BAA+B;EAC/B,6BAA6B,EAsB9B;EnByDD;ImB3DA;MnB6DI,wWAAqB,EmB3DxB,EAAA;EAFD;IAfE,0BtBQgB;IsBPhB,gBtB2S2B,EsB1S5B;EAaD;IATE,cAAc,EACf;EAQD;IALE,aAAa,EACd;;ACIC;EAlBA,yCvBUiB;EuBTjB,sBvBSiB,EuBRlB;;AAuBC;EACE,evBhBe,EuBiBhB;;AAIH;EAxBA,cAAc;EACd,oBAAyB;EACzB,oBZ4BoB;EY3BpB,mBZ2BoB;EY1BpB,kBvBYuB;EuBXvB,evBFmB,EuB2BlB;EAND;IAII,eAAe,EAChB;;ACtEH;EACE,uBAAuB,EACxB;;AAED;EACE,wBAAwB,EACzB;;AAED;EACE,eAAe;EACf,kBAAkB;EAClB,mBAAmB,EACpB;;AAED;ErBgHE,aAAa;EACb,eAAe,EAChB;;AqBlHD;ErBqHE,YAAY,EACb;;AsBhDD;EA/CA,sBAAsB;EACtB,oBzBWa;EyBVb,0BzBMkB;EyBLlB,iBAAiB;EACjB,mBzBiBiB;EyBhBjB,eAAiC,EA4ChC;;AAMD;EA7CA,eAAe;EACf,sBzBuImC;EyBtInC,eAAe;EACf,mBdqBoB;EcpBpB,ezBXqB;EyBYrB,mBAAmB;EACnB,iCzBRkB,EyBiDjB;EAFD;IAnCE,0BzBZgB,EyBajB;EAkCD;IA9BI,aAAa;IACb,mBAAmB;IACnB,YAAuB;IACvB,SAAS;IACT,oBAAoB,EACrB;EAED;IACE,aAAS,EAAM;;AA0BnB;EAnBA,czB8G8B;EyB7G9B,cAAc;EACd,iCzBlCkB;EyBmClB,0BzB/Ba,EyBiDZ;;AC7FC;EACE,mBAAmB,EASpB;EAVD;IvBIF,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kBuBJ+B;IvBO7B,8CAAqD;IACrD,wBAAwB;IACxB,uBAAuB;IuBRnB,mBAAmB;IACnB,SAAS;IACT,iBAAiB;IACjB,YAAY,EACb;;AAGH;EACE,kCAA0B;MAA1B,8BAA0B;UAA1B,0BAA0B;EAC1B,8BAAiB;MAAjB,0BAAiB;UAAjB,sBAAiB,EAClB;;ACUH;EATA,sBAAsB;EACtB,e3BkLmB;E2BjLnB,iB3BkLoB;E2BjLpB,kB3BkLsB;E2BjLtB,mBAAmB;EACnB,mBAAmB;EAOjB,oB3BOmB;E2BNnB,e3BeW,E2BLZ;EAdD;IASQ,oB3BEe;I2BDf,e3BSK,E2BRN;EAXP;IASQ,oB3BGa;I2BFb,e3BSK,E2BRN;EAXP;IASQ,oB3BKW;I2BJX,e3BSK,E2BRN;EAXP;IASQ,oB3BIa;I2BHb,e3BSK,E2BRN;;ACoCP;EA3CA,iBAAiB;EACjB,mB5B4KuC,E4B5HtC;EAND;IzBiDE,aAAa;IACb,eAAe,EAChB;EyBnDD;IzBsDE,YAAY,EACb;EyBvDD;IAtCE,YAAO;IACP,e5BQW;I4BPX,qBjB8BkB;IiB7BlB,gBAAgB;IAGd,0BAA0B,EAmB7B;IAaD;MAxBM,e5BPa;M4BQb,aAJ6C;MAK7C,kB5B6JyB;M4B5JzB,mBAAmB;MACnB,SAAS;MACT,WAAW,EACZ;EAkBL;IATE,e5B5BmB,E4BiCpB;IAID;MANI,2BAA2B,EAC5B;EAKH;IAII,e5BnCe,E4BoChB;;ACOH;EApEA,oB7ByNuB;E6BxNvB,kB7BgNe,E6BhGd;EA7CD;I1BqCE,aAAa;IACb,eAAe,EAChB;E0BvCD;I1B0CE,YAAY,EACb;E0B3CD;IAhEE,YAAO;IACP,UAAU;IACV,mBAAmB,EAKpB;IAyDD;MA3DI,gC7BmBS,E6BlBV;EA0DH;IAIe,kB7BuIH,E6BvI8C;EAJ1D;IAKe,mB7BuID,E6BvI6C;EAL3D;IAMe,mB7BwID,E6BxI6C;EAN3D;IA5CA,eAAe;IACf,oBAAoB;IACpB,YAAY,EAiDmC;IAP/C;MAtCE,cAAc,EACf;IAqCD;MAlCE,oBAAoB;MACpB,YAAY,EACb;EAgCD;IdUA,0Bf3DqB;Ie4DrB,efnDa,E6BsDN;IAdP;MdcE,0BAP8B;MAQ9B,efvDW,EewDZ;EchBD;IdUA,0Bf1DuB;Ie2DvB,efnDa,E6BsDN;IAdP;MdcE,0BAP8B;MAQ9B,efvDW,EewDZ;EchBD;IdUA,0BfzDqB;Ie0DrB,efnDa,E6BsDN;IAdP;MdcE,0BAP8B;MAQ9B,efvDW,EewDZ;EchBD;IdUA,0BfvDmB;IewDnB,efnDa,E6BsDN;IAdP;MdcE,0BAP8B;MAQ9B,efvDW,EewDZ;EchBD;IdUA,0BfxDqB;IeyDrB,efnDa,E6BsDN;IAdP;MdcE,0BAP8B;MAQ9B,efvDW,EewDZ;EchBD;IAvBE,YAAY,EAKb;IAkBD;MApBI,wBAA0D,EAC3D;ExB2DD;IwBxCF;MATE,YAAY,EAKb;MAID;QANI,gC7BlCS,E6BmCV,EAAA;ExB6CD;IwBxCF;MAqCM,eAAe,EAOlB;MA5CH;QAwCQ,eAAe;QACf,gBAAgB,EACjB,EAAA;;ACrDP;EAzCA,mB9BoNyB;E8BnNzB,c9BoNoB;E8BnNpB,yC9BSa;E8BRb,mB9BkBiB;E8BjBjB,mBAAmB;EACnB,e9BSuB;E8BQvB,wBAFwB,EAqCvB;EAhBD;IAhCE,cAAc,EACf;EA+BD;IA5BE,iBAAiB,EAClB;EA2BD;IAnBA,0BAFwB,EA2BnB;EANL;IAnBA,0BAFwB,EA2BnB;EANL;IAnBA,0BAFwB,EA2BnB;EANL;IAnBA,0BAFwB,EA2BnB;EANL;IAnBA,0BAFwB,EA2BnB;EANL;IAfA,oBAyBgC;IAxBhC,sBAwBgC;IAvBhC,uBAuBgC;IAtBhC,qBAsBgC,EAC7B;EAXH;IAfA,kBA6B8B;IA5B9B,oBA4B8B;IA3B9B,qBA2B8B;IA1B9B,mBA0B8B,EAC3B;;AC7CH;EAfA,mBAAmB;EACnB,e/BaiB;E+BZjB,Y/BiOkC;E+BhOlC,Y/BiOkC;E+BhOlC,e/BiOoB;E+BhOpB,e/BiOwB;E+BhOxB,gBAAgB,EAWf;E7CuxED;IiBlrEE,WAAW,EACZ;E4BxGD;IALE,e/BKW,E+BJZ;;AC3BD;EACE,mBAAmB;EACnB,iBAAiB,EAClB;;AAGD;EACE,mBAAmB;EACnB,OAAO;EACP,WAAsB;EACtB,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,oBhCmBW;EgClBX,2ChC+OyC;EgC/OzC,mChC+OyC,EgCpO1C;EAnBD;IAWI,WAAW;IACX,eAAe;IACf,qCAAqB;QAArB,iCAAqB;YAArB,6BAAqB,EACtB;EAdH;IAiBI,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;;AAID;EACE,mBAAmB,EASpB;EAVD;I7BpCF,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kB6BoC+B;I7BvB7B,0DHcmB;IGbnB,yBAAyB;IACzB,sBAAsB;I6BsBlB,mBAAmB;IACnB,SAAS;IACT,iBAAiB;IACjB,YAAuB,EACxB;;AAGH;E7BhDF,YAAY;EACZ,eAAe;EACf,SAAS;EACT,UAAU;EACV,kB6B6C6B;E7B3B3B,0DAAiE;EACjE,0BAA0B;EAC1B,qBAAqB;E6B0BnB,qBAA6C;EAC7C,sBAAsB;EACtB,uBAAuB;EACvB,sBAAwC,EACzC;;ACjBH;EAjBA,0BjCoBa;EiCnBb,0BjCgBmB;EiCfnB,mBjC2BiB;EiC1BjB,eAAe;EACf,gBjCuPuB;EiCtPvB,cjCoPqB;EiCnPrB,mBAAmB;EACnB,mBAAmB;EACnB,ajCoPoB;EiCnPpB,YAAY,EAUX;EAFD;IALE,oBAAoB,EACrB;;AASC;EACE,ajCwOO,EiCvOR;;AAFD;EACE,ajCyOQ,EiCxOT;;AAFD;EACE,ajC0OQ,EiCzOT;;A/Ck2EL;EiBhwEI,WAAW,EACZ;;A+BxHC;EACE,cAAc,EACf;;AATH;EAcQ,UAAU;EACV,QAAmB;EACnB,YAAuB,EACxB;;AAjBP;EAuBM,UAAU;EACV,WAAW;EACX,SAAS,EACV;;AAIL;EACE,aAAa,EAUd;EAXD;IAII,aAAa,EACd;EALH;IAQI,OAAO;IACP,WAAW,EACZ;;AAGH;EACE,mBAAmB,EAmDpB;EApDD;IAII,anCsBsD;ImCrBtD,gBAAgB;IAChB,kBAAoC,EACrC;EAPH;IAWM,sBAAyC;IACzC,mBAAmB,EACpB;EAbL;I/B3DA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kB+BuE+B;I/BpE7B,8CAAqD;IACrD,wBAAwB;IACxB,uBAAuB;I+BmEnB,mBAAmB;IACnB,cAAa;IACb,WAAsB,EACvB;EApBL;I/B3DA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kB+B8E+B;I/B5D7B,0DAAiE;IACjE,0BAA0B;IAC1B,qBAAqB;I+B2DjB,YAAY;IACZ,eAAe;IACf,mBAAmB,EACpB;EA3BL;I/B3DA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,kB+BqF+B;I/BxE7B,0DHcmB;IGbnB,yBAAyB;IACzB,sBAAsB,E+BuEnB;EA/BL;IAmCI,SAAS;IACT,WAAW,EACZ;EArCH;IAwCI,QAAQ;IACR,YAAY,EACb;EA1CH;IA6CI,UAAU,EACX;EA9CH;IAiDI,WAAW;IACX,YAAY,EACb;;AAIH;EACE,cAAc;EACd,mBAAmB;EACnB,OAAO;EACP,WAAsB;EACtB,iBlCsK0B;EkCrK1B,WAAW;EACX,oBlCjFW;EkCkFX,0BlCrFiB,EkCwGlB;EA3BD;IAYM,iBlCiKiB,EkChKlB;EAbL;IAiBI,YAAY,EACb;EAlBH;IAyBI,eAAe,EAChB;;AC3GH;EAnBA,mBAAmB;EACnB,UAAU;EACV,oBARU;EASV,oBxB6CoB;EwB5CpB,iBAAiB,EAyBhB;EAVD;;;;IATE,mBAAmB;IACnB,OAAO;IACP,QAAmB;IACnB,YAAY;IACZ,aAAa,EACd;EAID;IAII,uBA7BM,EA8BP;EALH;IAQI,eAAe,EAChB;;ACpBH;EAVA,sBAAsB;EACtB,2BpCsU+B;EoCrU/B,kBpCoUsB;EoCnUtB,eAAe;EACf,oBAAoB;EACpB,gBAAgB;EAChB,mBpC+BiB;EoCxBf,oBpCMmB;EoCLnB,epCcW,EoCJZ;EAdD;IASQ,oBpCCe;IoCAf,epCQK,EoCPN;EAXP;IASQ,oBpCEa;IoCDb,epCQK,EoCPN;EAXP;IASQ,oBpCIW;IoCHX,epCQK,EoCPN;EAXP;IASQ,oBpCGa;IoCFb,epCQK,EoCPN;;ACEP;EA/BA,oBrCyCkB;EqCxClB,eAAe,EA0Cd;EAZD;IAII,gBAAgB,EACjB;EhCgFD;IgCrFF;MAVA,eAAe;MACf,WAAW;MACX,qBrCmBmB,EqCAhB;MAXH;QALE,YrC6TkC,EqC5TnC,EAAA;;AAkBD;EAtCA,oBAAoB;EACpB,oBAAoB,EA0CnB;EALD;IAlCE,oBrC+BiB,EqC9BlB;EAiCD;IA9BE,mBrC2BiB,EqC1BlB;EA6BD;IAGa,uBAAuB,EAAI;EAHxC;IAIa,uBAAuB,EAAI;;AC6ExC;EAtHA,UtCoVa;EsCnVb,sBAAsB,EA4KrB;EAvDD;IAhHE,oBAAoB;IACpB,uBAAuB,EACxB;IpDkiFC;MiBx6EA,WAAW,EACZ;EmCbD;IA1GE,eAAe;IACf,qBtCyU2B;IsCxU3B,eAAe,EAChB;EAuGD;;;IAjGE,iBAAiB,EAClB;EAgGD;;IAzCM,uBAAuB,EACxB;EAwCL;IArCM,uBAAuB,EACxB;EAoCL;;IA5BM,sBAAsB;IACtB,sBtC4PmB,EsC3PpB;EA0BL;IAjFI,oBAAoB,EACrB;EAgFH;IA5EI,eAAe,EAChB;EjCiED;IiCUF;MAjFI,oBAAoB,EACrB;IAgFH;MA5EI,eAAe,EAChB,EAAA;EjCiED;IiCUF;MAjFI,oBAAoB,EACrB;IAgFH;MA5EI,eAAe,EAChB,EAAA;EA2EH;IAjEE,eAAe;IACf,sBAAsB;IACtB,mBtC+R2B,EsC9R5B;EA8DD;IA3DE,WAAW,EACZ;EA0DD;IAiCM,avC9EoD,EuC+ErD;EAlCL;IA3FA,eAAe;IACf,oBAAoB;IACpB,YAAY,EAqIT;IA5CH;MA0CM,YAAY,EACb;EA3CL;IArBI,mBAAmB,EAOpB;IAcH;;MAjBM,eAAe;MACf,uBtCiPmB,EsChPpB;EAeL;IApDA,kBtCmRuB,EsCzKpB;;AAGH;EAlEA,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,eAAe;EACf,kBAAkB;EAClB,qBtCoO6B,EsCrK5B;;AAGD;EACE,cAAc,EACf;;ACvKD;;EAEE,aAAa,EACd;;AAED;EACE,YAAY;EACZ,mBAAmB;EACnB,mBAAmB;EACnB,oCAA4B;UAA5B,4BAA4B;EAC5B,iCAAiC,EAClC;;AAED;EAEE,mBAAmB;EACnB,YAAY;EACZ,wCvCiU8B;EuCjU9B,gCvCiU8B,EuChU/B;EALD;IpC6EE,aAAa;IACb,eAAe,EAChB;EoC/ED;IpCkFE,YAAY,EACb;;AoC3ED;;EACE,iBAAiB;EACjB,oBvCVW;EuCWX,wCvC0T8B;EuC1T9B,gCvC0T8B;EuCzT9B,oCAA4B;UAA5B,4BAA4B;EAC5B,WAAW;EAGT,2CvCjBS,EuCmBZ;;AAGD;EACE,cAAc;EACd,mBAAmB;EACnB,OAAO;EACP,QAAQ;EACR,YAAY;EACZ,aAAa;EACb,sCvC5BW;EuC6BX,gBAAgB;EAChB,iCvCuS8B,EuCtS/B;;AAgED;EA1DA,mBAAmB;EACnB,oBvC1CkB;EuC2ClB,YvC4RmB;EuC3RnB,iBAAiB;EACjB,iBAAiB;EACjB,iCAAqB;MAArB,6BAAqB;UAArB,yBAAqB,EA0DpB;ErD6hFD;IiB3hFE,WAAW,EACZ;EoCRD;IA5CE,avC8QkB;IuC7QlB,OAAO;IACP,avC4QkB,EuC/NwC;IAnC1D;MAEI,qCAAqB;UAArB,iCAAqB;cAArB,6BAAqB,EAKxB;EAyBH;IAvCE,cvCyQkB;IuCxQlB,OAAO;IACP,avCuQkB,EuC9NyC;IApC3D;MAKI,sCAAqB;UAArB,kCAAqB;cAArB,8BAAqB,EAExB;;AlCUD;EkC0BI;IA3BN,QAAgB;IAChB,cAAc;IAGZ,gBAAgB,EAyBX;IAFD;MAnBJ,mBvC0OkB,EuCzOnB;EAsBK;IA/BN,SAAgB;IAChB,cAAc;IAGZ,gBAAgB,EA6BX;IAFD;MAvBJ,oBvC0OkB,EuCzOnB,EAAA;;AlCRC;EkC0BI;IA3BN,QAAgB;IAChB,cAAc;IAGZ,gBAAgB,EAyBX;IAFD;MAnBJ,mBvC0OkB,EuCzOnB;EAsBK;IA/BN,SAAgB;IAChB,cAAc;IAGZ,gBAAgB,EA6BX;IAFD;MAvBJ,oBvC0OkB,EuCzOnB,EAAA;;ACKD;EAjGA,mBAAmB,EAmGlB;;AAED;EAhGA,mBAAmB;EACnB,UAAU;EACV,iBAAiB;EACjB,iBAAiB,EA+FhB;;AAED;EA5FA,YAAY;EACZ,iBAAiB,EA6FhB;EAFD;IAvFI,OAAO;IACP,QAAQ,EACT;;AAyFH;EApFA,UAAU,EAsFT;;AAED;EApFA,UAAU;EACV,YAAY;EACZ,gBAAgB,EAoFf;;AAED;EAjFA,mBAAmB;EACnB,UAAU;EACV,YAAY;EACZ,cxCkT0B;EwCjT1B,iBAAiB;EACjB,exCrCa;EwCsCb,wCxCvCa,EwCoHZ;;AAMD;ErCOA,mBAAmB;EACnB,SAAS;EACT,oCAAqB;MAArB,gCAAqB;UAArB,4BAAqB;EqCrFrB,YxC2SuB;EwC1SvB,cxCyS0B;EwCxS1B,exC/Ca,EwCuHZ;EtD6lFD;IiB9mFE,WAAW,EACZ;EqCkBD;IArEE,wCxCrDW,EwCsDZ;;AAoED;EA/DA,QAAmB,EAkElB;;AAED;EA/DA,WAAsB;EACtB,SAAoB,EAiEnB;;AAED;EA7DA,mBAAmB;EACnB,mBxC2Q8B;EwC1Q9B,sBxC2QiC;EwC1QjC,mBAAmB,EA4DlB;EtDgmFD;IiB/nFE,WAAW,EACZ;EqC4BD;IAvDE,cxCoQ0B;IwCnQ1B,exCmQ0B;IwClQ1B,exCmQwB;IwClQxB,0BxClFiB;IwCmFjB,mBAAmB,EASpB;IA0CD;MAhDI,0BxCrFa,EwCsFd;IA+CH;MA5CI,0BxCzFa,EwC0Fd;;AChBH;EAnEA,eAAiC;EACjC,oBzCDkB,EyCiFjB;EAdD;ItCKE,aAAa;IACb,eAAe,EAChB;EsCPD;ItCUE,YAAY,EACb;EsCXD;IA9DE,oB9BYkB;I8BXlB,wB9BWkB;I8BVlB,mBzCHe;IyCSb,cAAc,EAWjB;IA2CD;MAlDM,sBAAsB,EACvB;IpCyDH;MoCRF;QA9CM,sBAAsB,EAG3B,EAAA;EA2CD;;IAtCE,ezCnCW;IyCoCX,eAAe;IACf,4B9BdkB;I8BelB,mBzC5Be,EyCiChB;IA8BD;;MAhCI,oBzC5Cc,EyC6Cf;EA+BH;IAzBA,4B9BzBoB;I8B0BpB,oBzCzDqB;IyC0DrB,ezCjDa;IyCkDb,gBAAgB,EA2Bb;EALH;IAjBA,4B9BjCoB;I8BkCpB,ezC3DmB;IyC4DnB,gBAAgB,EAwBb;IATH;MAZE,wBAAwB,EACzB;EAWD;IANA,aAAS;IACT,4B9B7CoB;I8B8CpB,ezCrEa,EyCsFV;;AAID;;EAEE,aAAc;EACd,sBAAsB;EACtB,qBAAuC,EACxC;;AAED;;EAEE,aAAc;EACd,sBAAsB;EACtB,oBAAsC,EACvC;;AC7FH;EApCA,0B1CyBmB;E0CxBnB,a1CyYoB;E0CxYpB,oB1C+BkB;E0C9BlB,mB1CkCiB,E0CShB;EAVD;IAMQ,0B1CvBa,E0CwBd;EAPP;IAMQ,0B1CtBe,E0CuBhB;EAPP;IAMQ,0B1CrBa,E0CsBd;EAPP;IAMQ,0B1CnBW,E0CoBZ;EAPP;IAMQ,0B1CpBa,E0CqBd;;AAMP;EAzCA,mBAAmB;EACnB,eAAe;EACf,UAAU;EACV,aAAa;EACb,0B1COqB;E0CJnB,mB1CsBe,E0CchB;;AAGD;EvCsHA,mBAAmB;EACnB,SAAS;EACT,UAAU;EACV,yCAAoB;MAApB,qCAAoB;UAApB,iCAAoB;EuCzJpB,mBAAmB;EACnB,UAAU;EACV,mBAAmB;EACnB,kBAAkB;EAClB,e1CEa;E0CDb,oBAAoB;EAGlB,mB1COe,E0CmBhB;;AC+CD;EAhFA,mBAAmB;EACnB,e3CwYoB;E2CvYpB,oBAAoB;EACpB,uBAAuB;EACvB,0B3CHkB;E2CIlB,gBAAgB;EAChB,0BAAkB;KAAlB,uBAAkB;MAAlB,sBAAkB;UAAlB,kBAAkB;EAClB,uBAAmB;MAAnB,mBAAmB,EA2ElB;;AAGD;EAzEA,mBAAmB;EACnB,OAAO;EACP,QAAQ;EACR,sBAAsB;EACtB,gBAAgB;EAChB,e3CwXoB;E2CvXpB,0B3ChBmB;E2CiBnB,iC3C+XsC,E2C3TrC;EAFD;IA/DE,0BAA0B,EAC3B;;AAmED;ExC2CA,mBAAmB;EACnB,SAAS;EACT,oCAAqB;MAArB,gCAAqB;UAArB,4BAAqB;EwCzGrB,mBAAmB;EACnB,QAAQ;EACR,WAAW;EACX,sBAAsB;EACtB,c3C4W0B;E2C3W1B,e3C0W2B;E2CzW3B,0B3CxCqB;E2CyCrB,iC3C6WsC;E2C5WtC,+BAA2B;MAA3B,2BAA2B;EAC3B,mB3CzBiB,E2C8EhB;EzD2xFD;IiB5wFE,WAAW,EACZ;EwClBD;IAhDE,0BAA6B,EAC9B;EA+CD;IA5CE,0BAA0B,EAC3B;;AAgDD;;EA5CA,c3C6V4B;E2C5V5B,oBAAoB,EA8CnB;;AAGD;EA7CA,sBAAsB;EACtB,c3CgVoB;E2C/UpB,gBAAgB;EAChB,kBAAkB;EAClB,gCAAgB;MAAhB,4BAAgB;UAAhB,wBAAgB,EA2Cf;EAFD;IAtCE,OAAO;IACP,c3CyUkB;I2CxUlB,iBAAiB,EAClB;EAmCD;IAhCE,mBAAmB;IACnB,OAAO;IACP,UAAU;IACV,c3CqUyB;I2CpUzB,e3CqUwB;I2CpUxB,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;;AC3HD;EACE,mBAAmB,EACpB;;AAED;EACE,mBAAmB;EACnB,WAAW;EACX,wCAAsB;UAAtB,gCAAsB,EACvB;;AAED;EACE,gBAAgB;EAChB,WAAW,EASZ;EAXD;IAKI,OAAO,EACR;EANH;IASI,UAAU,EACX;;AAGH;EACE,mBAAmB;EACnB,WAAW;EACX,YAAY,EAKb;EARD;IAMI,UAAU,EACX;;ACiFH;EACE,iBAAiB,EAClB;;AAGD;EA1EA,cAAc;EACd,gBAAgB;EAChB,OAAO;EACP,UAAU;EACV,QAAQ;EACR,SAAS;EACT,c7CmYkB;E6ClYlB,yC7CGa;E6CFb,mBAAmB,EAoElB;;AAGD;EAjEA,cAAc;EACd,cAAuB;EACvB,c7CCmB;E6CAnB,0B7CTmB;E6CUnB,uBAA6B;EAC7B,0B7CRa;E6CSb,mB7CAiB;E6C8Df,mBAAmB;EACnB,iBAAiB,EA0BlB;E3D61FD;IiBz1FE,WAAW,EACZ;EEvBC;IwCZF;MAxDE,cAAc,EAsFf,EAAA;EA9BD;;IAlDE,aAAa,EACd;EAiDD;IA7CE,iBAAiB,EAClB;ExCwDC;IwCZF;MAhCE,a7CoVgB;M6CnVhB,mB7ChDkB,E6C6GnB,EAAA;ExClBC;IwCZF;MAUM,WAAW;MACX,YAAY;MACZ,eAAe,EAChB,EAAA;EAbL;IAkBI,WAAW,EACZ;ExCPD;IwCZF;MAhCE,WAsDyC;MArDzC,mB7ChDkB,E6CqG4B,EAAA;ExCV9C;IwCZF;MAhCE,WAuDyC;MAtDzC,mB7ChDkB,E6CsG4B,EAAA;ExCX9C;IwCZF;MAhCE,WAwDyC;MAvDzC,mB7ChDkB,E6CuG4B,EAAA;EAxBhD;IAxBA,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IACf,UAAU,EA6CP;;ACiCH;EA9HA,oB9CCkB;E8CAlB,WAAW;EACX,mBAAmB;EACnB,0BAAkB;KAAlB,uBAAkB;MAAlB,sBAAkB;UAAlB,kBAAkB;EAGlB,e9CVa;E8CWb,kBAAkB;EAClB,oBnCUoB,EmC8GnB;;AAGD;EAtHA,WAAW;EACX,mBAAmB,EAuHlB;;AAGD;EArHA,oB9C1BmB;E8C2BnB,gBAAgB;EAChB,eAAe;EACf,mBAAmB;EACnB,YAAY;EACZ,a9CwXkB;E8CvXlB,+B9CgY2C;E8C/X3C,mB9CrBiB;E8CwBjB,eAAe;EACf,qBAAqB,EA4GpB;EAzGD;IACE,UAAU,EACX;EAqGD;IAjGE,oB9C3CW;I8C4CX,YAAY;IACZ,eAAe;IACf,mBAAmB;IACnB,eAAe;IACf,cAAyB;IACzB,aAAa;IACb,cAAc;IACd,+B9C0WyC;I8CzWzC,wCAAsB;YAAtB,gCAAsB;IACtB,mB9C5Ce,E8C6ChB;EAGD;IACE,oB9CnEmB,E8CwEpB;IAND;MAII,cAAyB,EAC1B;E5Du9FH;IiB/6FE,WAAW,EACZ;;A2C+CD;EA9EA,mBAAmB;EACnB,SAAS;EACT,oCAAqB;MAArB,gCAAqB;UAArB,4BAAqB,EAyEpB;;AAGD;EAvEA,SAAoB;EACpB,cAAc,EAyEb;EAvED;IACE,eAAe,EAChB;;AAwED;EAnEA,WAAsB,EAsErB;EApED;IACE,cAAc,EACf;;AAqED;EAjDE,YAkDuC;EAjDvC,e9CmSuB;E8ClSvB,oBnC7FkB,EmC8FnB;;AA8CD;EA3CE,YA4CkE;EA3ClE,aAXqB,EAYtB;;AAyCD;EAtCE,cAdyB,EAe1B;;AAyCD;EArDE,cAsDyC;EArDzC,gB9CoSyB;E8CnSzB,mBnC7FkB,EmC8FnB;;AAkDD;EA/CE,eAgDwE;EA/CxE,gBAXqB,EAYtB;;AA6CD;EA1CE,WAdyB,EAe1B;;AA6CD;EAzDE,YA0DuC;EAzDvC,e9CqSwB;E8CpSxB,gBnC7FkB,EmC8FnB;;AAsDD;EAnDE,YAoDmE;EAnDnE,aAXqB,EAYtB;;AAiDD;EA9CE,cAdyB,EAe1B;;ACyBD;EAjFA,YAAY;EACZ,oB/CjEkB;E+CkElB,mB/C9DiB,E+C+IhB;EAFD;;;IA9IE,0BC3BiB;ID4BjB,0B/CTW,E+CUZ;EA4ID;IAxIE,kB/CNqB;I+COrB,kCpCOkB,EoCNnB;EAsID;;IAjIE,oBCxCiB;IDyCjB,e/CpBqB,E+CkCtB;IAkHD;;MA5HI,wBAAwB,EACzB;IA2HH;;;;MAtHI,kCpCVgB;MoCWhB,kB/CzBmB;M+C0BnB,iBAAY,EACb;EAmHH;IA1GQ,0BC/DW,EDgEZ;EAyGP;;IA5FI,kCpCpCgB,EoCqCjB;;A1CqBD;E0C0EF;IAxBI,cAAc,EACf;EAuBH;IAnBE,cAAc,EACf;EAkBD;;;IAbE,eAAe,EAChB;EAYD;IATE,cAAc,EACf,EAAA;;AAcD;EA3EA,eAAe;EACf,YAAY;EACZ,iBAAiB,EA2EhB;;AAED;EArEI,0B/CwUkB,E+CvUnB;;AAoEH;EA/DM,0B/CmUuB,E+ClUxB;;AExCL;EA9DA,UjDmbY;EiDlbZ,sBAAsB;EACtB,oBjDFa;EiDGb,0BjDPkB,EiDoEjB;EAFD;I9CeE,aAAa;IACb,eAAe,EAChB;E8CjBD;I9CoBE,YAAY,EACb;;A8ChBD;EA1DE,YAAY;EACZ,YAAY;EACZ,eAAe,EAChB;;AA4DD;EAEI,WAAW,EAKZ;EAPH;IAKM,wBAAwB,EACzB;;AAKL;EACE,oBjD7FmB,EiDuGpB;EAXD;IAII,ejDvFS,EiD6FV;IAVH;MAQM,oBD9Ga,EC+Gd;;AAIL;EA/EA,YAAO,EAiFN;EAFD;IA5EE,eAAe;IACf,wBjDoa6B;IiDna7B,eAAe;IACf,gBAAgB;IAChB,ejDjCmB,EiD2CpB;IA8DD;MArEI,oBjD3BS,EiD4BV;IAoEH;MAhEI,oBjDpCc,EiDqCf;;AAmEH;EA7DA,oBjDvCa;EiDwCb,0BAA0B;EAC1B,0BjD7CkB;EiD8ClB,cAAc,EA4Db;;AAED;EAzDA,0BjDnDkB;EiDoDlB,eAAiC,EA0DhC;;AAED;EAvDA,cAAc;EACd,cjDwYwB,EiDhVvB;EAFD;IAnDE,eAAe,EAChB;;AClED;EAhBA,0BlDwBa;EkDvBb,4ClDsBa;EkDrBb,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,sClD0d8C;EkDzd9C,mBlD2BiB;EkD1BjB,oBlDsBkB,EkDXjB;EAFD;IALE,8ClDImB,EkDHpB;;ACTD;EAEE,oBnDkBW;EmDjBX,enDkBW;EmDjBX,gBnDgeqB,EmD1dtB;EAVD;IhDkGE,aAAa;IACb,eAAe,EAChB;EgDpGD;IhDuGE,YAAY,EACb;EgDxGD;IAOI,qBnDieyB;ImDhezB,qBnD4dmB,EmD3dpB;;AAGH;EACE,YAAY,EACb;;AAED;EACE,aAAa;EACb,kBAAkB,EACnB;;AAED;EACE,kBnD+c4B;EmD9c5B,uBAAuB;EACvB,sBAAsB,EACvB;;AAED;EhDMA,mBAAmB;EACnB,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;EAChB,YAjBY;EAkBZ,aAjBa,EgDQZ;EAFD;IhDeE,YAAY;IACZ,mBAAmB;IACnB,eAAe;IACf,YAAY;IACZ,YAxBU;IAyBV,oBH1BW;IG2BX,OAAO;IACP,QAAQ;IAOR,8CHnCW,EGoCZ;EgD9BD;IhDyCI,oBHlDe;IGmDf,8CHnDe,EGoDhB;;AgDvCH;EhDEA,mBAAmB;EACnB,sBAAsB;EACtB,uBAAuB;EACvB,gBAAgB;EAChB,YAjBY;EAkBZ,aAjBa,EgDYZ;EAFD;IhDWE,YAAY;IACZ,mBAAmB;IACnB,eAAe;IACf,YAAY;IACZ,YAxBU;IAyBV,oBH3BW;IG4BX,OAAO;IACP,QAAQ;IAOR,8CHpCW,EGqCZ;EgD1BD;IhDqCI,oBHjDa;IGkDb,8CHlDa,EGmDd;;AiDPH;EAnDA,kCpDOiB;EoDNjB,kBpDgBuB;EoDfvB,mBAAmB;EACnB,sBAAsB;EACtB,aAAa,EAiDZ;;AAED;EA/CA,0BpDAa;EoDCb,epDAa;EoDCb,epDgEmB;EoD/DnB,iBpD0duB;EoDzdvB,mBAAmB;EACnB,YAAY;EACZ,4BAAS;EACT,4BAA4B;EAC5B,mBpDEiB,EoDuChB;EAFD;IjDtFA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,sBHkgByB;IG1fvB,8CH2BW;IG1BX,2BAA2B;IAC3B,oBAAoB;IiDqCpB,aAAa;IACb,mBAAmB;IACnB,UAAU;IACV,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;EA+BD;IjDtFA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,sBHkgByB;IG/fvB,8CAAqD;IACrD,wBAAwB;IACxB,uBAAuB;IiDkDvB,UAAU;IACV,aAAa,EACd;EAyBD;IjDtFA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,sBHkgByB;IGrfvB,0DHsBW;IGrBX,yBAAyB;IACzB,sBAAsB;IiD8CtB,aAAa;IACb,WAAW;IACX,SAAS;IACT,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;EAiBD;IjDtFA,YAAY;IACZ,eAAe;IACf,SAAS;IACT,UAAU;IACV,sBHkgByB;IGhfvB,0DAAiE;IACjE,0BAA0B;IAC1B,qBAAqB;IiDiDrB,aAAa;IACb,WAAW;IACX,YAAY;IACZ,SAAS;IACT,oCAAqB;QAArB,gCAAqB;YAArB,4BAAqB,EACtB;;ACjCD;EApCA,gBrDqgBqB,EqD/dpB;EAFD;IlDwEE,aAAa;IACb,eAAe,EAChB;EkD1ED;IlD6EE,YAAY,EACb;EkD9ED;;IAhCE,0BrDuBgB,EqDtBjB;EA+BD;IA5BE,arDggBsB;IqD/ftB,mBAAqC,EACtC;EA0BD;IAtBE,YAAY,EACb;;AhDgGC;EgDrEA;IApBA,YAAY,EACb;EAmBC;IAhBA,YAAY,EACb;EAeC;IAZA,YAAY,EACb,EAAA;;AhDgFC;EgDrEA;IApBA,YAAY,EACb;EAmBC;IAhBA,YAAY,EACb;EAeC;IAZA,YAAY,EACb,EAAA;;AhDgFC;EgDrEA;IApBA,YAAY,EACb;EAmBC;IAhBA,YAAY,EACb;EAeC;IAZA,YAAY,EACb,EAAA;;AhDgFC;EgD1FF;IACE,YAAY,EACb;EAED;IACE,YAAY,EACb;EAED;IACE,YAAY,EACb,EAAA;;AAwBD;EACE,YAAY;EACZ,mBrD8cuB,EqD7cxB;;AACD;EACE,YAAY,EACb;;AAED;EACE,aAAa,EACd","file":"foundation.css","sourcesContent":["@charset \"UTF-8\";\n/**\n * Foundation for Sites by ZURB\n * Version 6.1.2\n * foundation.zurb.com\n * Licensed under MIT Open Source\n */\n.slide-in-down.mui-enter, .slide-in-left.mui-enter, .slide-in-up.mui-enter, .slide-in-right.mui-enter, .slide-out-down.mui-leave, .slide-out-right.mui-leave, .slide-out-up.mui-leave, .slide-out-left.mui-leave, .fade-in.mui-enter, .fade-out.mui-leave, .hinge-in-from-top.mui-enter, .hinge-in-from-right.mui-enter, .hinge-in-from-bottom.mui-enter, .hinge-in-from-left.mui-enter, .hinge-in-from-middle-x.mui-enter, .hinge-in-from-middle-y.mui-enter, .hinge-out-from-top.mui-leave, .hinge-out-from-right.mui-leave, .hinge-out-from-bottom.mui-leave, .hinge-out-from-left.mui-leave, .hinge-out-from-middle-x.mui-leave, .hinge-out-from-middle-y.mui-leave, .scale-in-up.mui-enter, .scale-in-down.mui-enter, .scale-out-up.mui-leave, .scale-out-down.mui-leave, .spin-in.mui-enter, .spin-out.mui-leave, .spin-in-ccw.mui-enter, .spin-out-ccw.mui-leave {\n transition-duration: 500ms;\n transition-timing-function: linear; }\n\n.slide-in-down.mui-enter {\n transform: translateY(-100%);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-in-down.mui-enter.mui-enter-active {\n transform: translateY(0); }\n\n.slide-in-left.mui-enter {\n transform: translateX(-100%);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-in-left.mui-enter.mui-enter-active {\n transform: translateX(0); }\n\n.slide-in-up.mui-enter {\n transform: translateY(100%);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-in-up.mui-enter.mui-enter-active {\n transform: translateY(0); }\n\n.slide-in-right.mui-enter {\n transform: translateX(100%);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-in-right.mui-enter.mui-enter-active {\n transform: translateX(0); }\n\n.slide-out-down.mui-leave {\n transform: translateY(0);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-out-down.mui-leave.mui-leave-active {\n transform: translateY(-100%); }\n\n.slide-out-right.mui-leave {\n transform: translateX(0);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-out-right.mui-leave.mui-leave-active {\n transform: translateX(100%); }\n\n.slide-out-up.mui-leave {\n transform: translateY(0);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-out-up.mui-leave.mui-leave-active {\n transform: translateY(-100%); }\n\n.slide-out-left.mui-leave {\n transform: translateX(0);\n transition-property: transform, opacity;\n backface-visibility: hidden; }\n\n.slide-out-left.mui-leave.mui-leave-active {\n transform: translateX(-100%); }\n\n.fade-in.mui-enter {\n opacity: 0;\n transition-property: opacity; }\n\n.fade-in.mui-enter.mui-enter-active {\n opacity: 1; }\n\n.fade-out.mui-leave {\n opacity: 1;\n transition-property: opacity; }\n\n.fade-out.mui-leave.mui-leave-active {\n opacity: 0; }\n\n.hinge-in-from-top.mui-enter {\n transform: perspective(2000px) rotateX(-90deg);\n transform-origin: top;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-top.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-right.mui-enter {\n transform: perspective(2000px) rotateY(-90deg);\n transform-origin: right;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-right.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-bottom.mui-enter {\n transform: perspective(2000px) rotateX(90deg);\n transform-origin: bottom;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-bottom.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-left.mui-enter {\n transform: perspective(2000px) rotateY(90deg);\n transform-origin: left;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-left.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-middle-x.mui-enter {\n transform: perspective(2000px) rotateX(-90deg);\n transform-origin: center;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-middle-x.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-in-from-middle-y.mui-enter {\n transform: perspective(2000px) rotateY(-90deg);\n transform-origin: center;\n transition-property: transform, opacity;\n opacity: 0; }\n\n.hinge-in-from-middle-y.mui-enter.mui-enter-active {\n transform: perspective(2000px) rotate(0deg);\n opacity: 1; }\n\n.hinge-out-from-top.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: top;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-top.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateX(-90deg);\n opacity: 0; }\n\n.hinge-out-from-right.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: right;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-right.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateY(-90deg);\n opacity: 0; }\n\n.hinge-out-from-bottom.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: bottom;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-bottom.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateX(90deg);\n opacity: 0; }\n\n.hinge-out-from-left.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: left;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-left.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateY(90deg);\n opacity: 0; }\n\n.hinge-out-from-middle-x.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: center;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-middle-x.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateX(-90deg);\n opacity: 0; }\n\n.hinge-out-from-middle-y.mui-leave {\n transform: perspective(2000px) rotate(0deg);\n transform-origin: center;\n transition-property: transform, opacity;\n opacity: 1; }\n\n.hinge-out-from-middle-y.mui-leave.mui-leave-active {\n transform: perspective(2000px) rotateY(-90deg);\n opacity: 0; }\n\n.scale-in-up.mui-enter {\n transform: scale(0.5);\n transition-property: transform, opacity;\n opacity: 0; }\n\n.scale-in-up.mui-enter.mui-enter-active {\n transform: scale(1);\n opacity: 1; }\n\n.scale-in-down.mui-enter {\n transform: scale(1.5);\n transition-property: transform, opacity;\n opacity: 0; }\n\n.scale-in-down.mui-enter.mui-enter-active {\n transform: scale(1);\n opacity: 1; }\n\n.scale-out-up.mui-leave {\n transform: scale(1);\n transition-property: transform, opacity;\n opacity: 1; }\n\n.scale-out-up.mui-leave.mui-leave-active {\n transform: scale(1.5);\n opacity: 0; }\n\n.scale-out-down.mui-leave {\n transform: scale(1);\n transition-property: transform, opacity;\n opacity: 1; }\n\n.scale-out-down.mui-leave.mui-leave-active {\n transform: scale(0.5);\n opacity: 0; }\n\n.spin-in.mui-enter {\n transform: rotate(-0.75turn);\n transition-property: transform, opacity;\n opacity: 0; }\n\n.spin-in.mui-enter.mui-enter-active {\n transform: rotate(0);\n opacity: 1; }\n\n.spin-out.mui-leave {\n transform: rotate(0);\n transition-property: transform, opacity;\n opacity: 1; }\n\n.spin-out.mui-leave.mui-leave-active {\n transform: rotate(0.75turn);\n opacity: 0; }\n\n.spin-in-ccw.mui-enter {\n transform: rotate(0.75turn);\n transition-property: transform, opacity;\n opacity: 0; }\n\n.spin-in-ccw.mui-enter.mui-enter-active {\n transform: rotate(0);\n opacity: 1; }\n\n.spin-out-ccw.mui-leave {\n transform: rotate(0);\n transition-property: transform, opacity;\n opacity: 1; }\n\n.spin-out-ccw.mui-leave.mui-leave-active {\n transform: rotate(-0.75turn);\n opacity: 0; }\n\n.slow {\n transition-duration: 750ms !important; }\n\n.fast {\n transition-duration: 250ms !important; }\n\n.linear {\n transition-timing-function: linear !important; }\n\n.ease {\n transition-timing-function: ease !important; }\n\n.ease-in {\n transition-timing-function: ease-in !important; }\n\n.ease-out {\n transition-timing-function: ease-out !important; }\n\n.ease-in-out {\n transition-timing-function: ease-in-out !important; }\n\n.bounce-in {\n transition-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; }\n\n.bounce-out {\n transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }\n\n.bounce-in-out {\n transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }\n\n.short-delay {\n transition-delay: 300ms !important; }\n\n.long-delay {\n transition-delay: 700ms !important; }\n\n.shake {\n animation-name: shake-7; }\n\n@keyframes shake-7 {\n 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% {\n transform: translateX(7%); }\n 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% {\n transform: translateX(-7%); } }\n\n.spin-cw {\n animation-name: spin-cw-1turn; }\n\n@keyframes spin-cw-1turn {\n 0% {\n transform: rotate(-1turn); }\n 100% {\n transform: rotate(0); } }\n\n.spin-ccw {\n animation-name: spin-cw-1turn; }\n\n@keyframes spin-cw-1turn {\n 0% {\n transform: rotate(0); }\n 100% {\n transform: rotate(1turn); } }\n\n.wiggle {\n animation-name: wiggle-7deg; }\n\n@keyframes wiggle-7deg {\n 40%, 50%, 60% {\n transform: rotate(7deg); }\n 35%, 45%, 55%, 65% {\n transform: rotate(-7deg); }\n 0%, 30%, 70%, 100% {\n transform: rotate(0); } }\n\n.infinite {\n animation-iteration-count: infinite; }\n\n.slow {\n animation-duration: 750ms !important; }\n\n.fast {\n animation-duration: 250ms !important; }\n\n.linear {\n animation-timing-function: linear !important; }\n\n.ease {\n animation-timing-function: ease !important; }\n\n.ease-in {\n animation-timing-function: ease-in !important; }\n\n.ease-out {\n animation-timing-function: ease-out !important; }\n\n.ease-in-out {\n animation-timing-function: ease-in-out !important; }\n\n.bounce-in {\n animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; }\n\n.bounce-out {\n animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }\n\n.bounce-in-out {\n animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }\n\n.short-delay {\n animation-delay: 300ms !important; }\n\n.long-delay {\n animation-delay: 700ms !important; }\n\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\nhtml {\n font-family: sans-serif;\n /* 1 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n -webkit-text-size-adjust: 100%;\n /* 2 */ }\n\n/**\n * Remove default margin.\n */\nbody {\n margin: 0; }\n\n/* HTML5 display definitions\n ========================================================================== */\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block; }\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n /* 1 */\n vertical-align: baseline;\n /* 2 */ }\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0; }\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none; }\n\n/* Links\n ========================================================================== */\n/**\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent; }\n\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\na:active,\na:hover {\n outline: 0; }\n\n/* Text-level semantics\n ========================================================================== */\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n border-bottom: 1px dotted; }\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\nb,\nstrong {\n font-weight: bold; }\n\n/**\n * Address styling not present in Safari and Chrome.\n */\ndfn {\n font-style: italic; }\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0; }\n\n/**\n * Address styling not present in IE 8/9.\n */\nmark {\n background: #ff0;\n color: #000; }\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\nsmall {\n font-size: 80%; }\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline; }\n\nsup {\n top: -0.5em; }\n\nsub {\n bottom: -0.25em; }\n\n/* Embedded content\n ========================================================================== */\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n border: 0; }\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden; }\n\n/* Grouping content\n ========================================================================== */\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em 40px; }\n\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n box-sizing: content-box;\n height: 0; }\n\n/**\n * Contain overflow in all browsers.\n */\npre {\n overflow: auto; }\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em; }\n\n/* Forms\n ========================================================================== */\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n /* 1 */\n font: inherit;\n /* 2 */\n margin: 0;\n /* 3 */ }\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible; }\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none; }\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */ }\n\n/**\n * Re-set default cursor for disabled elements.\n */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\ninput {\n line-height: normal; }\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n box-sizing: content-box;\n /* 2 */ }\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n\n/**\n * Define consistent border, margin, and padding.\n * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.\n */\n/* fieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n } */\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto; }\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold; }\n\n/* Tables\n ========================================================================== */\n/**\n * Remove most spacing between table cells.\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n\ntd,\nth {\n padding: 0; }\n\n.foundation-mq {\n font-family: \"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em\"; }\n\nhtml {\n font-size: 100%;\n box-sizing: border-box; }\n\n*,\n*:before,\n*:after {\n box-sizing: inherit; }\n\nbody {\n padding: 0;\n margin: 0;\n font-family: \"Helvetica Neue\", Helvetica, Roboto, Arial, sans-serif;\n font-weight: normal;\n line-height: 1.5;\n color: #222222;\n background: #fefefe;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale; }\n\nimg {\n max-width: 100%;\n height: auto;\n -ms-interpolation-mode: bicubic;\n display: inline-block;\n vertical-align: middle; }\n\ntextarea {\n height: auto;\n min-height: 50px;\n border-radius: 3px; }\n\nselect {\n width: 100%;\n border-radius: 3px; }\n\n#map_canvas img,\n#map_canvas embed,\n#map_canvas object,\n.map_canvas img,\n.map_canvas embed,\n.map_canvas object,\n.mqa-display img,\n.mqa-display embed,\n.mqa-display object {\n max-width: none !important; }\n\nbutton {\n -webkit-appearance: none;\n -moz-appearance: none;\n background: transparent;\n padding: 0;\n border: 0;\n border-radius: 3px;\n line-height: 1; }\n\n.is-visible {\n display: block !important; }\n\n.is-hidden {\n display: none !important; }\n\n.row {\n max-width: 62.5rem;\n margin-left: auto;\n margin-right: auto; }\n .row::before, .row::after {\n content: ' ';\n display: table; }\n .row::after {\n clear: both; }\n .row.collapse > .column, .row.collapse > .columns {\n padding-left: 0;\n padding-right: 0; }\n .row .row {\n margin-left: -0.625rem;\n margin-right: -0.625rem; }\n @media screen and (min-width: 40em) {\n .row .row {\n margin-left: -0.9375rem;\n margin-right: -0.9375rem; } }\n .row .row.collapse {\n margin-left: 0;\n margin-right: 0; }\n .row.expanded {\n max-width: none; }\n .row.expanded .row {\n margin-left: auto;\n margin-right: auto; }\n\n.column, .columns {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n width: 100%;\n float: left; }\n @media screen and (min-width: 40em) {\n .column, .columns {\n padding-left: 0.9375rem;\n padding-right: 0.9375rem; } }\n .column:last-child:not(:first-child), .columns:last-child:not(:first-child) {\n float: right; }\n .column.end:last-child:last-child, .end.columns:last-child:last-child {\n float: left; }\n\n.column.row.row, .row.row.columns {\n float: none; }\n .row .column.row.row, .row .row.row.columns {\n padding-left: 0;\n padding-right: 0;\n margin-left: 0;\n margin-right: 0; }\n\n.small-1 {\n width: 8.33333%; }\n\n.small-push-1 {\n position: relative;\n left: 8.33333%; }\n\n.small-pull-1 {\n position: relative;\n left: -8.33333%; }\n\n.small-offset-0 {\n margin-left: 0%; }\n\n.small-2 {\n width: 16.66667%; }\n\n.small-push-2 {\n position: relative;\n left: 16.66667%; }\n\n.small-pull-2 {\n position: relative;\n left: -16.66667%; }\n\n.small-offset-1 {\n margin-left: 8.33333%; }\n\n.small-3 {\n width: 25%; }\n\n.small-push-3 {\n position: relative;\n left: 25%; }\n\n.small-pull-3 {\n position: relative;\n left: -25%; }\n\n.small-offset-2 {\n margin-left: 16.66667%; }\n\n.small-4 {\n width: 33.33333%; }\n\n.small-push-4 {\n position: relative;\n left: 33.33333%; }\n\n.small-pull-4 {\n position: relative;\n left: -33.33333%; }\n\n.small-offset-3 {\n margin-left: 25%; }\n\n.small-5 {\n width: 41.66667%; }\n\n.small-push-5 {\n position: relative;\n left: 41.66667%; }\n\n.small-pull-5 {\n position: relative;\n left: -41.66667%; }\n\n.small-offset-4 {\n margin-left: 33.33333%; }\n\n.small-6 {\n width: 50%; }\n\n.small-push-6 {\n position: relative;\n left: 50%; }\n\n.small-pull-6 {\n position: relative;\n left: -50%; }\n\n.small-offset-5 {\n margin-left: 41.66667%; }\n\n.small-7 {\n width: 58.33333%; }\n\n.small-push-7 {\n position: relative;\n left: 58.33333%; }\n\n.small-pull-7 {\n position: relative;\n left: -58.33333%; }\n\n.small-offset-6 {\n margin-left: 50%; }\n\n.small-8 {\n width: 66.66667%; }\n\n.small-push-8 {\n position: relative;\n left: 66.66667%; }\n\n.small-pull-8 {\n position: relative;\n left: -66.66667%; }\n\n.small-offset-7 {\n margin-left: 58.33333%; }\n\n.small-9 {\n width: 75%; }\n\n.small-push-9 {\n position: relative;\n left: 75%; }\n\n.small-pull-9 {\n position: relative;\n left: -75%; }\n\n.small-offset-8 {\n margin-left: 66.66667%; }\n\n.small-10 {\n width: 83.33333%; }\n\n.small-push-10 {\n position: relative;\n left: 83.33333%; }\n\n.small-pull-10 {\n position: relative;\n left: -83.33333%; }\n\n.small-offset-9 {\n margin-left: 75%; }\n\n.small-11 {\n width: 91.66667%; }\n\n.small-push-11 {\n position: relative;\n left: 91.66667%; }\n\n.small-pull-11 {\n position: relative;\n left: -91.66667%; }\n\n.small-offset-10 {\n margin-left: 83.33333%; }\n\n.small-12 {\n width: 100%; }\n\n.small-offset-11 {\n margin-left: 91.66667%; }\n\n.small-up-1 > .column, .small-up-1 > .columns {\n width: 100%;\n float: left; }\n .small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) {\n clear: none; }\n .small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) {\n clear: both; }\n .small-up-1 > .column:last-child, .small-up-1 > .columns:last-child {\n float: left; }\n\n.small-up-2 > .column, .small-up-2 > .columns {\n width: 50%;\n float: left; }\n .small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) {\n clear: none; }\n .small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) {\n clear: both; }\n .small-up-2 > .column:last-child, .small-up-2 > .columns:last-child {\n float: left; }\n\n.small-up-3 > .column, .small-up-3 > .columns {\n width: 33.33333%;\n float: left; }\n .small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) {\n clear: none; }\n .small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) {\n clear: both; }\n .small-up-3 > .column:last-child, .small-up-3 > .columns:last-child {\n float: left; }\n\n.small-up-4 > .column, .small-up-4 > .columns {\n width: 25%;\n float: left; }\n .small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) {\n clear: none; }\n .small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) {\n clear: both; }\n .small-up-4 > .column:last-child, .small-up-4 > .columns:last-child {\n float: left; }\n\n.small-up-5 > .column, .small-up-5 > .columns {\n width: 20%;\n float: left; }\n .small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) {\n clear: none; }\n .small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) {\n clear: both; }\n .small-up-5 > .column:last-child, .small-up-5 > .columns:last-child {\n float: left; }\n\n.small-up-6 > .column, .small-up-6 > .columns {\n width: 16.66667%;\n float: left; }\n .small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) {\n clear: none; }\n .small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) {\n clear: both; }\n .small-up-6 > .column:last-child, .small-up-6 > .columns:last-child {\n float: left; }\n\n.small-up-7 > .column, .small-up-7 > .columns {\n width: 14.28571%;\n float: left; }\n .small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) {\n clear: none; }\n .small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) {\n clear: both; }\n .small-up-7 > .column:last-child, .small-up-7 > .columns:last-child {\n float: left; }\n\n.small-up-8 > .column, .small-up-8 > .columns {\n width: 12.5%;\n float: left; }\n .small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) {\n clear: none; }\n .small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) {\n clear: both; }\n .small-up-8 > .column:last-child, .small-up-8 > .columns:last-child {\n float: left; }\n\n.small-collapse > .column, .small-collapse > .columns {\n padding-left: 0;\n padding-right: 0; }\n\n.small-collapse .row {\n margin-left: 0;\n margin-right: 0; }\n\n.small-uncollapse > .column, .small-uncollapse > .columns {\n padding-left: 0.625rem;\n padding-right: 0.625rem; }\n\n.small-centered {\n float: none;\n margin-left: auto;\n margin-right: auto; }\n\n.small-uncentered,\n.small-push-0,\n.small-pull-0 {\n position: static;\n margin-left: 0;\n margin-right: 0;\n float: left; }\n\n@media screen and (min-width: 40em) {\n .medium-1 {\n width: 8.33333%; }\n .medium-push-1 {\n position: relative;\n left: 8.33333%; }\n .medium-pull-1 {\n position: relative;\n left: -8.33333%; }\n .medium-offset-0 {\n margin-left: 0%; }\n .medium-2 {\n width: 16.66667%; }\n .medium-push-2 {\n position: relative;\n left: 16.66667%; }\n .medium-pull-2 {\n position: relative;\n left: -16.66667%; }\n .medium-offset-1 {\n margin-left: 8.33333%; }\n .medium-3 {\n width: 25%; }\n .medium-push-3 {\n position: relative;\n left: 25%; }\n .medium-pull-3 {\n position: relative;\n left: -25%; }\n .medium-offset-2 {\n margin-left: 16.66667%; }\n .medium-4 {\n width: 33.33333%; }\n .medium-push-4 {\n position: relative;\n left: 33.33333%; }\n .medium-pull-4 {\n position: relative;\n left: -33.33333%; }\n .medium-offset-3 {\n margin-left: 25%; }\n .medium-5 {\n width: 41.66667%; }\n .medium-push-5 {\n position: relative;\n left: 41.66667%; }\n .medium-pull-5 {\n position: relative;\n left: -41.66667%; }\n .medium-offset-4 {\n margin-left: 33.33333%; }\n .medium-6 {\n width: 50%; }\n .medium-push-6 {\n position: relative;\n left: 50%; }\n .medium-pull-6 {\n position: relative;\n left: -50%; }\n .medium-offset-5 {\n margin-left: 41.66667%; }\n .medium-7 {\n width: 58.33333%; }\n .medium-push-7 {\n position: relative;\n left: 58.33333%; }\n .medium-pull-7 {\n position: relative;\n left: -58.33333%; }\n .medium-offset-6 {\n margin-left: 50%; }\n .medium-8 {\n width: 66.66667%; }\n .medium-push-8 {\n position: relative;\n left: 66.66667%; }\n .medium-pull-8 {\n position: relative;\n left: -66.66667%; }\n .medium-offset-7 {\n margin-left: 58.33333%; }\n .medium-9 {\n width: 75%; }\n .medium-push-9 {\n position: relative;\n left: 75%; }\n .medium-pull-9 {\n position: relative;\n left: -75%; }\n .medium-offset-8 {\n margin-left: 66.66667%; }\n .medium-10 {\n width: 83.33333%; }\n .medium-push-10 {\n position: relative;\n left: 83.33333%; }\n .medium-pull-10 {\n position: relative;\n left: -83.33333%; }\n .medium-offset-9 {\n margin-left: 75%; }\n .medium-11 {\n width: 91.66667%; }\n .medium-push-11 {\n position: relative;\n left: 91.66667%; }\n .medium-pull-11 {\n position: relative;\n left: -91.66667%; }\n .medium-offset-10 {\n margin-left: 83.33333%; }\n .medium-12 {\n width: 100%; }\n .medium-offset-11 {\n margin-left: 91.66667%; }\n .medium-up-1 > .column, .medium-up-1 > .columns {\n width: 100%;\n float: left; }\n .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) {\n clear: none; }\n .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) {\n clear: both; }\n .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child {\n float: left; }\n .medium-up-2 > .column, .medium-up-2 > .columns {\n width: 50%;\n float: left; }\n .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) {\n clear: none; }\n .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) {\n clear: both; }\n .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child {\n float: left; }\n .medium-up-3 > .column, .medium-up-3 > .columns {\n width: 33.33333%;\n float: left; }\n .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) {\n clear: none; }\n .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) {\n clear: both; }\n .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child {\n float: left; }\n .medium-up-4 > .column, .medium-up-4 > .columns {\n width: 25%;\n float: left; }\n .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) {\n clear: none; }\n .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) {\n clear: both; }\n .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child {\n float: left; }\n .medium-up-5 > .column, .medium-up-5 > .columns {\n width: 20%;\n float: left; }\n .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) {\n clear: none; }\n .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) {\n clear: both; }\n .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child {\n float: left; }\n .medium-up-6 > .column, .medium-up-6 > .columns {\n width: 16.66667%;\n float: left; }\n .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) {\n clear: none; }\n .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) {\n clear: both; }\n .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child {\n float: left; }\n .medium-up-7 > .column, .medium-up-7 > .columns {\n width: 14.28571%;\n float: left; }\n .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) {\n clear: none; }\n .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) {\n clear: both; }\n .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child {\n float: left; }\n .medium-up-8 > .column, .medium-up-8 > .columns {\n width: 12.5%;\n float: left; }\n .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) {\n clear: none; }\n .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) {\n clear: both; }\n .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child {\n float: left; }\n .medium-collapse > .column, .medium-collapse > .columns {\n padding-left: 0;\n padding-right: 0; }\n .medium-collapse .row {\n margin-left: 0;\n margin-right: 0; }\n .medium-uncollapse > .column, .medium-uncollapse > .columns {\n padding-left: 0.9375rem;\n padding-right: 0.9375rem; }\n .medium-centered {\n float: none;\n margin-left: auto;\n margin-right: auto; }\n .medium-uncentered,\n .medium-push-0,\n .medium-pull-0 {\n position: static;\n margin-left: 0;\n margin-right: 0;\n float: left; } }\n\n@media screen and (min-width: 64em) {\n .large-1 {\n width: 8.33333%; }\n .large-push-1 {\n position: relative;\n left: 8.33333%; }\n .large-pull-1 {\n position: relative;\n left: -8.33333%; }\n .large-offset-0 {\n margin-left: 0%; }\n .large-2 {\n width: 16.66667%; }\n .large-push-2 {\n position: relative;\n left: 16.66667%; }\n .large-pull-2 {\n position: relative;\n left: -16.66667%; }\n .large-offset-1 {\n margin-left: 8.33333%; }\n .large-3 {\n width: 25%; }\n .large-push-3 {\n position: relative;\n left: 25%; }\n .large-pull-3 {\n position: relative;\n left: -25%; }\n .large-offset-2 {\n margin-left: 16.66667%; }\n .large-4 {\n width: 33.33333%; }\n .large-push-4 {\n position: relative;\n left: 33.33333%; }\n .large-pull-4 {\n position: relative;\n left: -33.33333%; }\n .large-offset-3 {\n margin-left: 25%; }\n .large-5 {\n width: 41.66667%; }\n .large-push-5 {\n position: relative;\n left: 41.66667%; }\n .large-pull-5 {\n position: relative;\n left: -41.66667%; }\n .large-offset-4 {\n margin-left: 33.33333%; }\n .large-6 {\n width: 50%; }\n .large-push-6 {\n position: relative;\n left: 50%; }\n .large-pull-6 {\n position: relative;\n left: -50%; }\n .large-offset-5 {\n margin-left: 41.66667%; }\n .large-7 {\n width: 58.33333%; }\n .large-push-7 {\n position: relative;\n left: 58.33333%; }\n .large-pull-7 {\n position: relative;\n left: -58.33333%; }\n .large-offset-6 {\n margin-left: 50%; }\n .large-8 {\n width: 66.66667%; }\n .large-push-8 {\n position: relative;\n left: 66.66667%; }\n .large-pull-8 {\n position: relative;\n left: -66.66667%; }\n .large-offset-7 {\n margin-left: 58.33333%; }\n .large-9 {\n width: 75%; }\n .large-push-9 {\n position: relative;\n left: 75%; }\n .large-pull-9 {\n position: relative;\n left: -75%; }\n .large-offset-8 {\n margin-left: 66.66667%; }\n .large-10 {\n width: 83.33333%; }\n .large-push-10 {\n position: relative;\n left: 83.33333%; }\n .large-pull-10 {\n position: relative;\n left: -83.33333%; }\n .large-offset-9 {\n margin-left: 75%; }\n .large-11 {\n width: 91.66667%; }\n .large-push-11 {\n position: relative;\n left: 91.66667%; }\n .large-pull-11 {\n position: relative;\n left: -91.66667%; }\n .large-offset-10 {\n margin-left: 83.33333%; }\n .large-12 {\n width: 100%; }\n .large-offset-11 {\n margin-left: 91.66667%; }\n .large-up-1 > .column, .large-up-1 > .columns {\n width: 100%;\n float: left; }\n .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) {\n clear: none; }\n .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) {\n clear: both; }\n .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child {\n float: left; }\n .large-up-2 > .column, .large-up-2 > .columns {\n width: 50%;\n float: left; }\n .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) {\n clear: none; }\n .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) {\n clear: both; }\n .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child {\n float: left; }\n .large-up-3 > .column, .large-up-3 > .columns {\n width: 33.33333%;\n float: left; }\n .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) {\n clear: none; }\n .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) {\n clear: both; }\n .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child {\n float: left; }\n .large-up-4 > .column, .large-up-4 > .columns {\n width: 25%;\n float: left; }\n .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) {\n clear: none; }\n .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) {\n clear: both; }\n .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child {\n float: left; }\n .large-up-5 > .column, .large-up-5 > .columns {\n width: 20%;\n float: left; }\n .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) {\n clear: none; }\n .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) {\n clear: both; }\n .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child {\n float: left; }\n .large-up-6 > .column, .large-up-6 > .columns {\n width: 16.66667%;\n float: left; }\n .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) {\n clear: none; }\n .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) {\n clear: both; }\n .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child {\n float: left; }\n .large-up-7 > .column, .large-up-7 > .columns {\n width: 14.28571%;\n float: left; }\n .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) {\n clear: none; }\n .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) {\n clear: both; }\n .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child {\n float: left; }\n .large-up-8 > .column, .large-up-8 > .columns {\n width: 12.5%;\n float: left; }\n .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) {\n clear: none; }\n .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) {\n clear: both; }\n .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child {\n float: left; }\n .large-collapse > .column, .large-collapse > .columns {\n padding-left: 0;\n padding-right: 0; }\n .large-collapse .row {\n margin-left: 0;\n margin-right: 0; }\n .large-uncollapse > .column, .large-uncollapse > .columns {\n padding-left: 0.9375rem;\n padding-right: 0.9375rem; }\n .large-centered {\n float: none;\n margin-left: auto;\n margin-right: auto; }\n .large-uncentered,\n .large-push-0,\n .large-pull-0 {\n position: static;\n margin-left: 0;\n margin-right: 0;\n float: left; } }\n\ndiv,\ndl,\ndt,\ndd,\nul,\nol,\nli,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\npre,\nform,\np,\nblockquote,\nth,\ntd {\n margin: 0;\n padding: 0; }\n\np {\n font-size: inherit;\n line-height: 1.6;\n margin-bottom: 1rem;\n text-rendering: optimizeLegibility; }\n\nem,\ni {\n font-style: italic;\n line-height: inherit; }\n\nstrong,\nb {\n font-weight: bold;\n line-height: inherit; }\n\nsmall {\n font-size: 80%;\n line-height: inherit; }\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-family: \"Helvetica Neue\", Helvetica, Roboto, Arial, sans-serif;\n font-weight: normal;\n font-style: normal;\n color: #222222;\n text-rendering: optimizeLegibility;\n margin-top: 0;\n margin-bottom: 0.5rem;\n line-height: 1.4; }\n h1 small,\n h2 small,\n h3 small,\n h4 small,\n h5 small,\n h6 small {\n color: #cacaca;\n line-height: 0; }\n\nh1 {\n font-size: 1.5rem; }\n\nh2 {\n font-size: 1.25rem; }\n\nh3 {\n font-size: 1.1875rem; }\n\nh4 {\n font-size: 1.125rem; }\n\nh5 {\n font-size: 1.0625rem; }\n\nh6 {\n font-size: 1rem; }\n\n@media screen and (min-width: 40em) {\n h1 {\n font-size: 3rem; }\n h2 {\n font-size: 2.5rem; }\n h3 {\n font-size: 1.9375rem; }\n h4 {\n font-size: 1.5625rem; }\n h5 {\n font-size: 1.25rem; }\n h6 {\n font-size: 1rem; } }\n\na {\n color: #2F343B;\n text-decoration: none;\n line-height: inherit;\n cursor: pointer; }\n a:hover, a:focus {\n color: #282d33; }\n a img {\n border: 0; }\n\nhr {\n max-width: 62.5rem;\n height: 0;\n border-right: 0;\n border-top: 0;\n border-bottom: 1px solid #cacaca;\n border-left: 0;\n margin: 1.25rem auto;\n clear: both; }\n\nul,\nol,\ndl {\n line-height: 1.6;\n margin-bottom: 1rem;\n list-style-position: outside; }\n\nli {\n font-size: inherit; }\n\nul {\n list-style-type: disc;\n margin-left: 1.25rem; }\n\nol {\n margin-left: 1.25rem; }\n\nul ul, ol ul, ul ol, ol ol {\n margin-left: 1.25rem;\n margin-bottom: 0; }\n\ndl {\n margin-bottom: 1rem; }\n dl dt {\n margin-bottom: 0.3rem;\n font-weight: bold; }\n\nblockquote {\n margin: 0 0 1rem;\n padding: 0.5625rem 1.25rem 0 1.1875rem;\n border-left: 1px solid #cacaca; }\n blockquote, blockquote p {\n line-height: 1.6;\n color: #8a8a8a; }\n\ncite {\n display: block;\n font-size: 0.8125rem;\n color: #8a8a8a; }\n cite:before {\n content: '\\2014 \\0020'; }\n\nabbr {\n color: #222222;\n cursor: help;\n border-bottom: 1px dotted #0a0a0a; }\n\ncode {\n font-family: Consolas, \"Liberation Mono\", Courier, monospace;\n font-weight: normal;\n color: #0a0a0a;\n background-color: #e6e6e6;\n border: 1px solid #cacaca;\n padding: 0.125rem 0.3125rem 0.0625rem; }\n\nkbd {\n padding: 0.125rem 0.25rem 0;\n margin: 0;\n background-color: #e6e6e6;\n color: #0a0a0a;\n font-family: Consolas, \"Liberation Mono\", Courier, monospace; }\n\n.subheader {\n margin-top: 0.2rem;\n margin-bottom: 0.5rem;\n font-weight: normal;\n line-height: 1.4;\n color: #8a8a8a; }\n\n.lead {\n font-size: 125%;\n line-height: 1.6; }\n\n.stat {\n font-size: 2.5rem;\n line-height: 1; }\n p + .stat {\n margin-top: -1rem; }\n\n.no-bullet {\n margin-left: 0;\n list-style: none; }\n\n.text-left {\n text-align: left; }\n\n.text-right {\n text-align: right; }\n\n.text-center {\n text-align: center; }\n\n.text-justify {\n text-align: justify; }\n\n@media screen and (min-width: 40em) {\n .medium-text-left {\n text-align: left; }\n .medium-text-right {\n text-align: right; }\n .medium-text-center {\n text-align: center; }\n .medium-text-justify {\n text-align: justify; } }\n\n@media screen and (min-width: 64em) {\n .large-text-left {\n text-align: left; }\n .large-text-right {\n text-align: right; }\n .large-text-center {\n text-align: center; }\n .large-text-justify {\n text-align: justify; } }\n\n.show-for-print {\n display: none !important; }\n\n@media print {\n * {\n background: transparent !important;\n color: black !important;\n box-shadow: none !important;\n text-shadow: none !important; }\n .show-for-print {\n display: block !important; }\n .hide-for-print {\n display: none !important; }\n table.show-for-print {\n display: table !important; }\n thead.show-for-print {\n display: table-header-group !important; }\n tbody.show-for-print {\n display: table-row-group !important; }\n tr.show-for-print {\n display: table-row !important; }\n td.show-for-print {\n display: table-cell !important; }\n th.show-for-print {\n display: table-cell !important; }\n a,\n a:visited {\n text-decoration: underline; }\n a[href]:after {\n content: \" (\" attr(href) \")\"; }\n .ir a:after,\n a[href^='javascript:']:after,\n a[href^='#']:after {\n content: ''; }\n abbr[title]:after {\n content: \" (\" attr(title) \")\"; }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid; }\n thead {\n display: table-header-group; }\n tr,\n img {\n page-break-inside: avoid; }\n img {\n max-width: 100% !important; }\n @page {\n margin: 0.5cm; }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3; }\n h2,\n h3 {\n page-break-after: avoid; } }\n\n.button {\n display: inline-block;\n text-align: center;\n line-height: 1;\n cursor: pointer;\n -webkit-appearance: none;\n transition: background-color 0.25s ease-out, color 0.25s ease-out;\n vertical-align: middle;\n border: 1px solid transparent;\n border-radius: 3px;\n padding: 0.85em 1em;\n margin: 0 0 1rem 0;\n font-size: 0.9rem;\n background-color: #2F343B;\n color: #fff; }\n [data-whatinput='mouse'] .button {\n outline: 0; }\n .button:hover, .button:focus {\n background-color: #282c32;\n color: #fff; }\n .button.tiny {\n font-size: 0.6rem; }\n .button.small {\n font-size: 0.75rem; }\n .button.large {\n font-size: 1.25rem; }\n .button.expanded {\n display: block;\n width: 100%;\n margin-left: 0;\n margin-right: 0; }\n .button.primary {\n background-color: #2F343B;\n color: #fff; }\n .button.primary:hover, .button.primary:focus {\n background-color: #262a2f;\n color: #fff; }\n .button.secondary {\n background-color: #703030;\n color: #fff; }\n .button.secondary:hover, .button.secondary:focus {\n background-color: #5a2626;\n color: #fff; }\n .button.success {\n background-color: #5da423;\n color: #fff; }\n .button.success:hover, .button.success:focus {\n background-color: #4a831c;\n color: #fff; }\n .button.alert {\n background-color: #703030;\n color: #fff; }\n .button.alert:hover, .button.alert:focus {\n background-color: #5a2626;\n color: #fff; }\n .button.warning {\n background-color: #ffae00;\n color: #fff; }\n .button.warning:hover, .button.warning:focus {\n background-color: #cc8b00;\n color: #fff; }\n .button.hollow {\n border: 1px solid #2F343B;\n color: #2F343B; }\n .button.hollow, .button.hollow:hover, .button.hollow:focus {\n background-color: transparent; }\n .button.hollow:hover, .button.hollow:focus {\n border-color: #181a1e;\n color: #181a1e; }\n .button.hollow.primary {\n border: 1px solid #2F343B;\n color: #2F343B; }\n .button.hollow.primary:hover, .button.hollow.primary:focus {\n border-color: #181a1e;\n color: #181a1e; }\n .button.hollow.secondary {\n border: 1px solid #703030;\n color: #703030; }\n .button.hollow.secondary:hover, .button.hollow.secondary:focus {\n border-color: #381818;\n color: #381818; }\n .button.hollow.success {\n border: 1px solid #5da423;\n color: #5da423; }\n .button.hollow.success:hover, .button.hollow.success:focus {\n border-color: #2f5212;\n color: #2f5212; }\n .button.hollow.alert {\n border: 1px solid #703030;\n color: #703030; }\n .button.hollow.alert:hover, .button.hollow.alert:focus {\n border-color: #381818;\n color: #381818; }\n .button.hollow.warning {\n border: 1px solid #ffae00;\n color: #ffae00; }\n .button.hollow.warning:hover, .button.hollow.warning:focus {\n border-color: #805700;\n color: #805700; }\n .button.disabled, .button[disabled] {\n opacity: 0.25;\n cursor: not-allowed;\n pointer-events: none; }\n .button.dropdown::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.4em;\n border-color: #fefefe transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n position: relative;\n top: 0.4em;\n float: right;\n margin-left: 1em;\n display: inline-block; }\n .button.arrow-only::after {\n margin-left: 0;\n float: none;\n top: 0.2em; }\n\n[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'],\ntextarea {\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: 2.4375rem;\n padding: 0.5rem;\n border: 1px solid #cacaca;\n margin: 0 0 1rem;\n font-family: inherit;\n font-size: 1rem;\n color: #0a0a0a;\n background-color: #fefefe;\n box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);\n border-radius: 3px;\n transition: box-shadow 0.5s, border-color 0.25s ease-in-out;\n -webkit-appearance: none;\n -moz-appearance: none; }\n [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,\n textarea:focus {\n border: 1px solid #8a8a8a;\n background-color: #fefefe;\n outline: none;\n box-shadow: 0 0 5px #cacaca;\n transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }\n\ntextarea {\n max-width: 100%; }\n textarea[rows] {\n height: auto; }\n\ninput:disabled, input[readonly],\ntextarea:disabled,\ntextarea[readonly] {\n background-color: #e6e6e6;\n cursor: default; }\n\n[type='submit'],\n[type='button'] {\n border-radius: 3px;\n -webkit-appearance: none;\n -moz-appearance: none; }\n\ninput[type='search'] {\n box-sizing: border-box; }\n\n[type='file'],\n[type='checkbox'],\n[type='radio'] {\n margin: 0 0 1rem; }\n\n[type='checkbox'] + label,\n[type='radio'] + label {\n display: inline-block;\n margin-left: 0.5rem;\n margin-right: 1rem;\n margin-bottom: 0;\n vertical-align: baseline; }\n\nlabel > [type='checkbox'],\nlabel > [type='label'] {\n margin-right: 0.5rem; }\n\n[type='file'] {\n width: 100%; }\n\nlabel {\n display: block;\n margin: 0;\n font-size: 0.875rem;\n font-weight: normal;\n line-height: 1.8;\n color: #0a0a0a; }\n label.middle {\n margin: 0 0 1rem;\n padding: 0.5625rem 0; }\n\n.help-text {\n margin-top: -0.5rem;\n font-size: 0.8125rem;\n font-style: italic;\n color: #333; }\n\n.input-group {\n display: table;\n width: 100%;\n margin-bottom: 1rem; }\n .input-group > :first-child {\n border-radius: 3px 0 0 3px; }\n .input-group > :last-child > * {\n border-radius: 0 3px 3px 0; }\n\n.input-group-label, .input-group-field, .input-group-button {\n display: table-cell;\n margin: 0;\n vertical-align: middle; }\n\n.input-group-label {\n text-align: center;\n width: 1%;\n height: 100%;\n padding: 0 1rem;\n background: #e6e6e6;\n color: #0a0a0a;\n border: 1px solid #cacaca;\n white-space: nowrap; }\n .input-group-label:first-child {\n border-right: 0; }\n .input-group-label:last-child {\n border-left: 0; }\n\n.input-group-field {\n border-radius: 0;\n height: 2.5rem; }\n\n.input-group-button {\n height: 100%;\n padding-top: 0;\n padding-bottom: 0;\n text-align: center;\n width: 1%; }\n .input-group-button a,\n .input-group-button input,\n .input-group-button button {\n margin: 0; }\n\nfieldset {\n border: 0;\n padding: 0;\n margin: 0; }\n\nlegend {\n margin-bottom: 0.5rem;\n max-width: 100%; }\n\n.fieldset {\n border: 1px solid #cacaca;\n padding: 1.25rem;\n margin: 1.125rem 0; }\n .fieldset legend {\n background: #fefefe;\n padding: 0 0.1875rem;\n margin: 0;\n margin-left: -0.1875rem; }\n\nselect {\n height: 2.4375rem;\n padding: 0.5rem;\n border: 1px solid #cacaca;\n margin: 0 0 1rem;\n font-size: 1rem;\n font-family: inherit;\n line-height: normal;\n color: #0a0a0a;\n background-color: #fefefe;\n border-radius: 3px;\n -webkit-appearance: none;\n -moz-appearance: none;\n background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"32\" height=\"24\" viewBox=\"0 0 32 24\"><polygon points=\"0,0 32,0 16,24\" style=\"fill: rgb%2851, 51, 51%29\"></polygon></svg>');\n background-size: 9px 6px;\n background-position: right center;\n background-origin: content-box;\n background-repeat: no-repeat; }\n @media screen and (min-width: 0\\0) {\n select {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==\"); } }\n select:disabled {\n background-color: #e6e6e6;\n cursor: default; }\n select::-ms-expand {\n display: none; }\n select[multiple] {\n height: auto; }\n\n.is-invalid-input:not(:focus) {\n background-color: rgba(112, 48, 48, 0.1);\n border-color: #703030; }\n\n.is-invalid-label {\n color: #703030; }\n\n.form-error {\n display: none;\n margin-top: -0.5rem;\n margin-bottom: 1rem;\n font-size: 0.75rem;\n font-weight: bold;\n color: #703030; }\n .form-error.is-visible {\n display: block; }\n\n.float-left {\n float: left !important; }\n\n.float-right {\n float: right !important; }\n\n.float-center {\n display: block;\n margin-left: auto;\n margin-right: auto; }\n\n.clearfix::before, .clearfix::after {\n content: ' ';\n display: table; }\n\n.clearfix::after {\n clear: both; }\n\n.accordion {\n list-style-type: none;\n background: #fefefe;\n border: 1px solid #e6e6e6;\n border-bottom: 0;\n border-radius: 3px;\n margin-left: 0; }\n\n.accordion-title {\n display: block;\n padding: 1.25rem 1rem;\n line-height: 1;\n font-size: 0.75rem;\n color: #2F343B;\n position: relative;\n border-bottom: 1px solid #e6e6e6; }\n .accordion-title:hover, .accordion-title:focus {\n background-color: #e6e6e6; }\n .accordion-title::before {\n content: '+';\n position: absolute;\n right: 1rem;\n top: 50%;\n margin-top: -0.5rem; }\n .is-active > .accordion-title::before {\n content: '–'; }\n\n.accordion-content {\n padding: 1rem;\n display: none;\n border-bottom: 1px solid #e6e6e6;\n background-color: #fefefe; }\n\n.is-accordion-submenu-parent > a {\n position: relative; }\n .is-accordion-submenu-parent > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 6px;\n border-color: #2F343B transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n position: absolute;\n top: 50%;\n margin-top: -4px;\n right: 1rem; }\n\n.is-accordion-submenu-parent[aria-expanded='true'] > a::after {\n transform-origin: 50% 50%;\n transform: scaleY(-1); }\n\n.badge {\n display: inline-block;\n padding: 0.3em;\n min-width: 2.1em;\n font-size: 0.6rem;\n text-align: center;\n border-radius: 50%;\n background: #2F343B;\n color: #fefefe; }\n .badge.secondary {\n background: #703030;\n color: #fefefe; }\n .badge.success {\n background: #5da423;\n color: #fefefe; }\n .badge.alert {\n background: #703030;\n color: #fefefe; }\n .badge.warning {\n background: #ffae00;\n color: #fefefe; }\n\n.breadcrumbs {\n list-style: none;\n margin: 0 0 1rem 0; }\n .breadcrumbs::before, .breadcrumbs::after {\n content: ' ';\n display: table; }\n .breadcrumbs::after {\n clear: both; }\n .breadcrumbs li {\n float: left;\n color: #0a0a0a;\n font-size: 0.6875rem;\n cursor: default;\n text-transform: uppercase; }\n .breadcrumbs li:not(:last-child)::after {\n color: #cacaca;\n content: \"/\";\n margin: 0 0.75rem;\n position: relative;\n top: 1px;\n opacity: 1; }\n .breadcrumbs a {\n color: #2F343B; }\n .breadcrumbs a:hover {\n text-decoration: underline; }\n .breadcrumbs .disabled {\n color: #cacaca; }\n\n.button-group {\n margin-bottom: 1rem;\n font-size: 0.9rem; }\n .button-group::before, .button-group::after {\n content: ' ';\n display: table; }\n .button-group::after {\n clear: both; }\n .button-group .button {\n float: left;\n margin: 0;\n font-size: inherit; }\n .button-group .button:not(:last-child) {\n border-right: 1px solid #fefefe; }\n .button-group.tiny {\n font-size: 0.6rem; }\n .button-group.small {\n font-size: 0.75rem; }\n .button-group.large {\n font-size: 1.25rem; }\n .button-group.expanded {\n display: table;\n table-layout: fixed;\n width: 100%; }\n .button-group.expanded::before, .button-group.expanded::after {\n display: none; }\n .button-group.expanded .button {\n display: table-cell;\n float: none; }\n .button-group.primary .button {\n background-color: #2F343B;\n color: #fefefe; }\n .button-group.primary .button:hover, .button-group.primary .button:focus {\n background-color: #262a2f;\n color: #fefefe; }\n .button-group.secondary .button {\n background-color: #703030;\n color: #fefefe; }\n .button-group.secondary .button:hover, .button-group.secondary .button:focus {\n background-color: #5a2626;\n color: #fefefe; }\n .button-group.success .button {\n background-color: #5da423;\n color: #fefefe; }\n .button-group.success .button:hover, .button-group.success .button:focus {\n background-color: #4a831c;\n color: #fefefe; }\n .button-group.alert .button {\n background-color: #703030;\n color: #fefefe; }\n .button-group.alert .button:hover, .button-group.alert .button:focus {\n background-color: #5a2626;\n color: #fefefe; }\n .button-group.warning .button {\n background-color: #ffae00;\n color: #fefefe; }\n .button-group.warning .button:hover, .button-group.warning .button:focus {\n background-color: #cc8b00;\n color: #fefefe; }\n .button-group.stacked .button, .button-group.stacked-for-small .button {\n width: 100%; }\n .button-group.stacked .button:not(:last-child), .button-group.stacked-for-small .button:not(:last-child) {\n border-right: 1px solid; }\n @media screen and (min-width: 40em) {\n .button-group.stacked-for-small .button {\n width: auto; }\n .button-group.stacked-for-small .button:not(:last-child) {\n border-right: 1px solid #fefefe; } }\n @media screen and (min-width: 0em) and (max-width: 39.9375em) {\n .button-group.stacked-for-small.expanded {\n display: block; }\n .button-group.stacked-for-small.expanded .button {\n display: block;\n border-right: 0; } }\n\n.callout {\n margin: 0 0 1rem 0;\n padding: 1rem;\n border: 1px solid rgba(10, 10, 10, 0.25);\n border-radius: 3px;\n position: relative;\n color: #222222;\n background-color: white; }\n .callout > :first-child {\n margin-top: 0; }\n .callout > :last-child {\n margin-bottom: 0; }\n .callout.primary {\n background-color: #dde0e4; }\n .callout.secondary {\n background-color: #efdada; }\n .callout.success {\n background-color: #e6f7d9; }\n .callout.alert {\n background-color: #efdada; }\n .callout.warning {\n background-color: #fff3d9; }\n .callout.small {\n padding-top: 0.5rem;\n padding-right: 0.5rem;\n padding-bottom: 0.5rem;\n padding-left: 0.5rem; }\n .callout.large {\n padding-top: 3rem;\n padding-right: 3rem;\n padding-bottom: 3rem;\n padding-left: 3rem; }\n\n.close-button {\n position: absolute;\n color: #8a8a8a;\n right: 1rem;\n top: 0.5rem;\n font-size: 2em;\n line-height: 1;\n cursor: pointer; }\n [data-whatinput='mouse'] .close-button {\n outline: 0; }\n .close-button:hover, .close-button:focus {\n color: #0a0a0a; }\n\n.is-drilldown {\n position: relative;\n overflow: hidden; }\n\n.is-drilldown-submenu {\n position: absolute;\n top: 0;\n left: 100%;\n z-index: -1;\n height: 100%;\n width: 100%;\n background: #fefefe;\n transition: transform 0.15s linear; }\n .is-drilldown-submenu.is-active {\n z-index: 1;\n display: block;\n transform: translateX(-100%); }\n .is-drilldown-submenu.is-closing {\n transform: translateX(100%); }\n\n.is-drilldown-submenu-parent > a {\n position: relative; }\n .is-drilldown-submenu-parent > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 6px;\n border-color: transparent transparent transparent #2F343B;\n border-left-style: solid;\n border-right-width: 0;\n position: absolute;\n top: 50%;\n margin-top: -6px;\n right: 1rem; }\n\n.js-drilldown-back > a::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 6px;\n border-color: transparent #2F343B transparent transparent;\n border-right-style: solid;\n border-left-width: 0;\n border-left-width: 0;\n display: inline-block;\n vertical-align: middle;\n margin-right: 0.75rem; }\n\n.dropdown-pane {\n background-color: #fefefe;\n border: 1px solid #cacaca;\n border-radius: 3px;\n display: block;\n font-size: 1rem;\n padding: 1rem;\n position: absolute;\n visibility: hidden;\n width: 300px;\n z-index: 10; }\n .dropdown-pane.is-open {\n visibility: visible; }\n\n.dropdown-pane.tiny {\n width: 100px; }\n\n.dropdown-pane.small {\n width: 200px; }\n\n.dropdown-pane.large {\n width: 400px; }\n\n[data-whatinput='mouse'] .dropdown.menu a {\n outline: 0; }\n\n.no-js .dropdown.menu ul {\n display: none; }\n\n.dropdown.menu:not(.vertical) .is-dropdown-submenu.first-sub {\n top: 100%;\n left: 0;\n right: auto; }\n\n.dropdown.menu.align-right .is-dropdown-submenu.first-sub {\n top: 100%;\n left: auto;\n right: 0; }\n\n.is-dropdown-menu.vertical {\n width: 100px; }\n .is-dropdown-menu.vertical.align-right {\n float: right; }\n .is-dropdown-menu.vertical > li .is-dropdown-submenu {\n top: 0;\n left: 100%; }\n\n.is-dropdown-submenu-parent {\n position: relative; }\n .is-dropdown-submenu-parent a::after {\n float: right;\n margin-top: 3px;\n margin-left: 10px; }\n .is-dropdown-submenu-parent.is-down-arrow a {\n padding-right: 1.5rem;\n position: relative; }\n .is-dropdown-submenu-parent.is-down-arrow > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 5px;\n border-color: #2F343B transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n position: absolute;\n top: 0.825rem;\n right: 5px; }\n .is-dropdown-submenu-parent.is-left-arrow > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 5px;\n border-color: transparent #2F343B transparent transparent;\n border-right-style: solid;\n border-left-width: 0;\n float: left;\n margin-left: 0;\n margin-right: 10px; }\n .is-dropdown-submenu-parent.is-right-arrow > a::after {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 5px;\n border-color: transparent transparent transparent #2F343B;\n border-left-style: solid;\n border-right-width: 0; }\n .is-dropdown-submenu-parent.is-left-arrow.opens-inner .is-dropdown-submenu {\n right: 0;\n left: auto; }\n .is-dropdown-submenu-parent.is-right-arrow.opens-inner .is-dropdown-submenu {\n left: 0;\n right: auto; }\n .is-dropdown-submenu-parent.opens-inner .is-dropdown-submenu {\n top: 100%; }\n .is-dropdown-submenu-parent.opens-left .is-dropdown-submenu {\n left: auto;\n right: 100%; }\n\n.is-dropdown-submenu {\n display: none;\n position: absolute;\n top: 0;\n left: 100%;\n min-width: 200px;\n z-index: 1;\n background: #fefefe;\n border: 1px solid #cacaca; }\n .is-dropdown-submenu .is-dropdown-submenu {\n margin-top: -1px; }\n .is-dropdown-submenu > li {\n width: 100%; }\n .is-dropdown-submenu:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > .is-dropdown-submenu, .is-dropdown-submenu.js-dropdown-active {\n display: block; }\n\n.flex-video {\n position: relative;\n height: 0;\n padding-bottom: 75%;\n margin-bottom: 1rem;\n overflow: hidden; }\n .flex-video iframe,\n .flex-video object,\n .flex-video embed,\n .flex-video video {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n .flex-video.widescreen {\n padding-bottom: 56.25%; }\n .flex-video.vimeo {\n padding-top: 0; }\n\n.label {\n display: inline-block;\n padding: 0.33333rem 0.5rem;\n font-size: 0.8rem;\n line-height: 1;\n white-space: nowrap;\n cursor: default;\n border-radius: 3px;\n background: #2F343B;\n color: #fefefe; }\n .label.secondary {\n background: #703030;\n color: #fefefe; }\n .label.success {\n background: #5da423;\n color: #fefefe; }\n .label.alert {\n background: #703030;\n color: #fefefe; }\n .label.warning {\n background: #ffae00;\n color: #fefefe; }\n\n.media-object {\n margin-bottom: 1rem;\n display: block; }\n .media-object img {\n max-width: none; }\n @media screen and (min-width: 0em) and (max-width: 39.9375em) {\n .media-object.stack-for-small .media-object-section {\n display: block;\n padding: 0;\n padding-bottom: 1rem; }\n .media-object.stack-for-small .media-object-section img {\n width: 100%; } }\n\n.media-object-section {\n display: table-cell;\n vertical-align: top; }\n .media-object-section:first-child {\n padding-right: 1rem; }\n .media-object-section:last-child:not(:nth-child(2)) {\n padding-left: 1rem; }\n .media-object-section.middle {\n vertical-align: middle; }\n .media-object-section.bottom {\n vertical-align: bottom; }\n\n.menu {\n margin: 0;\n list-style-type: none; }\n .menu > li {\n display: table-cell;\n vertical-align: middle; }\n [data-whatinput='mouse'] .menu > li {\n outline: 0; }\n .menu > li > a {\n display: block;\n padding: 0.7rem 1rem;\n line-height: 1; }\n .menu input,\n .menu a,\n .menu button {\n margin-bottom: 0; }\n .menu > li > a > img,\n .menu > li > a > i {\n vertical-align: middle; }\n .menu > li > a > span {\n vertical-align: middle; }\n .menu > li > a > img,\n .menu > li > a > i {\n display: inline-block;\n margin-right: 0.25rem; }\n .menu > li {\n display: table-cell; }\n .menu.vertical > li {\n display: block; }\n @media screen and (min-width: 40em) {\n .menu.medium-horizontal > li {\n display: table-cell; }\n .menu.medium-vertical > li {\n display: block; } }\n @media screen and (min-width: 64em) {\n .menu.large-horizontal > li {\n display: table-cell; }\n .menu.large-vertical > li {\n display: block; } }\n .menu.simple li {\n line-height: 1;\n display: inline-block;\n margin-right: 1rem; }\n .menu.simple a {\n padding: 0; }\n .menu.align-right > li {\n float: right; }\n .menu.expanded {\n display: table;\n table-layout: fixed;\n width: 100%; }\n .menu.expanded > li:first-child:last-child {\n width: 100%; }\n .menu.icon-top > li > a {\n text-align: center; }\n .menu.icon-top > li > a > img,\n .menu.icon-top > li > a > i {\n display: block;\n margin: 0 auto 0.25rem; }\n .menu.nested {\n margin-left: 1rem; }\n\n.menu-text {\n font-weight: bold;\n color: inherit;\n line-height: 1;\n padding-top: 0;\n padding-bottom: 0;\n padding: 0.7rem 1rem; }\n\n.no-js [data-responsive-menu] ul {\n display: none; }\n\nhtml,\nbody {\n height: 100%; }\n\n.off-canvas-wrapper {\n width: 100%;\n overflow-x: hidden;\n position: relative;\n backface-visibility: hidden;\n -webkit-overflow-scrolling: auto; }\n\n.off-canvas-wrapper-inner {\n position: relative;\n width: 100%;\n transition: transform 0.5s ease; }\n .off-canvas-wrapper-inner::before, .off-canvas-wrapper-inner::after {\n content: ' ';\n display: table; }\n .off-canvas-wrapper-inner::after {\n clear: both; }\n\n.off-canvas-content,\n.off-canvas-content {\n min-height: 100%;\n background: #fefefe;\n transition: transform 0.5s ease;\n backface-visibility: hidden;\n z-index: 1;\n box-shadow: 0 0 10px rgba(10, 10, 10, 0.5); }\n\n.js-off-canvas-exit {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(254, 254, 254, 0.25);\n cursor: pointer;\n transition: background 0.5s ease; }\n\n.off-canvas {\n position: absolute;\n background: #e6e6e6;\n z-index: -1;\n max-height: 100%;\n overflow-y: auto;\n transform: translateX(0); }\n [data-whatinput='mouse'] .off-canvas {\n outline: 0; }\n .off-canvas.position-left {\n left: -250px;\n top: 0;\n width: 250px; }\n .is-open-left {\n transform: translateX(250px); }\n .off-canvas.position-right {\n right: -250px;\n top: 0;\n width: 250px; }\n .is-open-right {\n transform: translateX(-250px); }\n\n@media screen and (min-width: 40em) {\n .position-left.reveal-for-medium {\n left: 0;\n z-index: auto;\n position: fixed; }\n .position-left.reveal-for-medium ~ .off-canvas-content {\n margin-left: 250px; }\n .position-right.reveal-for-medium {\n right: 0;\n z-index: auto;\n position: fixed; }\n .position-right.reveal-for-medium ~ .off-canvas-content {\n margin-right: 250px; } }\n\n@media screen and (min-width: 64em) {\n .position-left.reveal-for-large {\n left: 0;\n z-index: auto;\n position: fixed; }\n .position-left.reveal-for-large ~ .off-canvas-content {\n margin-left: 250px; }\n .position-right.reveal-for-large {\n right: 0;\n z-index: auto;\n position: fixed; }\n .position-right.reveal-for-large ~ .off-canvas-content {\n margin-right: 250px; } }\n\n.orbit {\n position: relative; }\n\n.orbit-container {\n position: relative;\n margin: 0;\n overflow: hidden;\n list-style: none; }\n\n.orbit-slide {\n width: 100%;\n max-height: 100%; }\n .orbit-slide.no-motionui.is-active {\n top: 0;\n left: 0; }\n\n.orbit-figure {\n margin: 0; }\n\n.orbit-image {\n margin: 0;\n width: 100%;\n max-width: 100%; }\n\n.orbit-caption {\n position: absolute;\n bottom: 0;\n width: 100%;\n padding: 1rem;\n margin-bottom: 0;\n color: #fefefe;\n background-color: rgba(10, 10, 10, 0.5); }\n\n.orbit-previous, .orbit-next {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 10;\n padding: 1rem;\n color: #fefefe; }\n [data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next {\n outline: 0; }\n .orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus {\n background-color: rgba(10, 10, 10, 0.5); }\n\n.orbit-previous {\n left: 0; }\n\n.orbit-next {\n left: auto;\n right: 0; }\n\n.orbit-bullets {\n position: relative;\n margin-top: 0.8rem;\n margin-bottom: 0.8rem;\n text-align: center; }\n [data-whatinput='mouse'] .orbit-bullets {\n outline: 0; }\n .orbit-bullets button {\n width: 1.2rem;\n height: 1.2rem;\n margin: 0.1rem;\n background-color: #cacaca;\n border-radius: 50%; }\n .orbit-bullets button:hover {\n background-color: #8a8a8a; }\n .orbit-bullets button.is-active {\n background-color: #8a8a8a; }\n\n.pagination {\n margin-left: 0;\n margin-bottom: 1rem; }\n .pagination::before, .pagination::after {\n content: ' ';\n display: table; }\n .pagination::after {\n clear: both; }\n .pagination li {\n font-size: 0.875rem;\n margin-right: 0.0625rem;\n border-radius: 3px;\n display: none; }\n .pagination li:last-child, .pagination li:first-child {\n display: inline-block; }\n @media screen and (min-width: 40em) {\n .pagination li {\n display: inline-block; } }\n .pagination a,\n .pagination button {\n color: #0a0a0a;\n display: block;\n padding: 0.1875rem 0.625rem;\n border-radius: 3px; }\n .pagination a:hover,\n .pagination button:hover {\n background: #e6e6e6; }\n .pagination .current {\n padding: 0.1875rem 0.625rem;\n background: #2F343B;\n color: #fefefe;\n cursor: default; }\n .pagination .disabled {\n padding: 0.1875rem 0.625rem;\n color: #cacaca;\n cursor: default; }\n .pagination .disabled:hover {\n background: transparent; }\n .pagination .ellipsis::after {\n content: '…';\n padding: 0.1875rem 0.625rem;\n color: #0a0a0a; }\n\n.pagination-previous a::before,\n.pagination-previous.disabled::before {\n content: '«';\n display: inline-block;\n margin-right: 0.5rem; }\n\n.pagination-next a::after,\n.pagination-next.disabled::after {\n content: '»';\n display: inline-block;\n margin-left: 0.5rem; }\n\n.progress {\n background-color: #cacaca;\n height: 1rem;\n margin-bottom: 1rem;\n border-radius: 3px; }\n .progress.primary .progress-meter {\n background-color: #2F343B; }\n .progress.secondary .progress-meter {\n background-color: #703030; }\n .progress.success .progress-meter {\n background-color: #5da423; }\n .progress.alert .progress-meter {\n background-color: #703030; }\n .progress.warning .progress-meter {\n background-color: #ffae00; }\n\n.progress-meter {\n position: relative;\n display: block;\n width: 0%;\n height: 100%;\n background-color: #2F343B;\n border-radius: 3px; }\n\n.progress-meter-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n position: absolute;\n margin: 0;\n font-size: 0.75rem;\n font-weight: bold;\n color: #fefefe;\n white-space: nowrap;\n border-radius: 3px; }\n\n.slider {\n position: relative;\n height: 0.5rem;\n margin-top: 1.25rem;\n margin-bottom: 2.25rem;\n background-color: #e6e6e6;\n cursor: pointer;\n user-select: none;\n touch-action: none; }\n\n.slider-fill {\n position: absolute;\n top: 0;\n left: 0;\n display: inline-block;\n max-width: 100%;\n height: 0.5rem;\n background-color: #cacaca;\n transition: all 0.2s ease-in-out; }\n .slider-fill.is-dragging {\n transition: all 0s linear; }\n\n.slider-handle {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n position: absolute;\n left: 0;\n z-index: 1;\n display: inline-block;\n width: 1.4rem;\n height: 1.4rem;\n background-color: #2F343B;\n transition: all 0.2s ease-in-out;\n touch-action: manipulation;\n border-radius: 3px; }\n [data-whatinput='mouse'] .slider-handle {\n outline: 0; }\n .slider-handle:hover {\n background-color: #282c32; }\n .slider-handle.is-dragging {\n transition: all 0s linear; }\n\n.slider.disabled,\n.slider[disabled] {\n opacity: 0.25;\n cursor: not-allowed; }\n\n.slider.vertical {\n display: inline-block;\n width: 0.5rem;\n height: 12.5rem;\n margin: 0 1.25rem;\n transform: scale(1, -1); }\n .slider.vertical .slider-fill {\n top: 0;\n width: 0.5rem;\n max-height: 100%; }\n .slider.vertical .slider-handle {\n position: absolute;\n top: 0;\n left: 50%;\n width: 1.4rem;\n height: 1.4rem;\n transform: translateX(-50%); }\n\n.sticky-container {\n position: relative; }\n\n.sticky {\n position: absolute;\n z-index: 0;\n transform: translate3d(0, 0, 0); }\n\n.sticky.is-stuck {\n position: fixed;\n z-index: 5; }\n .sticky.is-stuck.is-at-top {\n top: 0; }\n .sticky.is-stuck.is-at-bottom {\n bottom: 0; }\n\n.sticky.is-anchored {\n position: absolute;\n left: auto;\n right: auto; }\n .sticky.is-anchored.is-at-bottom {\n bottom: 0; }\n\nbody.is-reveal-open {\n overflow: hidden; }\n\n.reveal-overlay {\n display: none;\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1005;\n background-color: rgba(10, 10, 10, 0.45);\n overflow-y: scroll; }\n\n.reveal {\n display: none;\n z-index: 1006;\n padding: 1rem;\n border: 1px solid #cacaca;\n margin: 6.25rem auto 0;\n background-color: #fefefe;\n border-radius: 3px;\n position: absolute;\n overflow-y: auto; }\n [data-whatinput='mouse'] .reveal {\n outline: 0; }\n @media screen and (min-width: 40em) {\n .reveal {\n min-height: 0; } }\n .reveal .column, .reveal .columns,\n .reveal .columns {\n min-width: 0; }\n .reveal > :last-child {\n margin-bottom: 0; }\n @media screen and (min-width: 40em) {\n .reveal {\n width: 600px;\n max-width: 62.5rem; } }\n @media screen and (min-width: 40em) {\n .reveal .reveal {\n left: auto;\n right: auto;\n margin: 0 auto; } }\n .reveal.collapse {\n padding: 0; }\n @media screen and (min-width: 40em) {\n .reveal.tiny {\n width: 30%;\n max-width: 62.5rem; } }\n @media screen and (min-width: 40em) {\n .reveal.small {\n width: 50%;\n max-width: 62.5rem; } }\n @media screen and (min-width: 40em) {\n .reveal.large {\n width: 90%;\n max-width: 62.5rem; } }\n .reveal.full {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n height: 100vh;\n min-height: 100vh;\n max-width: none;\n margin-left: 0;\n border: 0; }\n\n.switch {\n margin-bottom: 1rem;\n outline: 0;\n position: relative;\n user-select: none;\n color: #fefefe;\n font-weight: bold;\n font-size: 0.875rem; }\n\n.switch-input {\n opacity: 0;\n position: absolute; }\n\n.switch-paddle {\n background: #cacaca;\n cursor: pointer;\n display: block;\n position: relative;\n width: 4rem;\n height: 2rem;\n transition: all 0.25s ease-out;\n border-radius: 3px;\n color: inherit;\n font-weight: inherit; }\n input + .switch-paddle {\n margin: 0; }\n .switch-paddle::after {\n background: #fefefe;\n content: '';\n display: block;\n position: absolute;\n height: 1.5rem;\n left: 0.25rem;\n top: 0.25rem;\n width: 1.5rem;\n transition: all 0.25s ease-out;\n transform: translate3d(0, 0, 0);\n border-radius: 3px; }\n input:checked ~ .switch-paddle {\n background: #2F343B; }\n input:checked ~ .switch-paddle::after {\n left: 2.25rem; }\n [data-whatinput='mouse'] input:focus ~ .switch-paddle {\n outline: 0; }\n\n.switch-active, .switch-inactive {\n position: absolute;\n top: 50%;\n transform: translateY(-50%); }\n\n.switch-active {\n left: 8%;\n display: none; }\n input:checked + label > .switch-active {\n display: block; }\n\n.switch-inactive {\n right: 15%; }\n input:checked + label > .switch-inactive {\n display: none; }\n\n.switch.tiny .switch-paddle {\n width: 3rem;\n height: 1.5rem;\n font-size: 0.625rem; }\n\n.switch.tiny .switch-paddle::after {\n width: 1rem;\n height: 1rem; }\n\n.switch.tiny input:checked ~ .switch-paddle:after {\n left: 1.75rem; }\n\n.switch.small .switch-paddle {\n width: 3.5rem;\n height: 1.75rem;\n font-size: 0.75rem; }\n\n.switch.small .switch-paddle::after {\n width: 1.25rem;\n height: 1.25rem; }\n\n.switch.small input:checked ~ .switch-paddle:after {\n left: 2rem; }\n\n.switch.large .switch-paddle {\n width: 5rem;\n height: 2.5rem;\n font-size: 1rem; }\n\n.switch.large .switch-paddle::after {\n width: 2rem;\n height: 2rem; }\n\n.switch.large input:checked ~ .switch-paddle:after {\n left: 2.75rem; }\n\ntable {\n width: 100%;\n margin-bottom: 1rem;\n border-radius: 3px; }\n table thead,\n table tbody,\n table tfoot {\n border: 1px solid #f1f1f1;\n background-color: #fefefe; }\n table caption {\n font-weight: bold;\n padding: 0.5rem 0.625rem 0.625rem; }\n table thead,\n table tfoot {\n background: #f8f8f8;\n color: #222222; }\n table thead tr,\n table tfoot tr {\n background: transparent; }\n table thead th,\n table thead td,\n table tfoot th,\n table tfoot td {\n padding: 0.5rem 0.625rem 0.625rem;\n font-weight: bold;\n text-align: left; }\n table tbody tr:nth-child(even) {\n background-color: #f1f1f1; }\n table tbody th,\n table tbody td {\n padding: 0.5rem 0.625rem 0.625rem; }\n\n@media screen and (max-width: 63.9375em) {\n table.stack thead {\n display: none; }\n table.stack tfoot {\n display: none; }\n table.stack tr,\n table.stack th,\n table.stack td {\n display: block; }\n table.stack td {\n border-top: 0; } }\n\ntable.scroll {\n display: block;\n width: 100%;\n overflow-x: auto; }\n\ntable.hover tr:hover {\n background-color: #f9f9f9; }\n\ntable.hover tr:nth-of-type(even):hover {\n background-color: #ececec; }\n\n.tabs {\n margin: 0;\n list-style-type: none;\n background: #fefefe;\n border: 1px solid #e6e6e6; }\n .tabs::before, .tabs::after {\n content: ' ';\n display: table; }\n .tabs::after {\n clear: both; }\n\n.tabs.vertical > li {\n width: auto;\n float: none;\n display: block; }\n\n.tabs.simple > li > a {\n padding: 0; }\n .tabs.simple > li > a:hover {\n background: transparent; }\n\n.tabs.primary {\n background: #2F343B; }\n .tabs.primary > li > a {\n color: #fefefe; }\n .tabs.primary > li > a:hover, .tabs.primary > li > a:focus {\n background: #383e46; }\n\n.tabs-title {\n float: left; }\n .tabs-title > a {\n display: block;\n padding: 1.25rem 1.5rem;\n line-height: 1;\n font-size: 12px;\n color: #2F343B; }\n .tabs-title > a:hover {\n background: #fefefe; }\n .tabs-title > a:focus, .tabs-title > a[aria-selected='true'] {\n background: #e6e6e6; }\n\n.tabs-content {\n background: #fefefe;\n transition: all 0.5s ease;\n border: 1px solid #e6e6e6;\n border-top: 0; }\n\n.tabs-content.vertical {\n border: 1px solid #e6e6e6;\n border-left: 0; }\n\n.tabs-panel {\n display: none;\n padding: 1rem; }\n .tabs-panel.is-active {\n display: block; }\n\n.thumbnail {\n border: solid 4px #fefefe;\n box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2);\n display: inline-block;\n line-height: 0;\n max-width: 100%;\n transition: box-shadow 200ms ease-out;\n border-radius: 3px;\n margin-bottom: 1rem; }\n .thumbnail:hover, .thumbnail:focus {\n box-shadow: 0 0 6px 1px rgba(47, 52, 59, 0.5); }\n\n.title-bar {\n background: #0a0a0a;\n color: #fefefe;\n padding: 0.5rem; }\n .title-bar::before, .title-bar::after {\n content: ' ';\n display: table; }\n .title-bar::after {\n clear: both; }\n .title-bar .menu-icon {\n margin-left: 0.25rem;\n margin-right: 0.5rem; }\n\n.title-bar-left {\n float: left; }\n\n.title-bar-right {\n float: right;\n text-align: right; }\n\n.title-bar-title {\n font-weight: bold;\n vertical-align: middle;\n display: inline-block; }\n\n.menu-icon {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n cursor: pointer;\n width: 20px;\n height: 16px; }\n .menu-icon::after {\n content: '';\n position: absolute;\n display: block;\n width: 100%;\n height: 2px;\n background: #fefefe;\n top: 0;\n left: 0;\n box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe; }\n .menu-icon:hover::after {\n background: #cacaca;\n box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; }\n\n.menu-icon.dark {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n cursor: pointer;\n width: 20px;\n height: 16px; }\n .menu-icon.dark::after {\n content: '';\n position: absolute;\n display: block;\n width: 100%;\n height: 2px;\n background: #0a0a0a;\n top: 0;\n left: 0;\n box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a; }\n .menu-icon.dark:hover::after {\n background: #8a8a8a;\n box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; }\n\n.has-tip {\n border-bottom: dotted 1px #8a8a8a;\n font-weight: bold;\n position: relative;\n display: inline-block;\n cursor: help; }\n\n.tooltip {\n background-color: #0a0a0a;\n color: #fefefe;\n font-size: 80%;\n padding: 0.75rem;\n position: absolute;\n z-index: 10;\n top: calc(100% + 0.6495rem);\n max-width: 10rem !important;\n border-radius: 3px; }\n .tooltip::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.75rem;\n border-color: transparent transparent #0a0a0a;\n border-bottom-style: solid;\n border-top-width: 0;\n bottom: 100%;\n position: absolute;\n left: 50%;\n transform: translateX(-50%); }\n .tooltip.top::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.75rem;\n border-color: #0a0a0a transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n top: 100%;\n bottom: auto; }\n .tooltip.left::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.75rem;\n border-color: transparent transparent transparent #0a0a0a;\n border-left-style: solid;\n border-right-width: 0;\n bottom: auto;\n left: 100%;\n top: 50%;\n transform: translateY(-50%); }\n .tooltip.right::before {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset 0.75rem;\n border-color: transparent #0a0a0a transparent transparent;\n border-right-style: solid;\n border-left-width: 0;\n bottom: auto;\n left: auto;\n right: 100%;\n top: 50%;\n transform: translateY(-50%); }\n\n.top-bar {\n padding: 0.5rem; }\n .top-bar::before, .top-bar::after {\n content: ' ';\n display: table; }\n .top-bar::after {\n clear: both; }\n .top-bar,\n .top-bar ul {\n background-color: #e6e6e6; }\n .top-bar input {\n width: 200px;\n margin-right: 1rem; }\n .top-bar input.button {\n width: auto; }\n\n@media screen and (max-width: 39.9375em) {\n .stacked-for-small .top-bar-title {\n width: 100%; }\n .stacked-for-small .top-bar-right {\n width: 100%; }\n .stacked-for-small .top-bar-left {\n width: 100%; } }\n\n@media screen and (max-width: 63.9375em) {\n .stacked-for-medium .top-bar-title {\n width: 100%; }\n .stacked-for-medium .top-bar-right {\n width: 100%; }\n .stacked-for-medium .top-bar-left {\n width: 100%; } }\n\n@media screen and (max-width: 74.9375em) {\n .stacked-for-large .top-bar-title {\n width: 100%; }\n .stacked-for-large .top-bar-right {\n width: 100%; }\n .stacked-for-large .top-bar-left {\n width: 100%; } }\n\n@media screen and (min-width: 0em) and (max-width: 39.9375em) {\n .top-bar-title {\n width: 100%; }\n .top-bar-right {\n width: 100%; }\n .top-bar-left {\n width: 100%; } }\n\n.top-bar-title {\n float: left;\n margin-right: 1rem; }\n\n.top-bar-left {\n float: left; }\n\n.top-bar-right {\n float: right; }\n","@import \"settings/settings\";\n/**\n * Foundation for Sites by ZURB\n * Version 6.1.2\n * foundation.zurb.com\n * Licensed under MIT Open Source\n */\n\n// Sass utilities\n@import 'util/util';\n\n// Global variables and styles\n@import 'global';\n\n// Components\n@import 'grid/grid';\n@import 'typography/typography';\n@import 'forms/forms';\n\n@import 'components/float';\n@import 'components/button';\n@import 'components/button-group';\n@import 'components/accordion-menu';\n@import 'components/accordion';\n@import 'components/badge';\n@import 'components/breadcrumbs';\n@import 'components/callout';\n@import 'components/close-button';\n@import 'components/drilldown';\n@import 'components/dropdown-menu';\n@import 'components/dropdown';\n@import 'components/flex-video';\n@import 'components/label';\n@import 'components/media-object';\n@import 'components/menu';\n@import 'components/off-canvas';\n@import 'components/orbit';\n@import 'components/pagination';\n@import 'components/progress-bar';\n@import 'components/reveal';\n@import 'components/slider';\n@import 'components/sticky';\n@import 'components/switch';\n@import 'components/table';\n@import 'components/tabs';\n@import 'components/title-bar';\n@import 'components/top-bar';\n@import 'components/thumbnail';\n@import 'components/tooltip';\n\n@mixin foundation-everything($flex: false) {\n @include foundation-global-styles;\n @if not $flex {\n @include foundation-grid;\n }\n @else {\n @include foundation-flex-grid;\n }\n @include foundation-typography;\n @include foundation-button;\n @include foundation-forms;\n \n @include foundation-float-classes;\n @include foundation-accordion;\n @include foundation-accordion-menu;\n @include foundation-badge;\n @include foundation-breadcrumbs;\n @include foundation-button-group;\n @include foundation-callout;\n @include foundation-close-button;\n @include foundation-drilldown-menu;\n @include foundation-dropdown;\n @include foundation-dropdown-menu;\n @include foundation-flex-video;\n @include foundation-label;\n @include foundation-media-object;\n @include foundation-menu;\n @include foundation-off-canvas;\n @include foundation-orbit;\n @include foundation-pagination;\n @include foundation-progress-bar;\n @include foundation-slider;\n @include foundation-sticky;\n @include foundation-reveal;\n @include foundation-switch;\n @include foundation-table;\n @include foundation-tabs;\n @include foundation-thumbnail;\n @include foundation-title-bar;\n @include foundation-tooltip;\n @include foundation-top-bar;\n}\n\n\n\n@import '../../../../../f6/node_modules/motion-ui/src/motion-ui';\n@include motion-ui-transitions;\n@include motion-ui-animations;\n","// scss-lint:disable ImportantRule, SpaceAfterComma, SingleLinePerProperty\n\n%mui-defaults {\n transition-duration: map-get($motion-ui-speeds, default);\n transition-timing-function: map-get($motion-ui-easings, default);\n}\n\n// Transitions\n// - - - - - - - - - - - - - - -\n@mixin motion-ui-transitions {\n // Slide\n .slide-in-down { @include mui-slide(in, down); }\n .slide-in-left { @include mui-slide(in, right); }\n .slide-in-up { @include mui-slide(in, bottom); }\n .slide-in-right { @include mui-slide(in, left); }\n .slide-out-down { @include mui-slide(out, bottom); }\n .slide-out-right { @include mui-slide(out, right); }\n .slide-out-up { @include mui-slide(out, top); }\n .slide-out-left { @include mui-slide(out, left); }\n\n // Fade\n .fade-in { @include mui-fade(in, 0, 1); }\n .fade-out { @include mui-fade(out, 1, 0); }\n\n // Hinge\n .hinge-in-from-top { @include mui-hinge(in, top); }\n .hinge-in-from-right { @include mui-hinge(in, right); }\n .hinge-in-from-bottom { @include mui-hinge(in, bottom); }\n .hinge-in-from-left { @include mui-hinge(in, left); }\n .hinge-in-from-middle-x { @include mui-hinge(in, top, center); }\n .hinge-in-from-middle-y { @include mui-hinge(in, right, center); }\n .hinge-out-from-top { @include mui-hinge(out, top); }\n .hinge-out-from-right { @include mui-hinge(out, right); }\n .hinge-out-from-bottom { @include mui-hinge(out, bottom); }\n .hinge-out-from-left { @include mui-hinge(out, left); }\n .hinge-out-from-middle-x { @include mui-hinge(out, top, center); }\n .hinge-out-from-middle-y { @include mui-hinge(out, right, center); }\n\n // Scale\n .scale-in-up { @include mui-zoom(in, 0.5, 1); }\n .scale-in-down { @include mui-zoom(in, 1.5, 1); }\n .scale-out-up { @include mui-zoom(out, 1, 1.5); }\n .scale-out-down { @include mui-zoom(out, 1, 0.5); }\n\n // Spin\n .spin-in { @include mui-spin(in, cw); }\n .spin-out { @include mui-spin(out, cw); }\n .spin-in-ccw { @include mui-spin(in, ccw); }\n .spin-out-ccw { @include mui-spin(out, ccw); }\n\n // Transition Modifiers\n // - - - - - - - - - - - - - - -\n\n @each $name, $value in $motion-ui-speeds {\n @if $name != default {\n .#{$name} { transition-duration: $value !important; }\n }\n }\n\n @each $name, $value in $motion-ui-easings {\n @if $name != default {\n .#{$name} { transition-timing-function: $value !important; }\n }\n }\n\n @each $name, $value in $motion-ui-delays {\n @if $name != default {\n .#{$name}-delay { transition-delay: $value !important; }\n }\n }\n}\n\n// Animations\n// - - - - - - - - - - - - - - -\n@mixin motion-ui-animations {\n .shake { @include mui-animation(shake); }\n .spin-cw { @include mui-animation(spin); }\n .spin-ccw { @include mui-animation(spin(ccw)); }\n .wiggle { @include mui-animation(wiggle); }\n\n // Animation Modifiers\n // - - - - - - - - - - - - - - -\n .infinite { animation-iteration-count: infinite; }\n\n @each $name, $value in $motion-ui-speeds {\n @if $name != default {\n .#{$name} { animation-duration: $value !important; }\n }\n }\n\n @each $name, $value in $motion-ui-easings {\n @if $name != default {\n .#{$name} { animation-timing-function: $value !important; }\n }\n }\n\n @each $name, $value in $motion-ui-delays {\n @if $name != default {\n .#{$name}-delay { animation-delay: $value !important; }\n }\n }\n}\n","/// Format for CSS classes created with Motion UI.\n/// @type Map\n/// @prop {Boolean} append [true] - Defines if selectors are chained to the selector (`.class.enter`), or appended as a new class (`.class-enter`).\n/// @prop {String} prefix ['mui-'] - Prefix to add before the state of a class. Enter an empty string to use no prefix.\n/// @prop {String} prefix ['-active'] - Suffix to add to the active state class.\n$motion-ui-classes: (\n chain: true,\n prefix: 'mui-',\n active: '-active',\n) !default;\n\n/// State names to reference when writing motion classes. To use multiple class names for one state, enter a list of strings instead of one string.\n/// @type Map\n$motion-ui-states: (\n in: 'enter',\n out: 'leave',\n) !default;\n\n/// Default speed that transitions and animations play at, along with values for modifier classes to change the speed.\n/// @type Map\n$motion-ui-speeds: (\n default: 500ms,\n slow: 750ms,\n fast: 250ms,\n) !default;\n\n/// Default delay to add before motion, along with values for modifier classes to change the delay.\n/// @type Map\n$motion-ui-delays: (\n default: 0,\n short: 300ms,\n long: 700ms,\n) !default;\n\n/// Default easing for transitions and animations, along with values for modifier classes to change the easing.\n/// @type Map\n$motion-ui-easings: (\n default: linear,\n linear: linear,\n ease: ease,\n ease-in: ease-in,\n ease-out: ease-out,\n ease-in-out: ease-in-out,\n bounce-in: cubic-bezier(0.485, 0.155, 0.24, 1.245),\n bounce-out: cubic-bezier(0.485, 0.155, 0.515, 0.845),\n bounce-in-out: cubic-bezier(0.76, -0.245, 0.24, 1.245),\n) !default;\n\n/// Miscellaneous settings related to Motion UI.\n/// @type Map\n/// @prop {Boolean} slide-and-fade [false] - Defines if slide motions should also fade in/out.\n/// @prop {Boolean} slide-and-fade [true] - Defines if hinge motions should also fade in/out.\n/// @prop {Boolean} slide-and-fade [true] - Defines if scale motions should also fade in/out.\n/// @prop {Boolean} slide-and-fade [true] - Defines if spin motions should also fade in/out.\n$motion-ui-settings: (\n slide-and-fade: false,\n hinge-and-fade: true,\n scale-and-fade: true,\n spin-and-fade: true,\n activate-queue-class: 'is-animating',\n) !default;\n","// Internal counter for creating unique keyframe names\n$-mui-custom: 0;\n\n/// Creates a keyframe from one or more effect functions. Use this function instead of `mui-animation` if you want to create a keyframe animation *without* automatically assigning it to the element.\n/// @param {String} $name - Name of the keyframe.\n/// @param {Function} $effects... - One or more effect functions to build the keyframe with.\n@mixin mui-keyframes($name, $effects...) {\n $obj: -mui-process-args($effects...);\n $obj: map-remove($obj, name);\n\n @keyframes #{$name} {\n // Now iterate through each keyframe percentage\n @each $pct, $props in $obj {\n #{-mui-keyframe-pct($pct)} {\n // Lastly, iterate through each CSS property within a percentage and print it out\n @each $prop, $value in $props {\n #{$prop}: #{$value};\n }\n }\n }\n }\n}\n\n/// Creates a string for a CSS keyframe, by converting a list of numbers to a comma-separated list of percentage values.\n/// @param {Number|List} $input - List of numbers to use.\n/// @return {String} A set of comma-separated percentage values.\n/// @access private\n@function -mui-keyframe-pct($input) {\n $output: ();\n\n @if type-of($input) == 'number' {\n $output: ($input * 1%);\n } @else if type-of($input) == 'list' {\n @each $i in $input {\n $output: append($output, ($i * 1%), comma);\n }\n }\n\n @return $output;\n}\n\n/// Prints the CSS properties from a specific key in a keyframes map. Used to borrow CSS from keyframe functions for use in transitions.\n/// @param {Map} $kf - Keyframe map to extract from.\n/// @param {Number} $key - Key in the map to print the CSS of.\n/// @access private\n@mixin -mui-keyframe-get($kf, $key) {\n $map: map-get($kf, $key);\n\n @each $prop, $value in $map or () {\n // Some keyframe maps store transforms as quoted strings\n @if type-of($value) == 'string' {\n $value: unquote($value);\n }\n #{$prop}: $value;\n }\n}\n\n/// Reformats a map containing keys with a list of values, so that each key is a single value.\n/// @param {Map} $map - Map to split up.\n/// @return {Map} A reformatted map.\n/// @access private\n@function -mui-keyframe-split($map) {\n $new-map: ();\n\n // Split keys with multiple values into individual keys\n @each $key, $item in $map {\n $key-type: type-of($key);\n\n @if $key-type == 'number' {\n $new-map: map-merge($new-map, ($key: $item));\n } @else if $key-type == 'list' {\n @each $k in $key {\n $new-map: map-merge($new-map, ($k: $item));\n }\n }\n }\n\n @return $new-map;\n}\n\n/// Combines a series of keyframe objects into one.\n/// @param {Map} $maps... - A series of maps to merge, as individual parameters.\n/// @return {Map} A combined keyframe object.\n/// @access private\n@function -mui-keyframe-combine($maps...) {\n $new-map: ();\n\n // Iterate through each map passed in\n @each $map in $maps {\n @if type-of($map) == 'string' {\n $map: call($map);\n }\n\n $map: -mui-keyframe-split($map);\n\n // Iterate through each keyframe in the map\n // $key is the keyframe percentage\n // $value is a map of CSS properties\n @each $key, $value in $map {\n $new-value: ();\n\n @if map-has-key($new-map, $key) {\n // If the map already has the keyframe %, append the new property\n $new-value: -mui-merge-properties(map-get($new-map, $key), $value);\n } @else {\n // Otherwise, create a new map with the new property\n $new-value: $value;\n }\n\n // Finally, merge the modified keyframe value into the output map\n $new-map: map-merge($new-map, ($key: $new-value));\n }\n }\n\n // Make a name for the keyframes\n $-mui-custom: $-mui-custom + 1 !global;\n $map-name: (name: 'custom-#{$-mui-custom}');\n $new-map: map-merge($new-map, $map-name);\n\n @return $new-map;\n}\n\n/// Combines two maps of CSS properties into one map. If both maps have a transform property, the values from each will be combined into one property.\n/// @param {Map} $one - First map to merge.\n/// @param {Map} $two - Second map to merge.\n/// @return {Map} A combined map.\n/// @access private\n@function -mui-merge-properties($one, $two) {\n @if map-has-key($one, transform) and map-has-key($two, transform) {\n $transform: join(map-get($one, transform), map-get($two, transform));\n $one: map-merge($one, (transform: $transform));\n $two: map-remove($two, transform);\n }\n\n @return map-merge($one, $two);\n}\n","/// Creates a sliding transition by translating the element horizontally or vertically.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Keyword} $direction [left] - Side of the element to slide from. Can be `top`, `right`, `bottom`, or `left`.\n/// @param {Length} $amount [100%] - Length of the slide as a percentage value.\n/// @param {Boolean} $fade [false] - Set to `true` to fade the element in or out simultaneously.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-slide (\n $state: in,\n $direction: left,\n $amount: 100%,\n $fade: map-get($motion-ui-settings, slide-and-fade),\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $slide: slide($state, $direction, $amount);\n\n // CSS Output\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($slide, 0);\n\n @if $fade {\n transition-property: transform, opacity;\n opacity: if($state == in, 0, 1);\n } @else {\n transition-property: transform, opacity;\n }\n\n backface-visibility: hidden;\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($slide, 100);\n\n @if $fade {\n opacity: if($state == in, 1, 0);\n }\n }\n}\n","/// Applies basic transition settings to an element.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin transition-basics(\n $duration: null,\n $timing: null,\n $delay: null\n) {\n @extend %mui-defaults;\n transition-duration: $duration;\n transition-timing-function: $timing;\n transition-delay: $delay;\n}\n\n/// Wraps the content in the setup class for a transition.\n/// @param {Keyword} $dir - State to setup for transition.\n@mixin transition-start($dir) {\n $selector: -mui-build-selector(map-get($motion-ui-states, $dir));\n\n @at-root {\n #{$selector} {\n @content;\n }\n }\n}\n\n/// Wraps the content in the active class for a transition.\n/// @param {Keyword} $dir - State to activate a transition on.\n@mixin transition-end($dir) {\n $selector: -mui-build-selector(map-get($motion-ui-states, $dir), true);\n\n @at-root {\n #{$selector} {\n @content;\n }\n }\n}\n\n/// Adds styles for a stagger animation, which can be used with Angular's `ng-repeat`.\n/// @param {Duration} $delay-amount - Amount of time in seconds or milliseconds to add between each item's animation.\n@mixin stagger($delay-amount) {\n transition-delay: $delay-amount;\n transition-duration: 0; // Prevent accidental CSS inheritance\n}\n","/// Creates a fade transition by adjusting the opacity of the element.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Number} $from [0] - Opacity to start at. Must be a number between 0 and 1.\n/// @param {Number} $to [1] - Opacity to end on.\n/// @param {Keyword} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-fade(\n $state: in,\n $from: 0,\n $to: 1,\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $fade: fade($from, $to);\n\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($fade, 0);\n\n transition-property: opacity;\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($fade, 100);\n }\n}\n","/// Creates a hinge effect by rotating the element.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Keyword} $from [left] - Edge of the element to rotate from. Can be `top`, `right`, `bottom`, or `left`.\n/// @param {Keyword} $axis [edge] - Axis of the element to rotate on. Can be `edge` or `center`.\n/// @param {Number} $perspective [2000px] - Perceived distance between the viewer and the element. A higher number will make the rotation effect more pronounced.\n/// @param {Keyword} $turn-origin [from-back] - Side of the element to start the rotation from. Can be `from-back` or `from-front`.\n@function hinge (\n $state: in,\n $from: left,\n $axis: edge,\n $perspective: 2000px,\n $turn-origin: from-back\n) {\n // Rotation directions when hinging from back vs. front\n $rotation-amount: 90deg;\n $rotations-back: (\n top: rotateX($rotation-amount * -1),\n right: rotateY($rotation-amount * -1),\n bottom: rotateX($rotation-amount),\n left: rotateY($rotation-amount),\n );\n $rotations-from: (\n top: rotateX($rotation-amount),\n right: rotateY($rotation-amount),\n bottom: rotateX($rotation-amount * -1),\n left: rotateY($rotation-amount * -1),\n );\n\n // Rotation origin\n $rotation: '';\n @if $turn-origin == from-front {\n $rotation: map-get($rotations-from, $from);\n } @else if $turn-origin == from-back {\n $rotation: map-get($rotations-back, $from);\n } @else {\n @warn '$turn-origin must be either \"from-back\" or \"from-front\"';\n }\n\n // Start and end state\n $start: '';\n $end: '';\n @if $state == in {\n $start: perspective($perspective) $rotation;\n $end: perspective($perspective) rotate(0deg);\n } @else {\n $start: perspective($perspective) rotate(0deg);\n $end: perspective($perspective) $rotation;\n }\n\n // Turn axis\n $origin: '';\n @if $axis == edge {\n $origin: $from;\n } @else {\n $origin: center;\n }\n\n $keyframes: (\n name: 'hinge-#{$state}-#{$from}-#{$axis}-#{$turn-origin}',\n 0: (transform: $start, transform-origin: $origin),\n 100: (transform: $end),\n );\n\n @return $keyframes;\n}\n","/// Creates a hinge transition by rotating the element.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Keyword} $from [left] - Edge of the element to rotate from. Can be `top`, `right`, `bottom`, or `left`.\n/// @param {Keyword} $axis [edge] - Axis of the element to rotate on. Can be `edge` or `center`.\n/// @param {Length} $perspective [2000px] - Perceived distance between the viewer and the element. A higher number will make the rotation effect more pronounced.\n/// @param {Keyword} $turn-origin [from-back] - Side of the element to start the rotation from. Can be `from-back` or `from-front`.\n/// @param {Boolean} $fade [true] - Set to `true` to fade the element in or out simultaneously.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-hinge (\n $state: in,\n $from: left,\n $axis: edge,\n $perspective: 2000px,\n $turn-origin: from-back,\n $fade: map-get($motion-ui-settings, hinge-and-fade),\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $hinge: hinge($state, $from, $axis, $perspective, $turn-origin);\n\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($hinge, 0);\n\n @if $fade {\n transition-property: transform, opacity;\n opacity: if($state == in, 0, 1);\n } @else {\n transition-property: transform, opacity;\n }\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($hinge, 100);\n\n @if $fade {\n opacity: if($state == in, 1, 0);\n }\n }\n}\n","/// Creates a scaling transition. A scale of `1` means the element is the same size. Larger numbers make the element bigger, while numbers less than 1 make the element smaller.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Number} $from [1.5] - Size to start at.\n/// @param {Number} $from [1] - Size to end at.\n/// @param {Boolean} $fade [true] - Set to `true` to fade the element in or out simultaneously.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-zoom(\n $state: in,\n $from: 1.5,\n $to: 1,\n $fade: map-get($motion-ui-settings, scale-and-fade),\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $scale: zoom($from, $to);\n\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($scale, 0);\n\n @if $fade {\n transition-property: transform, opacity;\n opacity: if($state == in, 0, 1);\n } @else {\n transition-property: transform, opacity;\n }\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($scale, 100);\n\n @if $fade {\n opacity: if($state == in, 1, 0);\n }\n }\n}\n","/// Creates a spinning transition by rotating the element. The `turn` unit is used to specify how far to rotate. `1turn` is equal to a 360-degree spin.\n/// @param {Keyword} $state [in] - State to transition to.\n/// @param {Boolean} $direction [cw] - Direction to spin. Should be `cw` (clockwise) or `ccw` (counterclockwise).\n/// @param {Number} $amount [0.75turn] - Amount to element the element.\n/// @param {Boolean} $fade [false] - Set to `true` to fade the element in or out simultaneously.\n/// @param {Duration} $duration [null] - Length (speed) of the transition.\n/// @param {Keyword|Function} $timing [null] - Easing of the transition.\n/// @param {Duration} $delay [null] - Delay in seconds or milliseconds before the transition starts.\n@mixin mui-spin(\n $state: in,\n $direction: cw,\n $amount: 0.75turn,\n $fade: map-get($motion-ui-settings, spin-and-fade),\n $duration: null,\n $timing: null,\n $delay: null\n) {\n $spin: spin($state, $direction, $amount);\n\n @include transition-start($state) {\n @include transition-basics($duration, $timing, $delay);\n @include -mui-keyframe-get($spin, 0);\n\n @if $fade {\n transition-property: transform, opacity;\n opacity: if($state == in, 0, 1);\n } @else {\n transition-property: transform, opacity;\n }\n }\n\n @include transition-end($state) {\n @include -mui-keyframe-get($spin, 100);\n\n @if $fade {\n opacity: if($state == in, 1, 0);\n }\n }\n}\n","/// Creates a keyframe from one or more effect functions and assigns it to the element by adding the `animation-name` property.\n/// @param {Function} $effects... - One or more effect functions to build the keyframe with.\n@mixin mui-animation($args...) {\n $name: map-get(-mui-process-args($args...), name);\n @include mui-keyframes($name, $args...);\n animation-name: unquote($name);\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n// scss-lint:disable ColorVariable, QualifyingElement, VendorPrefix\n\n////\n/// @group global\n////\n\n/// Font size attribute applied to `<html>` and `<body>`. We use 100% by default so the value is inherited from the user's browser settings.\n/// @type Number\n$global-font-size: 100% !default;\n\n/// Global width of your site. Used by the grid to determine row width.\n/// @type Number\n$global-width: rem-calc(1200) !default;\n\n/// Default line height for all type. `$global-lineheight` is 24px while `$global-font-size` is 16px\n/// @type Number\n$global-lineheight: 1.5 !default;\n\n/// Primary color for interactive components like links and buttons.\n/// @type Color\n$primary-color: #2199e8 !default;\n\n/// Secondary color, used with components that support the `.secondary` class.\n/// @type Color\n$secondary-color: #777 !default;\n\n/// Color to indicate a positive status or action, used with the `.success` class.\n/// @type Color\n$success-color: #3adb76 !default;\n\n/// Color to indicate a caution status or action, used with the `.warning` class.\n/// @type Color\n$warning-color: #ffae00 !default;\n\n/// Color to indicate a negative status or action, used with the `.alert` class.\n/// @type Color\n$alert-color: #ec5840 !default;\n\n/// Color used for light gray UI items.\n/// @type Color\n$light-gray: #e6e6e6 !default;\n\n/// Color used for medium gray UI items.\n/// @type Color\n$medium-gray: #cacaca !default;\n\n/// Color used for dark gray UI items.\n/// @type Color\n$dark-gray: #8a8a8a !default;\n\n/// Color used for black ui items.\n/// @type Color\n$black: #0a0a0a !default;\n\n/// Color used for white ui items.\n/// @type Color\n$white: #fefefe !default;\n\n/// Background color of the body.\n/// @type Color\n$body-background: $white !default;\n\n/// Text color of the body.\n/// @type Color\n$body-font-color: $black !default;\n\n/// Font stack of the body.\n/// @type List\n$body-font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif !default;\n\n/// Set to `true` to enable antialiased type, using the `-webkit-font-smoothing` and `-moz-osx-font-smoothing` CSS properties.\n/// @type Boolean\n$body-antialiased: true !default;\n\n/// Global value used for margin on components.\n/// @type Number\n$global-margin: 1rem !default;\n\n/// Global value used for padding on components.\n/// @type Number\n$global-padding: 1rem !default;\n\n/// Global font weight used for normal type.\n/// @type Keyword | Number\n$global-weight-normal: normal !default;\n\n/// Global font weight used for bold type.\n/// @type Keyword | Number\n$global-weight-bold: bold !default;\n\n/// Global value used for all elements that have a border radius.\n/// @type Number\n$global-radius: 0 !default;\n\n/// Sets the text direction of the CSS. Can be either `ltr` or `rtl`.\n$global-text-direction: ltr !default;\n\n// Internal variables used for text direction\n$global-left: if($global-text-direction == rtl, right, left);\n$global-right: if($global-text-direction == rtl, left, right);\n\n// Internal map used to iterate through colors, to generate CSS classes with less code\n$foundation-colors: (\n primary: $primary-color,\n secondary: $secondary-color,\n success: $success-color,\n alert: $alert-color,\n warning: $warning-color,\n) !default;\n\n@mixin foundation-global-styles {\n @include -zf-normalize;\n\n // These styles are applied to a <meta> tag, which is read by the Foundation JavaScript\n .foundation-mq {\n font-family: '#{-zf-bp-serialize($breakpoints)}';\n }\n\n html {\n font-size: $global-font-size;\n box-sizing: border-box;\n }\n\n // Set box-sizing globally to handle padding and border widths\n *,\n *:before,\n *:after {\n box-sizing: inherit;\n }\n\n // Default body styles\n body {\n padding: 0;\n margin: 0;\n font-family: $body-font-family;\n font-weight: $global-weight-normal;\n line-height: $global-lineheight;\n color: $body-font-color;\n background: $body-background;\n\n @if ($body-antialiased) {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n }\n\n img {\n // Grid defaults to get images and embeds to work properly\n max-width: 100%;\n height: auto;\n -ms-interpolation-mode: bicubic;\n\n // Get rid of gap under images by making them display: inline-block; by default\n display: inline-block;\n vertical-align: middle;\n }\n\n // Make sure textarea takes on height automatically\n textarea {\n height: auto;\n min-height: 50px;\n border-radius: $global-radius;\n }\n\n // Make select elements are 100% width by default\n select {\n width: 100%;\n border-radius: $global-radius;\n }\n\n // Styles Google Maps and MapQuest embeds properly\n // scss-lint:disable IdSelector\n #map_canvas,\n .map_canvas,\n .mqa-display {\n img,\n embed,\n object {\n max-width: none !important;\n }\n }\n\n // Reset <button> styles created by most browsers\n button {\n -webkit-appearance: none;\n -moz-appearance: none;\n background: transparent;\n padding: 0;\n border: 0;\n border-radius: $global-radius;\n line-height: 1;\n }\n\n // Internal classes to show/hide elements in JavaScript\n .is-visible {\n display: block !important;\n }\n\n .is-hidden {\n display: none !important;\n }\n}\n\n/// Loads normalize.css.\n/// @access private\n@mixin -zf-normalize {\n /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n /**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\n\n html {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n }\n\n /**\n * Remove default margin.\n */\n\n body {\n margin: 0;\n }\n\n /* HTML5 display definitions\n ========================================================================== */\n\n /**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\n\n article,\n aside,\n details,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n menu,\n nav,\n section,\n summary {\n display: block;\n }\n\n /**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\n audio,\n canvas,\n progress,\n video {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n }\n\n /**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\n audio:not([controls]) {\n display: none;\n height: 0;\n }\n\n /**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n\n [hidden],\n template {\n display: none;\n }\n\n /* Links\n ========================================================================== */\n\n /**\n * Remove the gray background color from active links in IE 10.\n */\n\n a {\n background-color: transparent;\n }\n\n /**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\n\n a:active,\n a:hover {\n outline: 0;\n }\n\n /* Text-level semantics\n ========================================================================== */\n\n /**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\n\n abbr[title] {\n border-bottom: 1px dotted;\n }\n\n /**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\n\n b,\n strong {\n font-weight: bold;\n }\n\n /**\n * Address styling not present in Safari and Chrome.\n */\n\n dfn {\n font-style: italic;\n }\n\n /**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\n\n h1 {\n font-size: 2em;\n margin: 0.67em 0;\n }\n\n /**\n * Address styling not present in IE 8/9.\n */\n\n mark {\n background: #ff0;\n color: #000;\n }\n\n /**\n * Address inconsistent and variable font size in all browsers.\n */\n\n small {\n font-size: 80%;\n }\n\n /**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n\n sup {\n top: -0.5em;\n }\n\n sub {\n bottom: -0.25em;\n }\n\n /* Embedded content\n ========================================================================== */\n\n /**\n * Remove border when inside `a` element in IE 8/9/10.\n */\n\n img {\n border: 0;\n }\n\n /**\n * Correct overflow not hidden in IE 9/10/11.\n */\n\n svg:not(:root) {\n overflow: hidden;\n }\n\n /* Grouping content\n ========================================================================== */\n\n /**\n * Address margin not present in IE 8/9 and Safari.\n */\n\n figure {\n margin: 1em 40px;\n }\n\n /**\n * Address differences between Firefox and other browsers.\n */\n\n hr {\n box-sizing: content-box;\n height: 0;\n }\n\n /**\n * Contain overflow in all browsers.\n */\n\n pre {\n overflow: auto;\n }\n\n /**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\n code,\n kbd,\n pre,\n samp {\n font-family: monospace, monospace;\n font-size: 1em;\n }\n\n /* Forms\n ========================================================================== */\n\n /**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n /**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\n\n button,\n input,\n optgroup,\n select,\n textarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n }\n\n /**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\n\n button {\n overflow: visible;\n }\n\n /**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\n\n button,\n select {\n text-transform: none;\n }\n\n /**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\n\n button,\n html input[type=\"button\"], /* 1 */\n input[type=\"reset\"],\n input[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n }\n\n /**\n * Re-set default cursor for disabled elements.\n */\n\n button[disabled],\n html input[disabled] {\n cursor: default;\n }\n\n /**\n * Remove inner padding and border in Firefox 4+.\n */\n\n button::-moz-focus-inner,\n input::-moz-focus-inner {\n border: 0;\n padding: 0;\n }\n\n /**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\n input {\n line-height: normal;\n }\n\n /**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\n input[type=\"checkbox\"],\n input[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n }\n\n /**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\n input[type=\"number\"]::-webkit-inner-spin-button,\n input[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n }\n\n /**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\n\n input[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n box-sizing: content-box; /* 2 */\n }\n\n /**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\n input[type=\"search\"]::-webkit-search-cancel-button,\n input[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n /**\n * Define consistent border, margin, and padding.\n * [NOTE] We don't enable this ruleset in Foundation, because we want the <fieldset> element to have plain styling.\n */\n\n /* fieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n } */\n\n /**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\n legend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n }\n\n /**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\n\n textarea {\n overflow: auto;\n }\n\n /**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\n optgroup {\n font-weight: bold;\n }\n\n /* Tables\n ========================================================================== */\n\n /**\n * Remove most spacing between table cells.\n */\n\n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n\n td,\n th {\n padding: 0;\n }\n}\n","// Foundation for Sites Settings\n// -----------------------------\n//\n// Table of Contents:\n//\n// 1. Global\n// 2. Breakpoints\n// 3. The Grid\n// 4. Base Typography\n// 5. Typography Helpers\n// 6. Abide\n// 7. Accordion\n// 8. Accordion Menu\n// 9. Badge\n// 10. Breadcrumbs\n// 11. Button\n// 12. Button Group\n// 13. Callout\n// 14. Close Button\n// 15. Drilldown\n// 16. Dropdown\n// 17. Dropdown Menu\n// 18. Flex Video\n// 19. Forms\n// 20. Label\n// 21. Media Object\n// 22. Menu\n// 23. Off-canvas\n// 24. Orbit\n// 25. Pagination\n// 26. Progress Bar\n// 27. Reveal\n// 28. Slider\n// 29. Switch\n// 30. Table\n// 31. Tabs\n// 32. Thumbnail\n// 33. Title Bar\n// 34. Tooltip\n// 35. Top Bar\n\n@import 'util/util';\n\n// 1. Global\n// ---------\n\n$global-font-size: 100%;\n$global-width: 62.5rem;\n$global-lineheight: 1.5;\n$primary-color: #2F343B;\n$secondary-color: #703030;\n$success-color: #5da423;\n$warning-color: #ffae00;\n$alert-color: #703030;\n$light-gray: #e6e6e6;\n$medium-gray: #cacaca;\n$dark-gray: #8a8a8a;\n$black: #0a0a0a;\n$white: #fefefe;\n$body-background: $white;\n$body-font-color: #222222;\n$body-font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;\n$body-antialiased: true;\n$global-margin: 1rem;\n$global-padding: 1rem;\n$global-weight-normal: normal;\n$global-weight-bold: bold;\n$global-radius: 3px;\n$global-text-direction: ltr;\n\n// 2. Breakpoints\n// --------------\n\n$breakpoints: (\n small: 0,\n medium: 640px,\n large: 1024px,\n xlarge: 1200px,\n xxlarge: 1440px,\n);\n$breakpoint-classes: (small medium large);\n\n// 3. The Grid\n// -----------\n\n$grid-row-width: $global-width;\n$grid-column-count: 12;\n$grid-column-responsive-gutter: (\n small: 20px,\n medium: 30px,\n);\n$grid-column-align-edge: true;\n$block-grid-max: 8;\n\n// 4. Base Typography\n// ------------------\n\n$header-font-family: $body-font-family;\n$header-font-weight: $global-weight-normal;\n$header-font-style: normal;\n$font-family-monospace: Consolas, 'Liberation Mono', Courier, monospace;\n$header-sizes: (\n small: (\n 'h1': 24,\n 'h2': 20,\n 'h3': 19,\n 'h4': 18,\n 'h5': 17,\n 'h6': 16,\n ),\n medium: (\n 'h1': 48,\n 'h2': 40,\n 'h3': 31,\n 'h4': 25,\n 'h5': 20,\n 'h6': 16,\n ),\n);\n$header-color: #222222;\n$header-lineheight: 1.4;\n$header-margin-bottom: 0.5rem;\n$header-text-rendering: optimizeLegibility;\n$small-font-size: 80%;\n$header-small-font-color: $medium-gray;\n$paragraph-lineheight: 1.6;\n$paragraph-margin-bottom: 1rem;\n$paragraph-text-rendering: optimizeLegibility;\n$code-color: $black;\n$code-font-family: $font-family-monospace;\n$code-font-weight: $global-weight-normal;\n$code-background: $light-gray;\n$code-border: 1px solid $medium-gray;\n$code-padding: rem-calc(2 5 1);\n$anchor-color: $primary-color;\n$anchor-color-hover: scale-color($anchor-color, $lightness: -14%);\n$anchor-text-decoration: none;\n$anchor-text-decoration-hover: none;\n$hr-width: $global-width;\n$hr-border: 1px solid $medium-gray;\n$hr-margin: rem-calc(20) auto;\n$list-lineheight: $paragraph-lineheight;\n$list-margin-bottom: $paragraph-margin-bottom;\n$list-style-type: disc;\n$list-style-position: outside;\n$list-side-margin: 1.25rem;\n$list-nested-side-margin: 1.25rem;\n$defnlist-margin-bottom: 1rem;\n$defnlist-term-weight: $global-weight-bold;\n$defnlist-term-margin-bottom: 0.3rem;\n$blockquote-color: $dark-gray;\n$blockquote-padding: rem-calc(9 20 0 19);\n$blockquote-border: 1px solid $medium-gray;\n$cite-font-size: rem-calc(13);\n$cite-color: $dark-gray;\n$keystroke-font: $font-family-monospace;\n$keystroke-color: $black;\n$keystroke-background: $light-gray;\n$keystroke-padding: rem-calc(2 4 0);\n$keystroke-radius: $global-radius;\n$abbr-underline: 1px dotted $black;\n\n// 5. Typography Helpers\n// ---------------------\n\n$lead-font-size: $global-font-size * 1.25;\n$lead-lineheight: 1.6;\n$subheader-lineheight: 1.4;\n$subheader-color: $dark-gray;\n$subheader-font-weight: $global-weight-normal;\n$subheader-margin-top: 0.2rem;\n$subheader-margin-bottom: 0.5rem;\n$stat-font-size: 2.5rem;\n\n// 6. Abide\n// --------\n\n$abide-inputs: true;\n$abide-labels: true;\n$input-background-invalid: $alert-color;\n$form-label-color-invalid: $alert-color;\n$input-error-color: $alert-color;\n$input-error-font-size: rem-calc(12);\n$input-error-font-weight: $global-weight-bold;\n\n// 7. Accordion\n// ------------\n\n$accordion-background: $white;\n$accordion-plusminus: true;\n$accordion-item-color: foreground($accordion-background, $primary-color);\n$accordion-item-background-hover: $light-gray;\n$accordion-item-padding: 1.25rem 1rem;\n$accordion-content-background: $white;\n$accordion-content-border: 1px solid $light-gray;\n$accordion-content-color: foreground($accordion-background, $primary-color);\n$accordion-content-padding: 1rem;\n\n// 8. Accordion Menu\n// -----------------\n\n$accordionmenu-arrows: true;\n$accordionmenu-arrow-color: $primary-color;\n\n// 9. Badge\n// --------\n\n$badge-background: $primary-color;\n$badge-color: foreground($badge-background);\n$badge-padding: 0.3em;\n$badge-minwidth: 2.1em;\n$badge-font-size: 0.6rem;\n\n// 10. Breadcrumbs\n// ---------------\n\n$breadcrumbs-margin: 0 0 $global-margin 0;\n$breadcrumbs-item-font-size: rem-calc(11);\n$breadcrumbs-item-color: $primary-color;\n$breadcrumbs-item-color-current: $black;\n$breadcrumbs-item-color-disabled: $medium-gray;\n$breadcrumbs-item-margin: 0.75rem;\n$breadcrumbs-item-uppercase: true;\n$breadcrumbs-item-slash: true;\n\n// 11. Button\n// ----------\n\n$button-padding: 0.85em 1em;\n$button-margin: 0 0 $global-margin 0;\n$button-fill: solid;\n$button-background: $primary-color;\n$button-background-hover: scale-color($button-background, $lightness: -15%);\n$button-color: #fff;\n$button-color-alt: #000;\n$button-radius: $global-radius;\n$button-sizes: (\n tiny: 0.6rem,\n small: 0.75rem,\n default: 0.9rem,\n large: 1.25rem,\n);\n$button-opacity-disabled: 0.25;\n\n// 12. Button Group\n// ----------------\n\n$buttongroup-margin: 1rem;\n$buttongroup-spacing: 1px;\n$buttongroup-child-selector: '.button';\n$buttongroup-expand-max: 6;\n\n// 13. Callout\n// -----------\n\n$callout-background: $white;\n$callout-background-fade: 85%;\n$callout-border: 1px solid rgba($black, 0.25);\n$callout-margin: 0 0 1rem 0;\n$callout-padding: 1rem;\n$callout-font-color: $body-font-color;\n$callout-font-color-alt: $body-background;\n$callout-radius: $global-radius;\n$callout-link-tint: 30%;\n\n// 14. Close Button\n// ----------------\n\n$closebutton-position: right top;\n$closebutton-offset-horizontal: 1rem;\n$closebutton-offset-vertical: 0.5rem;\n$closebutton-size: 2em;\n$closebutton-lineheight: 1;\n$closebutton-color: $dark-gray;\n$closebutton-color-hover: $black;\n\n// 15. Drilldown\n// -------------\n\n$drilldown-transition: transform 0.15s linear;\n$drilldown-arrows: true;\n$drilldown-arrow-color: $primary-color;\n$drilldown-background: $white;\n\n// 16. Dropdown\n// ------------\n\n$dropdown-padding: 1rem;\n$dropdown-border: 1px solid $medium-gray;\n$dropdown-font-size: 1rem;\n$dropdown-width: 300px;\n$dropdown-radius: $global-radius;\n$dropdown-sizes: (\n tiny: 100px,\n small: 200px,\n large: 400px,\n);\n\n// 17. Dropdown Menu\n// -----------------\n\n$dropdownmenu-arrows: true;\n$dropdownmenu-arrow-color: $anchor-color;\n$dropdownmenu-min-width: 200px;\n$dropdownmenu-background: $white;\n$dropdownmenu-border: 1px solid $medium-gray;\n\n// 18. Flex Video\n// --------------\n\n$flexvideo-margin-bottom: rem-calc(16);\n$flexvideo-ratio: 4 by 3;\n$flexvideo-ratio-widescreen: 16 by 9;\n\n// 19. Forms\n// ---------\n\n$fieldset-border: 1px solid $medium-gray;\n$fieldset-padding: rem-calc(20);\n$fieldset-margin: rem-calc(18 0);\n$legend-padding: rem-calc(0 3);\n$form-spacing: rem-calc(16);\n$helptext-color: #333;\n$helptext-font-size: rem-calc(13);\n$helptext-font-style: italic;\n$input-prefix-color: $black;\n$input-prefix-background: $light-gray;\n$input-prefix-border: 1px solid $medium-gray;\n$input-prefix-padding: 1rem;\n$form-label-color: $black;\n$form-label-font-size: rem-calc(14);\n$form-label-font-weight: $global-weight-normal;\n$form-label-line-height: 1.8;\n$select-background: $white;\n$select-triangle-color: #333;\n$select-radius: $global-radius;\n$input-color: $black;\n$input-font-family: inherit;\n$input-font-size: rem-calc(16);\n$input-background: $white;\n$input-background-focus: $white;\n$input-background-disabled: $light-gray;\n$input-border: 1px solid $medium-gray;\n$input-border-focus: 1px solid $dark-gray;\n$input-shadow: inset 0 1px 2px rgba($black, 0.1);\n$input-shadow-focus: 0 0 5px $medium-gray;\n$input-cursor-disabled: default;\n$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out;\n$input-number-spinners: true;\n$input-radius: $global-radius;\n\n// 20. Label\n// ---------\n\n$label-background: $primary-color;\n$label-color: foreground($label-background);\n$label-font-size: 0.8rem;\n$label-padding: 0.33333rem 0.5rem;\n$label-radius: $global-radius;\n\n// 21. Media Object\n// ----------------\n\n$mediaobject-margin-bottom: $global-margin;\n$mediaobject-section-padding: $global-padding;\n$mediaobject-image-width-stacked: 100%;\n\n// 22. Menu\n// --------\n\n$menu-margin: 0;\n$menu-margin-nested: 1rem;\n$menu-item-padding: 0.7rem 1rem;\n$menu-icon-spacing: 0.25rem;\n$menu-expand-max: 6;\n\n// 23. Off-canvas\n// --------------\n\n$offcanvas-size: 250px;\n$offcanvas-background: $light-gray;\n$offcanvas-zindex: -1;\n$offcanvas-transition-length: 0.5s;\n$offcanvas-transition-timing: ease;\n$offcanvas-fixed-reveal: true;\n$offcanvas-exit-background: rgba($white, 0.25);\n$maincontent-class: 'off-canvas-content';\n$maincontent-shadow: 0 0 10px rgba($black, 0.5);\n\n// 24. Orbit\n// ---------\n\n$orbit-bullet-background: $medium-gray;\n$orbit-bullet-background-active: $dark-gray;\n$orbit-bullet-diameter: 1.2rem;\n$orbit-bullet-margin: 0.1rem;\n$orbit-bullet-margin-top: 0.8rem;\n$orbit-bullet-margin-bottom: 0.8rem;\n$orbit-caption-background: rgba($black, 0.5);\n$orbit-caption-padding: 1rem;\n$orbit-control-background-hover: rgba($black, 0.5);\n$orbit-control-padding: 1rem;\n$orbit-control-zindex: 10;\n\n// 25. Pagination\n// --------------\n\n$pagination-font-size: rem-calc(14);\n$pagination-margin-bottom: $global-margin;\n$pagination-item-color: $black;\n$pagination-item-padding: rem-calc(3 10);\n$pagination-item-spacing: rem-calc(1);\n$pagination-radius: $global-radius;\n$pagination-item-background-hover: $light-gray;\n$pagination-item-background-current: $primary-color;\n$pagination-item-color-current: foreground($pagination-item-background-current);\n$pagination-item-color-disabled: $medium-gray;\n$pagination-ellipsis-color: $black;\n$pagination-mobile-items: false;\n$pagination-arrows: true;\n\n// 26. Progress Bar\n// ----------------\n\n$progress-height: 1rem;\n$progress-background: $medium-gray;\n$progress-margin-bottom: $global-margin;\n$progress-meter-background: $primary-color;\n$progress-radius: $global-radius;\n\n// 27. Reveal\n// ----------\n\n$reveal-background: $white;\n$reveal-width: 600px;\n$reveal-max-width: $global-width;\n$reveal-offset: rem-calc(100);\n$reveal-padding: $global-padding;\n$reveal-border: 1px solid $medium-gray;\n$reveal-radius: $global-radius;\n$reveal-zindex: 1005;\n$reveal-overlay-background: rgba($black, 0.45);\n\n// 28. Slider\n// ----------\n\n$slider-height: 0.5rem;\n$slider-width-vertical: $slider-height;\n$slider-background: $light-gray;\n$slider-fill-background: $medium-gray;\n$slider-handle-height: 1.4rem;\n$slider-handle-width: 1.4rem;\n$slider-handle-background: $primary-color;\n$slider-opacity-disabled: 0.25;\n$slider-radius: $global-radius;\n$slider-transition: all 0.2s ease-in-out;\n\n// 29. Switch\n// ----------\n\n$switch-background: $medium-gray;\n$switch-background-active: $primary-color;\n$switch-height: 2rem;\n$switch-height-tiny: 1.5rem;\n$switch-height-small: 1.75rem;\n$switch-height-large: 2.5rem;\n$switch-radius: $global-radius;\n$switch-margin: $global-margin;\n$switch-paddle-background: $white;\n$switch-paddle-offset: 0.25rem;\n$switch-paddle-radius: $global-radius;\n$switch-paddle-transition: all 0.25s ease-out;\n\n// 30. Table\n// ---------\n\n$table-background: $white;\n$table-color-scale: 5%;\n$table-border: 1px solid smart-scale($table-background, $table-color-scale);\n$table-padding: rem-calc(8 10 10);\n$table-hover-scale: 2%;\n$table-row-hover: darken($table-background, $table-hover-scale);\n$table-row-stripe-hover: darken($table-background, $table-color-scale + $table-hover-scale);\n$table-striped-background: smart-scale($table-background, $table-color-scale);\n$table-stripe: even;\n$table-head-background: smart-scale($table-background, $table-color-scale / 2);\n$table-foot-background: smart-scale($table-background, $table-color-scale);\n$table-head-font-color: $body-font-color;\n$show-header-for-stacked: false;\n\n// 31. Tabs\n// --------\n\n$tab-margin: 0;\n$tab-background: $white;\n$tab-background-active: $light-gray;\n$tab-border: $light-gray;\n$tab-item-color: foreground($tab-background, $primary-color);\n$tab-item-background-hover: $white;\n$tab-item-padding: 1.25rem 1.5rem;\n$tab-expand-max: 6;\n$tab-content-background: $white;\n$tab-content-border: $light-gray;\n$tab-content-color: foreground($tab-background, $primary-color);\n$tab-content-padding: 1rem;\n\n// 32. Thumbnail\n// -------------\n\n$thumbnail-border: solid 4px $white;\n$thumbnail-margin-bottom: $global-margin;\n$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2);\n$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5);\n$thumbnail-transition: box-shadow 200ms ease-out;\n$thumbnail-radius: $global-radius;\n\n// 33. Title Bar\n// -------------\n\n$titlebar-background: $black;\n$titlebar-color: $white;\n$titlebar-padding: 0.5rem;\n$titlebar-text-font-weight: bold;\n$titlebar-icon-color: $white;\n$titlebar-icon-color-hover: $medium-gray;\n$titlebar-icon-spacing: 0.25rem;\n\n// 34. Tooltip\n// -----------\n\n$has-tip-font-weight: $global-weight-bold;\n$has-tip-border-bottom: dotted 1px $dark-gray;\n$tooltip-background-color: $black;\n$tooltip-color: $white;\n$tooltip-padding: 0.75rem;\n$tooltip-font-size: $small-font-size;\n$tooltip-pip-width: 0.75rem;\n$tooltip-pip-height: $tooltip-pip-width * 0.866;\n$tooltip-pip-offset: 1.25rem;\n$tooltip-radius: $global-radius;\n\n// 35. Top Bar\n// -----------\n\n$topbar-padding: 0.5rem;\n$topbar-background: $light-gray;\n$topbar-title-spacing: 1rem;\n$topbar-input-width: 200px;\n\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Outputs CSS classes for the grid.\n/// @access private\n@mixin foundation-grid(\n $row: 'row',\n $column: 'column',\n $column-row: 'column-row',\n $push: 'push',\n $pull: 'pull',\n $center: 'centered',\n $uncenter: 'uncentered',\n $collapse: 'collapse',\n $uncollapse: 'uncollapse',\n $offset: 'offset',\n $end: 'end',\n $expanded: 'expanded'\n) {\n // Row\n .#{$row} {\n @include grid-row;\n\n // Collapsing\n &.#{$collapse} {\n > .#{$column} { @include grid-col-collapse; }\n }\n\n // Nesting\n & & {\n @if $grid-column-gutter == null {\n @each $breakpoint, $gutter in $grid-column-responsive-gutter {\n @include breakpoint($breakpoint) {\n @include grid-row-nest($gutter);\n }\n }\n }\n @else {\n @include grid-row-nest($grid-column-gutter);\n }\n\n &.#{$collapse} {\n margin-left: 0;\n margin-right: 0;\n }\n }\n\n // Expanded (full-width) row\n &.#{$expanded} {\n max-width: none;\n\n .#{$row} {\n margin-left: auto;\n margin-right: auto;\n }\n }\n }\n\n // Column\n .#{$column} {\n @include grid-col;\n\n @if $grid-column-align-edge {\n &.#{$end} {\n @include grid-col-end;\n }\n }\n }\n\n // Column row\n // The double .row class is needed to bump up the specificity\n .#{$column}.#{$row}.#{$row} {\n float: none;\n\n // To properly nest a column row, padding and margin is removed\n .#{$row} & {\n padding-left: 0;\n padding-right: 0;\n margin-left: 0;\n margin-right: 0;\n }\n }\n\n @include -zf-each-breakpoint {\n @for $i from 1 through $grid-column-count {\n // Column width\n .#{$-zf-size}-#{$i} {\n @include grid-col-size($i);\n }\n\n // Source ordering\n @if $i < $grid-column-count {\n .#{$-zf-size}-#{$push}-#{$i} {\n @include grid-col-pos($i);\n }\n\n .#{$-zf-size}-#{$pull}-#{$i} {\n @include grid-col-pos(-$i);\n }\n }\n\n // Offsets\n $o: $i - 1;\n\n .#{$-zf-size}-#{$offset}-#{$o} {\n @include grid-col-off($o);\n }\n }\n\n // Block grid\n @for $i from 1 through $block-grid-max {\n .#{$-zf-size}-up-#{$i} {\n @include grid-layout($i, \".#{$column}\");\n }\n }\n\n // Responsive collapsing\n .#{$-zf-size}-#{$collapse} {\n > .#{$column} { @include grid-col-collapse; }\n\n .#{$row} {\n margin-left: 0;\n margin-right: 0;\n }\n }\n\n .#{$-zf-size}-#{$uncollapse} {\n $gutter: null;\n\n @if $grid-column-gutter {\n $gutter: $grid-column-gutter;\n }\n @else {\n $gutter: -zf-get-bp-val($grid-column-responsive-gutter, $-zf-size);\n }\n > .#{$column} { @include grid-col-uncollapse($gutter); }\n }\n\n // Positioning\n .#{$-zf-size}-#{$center} {\n @include grid-col-pos(center);\n }\n\n // Gutter adjustment\n .#{$-zf-size}-#{$uncenter},\n .#{$-zf-size}-#{$push}-0,\n .#{$-zf-size}-#{$pull}-0 {\n @include grid-col-unpos;\n }\n }\n\n @if $column == 'column' {\n .columns {\n // scss-lint:disable PlaceholderInExtend\n @extend .column;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Change the behavior of columns defined inside this mixin to use a different column count.\n/// @content\n///\n/// @param {Number} $columns - Number of columns to use.\n/// @param {Boolean} $root [false]\n/// If `false`, selectors inside this mixin will nest inside the parent selector.\n/// If `true`, selectors will not nest.\n@mixin grid-context(\n $columns,\n $root: false\n) {\n // Store the current column count so it can be re-set later\n $old-grid-column-count: $grid-column-count;\n $grid-column-count: $columns !global;\n\n @if $root {\n @at-root { @content; }\n }\n @else {\n @content;\n }\n\n // Restore the old column count\n $grid-column-count: $old-grid-column-count;\n}\n\n/// Creates a grid row.\n/// @content\n///\n/// @param {Number} $columns [null] - Column count for this row. `null` will use the default column count.\n/// @param {Keywords} $behavior [null]\n/// Modifications to the default grid styles. `nest` indicates the row will be placed inside another row. `collapse` indicates that the columns inside this row will not have padding. `nest collapse` combines both behaviors.\n/// @param {Number} $width [$grid-row-width] - Maximum width of the row.\n/// @param {Boolean} $cf [true] - Whether or not to include a clearfix.\n/// @param {Number} $gutter [$grid-column-gutter] - Gutter to use when inverting margins, in case the row is nested.\n@mixin grid-row(\n $columns: null,\n $behavior: null,\n $width: $grid-row-width,\n $cf: true,\n $gutter: $grid-column-gutter\n) {\n $behavior: -zf-get-options($behavior, nest collapse);\n $margin: auto;\n\n @if map-get($behavior, nest) {\n @include grid-row-nest($gutter);\n\n @if map-get($behavior, collapse) {\n margin-left: 0;\n margin-right: 0;\n }\n }\n @else {\n max-width: $width;\n margin-left: auto;\n margin-right: auto;\n }\n\n @if $cf {\n @include clearfix;\n }\n\n @if $columns != null {\n @include grid-context($columns) {\n @content;\n }\n }\n}\n\n/// Inverts the margins of a row to nest it inside of a column.\n///\n/// @param {Map|null} $gutter [null] - Gutter value to use when inverting the margins. Set to `null` to refer to the responsive gutter settings.\n@mixin grid-row-nest($gutter: null) {\n @if $gutter != null {\n $margin: rem-calc($gutter) / 2 * -1;\n margin-left: $margin;\n margin-right: $margin;\n }\n @else {\n @each $breakpoint, $value in $grid-column-responsive-gutter {\n $margin: rem-calc($value) / 2 * -1;\n\n @include breakpoint($breakpoint) {\n margin-left: $margin;\n margin-right: $margin;\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group functions\n////\n\n/// Creates a CSS triangle, which can be used for dropdown arrows, dropdown pips, and more. Use this mixin inside a `&::before` or `&::after` selector, to attach the triangle to an existing element.\n///\n/// @param {Number} $triangle-size - Width of the triangle.\n/// @param {Color} $triangle-color - Color of the triangle.\n/// @param {Keyword} $triangle-direction - Direction the triangle points. Can be `up`, `right`, `down`, or `left`.\n@mixin css-triangle(\n $triangle-size,\n $triangle-color,\n $triangle-direction\n) {\n content: '';\n display: block;\n width: 0;\n height: 0;\n border: inset $triangle-size;\n\n @if ($triangle-direction == down) {\n border-color: $triangle-color transparent transparent;\n border-top-style: solid;\n border-bottom-width: 0;\n }\n @if ($triangle-direction == up) {\n border-color: transparent transparent $triangle-color;\n border-bottom-style: solid;\n border-top-width: 0;\n }\n @if ($triangle-direction == right) {\n border-color: transparent transparent transparent $triangle-color;\n border-left-style: solid;\n border-right-width: 0;\n }\n @if ($triangle-direction == left) {\n border-color: transparent $triangle-color transparent transparent;\n border-right-style: solid;\n border-left-width: 0;\n }\n}\n\n/// Creates a menu icon with a set width, height, number of bars, and colors. The mixin uses the height of the icon and the weight of the bars to determine spacing. <div class=\"docs-example-burger\"></div>\n///\n/// @param {Color} $color - Color to use for the icon.\n/// @param {Color} $color-hover - Color to use when the icon is hovered over.\n/// @param {Number} $width - Width of the icon.\n/// @param {Number} $height - Height of the icon.\n/// @param {Number} $weight - Height of individual bars in the icon.\n/// @param {Number} $bars - Number of bars in the icon.\n@mixin hamburger(\n $color: $black,\n $color-hover: $dark-gray,\n $width: 20px,\n $height: 16px,\n $weight: 2px,\n $bars: 3\n) {\n // box-shadow CSS output\n $shadow: ();\n $hover-shadow: ();\n\n // Spacing between bars is calculated based on the total height of the icon and the weight of each bar\n $spacing: floor(($height - ($weight * $bars)) / ($bars - 1));\n\n // Icon container\n position: relative;\n display: inline-block;\n vertical-align: middle;\n cursor: pointer;\n width: $width;\n height: $height;\n\n // Icon bars\n &::after {\n content: '';\n position: absolute;\n display: block;\n width: 100%;\n height: $weight;\n background: $color;\n top: 0;\n left: 0;\n\n @for $i from 2 through $bars {\n $offset: ($weight + $spacing) * ($i - 1);\n $shadow: append($shadow, 0 $offset 0 $color, comma);\n }\n\n box-shadow: $shadow;\n }\n\n // Hover state\n @if $color-hover {\n // Generate CSS\n @for $i from 2 through $bars {\n $offset: ($weight + $spacing) * ($i - 1);\n $hover-shadow: append($hover-shadow, 0 $offset 0 $color-hover, comma);\n }\n\n &:hover::after {\n background: $color-hover;\n box-shadow: $hover-shadow;\n }\n }\n}\n\n/// Adds a downward-facing triangle as a background image to an element. The image is formatted as an SVG, making it easy to change the color. Because Internet Explorer doesn't support encoded SVGs as background images, a PNG fallback is also included.\n/// There are two PNG fallbacks: a black triangle and a white triangle. The one used depends on the lightness of the input color.\n///\n/// @param {Color} $color [$black] - Color to use for the triangle.\n@mixin background-triangle($color: $black) {\n $rgb: 'rgb%28#{red($color)}, #{green($color)}, #{blue($color)}%29';\n\n background-image: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"32\" height=\"24\" viewBox=\"0 0 32 24\"><polygon points=\"0,0 32,0 16,24\" style=\"fill: #{$rgb}\"></polygon></svg>');\n\n @media screen and (min-width:0\\0) {\n @if lightness($color) < 50% {\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==');\n }\n @else {\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAMBJREFUeNrEllsOhCAMRVszC9IlzU7KCmVHTJsoMWYMUtpyv9BgbuXQB5ZSdgBYYY4ycgBivk8KYFsQMfMiTTBP4o3nUzCKzOabLJbLy2/g31evGkAginR4/ZegKH5qX3bJCscA3t0x3kgO5tQFyhhFf50xRqFLbyMUNJQzgyjGS/wgCpvKqkRBpuWrE4V9d+1E4dPUXqIg107SQOE/2DRQxMwTDygIInVDET9T3lCoj/6j/VCmGjZOl2lKpZ8AAwDQP7zIimDGFQAAAABJRU5ErkJggg==');\n }\n }\n}\n\n/// Applies the micro clearfix hack popularized by Nicolas Gallagher. Include this mixin on a container if its children are all floated, to give the container a proper height.\n/// @link http://nicolasgallagher.com/micro-clearfix-hack/ Micro Clearfix Hack\n@mixin clearfix {\n &::before,\n &::after {\n content: ' ';\n display: table;\n }\n\n &::after {\n clear: both;\n }\n}\n\n/// Adds CSS for a \"quantity query\" selector that automatically sizes elements based on how many there are inside a container.\n/// @link http://alistapart.com/article/quantity-queries-for-css Quantity Queries for CSS\n///\n/// @param {Number} $max - Maximum number of items to detect. The higher this number is, the more CSS that's required to cover each number of items.\n/// @param {Keyword} $elem [li] - Tag to use for sibling selectors.\n@mixin auto-width($max, $elem: li) {\n @for $i from 2 through $max {\n &:nth-last-child(#{$i}):first-child,\n &:nth-last-child(#{$i}):first-child ~ #{$elem} {\n width: percentage(1 / $i);\n }\n }\n}\n\n/// Removes the focus ring around an element when a mouse input is detected.\n@mixin disable-mouse-outline {\n [data-whatinput='mouse'] & {\n outline: 0;\n }\n}\n\n/// Makes an element visually hidden, but still accessible to keyboards and assistive devices.\n/// @link http://snook.ca/archives/html_and_css/hiding-content-for-accessibility Hiding Content for Accessibility\n@mixin element-invisible {\n position: absolute !important;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n}\n\n/// Reverses the CSS output created by the `element-invisible()` mixin.\n@mixin element-invisible-off {\n position: static !important;\n height: auto;\n width: auto;\n overflow: visible;\n clip: auto;\n}\n\n/// Vertically centers the element inside of its first non-static parent,\n/// @link http://www.sitepoint.com/centering-with-sass/ Centering With Sass\n@mixin vertical-center {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/// Horizontally centers the element inside of its first non-static parent,\n/// @link http://www.sitepoint.com/centering-with-sass/ Centering With Sass\n@mixin horizontal-center {\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n}\n\n/// Absolutely centers the element inside of its first non-static parent,\n/// @link http://www.sitepoint.com/centering-with-sass/ Centering With Sass\n@mixin absolute-center {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n/// Iterates through breakpoints defined in `$breakpoint-classes` and prints the CSS inside the mixin at each breakpoint's media query. Use this with the grid, or any other component that has responsive classes.\n///\n/// @param {Boolean} $small [true] - If `false`, the mixin will skip the `small` breakpoint. Use this with components that don't prefix classes with `small-`, only `medium-` and up.\n@mixin -zf-each-breakpoint($small: true) {\n $map: $breakpoint-classes;\n\n @if not $small {\n $map: map-remove($map, small);\n }\n\n @each $size in $map {\n $-zf-size: $size !global;\n\n @include breakpoint($size) {\n @content;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Collapse the gutters on a column by removing the padding. **Note:** only use this mixin within a breakpoint. To collapse a column's gutters on all screen sizes, use the `$gutter` parameter of the `grid-column()` mixin instead.\n@mixin grid-column-collapse {\n padding-left: 0;\n padding-right: 0;\n}\n\n/// Un-collapse the gutters on a column by re-adding the padding.\n///\n/// @param {Number} $gutter [$grid-column-gutter] - Spacing between columns.\n@mixin grid-column-uncollapse($gutter: $grid-column-gutter) {\n $gutter: rem-calc($gutter) / 2;\n padding-left: $gutter;\n padding-right: $gutter;\n}\n\n/// Shorthand for `grid-column-collapse()`.\n/// @alias grid-column-collapse\n@mixin grid-col-collapse {\n @include grid-column-collapse;\n}\n\n/// Shorthand for `grid-column-uncollapse()`.\n/// @alias grid-column-uncollapse\n@mixin grid-col-uncollapse($gutter: $grid-column-gutter) {\n @include grid-column-uncollapse($gutter);\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group breakpoints\n////\n\n// scss-lint:disable ZeroUnit\n\n/// A list of named breakpoints. You can use these with the `breakpoint()` mixin to quickly create media queries.\n/// @type Map\n$breakpoints: (\n small: 0,\n medium: 640px,\n large: 1024px,\n xlarge: 1200px,\n xxlarge: 1440px,\n) !default;\n\n/// All of the names in this list will be output as classes in your CSS, like `.small-12`, `.medium-6`, and so on. Each value in this list must also be in the `$breakpoints` map.\n/// @type List\n$breakpoint-classes: (small medium large) !default;\n\n/// Generates a media query string matching the input value. Refer to the documentation for the `breakpoint()` mixin to see what the possible inputs are.\n///\n/// @param {Keyword|Number} $val [small] - Breakpoint name, or px, rem, or em value to process.\n@function breakpoint($val: small) {\n // Size or keyword\n $bp: nth($val, 1);\n // Value for max-width media queries\n $bp-max: 0;\n // Direction of media query (up, down, or only)\n $dir: if(length($val) > 1, nth($val, 2), up);\n // Eventual output\n $str: '';\n // Is it a named media query?\n $named: false;\n\n // Orientation media queries have a unique syntax\n @if $bp == 'landscape' or $bp == 'portrait' {\n @return '(orientation: #{$bp})';\n }\n @else if $bp == 'retina' {\n @return '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)';\n }\n\n // Try to pull a named breakpoint out of the $breakpoints map\n @if type-of($bp) == 'string' {\n @if map-has-key($breakpoints, $bp) {\n @if $dir == 'only' or $dir == 'down' {\n $next-bp: -zf-map-next($breakpoints, $bp);\n\n @if $next-bp == null {\n $bp-max: null;\n @warn 'breakpoint(): the media query \"#{$val}\" cannot be used because #{$bp} is the largest breakpoint.';\n }\n @else {\n $bp-max: $next-bp;\n }\n }\n\n $bp: map-get($breakpoints, $bp);\n $named: true;\n }\n @else {\n $bp: 0;\n }\n }\n\n // Convert any pixel, rem, or unitless value to em\n $bp: -zf-bp-to-em($bp);\n @if $bp-max {\n $bp-max: -zf-bp-to-em($bp-max) - (1/16);\n }\n\n // Skip media query creation if the input is \"0 up\"\n @if $bp > 0em or $dir == 'only' or $dir == 'down' {\n // `only` ranges use the format `(min-width: n) and (max-width: n)`\n @if $dir == 'only' {\n @if $named == true {\n $str: $str + '(min-width: #{$bp})';\n\n @if $bp-max != null {\n $str: $str + ' and (max-width: #{$bp-max})';\n }\n }\n @else {\n @warn 'Only named media queries can have an `only` range.';\n }\n }\n\n // `down` ranges use the format `(max-width: n)`\n @else if $dir == 'down' {\n $max: 0;\n\n // For named breakpoints, subtract the breakpoint value by one \"pixel\", or 1/16em.\n @if $named {\n $max: $bp-max;\n }\n @else {\n $max: $bp;\n }\n\n // Skip media query creation if input value is exactly \"0 down\" but don't \"small down\"\n @if $named or $bp > 0em {\n $str: $str + '(max-width: #{$max})';\n }\n }\n\n // `up` ranges use the format `(min-width: n)`\n @else if $bp > 0em {\n $str: $str + '(min-width: #{$bp})';\n }\n }\n\n @return $str;\n}\n\n/// Wraps a media query around the content you put inside the mixin. This mixin accepts a number of values:\n/// - If a string is passed, the mixin will look for it in the `$breakpoints` map, and use a media query there.\n/// - If a pixel value is passed, it will be converted to an em value using `$global-font-size` as the base.\n/// - If a rem value is passed, the unit will be changed to em.\n/// - If an em value is passed, the value will be used as-is.\n///\n/// @param {Keyword|Number} $value - Breakpoint name, or px, rem, or em value to process.\n///\n/// @output If the breakpoint is \"0px and larger\", outputs the content as-is. Otherwise, outputs the content wrapped in a media query.\n@mixin breakpoint($value) {\n $str: breakpoint($value);\n\n // If $str is still an empty string, no media query is needed\n @if $str == '' {\n @content;\n }\n\n // Otherwise, wrap the content in a media query\n @else {\n @media screen and #{$str} {\n @content;\n }\n }\n}\n\n/// Convers the breakpoints map to a URL-encoded string, like this: `key1=value1&key2=value2`. The value is then dropped into the CSS for a special `<meta>` tag, which is read by the Foundation JavaScript. This is how we transfer values from Sass to JavaScript, so they can be defined in one place.\n/// @access private\n///\n/// @param {Map} $map - Map to convert.\n///\n/// @returns {String} A string containing the map's contents.\n@function -zf-bp-serialize($map) {\n $str: '';\n @each $key, $value in $map {\n $str: $str + $key + '=' + -zf-bp-to-em($value) + '&';\n }\n $str: str-slice($str, 1, -2);\n\n @return $str;\n}\n\n/// Find the next key in a map.\n/// @access private\n///\n/// @param {Map} $map - Map to traverse.\n/// @param {Mixed} $key - Key to use as a starting point.\n///\n/// @returns {Mixed} The value for the key after `$key`, if `$key` was found. If `$key` was not found, or `$key` was the last value in the map, returns `null`.\n@function -zf-map-next($map, $key) {\n // Store the values of the map as a list, so we can access them with nth\n $values: map-values($map);\n\n // Ghetto for loop\n $i: 1;\n $found: false;\n @each $val in map-keys($map) {\n @if $found == false {\n @if ($key == $val) {\n $found: true;\n }\n $i: $i + 1;\n }\n }\n\n // If the key doesn't exist, or it's the last key in the map, return null\n @if $i > length($map) {\n @return null;\n }\n // Otherwise, return the value\n @else {\n @return nth($values, $i);\n }\n}\n\n/// Get a value for a breakpoint from a responsive config map. If the config map has the key `$value`, the exact breakpoint value is returned. If the config map does *not* have the breakpoint, the value matching the next lowest breakpoint in the config map is returned.\n/// @access private\n///\n/// @param {Map} $map - Input config map.\n/// @param {Keyword} $value - Breakpoint name to use.\n///\n/// @return {Mixed} The corresponding breakpoint value.\n@function -zf-get-bp-val($map, $value) {\n // Check if the breakpoint name exists globally\n @if not map-has-key($breakpoints, $value) {\n @return null;\n }\n // Check if the breakpoint name exists in the local config map\n @else if map-has-key($map, $value) {\n // If it does, just return the value\n @return map-get($map, $value);\n }\n // Otherwise, find the next lowest breakpoint and return that value\n @else {\n $anchor: null;\n $found: false;\n\n @each $key, $val in $breakpoints {\n @if not $found {\n @if map-has-key($map, $key) {\n $anchor: $key;\n }\n @if $key == $value {\n $found: true;\n }\n }\n }\n\n @return map-get($map, $anchor);\n }\n}\n\n// Legacy breakpoint variables\n// These will be removed in 6.2\n$small-up: null;\n$small-only: null;\n$medium-up: null;\n$medium-only: null;\n$large-up: null;\n$large-only: null;\n$xlarge-up: null;\n$xlarge-only: null;\n$xxlarge-up: null;\n$xxlarge-only: null;\n\n@if map-has-key($breakpoints, small) {\n $small-up: screen;\n $small-only: unquote('screen and #{breakpoint(small only)}');\n}\n\n@if map-has-key($breakpoints, medium) {\n $medium-up: unquote('screen and #{breakpoint(medium)}');\n $medium-only: unquote('screen and #{breakpoint(medium only)}');\n}\n\n@if map-has-key($breakpoints, large) {\n $large-up: unquote('screen and #{breakpoint(large)}');\n $large-only: unquote('screen and #{breakpoint(large only)}');\n}\n\n@if map-has-key($breakpoints, xlarge) {\n $xlarge-up: unquote('screen and #{breakpoint(xlarge)}');\n $xlarge-only: unquote('screen and #{breakpoint(xlarge only)}');\n}\n\n@if map-has-key($breakpoints, xxlarge) {\n $xxlarge-up: unquote('screen and #{breakpoint(xxlarge)}');\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Calculates the width of a column based on a number of factors.\n///\n/// @param {Number|List} $columns\n/// Width of the column. Accepts multiple values:\n/// - A percentage value will make the column that exact size.\n/// - A single digit will make the column span that number of columns wide, taking into account the column count of the parent row.\n/// - A string of the format \"x of y\" will make a column that is *x* columns wide, assuming *y* total columns for the parent.\n///\n/// @returns {Number} A calculated percentage value.\n@function grid-column($columns) {\n $width: 0%;\n\n // Parsing percents, decimals, and column counts\n @if type-of($columns) == 'number' {\n @if unit($columns) == '%' {\n $width: $columns;\n }\n @else if $columns < 1 {\n $width: percentage($columns);\n }\n @else {\n $width: percentage($columns / $grid-column-count);\n }\n }\n\n // Parsing \"n of n\" expressions\n @else if type-of($columns) == 'list' {\n @if length($columns) != 3 {\n @error 'Wrong syntax for grid-column(). Use the format \"n of n\".';\n }\n @else {\n $width: percentage(nth($columns, 1) / nth($columns, 3));\n }\n }\n\n // Anything else is incorrect\n @else {\n @error 'Wrong syntax for grid-column(). Use a number, decimal, percentage, or \"n of n\".';\n }\n\n @return $width;\n}\n\n/// Creates a grid column.\n///\n/// @param {Mixed} $columns [$grid-column-count] - Width of the column. Refer to the `grid-column()` function to see possible values.\n/// @param {Number} $gutter [$grid-column-gutter] - Spacing between columns.\n@mixin grid-column(\n $columns: $grid-column-count,\n $gutter: $grid-column-gutter\n) {\n @if $gutter != null {\n $gutter: rem-calc($gutter) / 2;\n }\n @else {\n @each $breakpoint, $gutter in $grid-column-responsive-gutter {\n $padding: rem-calc($gutter) / 2;\n\n @include breakpoint($breakpoint) {\n padding-left: $padding;\n padding-right: $padding;\n }\n }\n }\n\n @include grid-column-size($columns);\n float: $global-left;\n padding-left: $gutter;\n padding-right: $gutter;\n\n @if $grid-column-align-edge {\n &:last-child:not(:first-child) {\n float: $global-right;\n }\n }\n}\n\n/// Creates a grid column row. This is the equivalent of adding `.row` and `.column` to the same element.\n///\n/// @param {Number} $gutter [$grid-column-gutter] - Width of the gutters on either side of the column row.\n@mixin grid-column-row(\n $gutter: $grid-column-gutter\n) {\n @include grid-row;\n @include grid-column($gutter: $gutter);\n\n &,\n &:last-child {\n float: none;\n }\n}\n\n/// Shorthand for `grid-column()`.\n/// @alias grid-column\n@function grid-col(\n $columns: $grid-column-count\n) {\n @return grid-column($columns);\n}\n\n/// Shorthand for `grid-column()`.\n/// @alias grid-column\n@mixin grid-col(\n $columns: $grid-column-count,\n $gutter: $grid-column-gutter\n) {\n @include grid-column($columns, $gutter);\n}\n\n/// Shorthand for `grid-column-row()`.\n/// @alias grid-column-row\n@mixin grid-col-row(\n $gutter: $grid-column-gutter\n) {\n @include grid-column-row($gutter);\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Set the width of a grid column.\n///\n/// @param {Number|List} $width [$grid-column-count] - Width to make the column. You can pass in any value accepted by the `grid-column()` function, such as `6`, `50%`, or `1 of 2`.\n@mixin grid-column-size(\n $columns: $grid-column-count\n) {\n width: grid-column($columns);\n}\n\n/// Shorthand for `grid-column-size()`.\n/// @alias grid-column-size\n@mixin grid-col-size(\n $columns: $grid-column-count\n) {\n @include grid-column-size($columns);\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Reposition a column.\n///\n/// @param {Number} $position - Direction and amount to move. The column will move equal to the width of the column count specified. A positive number will push the column to the right, while a negative number will pull it to the left.\n@mixin grid-column-position($position) {\n @if type-of($position) == 'number' {\n $offset: percentage($position / $grid-column-count);\n\n position: relative;\n #{$global-left}: $offset;\n }\n @else if $position == center {\n float: none;\n margin-left: auto;\n margin-right: auto;\n }\n @else {\n @warn 'Wrong syntax for grid-column-position(). Enter a positive or negative number, or center.';\n }\n}\n\n/// Reset a position definition.\n@mixin grid-column-unposition {\n position: static;\n margin-left: 0;\n margin-right: 0;\n float: left;\n}\n\n/// Offsets a column to the right by `$n` columns.\n/// @param {Number|List} $n - Width to offset by. You can pass in any value accepted by the `grid-column()` mixin, such as `6`, `50%`, or `1 of 2`.\n@mixin grid-column-offset($n) {\n margin-#{$global-left}: grid-column($n);\n}\n\n/// Disable the default behavior of the last column in a row aligning to the opposite edge.\n@mixin grid-column-end {\n // This extra specificity is required for the property to be applied\n &:last-child:last-child {\n float: $global-left;\n }\n}\n\n/// Shorthand for `grid-column-position()`.\n/// @alias grid-column-position\n@mixin grid-col-pos($position) {\n @include grid-column-position($position);\n}\n\n/// Shorthand for `grid-column-unposition()`.\n/// @alias grid-column-unposition\n@mixin grid-col-unpos {\n @include grid-column-unposition;\n}\n\n/// Shorthand for `grid-column-offset()`.\n/// @alias grid-column-offset\n@mixin grid-col-off($n) {\n @include grid-column-offset($n);\n}\n\n/// Shorthand for `grid-column-end()`.\n/// @alias grid-column-end\n@mixin grid-col-end {\n @include grid-column-end;\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group grid\n////\n\n/// Sizes child elements so that `$n` number of items appear on each row.\n///\n/// @param {Number} $n - Number of elements to display per row.\n/// @param {String} $selector ['.column'] - Selector(s) to use for child elements.\n@mixin grid-layout(\n $n,\n $selector: '.column'\n) {\n & > #{$selector} {\n width: percentage(1/$n);\n float: $global-left;\n\n &:nth-of-type(1n) {\n clear: none;\n }\n\n &:nth-of-type(#{$n}n+1) {\n clear: both;\n }\n\n &:last-child {\n float: left;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group typography-base\n////\n\n// Base Typography\n// - - - - - - - - - - - - - - -\n// These are styles applied to basic HTML tags, including:\n// - Paragraphs <p>\n// - Bold/italics <b> <strong> <i> <em>\n// - Small text <small>\n// - Headings <h1>—<h6>\n// - Anchors <a>\n// - Dividers <hr>\n// - Lists <ul> <ol> <dl>\n// - Blockquotes <blockquote>\n// - Code blocks <code>\n// - Abbreviations <abbr>\n// - Citations <cite>\n// - Keystrokes <kbd>\n\n/// Font family for header elements.\n/// @type String | List\n$header-font-family: $body-font-family !default;\n\n/// Font weight of headers.\n/// @type String\n$header-font-weight: $global-weight-normal !default;\n\n/// Font style (e.g. italicized) of headers.\n/// @type String\n$header-font-style: normal !default;\n\n/// Font stack used for elements that use monospaced type, such as code samples\n/// @type String | List\n$font-family-monospace: Consolas, 'Liberation Mono', Courier, monospace !default;\n\n/// Sizes of headings at various screen sizes. Each key is a breakpoint, and each value is a map of heading sizes.\n/// @type Map\n$header-sizes: (\n small: (\n 'h1': 24,\n 'h2': 20,\n 'h3': 19,\n 'h4': 18,\n 'h5': 17,\n 'h6': 16,\n ),\n medium: (\n 'h1': 48,\n 'h2': 40,\n 'h3': 31,\n 'h4': 25,\n 'h5': 20,\n 'h6': 16,\n ),\n) !default;\n\n/// Color of headers.\n/// @type Color\n$header-color: inherit !default;\n\n/// Line height of headers.\n/// @type Number\n$header-lineheight: 1.4 !default;\n\n/// Bottom margin of headers.\n/// @type Number\n$header-margin-bottom: 0.5rem !default;\n\n/// Text rendering method of headers.\n/// @type String\n$header-text-rendering: optimizeLegibility !default;\n\n/// Font size of `<small>` elements.\n/// @type Number\n$small-font-size: 80% !default;\n\n/// Color of `<small>` elements when placed inside headers.\n/// @type Color\n$header-small-font-color: $medium-gray !default;\n\n/// Line height of text inside `<p>` elements.\n/// @type Number\n$paragraph-lineheight: 1.6 !default;\n\n/// Bottom margin of paragraphs.\n/// @type Number\n$paragraph-margin-bottom: 1rem !default;\n\n/// Text rendering method for paragraph text.\n/// @type String\n$paragraph-text-rendering: optimizeLegibility !default;\n\n/// Text color of code samples.\n/// @type Color\n$code-color: $black !default;\n\n/// Font family of code samples.\n/// @type String | List\n$code-font-family: $font-family-monospace !default;\n\n/// Font weight of text in code samples.\n/// @type String\n$code-font-weight: $global-weight-normal !default;\n\n/// Background color of code samples.\n/// @type Color\n$code-background: $light-gray !default;\n\n/// Border around code samples.\n/// @type List\n$code-border: 1px solid $medium-gray !default;\n\n/// Padding around text of code samples.\n/// @type Number | List\n$code-padding: rem-calc(2 5 1) !default;\n\n/// Default color for links.\n/// @type Color\n$anchor-color: $primary-color !default;\n\n/// Default color for links on hover.\n/// @type Color\n$anchor-color-hover: scale-color($anchor-color, $lightness: -14%) !default;\n\n/// Default text deocration for links.\n/// @type String\n$anchor-text-decoration: none !default;\n\n/// Default text decoration for links on hover.\n/// @type String\n$anchor-text-decoration-hover: none !default;\n\n/// Maximum width of a divider.\n/// @type Number\n$hr-width: $global-width !default;\n\n/// Default border for a divider.\n/// @type List\n$hr-border: 1px solid $medium-gray !default;\n\n/// Default margin for a divider.\n/// @type Number | List\n$hr-margin: rem-calc(20) auto !default;\n\n/// Line height for items in a list.\n/// @type Number\n$list-lineheight: $paragraph-lineheight !default;\n\n/// Bottom margin for items in a list.\n/// @type Number\n$list-margin-bottom: $paragraph-margin-bottom !default;\n\n/// Bullet type to use for unordered lists (e.g., `square`, `circle`, `disc`).\n/// @type String\n$list-style-type: disc !default;\n\n/// Positioning for bullets on unordered list items.\n/// @type String\n$list-style-position: outside !default;\n\n/// Left (or right) margin for lists.\n/// @type Number\n$list-side-margin: 1.25rem !default;\n\n/// Left (or right) margin for a list inside a list.\n/// @type Number\n$list-nested-side-margin: 1.25rem !default;\n\n/// Bottom margin for `<dl>` elements.\n/// @type Number\n$defnlist-margin-bottom: 1rem !default;\n\n/// Font weight for `<dt>` elements.\n/// @type String\n$defnlist-term-weight: $global-weight-bold !default;\n\n/// Spacing between `<dt>` and `<dd>` elements.\n/// @type Number\n$defnlist-term-margin-bottom: 0.3rem !default;\n\n/// Text color of `<blockquote>` elements.\n/// @type Color\n$blockquote-color: $dark-gray !default;\n\n/// Padding inside a `<blockquote>` element.\n/// @type Number | List\n$blockquote-padding: rem-calc(9 20 0 19) !default;\n\n/// Side border for `<blockquote>` elements.\n/// @type List\n$blockquote-border: 1px solid $medium-gray !default;\n\n/// Font size for `<cite>` elements.\n/// @type Number\n$cite-font-size: rem-calc(13) !default;\n\n/// Text color for `<cite>` elements.\n/// @type Color\n$cite-color: $dark-gray !default;\n\n/// Font family for `<kbd>` elements.\n/// @type String | List\n$keystroke-font: $font-family-monospace !default;\n\n/// Text color for `<kbd>` elements.\n/// @type Color\n$keystroke-color: $black !default;\n\n/// Background color for `<kbd>` elements.\n/// @type Color\n$keystroke-background: $light-gray !default;\n\n/// Padding for `<kbd>` elements.\n/// @type Number | List\n$keystroke-padding: rem-calc(2 4 0) !default;\n\n/// Border radius for `<kbd>` elements.\n/// @type Number | List\n$keystroke-radius: $global-radius !default;\n\n/// Bottom border style for `<abbr>` elements.\n/// @type List\n$abbr-underline: 1px dotted $black !default;\n\n@mixin foundation-typography-base {\n // Typography resets\n div,\n dl,\n dt,\n dd,\n ul,\n ol,\n li,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n pre,\n form,\n p,\n blockquote,\n th,\n td {\n margin: 0;\n padding: 0;\n }\n\n // Paragraphs\n p {\n font-size: inherit;\n line-height: $paragraph-lineheight;\n margin-bottom: $paragraph-margin-bottom;\n text-rendering: $paragraph-text-rendering;\n }\n\n // Emphasized text\n em,\n i {\n font-style: italic;\n line-height: inherit;\n }\n\n // Strong text\n strong,\n b {\n font-weight: $global-weight-bold;\n line-height: inherit;\n }\n\n // Small text\n small {\n font-size: $small-font-size;\n line-height: inherit;\n }\n\n // Headings\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-family: $header-font-family;\n font-weight: $header-font-weight;\n font-style: $header-font-style;\n color: $header-color;\n text-rendering: $header-text-rendering;\n margin-top: 0;\n margin-bottom: $header-margin-bottom;\n line-height: $header-lineheight;\n\n small {\n color: $header-small-font-color;\n line-height: 0;\n }\n }\n\n // Heading sizes\n @each $size, $headers in $header-sizes {\n @include breakpoint($size) {\n @each $header, $font-size in $headers {\n #{$header} {\n font-size: rem-calc($font-size);\n }\n }\n }\n }\n\n // Links\n a {\n color: $anchor-color;\n text-decoration: $anchor-text-decoration;\n line-height: inherit;\n cursor: pointer;\n\n &:hover,\n &:focus {\n color: $anchor-color-hover;\n @if $anchor-text-decoration-hover != $anchor-text-decoration {\n text-decoration: $anchor-text-decoration-hover;\n }\n }\n\n img {\n border: 0;\n }\n }\n\n // Horizontal rule\n hr {\n max-width: $hr-width;\n height: 0;\n border-right: 0;\n border-top: 0;\n border-bottom: $hr-border;\n border-left: 0;\n margin: $hr-margin;\n clear: both;\n }\n\n // Lists\n ul,\n ol,\n dl {\n line-height: $list-lineheight;\n margin-bottom: $list-margin-bottom;\n list-style-position: $list-style-position;\n }\n\n // List items\n li {\n font-size: inherit;\n }\n\n // Unordered lists\n ul {\n list-style-type: $list-style-type;\n margin-#{$global-left}: $list-side-margin;\n }\n\n // Ordered lists\n ol {\n margin-#{$global-left}: $list-side-margin;\n }\n\n // Nested unordered/ordered lists\n ul, ol {\n & & {\n margin-#{$global-left}: $list-nested-side-margin;\n margin-bottom: 0;\n }\n }\n\n // Definition lists\n dl {\n margin-bottom: $defnlist-margin-bottom;\n\n dt {\n margin-bottom: $defnlist-term-margin-bottom;\n font-weight: $defnlist-term-weight;\n }\n }\n\n // Blockquotes\n blockquote {\n margin: 0 0 $paragraph-margin-bottom;\n padding: $blockquote-padding;\n border-#{$global-left}: $blockquote-border;\n\n &, p {\n line-height: $paragraph-lineheight;\n color: $blockquote-color;\n }\n }\n\n // Citations\n cite {\n display: block;\n font-size: $cite-font-size;\n color: $cite-color;\n\n &:before {\n content: '\\2014 \\0020';\n }\n }\n\n // Abbreviations\n abbr {\n color: $body-font-color;\n cursor: help;\n border-bottom: $abbr-underline;\n }\n\n // Code\n code {\n font-family: $code-font-family;\n font-weight: $code-font-weight;\n color: $code-color;\n background-color: $code-background;\n border: $code-border;\n padding: $code-padding;\n }\n\n // Keystrokes\n kbd {\n padding: $keystroke-padding;\n margin: 0;\n background-color: $keystroke-background;\n color: $keystroke-color;\n font-family: $keystroke-font;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group functions\n////\n\n$global-font-size: 100% !default;\n\n// scss-lint:disable ZeroUnit\n\n/// Removes the unit (e.g. px, em, rem) from a value, returning the number only.\n///\n/// @param {Number} $num - Number to strip unit from.\n///\n/// @returns {Number} The same number, sans unit.\n@function strip-unit($num) {\n @return $num / ($num * 0 + 1);\n}\n\n/// Converts one or more pixel values into matching rem values.\n///\n/// @param {Number|List} $values - One or more values to convert. Be sure to separate them with spaces and not commas. If you need to convert a comma-separated list, wrap the list in parentheses.\n/// @param {Number} $base [null] - The base value to use when calculating the `rem`. If you're using Foundation out of the box, this is 16px. If this parameter is `null`, the function will reference the `$base-font-size` variable as the base.\n///\n/// @returns {List} A list of converted values.\n@function rem-calc($values, $base: null) {\n $rem-values: ();\n $count: length($values);\n\n // If no base is defined, defer to the global font size\n @if $base == null {\n $base: $global-font-size;\n }\n\n // If the base font size is a %, then multiply it by 16px\n // This is because 100% font size = 16px in most all browsers\n @if unit($base) == '%' {\n $base: ($base / 100%) * 16px;\n }\n\n @if $count == 1 {\n @return -zf-to-rem($values, $base);\n }\n\n @for $i from 1 through $count {\n $rem-values: append($rem-values, -zf-to-rem(nth($values, $i), $base));\n }\n\n @return $rem-values;\n}\n\n// Converts a unitless, pixel, or rem value to em, for use in breakpoints.\n@function -zf-bp-to-em($value) {\n // Pixel and unitless values are converted to rems\n @if unit($value) == 'px' or unitless($value) {\n $value: rem-calc($value, $base: 16px);\n }\n\n // Then the value is converted to ems\n @return strip-unit($value) * 1em;\n}\n\n/// Converts a pixel value to matching rem value. *Any* value passed, regardless of unit, is assumed to be a pixel value. By default, the base pixel value used to calculate the rem value is taken from the `$global-font-size` variable.\n/// @access private\n///\n/// @param {Number} $value - Pixel value to convert.\n/// @param {Number} $base [null] - Base for pixel conversion.\n///\n/// @returns {Number} A number in rems, calculated based on the given value and the base pixel value. rem values are passed through as is.\n@function -zf-to-rem($value, $base: null) {\n // Check if the value is a number\n @if type-of($value) != 'number' {\n @warn inspect($value) + ' was passed to rem-calc(), which is not a number.';\n @return $value;\n }\n\n // Calculate rem if units for $value is not rem\n @if unit($value) != 'rem' {\n $value: strip-unit($value) / strip-unit($base) * 1rem;\n }\n\n // Turn 0rem into 0\n @if $value == 0rem {\n $value: 0;\n }\n\n @return $value;\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group typography-helpers\n////\n\n/// Default font size for lead paragraphs.\n/// @type Number\n$lead-font-size: $global-font-size * 1.25 !default;\n\n/// Default line height for lead paragraphs.\n/// @type String\n$lead-lineheight: 1.6 !default;\n\n/// Default line height for subheaders.\n/// @type Number\n$subheader-lineheight: 1.4 !default;\n\n/// Default font color for subheaders.\n/// @type Color\n$subheader-color: $dark-gray !default;\n\n/// Default font weight for subheaders.\n/// @type String\n$subheader-font-weight: $global-weight-normal !default;\n\n/// Default top margin for subhheaders.\n/// @type Number\n$subheader-margin-top: 0.2rem !default;\n\n/// Default bottom margin for subheaders.\n/// @type Number\n$subheader-margin-bottom: 0.5rem !default;\n\n/// Default font size for statistic numbers.\n/// @type Number\n$stat-font-size: 2.5rem !default;\n\n@mixin foundation-typography-helpers {\n // Use to create a subheading under a main header\n // Make sure you pair the two elements in a <header> element, like this:\n // <header>\n // <h1>Heading</h1>\n // <h2>Subheading</h2>\n // </header>\n .subheader {\n margin-top: $subheader-margin-top;\n margin-bottom: $subheader-margin-bottom;\n font-weight: $subheader-font-weight;\n line-height: $subheader-lineheight;\n color: $subheader-color;\n }\n\n // Use to style an introductory lead, deck, blurb, etc.\n .lead {\n font-size: $lead-font-size;\n line-height: $lead-lineheight;\n }\n\n // Use to style a large number to display a statistic\n .stat {\n font-size: $stat-font-size;\n line-height: 1;\n\n p + & {\n margin-top: -1rem;\n }\n }\n\n // Use to remove the bullets from an unordered list\n .no-bullet {\n margin-#{$global-left}: 0;\n list-style: none;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n@mixin foundation-text-alignment {\n @each $size in $breakpoint-classes {\n @include breakpoint($size) {\n @each $align in (left, right, center, justify) {\n @if $size != 'small' {\n .#{$size}-text-#{$align} {\n text-align: $align;\n }\n }\n @else {\n .text-#{$align} {\n text-align: $align;\n }\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group typography\n////\n\n// scss-lint:disable all\n\n@mixin foundation-print-styles {\n .show-for-print { display: none !important; }\n\n @media print {\n * {\n background: transparent !important;\n color: black !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n .show-for-print { display: block !important; }\n .hide-for-print { display: none !important; }\n\n table.show-for-print { display: table !important; }\n thead.show-for-print { display: table-header-group !important; }\n tbody.show-for-print { display: table-row-group !important; }\n tr.show-for-print { display: table-row !important; }\n td.show-for-print { display: table-cell !important; }\n th.show-for-print { display: table-cell !important; }\n\n // Display the URL of a link after the text\n a,\n a:visited { text-decoration: underline;}\n a[href]:after { content: ' (' attr(href) ')'; }\n\n // Don't display the URL for images or JavaScript/internal links\n .ir a:after,\n a[href^='javascript:']:after,\n a[href^='#']:after { content: ''; }\n\n // Display what an abbreviation stands for after the text\n abbr[title]:after { content: ' (' attr(title) ')'; }\n\n // Prevent page breaks in the middle of a blockquote or preformatted text block\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n // h5bp.com/t\n thead { display: table-header-group; }\n\n tr,\n img { page-break-inside: avoid; }\n\n img { max-width: 100% !important; }\n\n @page { margin: 0.5cm; }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n // Avoid page breaks after a heading\n h2,\n h3 { page-break-after: avoid; }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group button\n////\n\n/// Padding inside buttons.\n/// @type List\n$button-padding: 0.85em 1em !default;\n\n/// Margin around buttons.\n/// @type List\n$button-margin: 0 0 $global-margin 0 !default;\n\n/// Default fill for buttons. Can either be `solid` or `hollow`.\n/// @type Keyword\n$button-fill: solid !default;\n\n/// Default background color for buttons.\n/// @type Color\n$button-background: $primary-color !default;\n\n/// Background color on hover for buttons.\n/// @type Color\n$button-background-hover: scale-color($button-background, $lightness: -15%) !default;\n\n/// Font color for buttons.\n/// @type List\n$button-color: #fff !default;\n\n/// Font color for buttons, if the background is light.\n/// @type List\n$button-color-alt: #000 !default;\n\n/// Border radius for buttons, defaulted to global-radius.\n/// @type Number\n$button-radius: $global-radius !default;\n\n/// Sizes for buttons.\n/// @type Map\n$button-sizes: (\n tiny: 0.6rem,\n small: 0.75rem,\n default: 0.9rem,\n large: 1.25rem,\n) !default;\n\n/// opacity for a disabled button.\n/// @type List\n$button-opacity-disabled: 0.25 !default;\n\n// Internal: flip from margin-right to margin-left for defaults\n@if $global-text-direction == 'rtl' {\n $button-margin: 0 0 $global-margin $global-margin !default;\n}\n\n// TODO: Document button-base() mixin\n@mixin button-base {\n @include disable-mouse-outline;\n display: inline-block;\n text-align: center;\n line-height: 1;\n cursor: pointer;\n -webkit-appearance: none;\n transition: background-color 0.25s ease-out, color 0.25s ease-out;\n vertical-align: middle;\n border: 1px solid transparent;\n border-radius: $button-radius;\n padding: $button-padding;\n margin: $button-margin;\n font-size: map-get($button-sizes, default);\n}\n\n/// Expands a button to make it full-width.\n/// @param {Boolean} $expand [true] - Set to `true` to enable the expand behavior. Set to `false` to reverse this behavior.\n@mixin button-expand($expand: true) {\n @if $expand {\n display: block;\n width: 100%;\n margin-left: 0;\n margin-right: 0;\n }\n @else {\n display: inline-block;\n width: auto;\n margin: $button-margin;\n }\n}\n\n/// Sets the visual style of a button.\n/// @param {Color} $background [$button-background] - Background color of the button.\n/// @param {Color} $background-hover [$button-background-hover] - Background color of the button on hover. Set to `auto` to have the mixin automatically generate a hover color.\n/// @param {Color} $color [$button-color] - Text color of the button. Set to `auto` to automatically generate a color based on the background color.\n@mixin button-style(\n $background: $button-background,\n $background-hover: $button-background-hover,\n $color: $button-color\n) {\n @if $color == auto {\n $color: foreground($background);\n }\n\n @if $background-hover == auto {\n $background-hover: scale-color($background, $lightness: -20%);\n }\n\n background-color: $background;\n color: $color;\n\n &:hover, &:focus {\n background-color: $background-hover;\n color: $color;\n }\n}\n\n/// Removes background fill on hover and focus for hollow buttons.\n@mixin button-hollow {\n &,\n &:hover, &:focus {\n background-color: transparent;\n }\n}\n\n@mixin button-hollow-style($color: $primary-color) {\n $color-hover: scale-color($color, $lightness: -50%);\n\n border: 1px solid $color;\n color: $color;\n\n &:hover, &:focus {\n border-color: $color-hover;\n color: $color-hover;\n }\n}\n\n/// Adds disabled styles to a button by fading the element, reseting the cursor, and disabling pointer events.\n@mixin button-disabled {\n opacity: $button-opacity-disabled;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/// Adds a dropdown arrow to a button.\n/// @param {Number} $size [0.4em] - Size of the arrow. We recommend using an `em` value so the triangle scales when used inside different sizes of buttons.\n/// @param {Color} $color [white] - Color of the arrow.\n/// @param {Number} $offset [$button-padding] - Distance between the arrow and the text of the button. Defaults to whatever the right padding of a button is.\n@mixin button-dropdown(\n $size: 0.4em,\n $color: $white,\n $offset: get-side($button-padding, right)\n) {\n &::after {\n @include css-triangle($size, $color, down);\n position: relative;\n top: 0.4em; // Aligns the arrow with the text of the button\n float: #{$global-right};\n margin-#{$global-left}: get-side($button-padding, right);\n display: inline-block;\n }\n}\n\n/// Adds all styles for a button. For more granular control over styles, use the individual button mixins.\n/// @param {Boolean} $expand [false] - Set to `true` to make the button full-width.\n/// @param {Color} $background [$button-background] - Background color of the button.\n/// @param {Color} $background-hover [$button-background-hover] - Background color of the button on hover. Set to `auto` to have the mixin automatically generate a hover color.\n/// @param {Color} $color [$button-color] - Text color of the button. Set to `auto` to automatically generate a color based on the background color.\n/// @param {Keyword} $style [solid] - Set to `hollow` to create a hollow button. The color defined in `$background` will be used as the primary color of the button.\n@mixin button(\n $expand: false,\n $background: $button-background,\n $background-hover: $button-background-hover,\n $color: $button-color,\n $style: $button-fill\n) {\n @include button-base;\n\n @if $style == solid {\n @include button-style($background, $background-hover, $color);\n }\n @else if $style == hollow {\n @include button-hollow;\n @include button-hollow-style($background);\n }\n\n @if $expand {\n @include button-expand;\n }\n}\n\n@mixin foundation-button {\n .button {\n @include button;\n\n // Sizes\n &.tiny { font-size: map-get($button-sizes, tiny); }\n &.small { font-size: map-get($button-sizes, small); }\n &.large { font-size: map-get($button-sizes, large); }\n &.expanded { @include button-expand; }\n\n // Colors\n @each $name, $color in $foundation-colors {\n @if $button-fill != hollow {\n &.#{$name} {\n @include button-style($color, auto);\n }\n }\n @else {\n &.#{$name} {\n @include button-hollow-style($color);\n }\n\n &.#{$name}.dropdown::after {\n border-top-color: $color;\n }\n }\n }\n\n // Hollow style\n @if $button-fill != hollow {\n &.hollow {\n @include button-hollow;\n @include button-hollow-style;\n\n @each $name, $color in $foundation-colors {\n &.#{$name} {\n @include button-hollow-style($color);\n }\n }\n }\n }\n\n // Disabled style\n &.disabled,\n &[disabled] {\n @include button-disabled;\n }\n\n // Dropdown arrow\n &.dropdown {\n @include button-dropdown;\n\n @if $button-fill == hollow {\n &::after {\n border-top-color: $button-background;\n }\n }\n }\n\n // Button with dropdown arrow only\n &.arrow-only::after {\n margin-#{$global-left}: 0;\n float: none;\n top: 0.2em;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Font color of text inputs.\n/// @type Color\n$input-color: $black !default;\n\n/// Font family of text inputs.\n/// @type Font\n$input-font-family: inherit !default;\n\n/// Font size of text inputs.\n/// @type Number\n$input-font-size: rem-calc(16) !default;\n\n/// Background color of text inputs.\n/// @type Color\n$input-background: $white !default;\n\n/// Background color of focused of text inputs.\n/// @type Color\n$input-background-focus: $white !default;\n\n/// Background color of disabled text inputs.\n/// @type Color\n$input-background-disabled: $light-gray !default;\n\n/// Border around text inputs.\n/// @type Border\n$input-border: 1px solid $medium-gray !default;\n\n/// Border around focused text inputs.\n/// @type Color\n$input-border-focus: 1px solid $dark-gray !default;\n\n/// Box shadow inside text inputs when not focused.\n/// @type Shadow\n$input-shadow: inset 0 1px 2px rgba($black, 0.1) !default;\n\n/// Box shadow outside text inputs when focused.\n/// @type Shadow\n$input-shadow-focus: 0 0 5px $medium-gray !default;\n\n/// Cursor to use when hovering over a disabled text input.\n/// @type Cursor\n$input-cursor-disabled: default !default;\n\n/// Properties to transition on text inputs.\n/// @type Transition\n$input-transition: box-shadow 0.5s, border-color 0.25s ease-in-out !default;\n\n/// Enables the up/down buttons that Chrome and Firefox add to `<input type='number'>` elements.\n/// @type Boolean\n$input-number-spinners: true !default;\n\n/// Radius for text inputs.\n/// @type Border\n$input-radius: $global-radius !default;\n\n@mixin form-element {\n $height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1));\n\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: $height;\n padding: $form-spacing / 2;\n border: $input-border;\n margin: 0 0 $form-spacing;\n\n font-family: $input-font-family;\n font-size: $input-font-size;\n color: $input-color;\n background-color: $input-background;\n box-shadow: $input-shadow;\n border-radius: $input-radius;\n\n @if has-value($input-transition) {\n transition: $input-transition;\n }\n\n // Focus state\n &:focus {\n border: $input-border-focus;\n background-color: $input-background-focus;\n outline: none;\n box-shadow: $input-shadow-focus;\n\n @if has-value($input-transition) {\n transition: $input-transition;\n }\n }\n}\n\n@mixin foundation-form-text {\n // Text inputs\n #{text-inputs()},\n textarea {\n @include form-element;\n -webkit-appearance: none;\n -moz-appearance: none;\n }\n\n // Text areas\n textarea {\n max-width: 100%;\n\n &[rows] {\n height: auto;\n }\n }\n\n // Disabled/readonly state\n input,\n textarea {\n &:disabled,\n &[readonly] {\n background-color: $input-background-disabled;\n cursor: $input-cursor-disabled;\n }\n }\n\n // Reset styles on button-like inputs\n [type='submit'],\n [type='button'] {\n border-radius: $button-radius;\n -webkit-appearance: none;\n -moz-appearance: none;\n }\n\n // Reset Normalize setting content-box to search elements\n // scss-lint:disable QualifyingElement\n input[type='search'] {\n box-sizing: border-box;\n }\n\n // Number input styles\n [type='number'] {\n @if not $input-number-spinners {\n -moz-appearance: textfield;\n\n [type='number']::-webkit-inner-spin-button,\n [type='number']::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n@mixin foundation-form-checkbox {\n [type='file'],\n [type='checkbox'],\n [type='radio'] {\n margin: 0 0 $form-spacing;\n }\n\n // Styles for input/label siblings\n [type='checkbox'] + label,\n [type='radio'] + label {\n display: inline-block;\n margin-#{$global-left}: $form-spacing * 0.5;\n margin-#{$global-right}: $form-spacing;\n margin-bottom: 0;\n vertical-align: baseline;\n }\n\n // Styles for inputs inside labels\n label > [type='checkbox'],\n label > [type='label'] {\n margin-#{$global-right}: $form-spacing * 0.5;\n }\n\n // Normalize file input width\n [type='file'] {\n width: 100%;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Color for form labels.\n/// @type Color\n$form-label-color: $black !default;\n\n/// Font size for form labels.\n/// @type Number\n$form-label-font-size: rem-calc(14) !default;\n\n/// Font weight for form labels.\n/// @type Keyword\n$form-label-font-weight: $global-weight-normal !default;\n\n/// Line height for form labels. The higher the number, the more space between the label and its input field.\n/// @type Number\n$form-label-line-height: 1.8 !default;\n\n@mixin form-label {\n display: block;\n margin: 0;\n font-size: $form-label-font-size;\n font-weight: $form-label-font-weight;\n line-height: $form-label-line-height;\n color: $form-label-color;\n}\n\n@mixin form-label-middle {\n $input-border-width: get-border-value($input-border, width);\n margin: 0 0 $form-spacing;\n padding: ($form-spacing / 2 + rem-calc($input-border-width)) 0;\n}\n\n@mixin foundation-form-label {\n label {\n @include form-label;\n\n &.middle {\n @include form-label-middle;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Default color for help text.\n/// @type Color\n$helptext-color: #333 !default;\n\n/// Default font size for help text.\n/// @type Number\n$helptext-font-size: rem-calc(13) !default;\n\n/// Default font style for help text.\n/// @type Keyword\n$helptext-font-style: italic !default;\n\n@mixin foundation-form-helptext {\n .help-text {\n $margin-top: ($form-spacing * 0.5) * -1;\n\n margin-top: $margin-top;\n font-size: $helptext-font-size;\n font-style: $helptext-font-style;\n color: $helptext-color;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Color of labels prefixed to an input.\n/// @type Color\n$input-prefix-color: $black !default;\n\n/// Background color of labels prefixed to an input.\n/// @type Color\n$input-prefix-background: $light-gray !default;\n\n/// Border around labels prefixed to an input.\n/// @type Border\n$input-prefix-border: 1px solid $medium-gray !default;\n\n/// Left/right padding of an pre/postfixed input label\n$input-prefix-padding: 1rem !default;\n\n@mixin foundation-form-prepostfix {\n $height: ($input-font-size + $form-spacing * 1.5);\n\n\n .input-group {\n display: table;\n width: 100%;\n margin-bottom: $form-spacing;\n\n > :first-child {\n border-radius: $global-radius 0 0 $global-radius;\n }\n\n > :last-child {\n > * {\n border-radius: 0 $global-radius $global-radius 0;\n }\n }\n }\n\n %input-group-child {\n display: table-cell;\n margin: 0;\n vertical-align: middle;\n }\n\n .input-group-label {\n @extend %input-group-child;\n text-align: center;\n width: 1%;\n height: 100%;\n padding: 0 $input-prefix-padding;\n background: $input-prefix-background;\n color: $input-prefix-color;\n border: $input-prefix-border;\n white-space: nowrap;\n\n @if has-value($input-prefix-border) {\n &:first-child {\n border-#{$global-right}: 0;\n }\n\n &:last-child {\n border-#{$global-left}: 0;\n }\n }\n }\n\n .input-group-field {\n @extend %input-group-child;\n border-radius: 0;\n height: $height;\n }\n\n .input-group-button {\n @extend %input-group-child;\n height: 100%;\n padding-top: 0;\n padding-bottom: 0;\n text-align: center;\n width: 1%;\n\n a,\n input,\n button {\n margin: 0;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Default border around custom fieldsets.\n/// @type Border\n$fieldset-border: 1px solid $medium-gray !default;\n\n/// Default padding inside custom fieldsets.\n/// @type Number\n$fieldset-padding: rem-calc(20) !default;\n\n/// Default margin around custom fieldsets.\n/// @type Number\n$fieldset-margin: rem-calc(18 0) !default;\n\n/// Default padding between the legend text and fieldset border.\n/// @type Number\n$legend-padding: rem-calc(0 3) !default;\n\n@mixin fieldset {\n border: $fieldset-border;\n padding: $fieldset-padding;\n margin: $fieldset-margin;\n\n legend {\n // Covers up the fieldset's border to create artificial padding\n background: $body-background;\n padding: $legend-padding;\n margin: 0;\n margin-#{$global-left}: rem-calc(-3);\n }\n}\n\n@mixin foundation-form-fieldset {\n fieldset {\n border: 0;\n padding: 0;\n margin: 0;\n }\n\n legend {\n margin-bottom: $form-spacing * 0.5;\n max-width: 100%;\n }\n\n .fieldset {\n @include fieldset;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group forms\n////\n\n/// Background color for select menus.\n/// @type Color\n$select-background: $white !default;\n\n/// Color of the dropdown triangle inside select menus. Set to `transparent` to remove it entirely.\n/// @type Color\n$select-triangle-color: #333 !default;\n\n/// Default radius for select menus.\n/// @type Color\n$select-radius: $global-radius !default;\n\n@mixin form-select {\n $height: ($input-font-size + ($form-spacing * 1.5) - rem-calc(1));\n\n height: $height;\n padding: ($form-spacing / 2);\n border: $input-border;\n margin: 0 0 $form-spacing;\n font-size: $input-font-size;\n font-family: $input-font-family;\n line-height: normal;\n color: $input-color;\n background-color: $select-background;\n border-radius: $select-radius;\n -webkit-appearance: none;\n -moz-appearance: none;\n\n @if $select-triangle-color != transparent {\n @include background-triangle($select-triangle-color);\n background-size: 9px 6px;\n background-position: $global-right center;\n background-origin: content-box;\n background-repeat: no-repeat;\n }\n\n // Disabled state\n &:disabled {\n background-color: $input-background-disabled;\n cursor: $input-cursor-disabled;\n }\n\n // Hide the dropdown arrow shown in newer IE versions\n &::-ms-expand {\n display: none;\n }\n\n &[multiple] {\n height: auto;\n }\n}\n\n@mixin foundation-form-select {\n select {\n @include form-select;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group abide\n////\n\n/// Sets if error styles should be added to inputs.\n/// @type Boolean\n$abide-inputs: true !default;\n\n/// Sets if error styles should be added to labels.\n/// @type Boolean\n$abide-labels: true !default;\n\n/// Background color to use for invalid text inputs.\n/// @type Color\n$input-background-invalid: $alert-color !default;\n\n/// Color to use for labels of invalid inputs.\n/// @type Color\n$form-label-color-invalid: $alert-color !default;\n\n/// Default font color for form error text.\n/// @type Color\n$input-error-color: $alert-color !default;\n\n/// Default font size for form error text.\n/// @type Number\n$input-error-font-size: rem-calc(12) !default;\n\n/// Default font weight for form error text.\n/// @type Keyword\n$input-error-font-weight: $global-weight-bold !default;\n\n/// Styles the background and border of an input field to have an error state.\n///\n/// @param {Color} $background [$alert-color] - Color to use for the background and border.\n@mixin form-input-error(\n $background: $input-background-invalid\n) {\n &:not(:focus) {\n background-color: rgba($background, 0.1);\n border-color: $background;\n }\n}\n\n/// Adds error styles to a form element, using the values in the settings file.\n@mixin form-error {\n display: none;\n margin-top: $form-spacing * -0.5;\n margin-bottom: $form-spacing;\n font-size: $input-error-font-size;\n font-weight: $input-error-font-weight;\n color: $input-error-color;\n}\n\n@mixin foundation-form-error {\n @if $abide-inputs {\n // Error class for invalid inputs\n .is-invalid-input {\n @include form-input-error;\n }\n }\n\n @if $abide-labels {\n // Error class for labels of invalid outputs\n .is-invalid-label {\n color: $form-label-color-invalid;\n }\n }\n\n // Form error element\n .form-error {\n @include form-error;\n\n &.is-visible {\n display: block;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group float\n////\n\n@mixin foundation-float-classes {\n .float-left {\n float: left !important;\n }\n\n .float-right {\n float: right !important;\n }\n\n .float-center {\n display: block;\n margin-left: auto;\n margin-right: auto;\n }\n\n .clearfix {\n @include clearfix;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group accordion\n////\n\n/// Default background color of an accordion group.\n/// @type Color\n$accordion-background: $white !default;\n\n/// If `true`, adds plus and minus icons to the side of each accordion title.\n/// @type Boolean\n$accordion-plusminus: true !default;\n\n/// Default text color for items in a Menu.\n/// @type Color\n$accordion-item-color: foreground($accordion-background, $primary-color) !default;\n\n/// Default background color on hover for items in a Menu.\n/// @type Color\n$accordion-item-background-hover: $light-gray !default;\n\n/// Default padding of an accordion item.\n/// @type Number | List\n$accordion-item-padding: 1.25rem 1rem !default;\n\n/// Default background color of tab content.\n/// @type Color\n$accordion-content-background: $white !default;\n\n/// Default border color of tab content.\n/// @type Color\n$accordion-content-border: 1px solid $light-gray !default;\n\n/// Default text color of tab content.\n/// @type Color\n$accordion-content-color: foreground($accordion-background, $primary-color) !default;\n\n/// Default padding for tab content.\n/// @type Number | List\n$accordion-content-padding: 1rem !default;\n\n/// Adds styles for an accordion container. Apply this to the same element that gets `data-accordion`.\n@mixin accordion-container {\n list-style-type: none;\n background: $accordion-background;\n border: $accordion-content-border;\n border-bottom: 0;\n border-radius: $global-radius;\n margin-#{$global-left}: 0;\n}\n\n/// Adds styles for the title of an accordion item. Apply this to the link within an accordion item.\n@mixin accordion-title {\n display: block;\n padding: $accordion-item-padding;\n line-height: 1;\n font-size: rem-calc(12);\n color: $accordion-item-color;\n position: relative;\n border-bottom: $accordion-content-border;\n\n &:hover,\n &:focus {\n background-color: $accordion-item-background-hover;\n }\n\n @if $accordion-plusminus {\n &::before {\n content: '+';\n position: absolute;\n #{$global-right}: 1rem;\n top: 50%;\n margin-top: -0.5rem;\n }\n\n .is-active > &::before {\n content: '–';\n }\n }\n}\n\n/// Adds styles for accordion content. Apply this to the content pane below an accordion item's title.\n@mixin accordion-content {\n padding: $accordion-content-padding;\n display: none;\n border-bottom: $accordion-content-border;\n background-color: $accordion-content-background;\n}\n\n@mixin foundation-accordion {\n .accordion {\n @include accordion-container;\n }\n\n .accordion-item {\n // This class doesn't need styles!\n }\n\n .accordion-title {\n @include accordion-title;\n }\n\n .accordion-content {\n @include accordion-content;\n }\n}\n","////\n/// @group accordion-menu\n////\n\n/// Sets if accordion menus have the default arrow styles.\n/// @type Boolean\n$accordionmenu-arrows: true !default;\n\n/// Sets accordion menu arrow color if arrow is used.\n/// @type Color\n$accordionmenu-arrow-color: $primary-color !default;\n\n@mixin foundation-accordion-menu {\n @if $accordionmenu-arrows {\n .is-accordion-submenu-parent > a {\n position: relative;\n\n &::after {\n @include css-triangle(6px, $accordionmenu-arrow-color, down);\n position: absolute;\n top: 50%;\n margin-top: -4px;\n right: 1rem;\n }\n }\n\n .is-accordion-submenu-parent[aria-expanded='true'] > a::after {\n transform-origin: 50% 50%;\n transform: scaleY(-1);\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group badge\n////\n\n/// Default background color for badges.\n/// @type Color\n$badge-background: $primary-color !default;\n\n/// Default text color for badges.\n/// @type Color\n$badge-color: foreground($badge-background) !default;\n\n/// Default padding inside badges.\n/// @type Number\n$badge-padding: 0.3em !default;\n\n/// Minimum width of a badge.\n/// @type Number\n$badge-minwidth: 2.1em !default;\n\n/// Default font size for badges.\n/// @type Number\n$badge-font-size: 0.6rem !default;\n\n/// Generates the base styles for a badge.\n@mixin badge {\n display: inline-block;\n padding: $badge-padding;\n min-width: $badge-minwidth;\n font-size: $badge-font-size;\n text-align: center;\n border-radius: 50%;\n}\n\n@mixin foundation-badge {\n .badge {\n @include badge;\n\n background: $badge-background;\n color: $badge-color;\n\n @each $name, $color in $foundation-colors {\n @if $name != primary {\n &.#{$name} {\n background: $color;\n color: foreground($color);\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group breadcrumbs\n////\n\n/// Margin around a breadcrumbs container.\n/// @type Number\n$breadcrumbs-margin: 0 0 $global-margin 0 !default;\n\n/// Font size of breadcrumb links.\n/// @type Number\n$breadcrumbs-item-font-size: rem-calc(11) !default;\n\n/// Color of breadcrumb links.\n/// @type Color\n$breadcrumbs-item-color: $primary-color !default;\n\n/// Color of the active breadcrumb link.\n/// @type Color\n$breadcrumbs-item-color-current: $black !default;\n\n/// Opacity of disabled breadcrumb links.\n/// @type Number\n$breadcrumbs-item-color-disabled: $medium-gray !default;\n\n/// Margin between breadcrumb items.\n/// @type Number\n$breadcrumbs-item-margin: 0.75rem !default;\n\n/// If `true`, makes breadcrumb links uppercase.\n/// @type Boolean\n$breadcrumbs-item-uppercase: true !default;\n\n/// If `true`, adds a slash between breadcrumb links.\n/// @type Boolean\n$breadcrumbs-item-slash: true !default;\n\n/// Adds styles for a breadcrumbs container, along with the styles for the `<li>` and `<a>` elements inside of it.\n@mixin breadcrumbs-container {\n @include clearfix;\n list-style: none;\n margin: $breadcrumbs-margin;\n\n // Item wrapper\n li {\n float: #{$global-left};\n color: $breadcrumbs-item-color-current;\n font-size: $breadcrumbs-item-font-size;\n cursor: default;\n\n @if $breadcrumbs-item-uppercase {\n text-transform: uppercase;\n }\n\n @if $breadcrumbs-item-slash {\n // Need to escape the backslash\n $slash: if($global-text-direction == 'ltr', '/', '\\\\');\n\n &:not(:last-child)::after {\n color: $medium-gray;\n content: $slash;\n margin: 0 $breadcrumbs-item-margin;\n position: relative;\n top: 1px;\n opacity: 1;\n }\n }\n @else {\n margin-#{$global-right}: $breadcrumbs-item-margin;\n }\n }\n\n // Page links\n a {\n color: $breadcrumbs-item-color;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n\n@mixin foundation-breadcrumbs {\n .breadcrumbs {\n @include breadcrumbs-container;\n\n .disabled {\n color: $breadcrumbs-item-color-disabled;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group button-group\n////\n\n/// Margin for button groups.\n/// @type Number\n$buttongroup-margin: 1rem !default;\n\n/// Margin between buttons in a button group.\n/// @type Border\n$buttongroup-spacing: 1px !default;\n\n/// Selector for the buttons inside a button group.\n/// @type String\n$buttongroup-child-selector: '.button' !default;\n\n/// Maximum number of buttons that can be in an even-width button group.\n/// @type Number\n$buttongroup-expand-max: 6 !default;\n\n/// Add styles for a button group container.\n/// @param {String} $child-selector [$buttongroup-child-selector] - Selector for the buttons inside a button group.\n@mixin button-group(\n $child-selector: $buttongroup-child-selector\n) {\n @include clearfix;\n margin-bottom: $buttongroup-margin;\n font-size: map-get($button-sizes, default);\n\n #{$child-selector} {\n float: #{$global-left};\n margin: 0;\n font-size: inherit;\n\n &:not(:last-child) {\n border-#{$global-right}: $buttongroup-spacing solid $body-background;\n }\n }\n}\n\n/// Creates a full-width button group, making each button equal width.\n/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside a button group.\n@mixin button-group-expand(\n $selector: $buttongroup-child-selector,\n $count: null\n) {\n @if $count != null {\n @warn 'button-group-expand(): the $count property is no longer needed. This parameter will be removed in Foundation 6.2.';\n }\n\n display: table;\n table-layout: fixed;\n width: 100%;\n\n &::before,\n &::after {\n display: none;\n }\n\n #{$selector} {\n display: table-cell;\n float: none;\n }\n}\n\n/// Stacks the buttons in a button group.\n/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group.\n@mixin button-group-stack(\n $selector: $buttongroup-child-selector\n) {\n #{$selector} {\n width: 100%;\n\n &:not(:last-child) {\n border-#{$global-right}: $buttongroup-spacing solid;\n }\n }\n}\n\n/// Un-stacks the buttons in a button group.\n/// @param {String} $selector [$buttongroup-child-selector] - Selector for the buttons inside the button group.\n@mixin button-group-unstack(\n $selector: $buttongroup-child-selector\n) {\n #{$selector} {\n width: auto;\n\n &:not(:last-child) {\n border-#{$global-right}: $buttongroup-spacing solid $body-background;\n }\n }\n}\n\n@mixin foundation-button-group {\n .button-group {\n @include button-group;\n\n // Sizes\n &.tiny { font-size: map-get($button-sizes, tiny); }\n &.small { font-size: map-get($button-sizes, small); }\n &.large { font-size: map-get($button-sizes, large); }\n &.expanded { @include button-group-expand; }\n\n // Colors\n @each $name, $color in $foundation-colors {\n @if $button-fill != hollow {\n &.#{$name} #{$buttongroup-child-selector} {\n @include button-style($color, auto, auto);\n }\n }\n @else {\n &.#{$name} #{$buttongroup-child-selector} {\n @include button-hollow;\n @include button-hollow-style($color);\n }\n }\n }\n\n &.stacked,\n &.stacked-for-small {\n @include button-group-stack;\n }\n\n &.stacked-for-small {\n @include breakpoint(medium) {\n @include button-group-unstack;\n }\n }\n\n &.stacked-for-small.expanded {\n @include breakpoint(small only) {\n display: block;\n\n #{$buttongroup-child-selector} {\n display: block;\n border-right: 0;\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group callout\n////\n\n/// Defualt background color.\n/// @type Color\n$callout-background: $white !default;\n\n/// Default fade value for callout backgrounds.\n/// @type Number\n$callout-background-fade: 85% !default;\n\n/// Defualt border style for callouts.\n/// @type List\n$callout-border: 1px solid rgba($black, 0.25) !default;\n\n/// Default bottom margin for callouts.\n/// @type Number\n$callout-margin: 0 0 1rem 0 !default;\n\n/// Default inner padding for callouts.\n/// @type Number\n$callout-padding: 1rem !default;\n\n/// Default font color for callouts.\n/// @type Color\n$callout-font-color: $body-font-color !default;\n\n/// Default font color for callouts, if the callout has a dark background.\n/// @type Color\n$callout-font-color-alt: $body-background !default;\n\n/// Default border radius for callouts.\n/// @type Color\n$callout-radius: $global-radius !default;\n\n/// Amount to tint links used within colored panels. Set to `false` to disable this feature.\n/// @type Number | Boolean\n$callout-link-tint: 30% !default;\n\n/// Adds basic styles for a callout, including padding and margin.\n@mixin callout-base() {\n margin: $callout-margin;\n padding: $callout-padding;\n border: $callout-border;\n border-radius: $callout-radius;\n position: relative;\n color: $callout-font-color;\n\n // Respect the padding, fool.\n > :first-child {\n margin-top: 0;\n }\n\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n/// Generate quick styles for a callout using a single color as a baseline.\n/// @param {Color} $color [$callout-background] - Color to use.\n@mixin callout-style($color: $callout-background) {\n $background: scale-color($color, $lightness: $callout-background-fade);\n\n background-color: $background;\n}\n\n@mixin callout-size($padding) {\n padding-top: $padding;\n padding-right: $padding;\n padding-bottom: $padding;\n padding-left: $padding;\n}\n\n\n/// Adds styles for a callout.\n/// @param {Color} $color [$callout-background] - Color to use.\n@mixin callout($color: $callout-background) {\n @include callout-base;\n @include callout-style($color);\n}\n\n@mixin foundation-callout {\n .callout {\n @include callout;\n\n @each $name, $color in $foundation-colors {\n &.#{$name} {\n @include callout-style($color);\n }\n }\n\n &.small {\n @include callout-size(0.5rem);\n }\n\n &.large {\n @include callout-size(3rem);\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group close-button\n////\n\n/// Default position of the close button. The first value should be `right` or `left`, and the second value should be `top` or `bottom`.\n/// @type List\n$closebutton-position: right top !default;\n\n/// Right (or left) offset for a close button.\n/// @type Number\n$closebutton-offset-horizontal: 1rem !default;\n\n/// Top (or bottom) offset for a close button.\n/// @type Number\n$closebutton-offset-vertical: 0.5rem !default;\n\n/// Default font size of the close button.\n/// @type Number\n$closebutton-size: 2em !default;\n\n/// The line-height of the close button. It affects the spacing of the element.\n/// @type Number\n$closebutton-lineheight: 1 !default;\n\n/// Default color of the close button.\n/// @type Color\n$closebutton-color: $dark-gray !default;\n\n/// Default color of the close button when being hovered on.\n/// @type Color\n$closebutton-color-hover: $black !default;\n\n/// Adds styles for a close button, using the styles in the settings variables.\n@mixin close-button {\n $x: nth($closebutton-position, 1);\n $y: nth($closebutton-position, 2);\n\n @include disable-mouse-outline;\n position: absolute;\n color: $closebutton-color;\n #{$x}: $closebutton-offset-horizontal;\n #{$y}: $closebutton-offset-vertical;\n font-size: $closebutton-size;\n line-height: $closebutton-lineheight;\n cursor: pointer;\n\n &:hover,\n &:focus {\n color: $closebutton-color-hover;\n }\n}\n\n@mixin foundation-close-button {\n .close-button {\n @include close-button;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group drilldown\n////\n\n/// Transition property to use for animating menus.\n/// @type Transition\n$drilldown-transition: transform 0.15s linear !default;\n\n/// Adds arrows to drilldown items with submenus, as well as the back button.\n/// @type Boolean\n$drilldown-arrows: true !default;\n\n/// Sets drilldown arrow color if arrow is used.\n/// @type Color\n$drilldown-arrow-color: $primary-color !default;\n\n/// Background color for drilldown submenus.\n/// @type Color\n$drilldown-background: $white !default;\n\n@mixin foundation-drilldown-menu {\n // Applied to the Menu container\n .is-drilldown {\n position: relative;\n overflow: hidden;\n }\n\n // Applied to nested <ul>s\n .is-drilldown-submenu {\n position: absolute;\n top: 0;\n #{$global-left}: 100%;\n z-index: -1;\n height: 100%;\n width: 100%;\n background: $drilldown-background;\n transition: $drilldown-transition;\n\n &.is-active {\n z-index: 1;\n display: block;\n transform: translateX(if($global-text-direction == ltr, -100%, 100%));\n }\n\n &.is-closing {\n transform: translateX(if($global-text-direction == ltr, 100%, -100%));\n }\n }\n\n @if $drilldown-arrows {\n .is-drilldown-submenu-parent > a {\n position: relative;\n\n &::after {\n @include css-triangle(6px, $drilldown-arrow-color, $global-right);\n position: absolute;\n top: 50%;\n margin-top: -6px;\n #{$global-right}: 1rem;\n }\n }\n\n .js-drilldown-back > a::before {\n @include css-triangle(6px, $drilldown-arrow-color, $global-left);\n border-#{$global-left}-width: 0;\n display: inline-block;\n vertical-align: middle;\n margin-#{$global-right}: 0.75rem; // Creates space between the arrow and the text\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group dropdown\n////\n\n/// Padding for dropdown panes.\n/// @type List\n$dropdown-padding: 1rem !default;\n\n/// Border for dropdown panes.\n/// @type List\n$dropdown-border: 1px solid $medium-gray !default;\n\n/// Font size for dropdown panes.\n/// @type List\n$dropdown-font-size: 1rem !default;\n\n/// Width for dropdown panes.\n/// @type Number\n$dropdown-width: 300px !default;\n\n/// Border radius dropdown panes.\n/// @type Number\n$dropdown-radius: $global-radius !default;\n\n/// Sizes for dropdown panes. Each size is a CSS class you can apply.\n/// @type Map\n$dropdown-sizes: (\n tiny: 100px,\n small: 200px,\n large: 400px,\n) !default;\n\n/// Applies styles for a basic dropdown.\n@mixin dropdown-container {\n background-color: $body-background;\n border: $dropdown-border;\n border-radius: $dropdown-radius;\n display: block;\n font-size: $dropdown-font-size;\n padding: $dropdown-padding;\n position: absolute;\n visibility: hidden;\n width: $dropdown-width;\n z-index: 10;\n\n &.is-open {\n visibility: visible;\n }\n}\n\n@mixin foundation-dropdown {\n .dropdown-pane {\n @include dropdown-container;\n }\n\n @each $name, $size in $dropdown-sizes {\n .dropdown-pane.#{$name} {\n width: $size;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group dropdown-menu\n////\n\n/// Enables arrows for items with dropdown menus.\n/// @type Boolean\n$dropdownmenu-arrows: true !default;\n\n/// Sets dropdown menu arrow color if arrow is used.\n/// @type Color\n$dropdownmenu-arrow-color: $anchor-color !default;\n\n/// Minimum width of dropdown sub-menus.\n/// @type Length\n$dropdownmenu-min-width: 200px !default;\n\n/// Background color for dropdowns.\n/// @type Color\n$dropdownmenu-background: $white !default;\n\n/// Border for dropdown sub-menus.\n/// @type List\n$dropdownmenu-border: 1px solid $medium-gray !default;\n\n// Border width for dropdown sub-menus.\n// Used to adjust top margin of a sub-menu if a border is used.\n// @type Length\n$dropdownmenu-border-width: nth($dropdownmenu-border, 1);\n\n@mixin foundation-dropdown-menu {\n .dropdown.menu {\n a {\n @include disable-mouse-outline;\n }\n &:not(.vertical) {\n\n }\n .no-js & ul {\n display: none;\n }\n\n &:not(.vertical) {\n .is-dropdown-submenu {\n &.first-sub {\n top: 100%;\n #{$global-left}: 0;\n #{$global-right}: auto;\n }\n }\n }\n\n &.align-right {\n .is-dropdown-submenu.first-sub {\n top: 100%;\n left: auto;\n right: 0;\n }\n }\n }\n\n .is-dropdown-menu.vertical {\n width: 100px;\n\n &.align-right {\n float: right;\n }\n\n > li .is-dropdown-submenu {\n top: 0;\n left: 100%;\n }\n }\n\n .is-dropdown-submenu-parent {\n position: relative;\n\n a::after {\n float: $global-right;\n margin-top: 3px;\n margin-#{$global-left}: 10px;\n }\n\n @if $dropdownmenu-arrows {\n &.is-down-arrow a {\n padding-#{$global-right}: 1.5rem;\n position: relative;\n }\n\n &.is-down-arrow > a::after {\n @include css-triangle(5px, $dropdownmenu-arrow-color, down);\n position: absolute;\n top: rem-calc(2px) + rem-calc(get-side($menu-item-padding, top));\n #{$global-right}: 5px;\n }\n\n &.is-left-arrow > a::after {\n @include css-triangle(5px, $dropdownmenu-arrow-color, left);\n float: left;\n margin-left: 0;\n margin-right: 10px;\n }\n\n &.is-right-arrow > a::after {\n @include css-triangle(5px, $dropdownmenu-arrow-color, right);\n }\n }\n\n &.is-left-arrow.opens-inner .is-dropdown-submenu {\n right: 0;\n left: auto;\n }\n\n &.is-right-arrow.opens-inner .is-dropdown-submenu {\n left: 0;\n right: auto;\n }\n\n &.opens-inner .is-dropdown-submenu {\n top: 100%;\n }\n\n &.opens-left .is-dropdown-submenu {\n left: auto;\n right: 100%;\n }\n }\n\n\n .is-dropdown-submenu {\n display: none;\n position: absolute;\n top: 0;\n #{$global-left}: 100%;\n min-width: $dropdownmenu-min-width;\n z-index: 1;\n background: $dropdownmenu-background;\n border: $dropdownmenu-border;\n\n @if (type-of($dropdownmenu-border-width) == 'number') {\n .is-dropdown-submenu {\n margin-top: (-$dropdownmenu-border-width);\n }\n }\n\n > li {\n width: 100%;\n }\n\n\n // [TODO] Cut back specificity\n // scss-lint:disable SelectorDepth\n &:not(.js-dropdown-nohover) > .is-dropdown-submenu-parent:hover > &,\n &.js-dropdown-active {\n display: block;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group flex-video\n////\n\n/// Margin below a flex video container.\n/// @type Number\n$flexvideo-margin-bottom: rem-calc(16) !default;\n\n/// Padding used to create a 4:3 aspect ratio.\n/// @type Number\n$flexvideo-ratio: 4 by 3 !default;\n\n/// Padding used to create a 16:9 aspect ratio.\n/// @type Number\n$flexvideo-ratio-widescreen: 16 by 9 !default;\n\n/// Creates a percentage height that can be used as padding in a flex video container.\n/// @param {List} $ratio - Ratio to use to calculate the height, formatted as `x by y`.\n/// @return {Number} A percentage value that can be used as the `padding-bottom` parameter of a flex video container.\n@function flex-video($ratio) {\n $w: nth($ratio, 1);\n $h: nth($ratio, 3);\n @return $h / $w * 100%;\n}\n\n/// Creates a flex video container.\n/// @param {List} $ratio [$flexvideo-ratio] - Ratio to use for the container, formatted as `x by y`.\n@mixin flex-video($ratio: $flexvideo-ratio) {\n position: relative;\n height: 0;\n padding-bottom: flex-video($ratio);\n margin-bottom: $flexvideo-margin-bottom;\n overflow: hidden;\n\n iframe,\n object,\n embed,\n video {\n position: absolute;\n top: 0;\n #{$global-left}: 0;\n width: 100%;\n height: 100%;\n }\n}\n\n@mixin foundation-flex-video {\n .flex-video {\n @include flex-video;\n\n &.widescreen {\n padding-bottom: flex-video($flexvideo-ratio-widescreen);\n }\n\n &.vimeo {\n padding-top: 0;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group label\n////\n\n/// Default background color for labels.\n/// @type Color\n$label-background: $primary-color !default;\n\n/// Default text color for labels.\n/// @type Color\n$label-color: foreground($label-background) !default;\n\n/// Default font size for labels.\n/// @type Number\n$label-font-size: 0.8rem !default;\n\n/// Default padding inside labels.\n/// @type Number\n$label-padding: 0.33333rem 0.5rem !default;\n\n/// Default radius of labels.\n/// @type Number\n$label-radius: $global-radius !default;\n\n/// Generates base styles for a label.\n@mixin label {\n display: inline-block;\n padding: $label-padding;\n font-size: $label-font-size;\n line-height: 1;\n white-space: nowrap;\n cursor: default;\n border-radius: $label-radius;\n}\n\n@mixin foundation-label {\n .label {\n @include label;\n\n background: $label-background;\n color: $label-color;\n\n @each $name, $color in $foundation-colors {\n @if $name != primary {\n &.#{$name} {\n background: $color;\n color: foreground($color);\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group media-object\n////\n\n/// Bottom margin of a media object.\n/// @type Number\n$mediaobject-margin-bottom: $global-margin !default;\n\n/// Left and right padding on sections within a media object.\n/// @type Number\n$mediaobject-section-padding: $global-padding !default;\n\n/// With of images within a media object, when the object is stacked vertically. Set to 'auto' to use the image's natural width.\n/// @type Number\n$mediaobject-image-width-stacked: 100% !default;\n\n/// Adds styles for a media object container.\n@mixin media-object-container {\n margin-bottom: $mediaobject-margin-bottom;\n display: block;\n}\n\n/// Adds styles for sections within a media object.\n/// @param {Number} $padding [$mediaobject-section-padding] - Padding between sections.\n@mixin media-object-section($padding: $mediaobject-section-padding) {\n display: table-cell;\n vertical-align: top;\n\n &:first-child {\n padding-#{$global-right}: $padding;\n }\n\n &:last-child:not(:nth-child(2)) {\n padding-#{$global-left}: $padding;\n }\n}\n\n/// Adds styles to stack sections of a media object. Apply this to the section elements, not the container.\n@mixin media-object-stack {\n display: block;\n padding: 0;\n padding-bottom: $mediaobject-section-padding;\n\n img {\n width: $mediaobject-image-width-stacked;\n }\n}\n\n@mixin foundation-media-object {\n .media-object {\n @include media-object-container;\n\n img {\n max-width: none;\n }\n\n &.stack-for-small .media-object-section {\n @include breakpoint(small only) {\n @include media-object-stack;\n }\n }\n }\n\n .media-object-section {\n @include media-object-section;\n\n &.middle { vertical-align: middle; }\n &.bottom { vertical-align: bottom; }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group menu\n////\n\n/// Margin of a menu.\n/// @type Number\n$menu-margin: 0 !default;\n\n/// Left-hand margin of a nested menu.\n/// @type Number\n$menu-margin-nested: 1rem !default;\n\n/// Padding for items in a menu.\n/// @type Number\n$menu-item-padding: 0.7rem 1rem !default;\n\n/// Spacing between an icon and text in a menu item.\n/// @type Number\n$menu-icon-spacing: 0.25rem !default;\n\n/// Maximum number of `expand-n` classes to include in the CSS.\n/// @type Number\n$menu-expand-max: 6 !default;\n\n/// Creates the base styles for a Menu.\n@mixin menu-base {\n margin: $menu-margin;\n list-style-type: none;\n\n // List items are table cell to allow for vertical alignment\n > li {\n @include disable-mouse-outline;\n display: table-cell;\n vertical-align: middle;\n }\n\n // Reset line height to make the height of the overall item easier to calculate\n > li > a {\n display: block;\n padding: $menu-item-padding;\n line-height: 1;\n }\n\n // Reset styles of inner elements\n input,\n a,\n button {\n margin-bottom: 0;\n }\n}\n\n/// Expands the items of a Menu, so each item is the same width.\n@mixin menu-expand {\n display: table;\n table-layout: fixed;\n width: 100%;\n}\n\n/// Sets the direction of a Menu.\n/// @param {Keyword} $dir [horizontal] - Direction of the Menu. Can be `horizontal` or `vertical`.\n@mixin menu-direction($dir: horizontal) {\n @if $dir == horizontal {\n > li {\n display: table-cell;\n }\n }\n @else if $dir == vertical {\n > li {\n display: block;\n }\n }\n @else {\n @warn 'The direction used for menu-direction() must be horizontal or vertical.';\n }\n}\n\n/// Creates a simple Menu, which has no padding or hover state.\n@mixin menu-simple {\n li {\n line-height: 1;\n display: inline-block;\n margin-#{$global-right}: get-side($menu-item-padding, $global-right);\n }\n\n a {\n padding: 0;\n }\n}\n\n/// Adds styles for a nested Menu, by adding `margin-left` to the menu.\n/// @param {Keyword|Number} $padding [auto] - Length of the margin.\n@mixin menu-nested($margin: $menu-margin-nested) {\n margin-#{$global-left}: $margin;\n}\n\n/// Adds support for icons to Menu items.\n/// @param {Keyword} $position [side] - Positioning for icons. Can be `side` (left, or right on RTL) or `top`.\n/// @param {Boolean} $base [true] - Set to `false` to prevent the shared CSS between side- and top-aligned icons from being printed. Set this to `false` if you're calling the mixin multiple times on the same element.\n@mixin menu-icons($position: side, $base: true) {\n @if $base {\n > li > a {\n > img,\n > i {\n vertical-align: middle;\n }\n\n > span {\n vertical-align: middle;\n }\n }\n }\n\n @if $position == side {\n > li > a {\n > img,\n > i {\n display: inline-block;\n margin-#{$global-right}: $menu-icon-spacing;\n }\n }\n }\n @else if $position == top {\n > li > a {\n text-align: center;\n\n > img,\n > i {\n display: block;\n margin: 0 auto $menu-icon-spacing;\n }\n }\n }\n}\n\n@mixin menu-text {\n font-weight: bold;\n color: inherit;\n line-height: 1;\n padding-top: 0;\n padding-bottom: 0;\n padding: $menu-item-padding;\n}\n\n@mixin foundation-menu {\n .menu {\n @include menu-base;\n @include menu-icons;\n\n // Orientation\n @include menu-direction(horizontal);\n\n &.vertical {\n @include menu-direction(vertical);\n }\n\n @each $size in $breakpoint-classes {\n @if $size != small {\n @include breakpoint($size) {\n &.#{$size}-horizontal {\n @include menu-direction(horizontal);\n }\n\n &.#{$size}-vertical {\n @include menu-direction(vertical);\n }\n }\n }\n }\n\n // Simple\n &.simple {\n @include menu-simple;\n }\n\n // Align right\n &.align-#{$global-right} {\n > li {\n float: $global-right;\n }\n }\n\n // Even-width\n &.expanded {\n @include menu-expand;\n\n > li:first-child:last-child {\n width: 100%;\n }\n }\n\n // Vertical icons\n &.icon-top {\n @include menu-icons(top, $base: false);\n }\n\n // Nesting\n &.nested {\n @include menu-nested;\n }\n }\n\n .menu-text {\n @include menu-text;\n }\n\n // Prevent FOUC when using the Responsive Menu plugin\n .no-js [data-responsive-menu] ul {\n display: none;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group off-canvas\n////\n\n/// Width of an off-canvas menu.\n/// @type Number\n$offcanvas-size: 250px !default;\n\n/// Background color of an off-canvas menu.\n/// @type Color\n$offcanvas-background: $light-gray !default;\n\n/// Z-index of an off-canvas menu.\n/// @type Number\n$offcanvas-zindex: -1 !default;\n\n/// Length of the animation on an off-canvas menu.\n/// @type Number\n$offcanvas-transition-length: 0.5s !default;\n\n/// Timing function of the animation on an off-canvas menu.\n/// @type Keyword\n$offcanvas-transition-timing: ease !default;\n\n/// If `true`, a revealed off-canvas will be fixed-position, and scroll with the screen.\n$offcanvas-fixed-reveal: true !default;\n\n/// Background color for the overlay that appears when an off-canvas menu is open.\n/// @type Color\n$offcanvas-exit-background: rgba($white, 0.25) !default;\n\n/// CSS class used for the main content area. The off-canvas mixins use this to target the page body.\n$maincontent-class: 'off-canvas-content' !default;\n\n/// Box shadow to place under the main content area. This shadow overlaps the off-canvas menus.\n/// @type Shadow\n$maincontent-shadow: 0 0 10px rgba($black, 0.5) !default;\n\n/// Adds baseline styles for off-canvas. This CSS is required to make the other pieces work.\n@mixin off-canvas-basics {\n // Extra properties needed on <html> and <body> to make off-canvas work\n html,\n body {\n height: 100%;\n }\n\n .off-canvas-wrapper {\n width: 100%;\n overflow-x: hidden;\n position: relative;\n backface-visibility: hidden;\n -webkit-overflow-scrolling: auto;\n }\n\n .off-canvas-wrapper-inner {\n @include clearfix;\n position: relative;\n width: 100%;\n transition: transform $offcanvas-transition-length $offcanvas-transition-timing;\n }\n\n // Container for page content\n .off-canvas-content,\n .#{$maincontent-class} {\n min-height: 100%;\n background: $body-background;\n transition: transform $offcanvas-transition-length $offcanvas-transition-timing;\n backface-visibility: hidden;\n z-index: 1;\n\n @if has-value($maincontent-shadow) {\n box-shadow: $maincontent-shadow;\n }\n }\n\n // Click-to-exit overlay (generated by JavaScript)\n .js-off-canvas-exit {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: $offcanvas-exit-background;\n cursor: pointer;\n transition: background $offcanvas-transition-length $offcanvas-transition-timing;\n }\n}\n\n/// Adds basic styles for an off-canvas menu.\n@mixin off-canvas-base {\n @include disable-mouse-outline;\n position: absolute;\n background: $offcanvas-background;\n z-index: $offcanvas-zindex;\n max-height: 100%;\n overflow-y: auto;\n transform: translateX(0);\n}\n\n@mixin off-canvas-position(\n $position: left,\n $size: $offcanvas-size,\n $fixed: false\n) {\n @if $position == left {\n left: -$size;\n top: 0;\n width: $size;\n }\n @else if $position == right {\n right: -$size;\n top: 0;\n width: $size;\n }\n\n // Generates an open state class that matches the width of the menu\n @at-root {\n .is-open-#{$position} {\n @if $position == left {\n transform: translateX($size);\n }\n @else if $position == right {\n transform: translateX(-$size);\n }\n }\n }\n}\n\n/// Adds styles that reveal an off-canvas menu.\n/// @param {Keyword} $position [left] - Position of the off-canvas menu being revealed.\n@mixin off-canvas-reveal(\n $position: left\n) {\n #{$position}: 0;\n z-index: auto;\n\n @if $offcanvas-fixed-reveal {\n position: fixed;\n }\n\n & ~ .#{$maincontent-class} {\n margin-#{$position}: $offcanvas-size;\n }\n}\n\n@mixin foundation-off-canvas {\n @include off-canvas-basics;\n\n // Off-canvas container\n .off-canvas {\n @include off-canvas-base;\n\n &.position-left { @include off-canvas-position(left); }\n &.position-right { @include off-canvas-position(right); }\n }\n\n // Reveal off-canvas menu on larger screens\n @each $name, $value in $breakpoint-classes {\n @if $name != small {\n @include breakpoint($name) {\n .position-left.reveal-for-#{$name} {\n @include off-canvas-reveal(left);\n }\n\n .position-right.reveal-for-#{$name} {\n @include off-canvas-reveal(right);\n }\n }\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group orbit\n////\n\n/// Default color for Orbit's bullets.\n/// @type Color\n$orbit-bullet-background: $medium-gray !default;\n\n/// Default active color for Orbit's bullets.\n/// @type Color\n$orbit-bullet-background-active: $dark-gray !default;\n\n/// Default diameter for Orbit's bullets.\n/// @type Number\n$orbit-bullet-diameter: 1.2rem !default;\n\n/// Default margin between Orbit's bullets.\n/// @type Number\n$orbit-bullet-margin: 0.1rem !default;\n\n/// Default distance from slide region for Orbit's bullets.\n/// @type Number\n$orbit-bullet-margin-top: 0.8rem !default;\n\n/// Default bottom margin from Orbit's bullets to whatever content may lurk below it.\n/// @type Number\n$orbit-bullet-margin-bottom: 0.8rem !default;\n\n/// Default background color for Orbit's caption.\n/// @type Color\n$orbit-caption-background: rgba($black, 0.5) !default;\n\n/// Default padding for Orbit's caption.\n/// @type Number\n$orbit-caption-padding: 1rem !default;\n\n/// Default background color for Orbit's controls when hovered.\n/// @type Color\n$orbit-control-background-hover: rgba($black, 0.5) !default;\n\n/// Default padding for Orbit's controls.\n/// @type Number\n$orbit-control-padding: 1rem !default;\n\n/// Default z-index for Orbit's controls.\n/// @type Number\n$orbit-control-zindex: 10 !default;\n\n/// Adds styles for the outer Orbit wrapper. These styles are used on the `.orbit` class.\n@mixin orbit-wrapper {\n position: relative;\n}\n\n/// Adds styles for the inner Orbit slide container. These styles are used on the `.orbit-container` class.\n@mixin orbit-container {\n position: relative;\n margin: 0;\n overflow: hidden;\n list-style: none;\n}\n\n/// Adds styles for the individual slides of an Orbit slider. These styles are used on the `.orbit-slide` class.\n@mixin orbit-slide {\n width: 100%;\n max-height: 100%;\n\n &.no-motionui {\n &.is-active {\n top: 0;\n left: 0;\n }\n }\n}\n\n@mixin orbit-figure {\n margin: 0;\n}\n\n@mixin orbit-image {\n margin: 0;\n width: 100%;\n max-width: 100%;\n}\n\n/// Adds styles for an orbit slide caption. These styles are used on the `.orbit-caption` class.\n@mixin orbit-caption {\n position: absolute;\n bottom: 0;\n width: 100%;\n padding: $orbit-caption-padding;\n margin-bottom: 0;\n color: foreground($orbit-caption-background);\n background-color: $orbit-caption-background;\n}\n\n/// Adds base styles for the next/previous buttons in an Orbit slider. These styles are shared between the `.orbit-next` and `.orbit-previous` classes in the default CSS.\n@mixin orbit-control {\n @include disable-mouse-outline;\n @include vertical-center;\n z-index: $orbit-control-zindex;\n padding: $orbit-control-padding;\n color: $white;\n\n &:hover,\n &:active,\n &:focus {\n background-color: $orbit-control-background-hover;\n }\n}\n\n/// Adds styles for the Orbit previous button. These styles are used on the `.orbit-previous` class.\n@mixin orbit-previous {\n #{$global-left}: 0;\n}\n\n/// Adds styles for the Orbit next button. These styles are used on the `.orbit-next` class.\n@mixin orbit-next {\n #{$global-left}: auto;\n #{$global-right}: 0;\n}\n\n/// Adds styles for a container of Orbit bullets. /// Adds styles for the Orbit previous button. These styles are used on the `.orbit-bullets` class.\n@mixin orbit-bullets {\n @include disable-mouse-outline;\n position: relative;\n margin-top: $orbit-bullet-margin-top;\n margin-bottom: $orbit-bullet-margin-bottom;\n text-align: center;\n\n button {\n width: $orbit-bullet-diameter;\n height: $orbit-bullet-diameter;\n margin: $orbit-bullet-margin;\n background-color: $orbit-bullet-background;\n border-radius: 50%;\n\n &:hover {\n background-color: $orbit-bullet-background-active;\n }\n\n &.is-active {\n background-color: $orbit-bullet-background-active;\n }\n }\n}\n\n@mixin foundation-orbit {\n .orbit {\n @include orbit-wrapper;\n }\n\n .orbit-container {\n @include orbit-container;\n }\n\n .orbit-slide {\n @include orbit-slide;\n }\n\n .orbit-figure {\n @include orbit-figure;\n }\n\n .orbit-image {\n @include orbit-image;\n }\n\n .orbit-caption {\n @include orbit-caption;\n }\n\n %orbit-control {\n @include orbit-control;\n }\n\n .orbit-previous {\n @extend %orbit-control;\n @include orbit-previous;\n }\n\n .orbit-next {\n @extend %orbit-control;\n @include orbit-next;\n }\n\n .orbit-bullets {\n @include orbit-bullets;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group pagination\n////\n\n/// Font size of pagination items.\n/// @type Number\n$pagination-font-size: rem-calc(14) !default;\n\n/// Default bottom margin of the media object.\n/// @type Number\n$pagination-margin-bottom: $global-margin !default;\n\n/// Text color of pagination items.\n/// @type Color\n$pagination-item-color: $black !default;\n\n/// Padding inside of pagination items.\n/// @type Number\n$pagination-item-padding: rem-calc(3 10) !default;\n\n/// Right margin to separate pagination items.\n/// @type Number\n$pagination-item-spacing: rem-calc(1) !default;\n\n/// Default radius for pagination items.\n/// @type Number\n$pagination-radius: $global-radius !default;\n\n/// Background color of pagination items on hover.\n/// @type Color\n$pagination-item-background-hover: $light-gray !default;\n\n/// Background color of pagination item for the current page.\n/// @type Color\n$pagination-item-background-current: $primary-color !default;\n\n/// Text color of the pagination item for the current page.\n/// @type Color\n$pagination-item-color-current: foreground($pagination-item-background-current) !default;\n\n/// Text color of a disabled pagination item.\n/// @type Color\n$pagination-item-color-disabled: $medium-gray !default;\n\n/// Color of the ellipsis in a pagination menu.\n/// @type Color\n$pagination-ellipsis-color: $black !default;\n\n/// If `false`, don't display page number links on mobile, only next/previous links.\n/// @type Boolean\n$pagination-mobile-items: false !default;\n\n/// If `true`, arrows are added to the next and previous links of pagination.\n/// @type Boolean\n$pagination-arrows: true !default;\n\n/// Adds styles for a pagination container. Apply this to a `<ul>`.\n@mixin pagination-container {\n @include clearfix;\n margin-#{$global-left}: 0;\n margin-bottom: $pagination-margin-bottom;\n\n // List item\n li {\n font-size: $pagination-font-size;\n margin-#{$global-right}: $pagination-item-spacing;\n border-radius: $pagination-radius;\n\n @if $pagination-mobile-items {\n display: inline-block;\n }\n @else {\n display: none;\n\n &:last-child,\n &:first-child {\n display: inline-block;\n }\n\n @include breakpoint(medium) {\n display: inline-block;\n }\n }\n }\n\n // Page links\n a,\n button {\n color: $pagination-item-color;\n display: block;\n padding: $pagination-item-padding;\n border-radius: $global-radius;\n\n &:hover {\n background: $pagination-item-background-hover;\n }\n }\n}\n\n/// Adds styles for the current pagination item. Apply this to an `<a>`.\n@mixin pagination-item-current {\n padding: $pagination-item-padding;\n background: $pagination-item-background-current;\n color: $pagination-item-color-current;\n cursor: default;\n}\n\n/// Adds styles for a disabled pagination item. Apply this to an `<a>`.\n@mixin pagination-item-disabled {\n padding: $pagination-item-padding;\n color: $pagination-item-color-disabled;\n cursor: default;\n\n &:hover {\n background: transparent;\n }\n}\n\n/// Adds styles for an ellipsis for use in a pagination list.\n@mixin pagination-ellipsis {\n content: '…';\n padding: $pagination-item-padding;\n color: $pagination-ellipsis-color;\n}\n\n@mixin foundation-pagination {\n .pagination {\n @include pagination-container;\n\n .current {\n @include pagination-item-current;\n }\n\n .disabled {\n @include pagination-item-disabled;\n }\n\n .ellipsis::after {\n @include pagination-ellipsis;\n }\n }\n\n @if $pagination-arrows {\n .pagination-previous a::before,\n .pagination-previous.disabled::before {\n content: '«';\n display: inline-block;\n margin-#{$global-right}: 0.5rem;\n }\n\n .pagination-next a::after,\n .pagination-next.disabled::after {\n content: '»';\n display: inline-block;\n margin-#{$global-left}: 0.5rem;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group progress-bar\n////\n\n/// Height of a progress bar.\n/// @type Number\n$progress-height: 1rem !default;\n\n/// Background color of a progress bar.\n/// @type Color\n$progress-background: $medium-gray !default;\n\n/// Bottom margin of a progress bar.\n/// @type Number\n$progress-margin-bottom: $global-margin !default;\n\n/// Default color of a progress bar's meter.\n/// @type Color\n$progress-meter-background: $primary-color !default;\n\n/// Default radius of a progress bar.\n/// @type Number\n$progress-radius: $global-radius !default;\n\n/// Adds styles for a progress bar container.\n@mixin progress-container {\n background-color: $progress-background;\n height: $progress-height;\n margin-bottom: $progress-margin-bottom;\n border-radius: $progress-radius;\n}\n\n/// Adds styles for the inner meter of a progress bar.\n@mixin progress-meter {\n position: relative;\n display: block;\n width: 0%;\n height: 100%;\n background-color: $progress-meter-background;\n\n @if has-value($progress-radius) {\n border-radius: $global-radius;\n }\n}\n\n/// Adds styles for text in the progress meter.\n@mixin progress-meter-text {\n @include absolute-center;\n position: absolute;\n margin: 0;\n font-size: 0.75rem;\n font-weight: bold;\n color: $white;\n white-space: nowrap;\n\n @if has-value($progress-radius) {\n border-radius: $progress-radius;\n }\n}\n\n@mixin foundation-progress-bar {\n // Progress bar\n .progress {\n @include progress-container;\n\n @each $name, $color in $foundation-colors {\n &.#{$name} {\n .progress-meter {\n background-color: $color;\n }\n }\n }\n }\n\n // Inner meter\n .progress-meter {\n @include progress-meter;\n }\n\n // Inner meter text\n .progress-meter-text {\n @include progress-meter-text;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n// [TODO] Check how plugin confirms disabled or vertical status\n// [TODO] Check if transition: all; is necessary\n\n////\n/// @group slider\n////\n\n/// Default height of the slider.\n/// @type Number\n$slider-height: 0.5rem !default;\n\n/// Default slider width of a vertical slider.\n/// @type Number\n$slider-width-vertical: $slider-height !default;\n\n/// Default background color of the slider's track.\n/// @type Color\n$slider-background: $light-gray !default;\n\n/// Default color of the active fill color of the slider.\n/// @type Color\n$slider-fill-background: $medium-gray !default;\n\n/// Default height of the handle of the slider.\n/// @type Number\n$slider-handle-height: 1.4rem !default;\n\n/// Default width of the handle of the slider.\n/// @type Number\n$slider-handle-width: 1.4rem !default;\n\n/// Default color of the handle for the slider.\n/// @type Color\n$slider-handle-background: $primary-color !default;\n\n/// Default fade amount of a disabled slider.\n/// @type Number\n$slider-opacity-disabled: 0.25 !default;\n\n/// Default radius for slider.\n/// @type Number\n$slider-radius: $global-radius !default;\n\n/// Transition properties to apply to the slider handle and fill.\n/// @type Transition\n$slider-transition: all 0.2s ease-in-out !default;\n\n/// Adds the general styles for sliders.\n@mixin slider-container {\n position: relative;\n height: $slider-height;\n margin-top: 1.25rem;\n margin-bottom: 2.25rem;\n background-color: $slider-background;\n cursor: pointer;\n user-select: none;\n touch-action: none;\n}\n\n/// Adds the general styles for active fill for sliders.\n@mixin slider-fill {\n position: absolute;\n top: 0;\n left: 0;\n display: inline-block;\n max-width: 100%;\n height: $slider-height;\n background-color: $slider-fill-background;\n transition: $slider-transition;\n\n &.is-dragging {\n transition: all 0s linear;\n }\n}\n\n/// Adds the general styles for the slider handles.\n@mixin slider-handle {\n @include disable-mouse-outline;\n @include vertical-center;\n position: absolute;\n left: 0;\n z-index: 1;\n display: inline-block;\n width: $slider-handle-width;\n height: $slider-handle-height;\n background-color: $slider-handle-background;\n transition: $slider-transition;\n touch-action: manipulation;\n border-radius: $slider-radius;\n\n &:hover {\n background-color: scale-color($slider-handle-background, $lightness: -15%);\n }\n\n &.is-dragging {\n transition: all 0s linear;\n }\n}\n\n@mixin slider-disabled {\n opacity: $slider-opacity-disabled;\n cursor: not-allowed;\n}\n\n@mixin slider-vertical {\n display: inline-block;\n width: $slider-width-vertical;\n height: 12.5rem;\n margin: 0 1.25rem;\n transform: scale(1, -1);\n\n .slider-fill {\n top: 0;\n width: $slider-width-vertical;\n max-height: 100%;\n }\n\n .slider-handle {\n position: absolute;\n top: 0;\n left: 50%;\n width: $slider-handle-height;\n height: $slider-handle-width;\n transform: translateX(-50%);\n }\n}\n\n@mixin foundation-slider {\n // Container\n .slider {\n @include slider-container;\n }\n\n // Fill area\n .slider-fill {\n @include slider-fill;\n }\n\n // Draggable handle\n .slider-handle {\n @include slider-handle;\n }\n\n // Disabled state\n .slider.disabled,\n .slider[disabled] {\n @include slider-disabled;\n }\n\n // Vertical slider\n .slider.vertical {\n @include slider-vertical;\n }\n\n // RTL support\n @if $global-text-direction == rtl {\n .slider:not(.vertical) {\n transform: scale(-1, 1);\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n@mixin foundation-sticky {\n .sticky-container {\n position: relative;\n }\n\n .sticky {\n position: absolute;\n z-index: 0;\n transform: translate3d(0, 0, 0);\n }\n\n .sticky.is-stuck {\n position: fixed;\n z-index: 5;\n\n &.is-at-top {\n top: 0;\n }\n\n &.is-at-bottom {\n bottom: 0;\n }\n }\n\n .sticky.is-anchored {\n position: absolute;\n left: auto;\n right: auto;\n\n &.is-at-bottom {\n bottom: 0;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group reveal\n////\n\n/// Default background color of a modal.\n/// @type Color\n$reveal-background: $white !default;\n\n/// Default width of a modal, with no class applied.\n/// @type Number\n$reveal-width: 600px !default;\n\n/// Default maximum width of a modal.\n/// @type Number\n$reveal-max-width: $global-width !default;\n\n/// Offset from the top of the window when a modal is added.\n/// @type Number\n$reveal-offset: rem-calc(100) !default;\n\n/// Default padding inside a modal.\n/// @type Number\n$reveal-padding: $global-padding !default;\n\n/// Default border around a modal.\n/// @type Number\n$reveal-border: 1px solid $medium-gray !default;\n\n/// Default radius for modal.\n/// @type Number\n$reveal-radius: $global-radius !default;\n\n/// z-index for modals. The overlay uses this value, while the modal itself uses this value plus one.\n/// @type Number\n$reveal-zindex: 1005 !default;\n\n/// Background color of modal overlays.\n/// @type Color\n$reveal-overlay-background: rgba($black, 0.45) !default;\n\n/// Adds styles for a modal overlay.\n/// @param {Color} $background [$reveal-overlay-background] - Background color of the overlay.\n@mixin reveal-overlay {\n display: none;\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: $reveal-zindex;\n background-color: $reveal-overlay-background;\n overflow-y: scroll;\n}\n\n/// Adds base styles for a modal.\n@mixin reveal-modal-base {\n @include disable-mouse-outline;\n display: none;\n z-index: $reveal-zindex + 1;\n padding: $reveal-padding;\n border: $reveal-border;\n margin: $reveal-offset auto 0;\n background-color: $reveal-background;\n border-radius: $reveal-radius;\n\n @include breakpoint(medium) {\n min-height: 0;\n }\n\n // Make sure rows don't have a min-width on them\n .column,\n .columns {\n min-width: 0;\n }\n\n // Strip margins from the last item in the modal\n > :last-child {\n margin-bottom: 0;\n }\n}\n\n/// Adjusts the width of a modal.\n/// @param {Number} $width - Width of the modal. Generally a percentage.\n/// @param {Number} $max-width [$reveal-max-width] - Maximum width of the modal.\n@mixin reveal-modal-width(\n $width: $reveal-width,\n $max-width: $reveal-max-width\n) {\n @include breakpoint(medium) {\n @extend %reveal-centered;\n width: $width;\n max-width: $reveal-max-width;\n }\n}\n\n/// Creates a full-screen modal, which stretches the full width and height of the window.\n@mixin reveal-modal-fullscreen {\n // scss-lint:disable DuplicateProperty\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n height: 100vh;\n min-height: 100vh;\n max-width: none;\n margin-left: 0;\n border: 0;\n}\n\n@mixin foundation-reveal {\n // [TODO] Is this necessary?\n // scss-lint:disable QualifyingElement\n body.is-reveal-open {\n overflow: hidden;\n }\n\n // Overlay\n .reveal-overlay {\n @include reveal-overlay;\n }\n\n // Modal container\n .reveal {\n @include reveal-modal-base;\n @include reveal-modal-width($reveal-width);\n position: absolute;\n overflow-y: auto;\n\n // Placeholder selector for medium-and-up modals\n // Prevents duplicate CSS when defining multiple Reveal sizes\n @include breakpoint(medium) {\n %reveal-centered {\n left: auto;\n right: auto;\n margin: 0 auto;\n }\n }\n\n // Remove padding\n &.collapse {\n padding: 0;\n }\n\n // Sizing classes\n &.tiny { @include reveal-modal-width(30%); }\n &.small { @include reveal-modal-width(50%); }\n &.large { @include reveal-modal-width(90%); }\n\n // Full-screen mode\n &.full {\n @include reveal-modal-fullscreen;\n }\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group switch\n////\n\n/// Background color of a switch.\n/// @type Color\n$switch-background: $medium-gray !default;\n\n/// Background active color of a switch.\n/// @type Color\n$switch-background-active: $primary-color !default;\n\n/// Height of a switch, with no class applied.\n/// @type Number\n$switch-height: 2rem !default;\n\n/// Height of a switch with .tiny class.\n/// @type Number\n$switch-height-tiny: 1.5rem !default;\n\n/// Height of a switch with .small class.\n/// @type Number\n$switch-height-small: 1.75rem !default;\n\n/// Height of a switch with .large class.\n/// @type Number\n$switch-height-large: 2.5rem !default;\n\n/// Border radius of the switch\n/// @type Number\n$switch-radius: $global-radius !default;\n\n/// border around a modal.\n/// @type Number\n$switch-margin: $global-margin !default;\n\n/// Background color for the switch container and paddle.\n/// @type Color\n$switch-paddle-background: $white !default;\n\n/// Spacing between a switch paddle and the edge of the body.\n/// @type Number\n$switch-paddle-offset: 0.25rem !default;\n\n/// border radius of the switch paddle\n/// @type Number\n$switch-paddle-radius: $global-radius !default;\n\n/// switch transition.\n/// @type Number\n$switch-paddle-transition: all 0.25s ease-out !default;\n\n// make them variables\n// ask about accessibility on label\n// change class name for text\n\n/// Adds styles for a switch container. Apply this to a container class.\n@mixin switch-container {\n margin-bottom: $switch-margin;\n outline: 0;\n position: relative;\n user-select: none;\n\n // These properties cascade down to the switch text\n color: $white;\n font-weight: bold;\n font-size: rem-calc(14);\n}\n\n/// Adds styles for a switch input. Apply this to an `<input>` within a switch.\n@mixin switch-input {\n opacity: 0;\n position: absolute;\n}\n\n/// Adds styles for the background and paddle of a switch. Apply this to a `<label>` within a switch.\n@mixin switch-paddle {\n background: $switch-background;\n cursor: pointer;\n display: block;\n position: relative;\n width: 4rem;\n height: $switch-height;\n transition: $switch-paddle-transition;\n border-radius: $switch-radius;\n\n // Resetting these <label> presets so type styles cascade down\n color: inherit;\n font-weight: inherit;\n\n // Needed to override specificity\n input + & {\n margin: 0;\n }\n\n // The paddle itself\n &::after {\n background: $switch-paddle-background;\n content: '';\n display: block;\n position: absolute;\n height: 1.5rem;\n #{$global-left}: 0.25rem;\n top: 0.25rem;\n width: 1.5rem;\n transition: $switch-paddle-transition;\n transform: translate3d(0, 0, 0);\n border-radius: $switch-paddle-radius;\n }\n\n // Change the visual style when the switch is active\n input:checked ~ & {\n background: $switch-background-active;\n\n &::after {\n #{$global-left}: 2.25rem;\n }\n }\n\n input:focus ~ & {\n @include disable-mouse-outline;\n }\n}\n\n/// Adds base styles for active/inactive text inside a switch. Apply this to text elements inside the switch `<label>`.\n@mixin switch-text {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/// Adds styles for the active state text within a switch.\n@mixin switch-text-active {\n #{$global-left}: 8%;\n display: none;\n\n input:checked + label > & {\n display: block;\n }\n}\n\n/// Adds styles for the inactive state text within a switch.\n@mixin switch-text-inactive {\n #{$global-right}: 15%;\n\n input:checked + label > & {\n display: none;\n }\n}\n\n/// Changes the size of a switch by modifying the size of the body and paddle. Apply this to a switch container.\n/// @param {Number} $font-size [1rem] - Font size of label text within the switch.\n/// @param {Number} $width [4rem] - Width of the switch body.\n/// @param {Number} $height [2rem] - Height of the switch body.\n/// @param {Number} $paddle-width [1.5rem] - Width of the switch paddle.\n/// @param {Number} $paddle-offset [0.25rem] - Spacing between the switch paddle and the edge of the switch body.\n@mixin switch-size(\n $font-size: 1rem,\n $width: 4rem,\n $height: 2rem,\n $paddle-width: 1.5rem,\n $paddle-offset: 0.25rem\n) {\n $paddle-height: $height - ($paddle-offset * 2);\n $paddle-left-active: $width - $paddle-width - $paddle-offset;\n\n .switch-paddle {\n width: $width;\n height: $height;\n font-size: $font-size;\n }\n\n .switch-paddle::after {\n width: $paddle-width;\n height: $paddle-height;\n }\n\n input:checked ~ .switch-paddle:after {\n #{$global-left}: $paddle-left-active;\n }\n}\n\n@mixin foundation-switch {\n // Container class\n .switch {\n @include switch-container;\n }\n\n // <input> element\n .switch-input {\n @include switch-input;\n }\n\n // <label> element\n .switch-paddle {\n @include switch-paddle;\n }\n\n // Base label text styles\n %switch-text {\n @include switch-text;\n }\n\n // Active label text styles\n .switch-active {\n @extend %switch-text;\n @include switch-text-active;\n }\n\n // Inactive label text styles\n .switch-inactive {\n @extend %switch-text;\n @include switch-text-inactive;\n }\n\n // Switch sizes\n .switch.tiny {\n @include switch-size(rem-calc(10), 3rem, $switch-height-tiny, 1rem, $switch-paddle-offset);\n }\n\n .switch.small {\n @include switch-size(rem-calc(12), 3.5rem, $switch-height-small, 1.25rem, $switch-paddle-offset);\n }\n\n .switch.large {\n @include switch-size(rem-calc(16), 5rem, $switch-height-large, 2rem, $switch-paddle-offset);\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n// scss-lint:disable MergeableSelector, QualifyingElement\n\n////\n/// @group table\n////\n\n/// Default color for table background.\n/// @type Color\n$table-background: $white !default;\n\n/// Default scale for darkening the striped table rows and the table border.\n/// @type Number\n$table-color-scale: 5% !default;\n\n/// Default style for table border.\n/// @type List\n$table-border: 1px solid smart-scale($table-background, $table-color-scale) !default;\n\n/// Default padding for table.\n/// @type Number\n$table-padding: rem-calc(8 10 10) !default;\n\n/// Default scale for darkening the table rows on hover.\n/// @type Number\n$table-hover-scale: 2% !default;\n\n/// Default color of standard rows on hover.\n/// @type List\n$table-row-hover: darken($table-background, $table-hover-scale) !default;\n\n/// Default color of striped rows on hover.\n/// @type List\n$table-row-stripe-hover: darken($table-background, $table-color-scale + $table-hover-scale) !default;\n\n/// Default background color for striped rows.\n/// @type Color\n$table-striped-background: smart-scale($table-background, $table-color-scale) !default;\n\n/// Default value for showing the stripe on rows of the tables, excluding the header and footer If even, the even rows will have a background color. If odd, the odd rows will have a background color. If empty, or anyother value, the table rows will have no striping.\n/// @type Keyoword\n$table-stripe: even !default;\n\n/// Default color for header background.\n/// @type Color\n$table-head-background: smart-scale($table-background, $table-color-scale / 2) !default;\n\n/// Default color for footer background.\n/// @type Color\n$table-foot-background: smart-scale($table-background, $table-color-scale) !default;\n\n/// Default font color for header.\n/// @type Color\n$table-head-font-color: $body-font-color !default;\n\n/// Default value for showing the header when using stacked tables.\n/// @type Boolean\n$show-header-for-stacked: false !default;\n\n@mixin -zf-table-children-styles($stripe: $table-stripe) {\n thead,\n tbody,\n tfoot {\n border: $table-border;\n background-color: $table-background;\n }\n\n // Caption\n caption {\n font-weight: $global-weight-bold;\n padding: $table-padding;\n }\n\n // Table head and foot\n thead,\n tfoot {\n background: $table-head-background;\n color: $table-head-font-color;\n\n // Rows within head and foot\n tr {\n background: transparent;\n }\n\n // Cells within head and foot\n th,\n td {\n padding: $table-padding;\n font-weight: $global-weight-bold;\n text-align: #{$global-left};\n }\n }\n\n // Table rows\n tbody {\n tr {\n // If stripe is set to even, darken the even rows.\n @if $stripe == even {\n &:nth-child(even) {\n background-color: $table-striped-background;\n }\n }\n\n // If stripe is set to odd, darken the odd rows.\n @else if $stripe == odd {\n &:nth-child(odd) {\n background-color: $table-striped-background;\n }\n }\n }\n\n th,\n td {\n padding: $table-padding;\n }\n }\n}\n\n/// Adds the general styles for tables.\n/// @param {Keyword} $stripe [$table-stripe] - Uses keywords even, odd, or none to darken rows of the table. The default value is even.\n@mixin table(\n $stripe: $table-stripe,\n $nest: false\n) {\n width: 100%;\n margin-bottom: $global-margin;\n border-radius: $global-radius;\n\n @if $nest {\n @include -zf-table-children-styles($stripe);\n }\n @else {\n @at-root {\n @include -zf-table-children-styles($stripe);\n }\n }\n}\n\n/// Adds the ability to horizontally scroll the table when the content overflows horizontally.\n@mixin table-scroll {\n display: block;\n width: 100%;\n overflow-x: auto;\n}\n\n/// Slightly darkens the table rows on hover.\n@mixin table-hover {\n tr {\n //Darkens the non-striped table rows on hover.\n &:hover {\n background-color: $table-row-hover;\n }\n\n //Darkens the even striped table rows.\n @if($table-stripe == even) {\n &:nth-of-type(even):hover {\n background-color: $table-row-stripe-hover;\n }\n }\n\n //Darkens the odd striped table rows.\n @elseif($table-stripe == odd) {\n &:nth-of-type(odd):hover {\n background-color: $table-row-stripe-hover;\n }\n }\n }\n}\n\n/// Adds styles for a stacked table. Useful for small-screen layouts.\n/// @param {Boolean} $header [$show-header-for-stacked] - Show the first th of header when stacked.\n@mixin table-stack($header: $show-header-for-stacked) {\n @if $header {\n thead {\n th:first-child {\n display: block;\n }\n\n th {\n display: none;\n }\n }\n }\n @else {\n thead {\n display: none;\n }\n }\n\n tfoot {\n display: none;\n }\n\n tr,\n th,\n td {\n display: block;\n }\n\n td {\n border-top: 0;\n }\n}\n\n@mixin foundation-table($nest: false) {\n table {\n @include table($nest: $nest);\n }\n\n table.stack {\n @include breakpoint(medium down) {\n @include table-stack;\n }\n }\n\n table.scroll {\n @include table-scroll;\n }\n\n table.hover {\n @include table-hover;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group functions\n////\n\n/// Checks the lightness of `$color`, and if it passes the `$threshold` of lightness, it returns the `$yes` color. Otherwise, it returns the `$no` color. Use this function to dynamically output a foreground color based on a given background color.\n///\n/// @param {Color} $color - Color to check the lightness of.\n/// @param {Color} $yes [$black] - Color to return if `$color` is light.\n/// @param {Color} $no [$white] - Color to return if `$color` is dark.\n/// @param {Percentage} $threshold [60%] - Threshold of lightness to check against.\n///\n/// @returns {Color} The $yes color or $no color.\n@function foreground($color, $yes: $black, $no: $white, $threshold: 60%) {\n @if $color == transparent {\n $color: $body-background;\n }\n @if (lightness($color) > $threshold) {\n @return $yes;\n }\n @else {\n @return $no;\n }\n}\n\n/// Scales a color to be lighter if it's light, or darker if it's dark. Use this function to tint a color appropriate to its lightness.\n///\n/// @param {Color} $color - Color to scale.\n/// @param {Percentage} $scale [5%] - Amount to scale up or down.\n/// @param {Percentage} $threshold [40%] - Threshold of lightness to check against.\n///\n/// @returns {Color} A scaled color.\n@function smart-scale($color, $scale: 5%, $threshold: 40%) {\n @if lightness($color) > $threshold {\n $scale: -$scale;\n }\n @return scale-color($color, $lightness: $scale);\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group tabs\n////\n\n/// Default margin of the tab bar.\n/// @type Number\n$tab-margin: 0 !default;\n\n/// Default background color of a tab bar.\n/// @type Color\n$tab-background: $white !default;\n\n/// active background color of a tab bar.\n/// @type Color\n$tab-background-active: $light-gray !default;\n\n/// Default border color of tab content.\n/// @type Color\n$tab-border: $light-gray !default;\n\n/// Default text color for items in a Menu.\n/// @type Color\n$tab-item-color: foreground($tab-background, $primary-color) !default;\n\n/// Default background color on hover for items in a Menu.\n$tab-item-background-hover: $white !default;\n\n/// Default padding of a a tab item.\n/// @type Number\n$tab-item-padding: 1.25rem 1.5rem !default;\n\n/// Maximum number of `expand-n` classes to include in the CSS.\n/// @type Number\n$tab-expand-max: 6 !default;\n\n/// Default background color of tab content.\n/// @type Color\n$tab-content-background: $white !default;\n\n/// Default border color of tab content.\n/// @type Color\n$tab-content-border: $light-gray !default;\n\n/// Default text color of tab content.\n/// @type Color\n$tab-content-color: foreground($tab-background, $primary-color) !default;\n\n/// Default padding for tab content.\n/// @type Number | List\n$tab-content-padding: 1rem !default;\n\n/// Adds styles for a tab container. Apply this to a `<ul>`.\n@mixin tabs-container {\n @include clearfix;\n margin: $tab-margin;\n list-style-type: none;\n background: $tab-background;\n border: 1px solid $tab-content-border;\n}\n\n/// Augments a tab container to have vertical tabs. Use this in conjunction with `tabs-container()`.\n@mixin tabs-container-vertical {\n > li {\n width: auto;\n float: none;\n display: block;\n }\n}\n\n/// Adds styles for the links within a tab container. Apply this to the `<li>` elements inside a tab container.\n@mixin tabs-title {\n float: #{$global-left};\n\n > a {\n display: block;\n padding: $tab-item-padding;\n line-height: 1;\n font-size: 12px;\n color: $tab-item-color;\n\n &:hover {\n background: $tab-item-background-hover;\n }\n\n &:focus,\n &[aria-selected='true'] {\n background: $tab-background-active;\n }\n }\n}\n\n/// Adds styles for the wrapper that surrounds a tab group's content panes.\n@mixin tabs-content {\n background: $tab-content-background;\n transition: all 0.5s ease;\n border: 1px solid $tab-content-border;\n border-top: 0;\n}\n\n/// Augments a tab content container to have a vertical style, by shifting the border around. Use this in conjunction with `tabs-content()`.\n@mixin tabs-content-vertical {\n border: 1px solid $tab-content-border;\n border-#{$global-left}: 0;\n}\n\n/// Adds styles for an individual tab content panel within the tab content container.\n@mixin tabs-panel {\n display: none;\n padding: $tab-content-padding;\n\n &.is-active {\n display: block;\n }\n}\n\n@mixin foundation-tabs {\n .tabs {\n @include tabs-container;\n }\n\n // Vertical\n .tabs.vertical {\n @include tabs-container-vertical;\n }\n\n // Simple\n .tabs.simple {\n > li > a {\n padding: 0;\n\n &:hover {\n background: transparent;\n }\n }\n }\n\n // Primary color\n .tabs.primary {\n background: $primary-color;\n\n > li > a {\n color: foreground($primary-color);\n\n &:hover,\n &:focus {\n background: smart-scale($primary-color);\n }\n }\n }\n\n .tabs-title {\n @include tabs-title;\n }\n\n .tabs-content {\n @include tabs-content;\n }\n\n .tabs-content.vertical {\n @include tabs-content-vertical;\n }\n\n .tabs-panel {\n @include tabs-panel;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group thumbnail\n////\n\n/// Border around thumbnail images.\n/// @type Border\n$thumbnail-border: solid 4px $white !default;\n\n/// Bottom margin for thumbnail images.\n/// @type Length\n$thumbnail-margin-bottom: $global-margin !default;\n\n/// Box shadow under thumbnail images.\n/// @type Shadow\n$thumbnail-shadow: 0 0 0 1px rgba($black, 0.2) !default;\n\n/// Box shadow under thumbnail images.\n/// @type Shadow\n$thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5) !default;\n\n/// Transition proprties for thumbnail images.\n/// @type Transition\n$thumbnail-transition: box-shadow 200ms ease-out !default;\n\n/// Default radius for thumbnail images.\n/// @type Number\n$thumbnail-radius: $global-radius !default;\n\n/// Adds thumbnail styles to an element.\n@mixin thumbnail {\n border: $thumbnail-border;\n box-shadow: $thumbnail-shadow;\n display: inline-block;\n line-height: 0;\n max-width: 100%;\n transition: $thumbnail-transition;\n border-radius: $thumbnail-radius;\n margin-bottom: $thumbnail-margin-bottom;\n\n &:hover,\n &:focus {\n box-shadow: $thumbnail-shadow-hover;\n }\n}\n\n@mixin foundation-thumbnail {\n .thumbnail {\n @include thumbnail;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group title-bar\n////\n\n/// Background color of a title bar.\n/// @type Color\n$titlebar-background: $black !default;\n\n/// Color of text inside a title bar.\n/// @type Color\n$titlebar-color: $white !default;\n\n/// Padding inside a title bar.\n/// @type Length\n$titlebar-padding: 0.5rem !default;\n\n/// Font weight of text inside a title bar.\n/// @type Weight\n$titlebar-text-font-weight: bold !default;\n\n/// Color of menu icons inside a title bar.\n/// @type Color\n$titlebar-icon-color: $white !default;\n\n/// Color of menu icons inside a title bar on hover.\n/// @type Color\n$titlebar-icon-color-hover: $medium-gray !default;\n\n/// Spacing between the menu icon and text inside a title bar.\n/// @type Length\n$titlebar-icon-spacing: 0.25rem !default;\n\n@mixin foundation-title-bar {\n .title-bar {\n @include clearfix;\n background: $titlebar-background;\n color: $titlebar-color;\n padding: $titlebar-padding;\n\n .menu-icon {\n margin-#{$global-left}: $titlebar-icon-spacing;\n margin-#{$global-right}: $titlebar-padding;\n }\n }\n\n .title-bar-left {\n float: left;\n }\n\n .title-bar-right {\n float: right;\n text-align: right;\n }\n\n .title-bar-title {\n font-weight: $titlebar-text-font-weight;\n vertical-align: middle;\n display: inline-block;\n }\n\n .menu-icon {\n @include hamburger($color: $titlebar-icon-color, $color-hover: $titlebar-icon-color-hover);\n }\n\n .menu-icon.dark {\n @include hamburger;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group tooltip\n////\n\n/// Default font weight of the defined term.\n/// @type Keyword | Number\n$has-tip-font-weight: $global-weight-bold !default;\n\n/// Default border bottom of the defined term.\n/// @type List\n$has-tip-border-bottom: dotted 1px $dark-gray !default;\n\n/// Default color of the tooltip background.\n/// @type Color\n$tooltip-background-color: $black !default;\n\n/// Default color of the tooltip font.\n/// @type Color\n$tooltip-color: $white !default;\n\n/// Default padding of the tooltip background.\n/// @type Number\n$tooltip-padding: 0.75rem !default;\n\n/// Default font size of the tooltip text. By default, we recommend a smaller font size than the body copy.\n/// @type Number\n$tooltip-font-size: $small-font-size !default;\n\n/// Default pip width for tooltips.\n/// @type Number\n$tooltip-pip-width: 0.75rem !default;\n\n/// Default pip height for tooltips. This is helpful for calculating the distance of the tooltip from the tooltip word.\n/// @type Number\n$tooltip-pip-height: $tooltip-pip-width * 0.866 !default;\n\n/// Default pip offset for tooltips. This controls how far the pip is indented from the left edge of the tooltip.\n/// @type Number\n$tooltip-pip-offset: 1.25rem !default;\n\n/// Default radius for tooltips.\n/// @type Number\n$tooltip-radius: $global-radius !default;\n\n@mixin has-tip {\n border-bottom: $has-tip-border-bottom;\n font-weight: $has-tip-font-weight;\n position: relative;\n display: inline-block;\n cursor: help;\n}\n\n@mixin tooltip {\n background-color: $tooltip-background-color;\n color: $tooltip-color;\n font-size: $tooltip-font-size;\n padding: $tooltip-padding;\n position: absolute;\n z-index: 10;\n top: calc(100% + #{$tooltip-pip-height});\n max-width: 10rem !important;\n border-radius: $tooltip-radius;\n\n &::before {\n @include css-triangle($tooltip-pip-width, $tooltip-background-color, up);\n bottom: 100%;\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n }\n\n &.top::before {\n @include css-triangle($tooltip-pip-width, $tooltip-background-color, down);\n top: 100%;\n bottom: auto;\n }\n\n &.left::before {\n @include css-triangle($tooltip-pip-width, $tooltip-background-color, right);\n bottom: auto;\n left: 100%;\n top: 50%;\n transform: translateY(-50%);\n }\n\n &.right::before {\n @include css-triangle($tooltip-pip-width, $tooltip-background-color, left);\n bottom: auto;\n left: auto;\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n }\n}\n\n@mixin foundation-tooltip {\n .has-tip {\n @include has-tip;\n }\n\n .tooltip {\n @include tooltip;\n }\n}\n","// Foundation for Sites by ZURB\n// foundation.zurb.com\n// Licensed under MIT Open Source\n\n////\n/// @group top-bar\n////\n\n/// Padding for the top bar.\n/// @type Number\n$topbar-padding: 0.5rem !default;\n\n/// Background color for the top bar. This color also cascades to menus within the top bar.\n/// @type Color\n$topbar-background: $light-gray !default;\n\n/// Spacing for the top bar title.\n/// @type Number\n$topbar-title-spacing: 1rem !default;\n\n/// Width of `<input>` elements inside the top bar.\n/// @type Number\n$topbar-input-width: 200px !default;\n\n/// Adds styles for a top bar container.\n@mixin top-bar-container {\n @include clearfix;\n padding: $topbar-padding;\n\n &,\n ul {\n background-color: $topbar-background;\n }\n\n input {\n width: $topbar-input-width;\n margin-#{$global-right}: 1rem;\n }\n\n // scss-lint:disable QualifyingElement\n input.button {\n width: auto;\n }\n}\n\n/// makes sections stacked\n@mixin top-bar-stacked {\n // Sub-sections\n .top-bar-title {\n width: 100%;\n }\n\n .top-bar-right {\n width: 100%;\n }\n\n .top-bar-left {\n width: 100%;\n }\n}\n\n@mixin foundation-top-bar {\n // Top bar container\n .top-bar {\n @include top-bar-container;\n }\n\n // Generate classes for stacking on each screen size (defined in $breakpoint-classes)\n @each $size in $breakpoint-classes {\n .stacked-for-#{$size} {\n @include breakpoint($size down) {\n @include top-bar-stacked;\n }\n }\n }\n\n // Stack on small screens as default\n @include breakpoint(small only) {\n @include top-bar-stacked;\n }\n\n // Sub-sections\n .top-bar-title {\n float: left;\n margin-right: $topbar-title-spacing;\n }\n .top-bar-left {\n float: left;\n }\n\n .top-bar-right {\n float: right;\n }\n}\n"],"sourceRoot":"/source/"}
\ No newline at end of file
diff --git a/stylesheets/foundation.min.css b/stylesheets/foundation.min.css
deleted file mode 100644
--- a/stylesheets/foundation.min.css
+++ /dev/null
@@ -1 +0,0 @@
-*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%}body{background:#fff;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-style:normal;font-size:14px;line-height:1;color:#222;position:relative;-webkit-font-smoothing:antialiased}a img{border:none}a{color:#2f343b;text-decoration:none;line-height:inherit}a:hover{color:#24272d}a:focus{color:#24272d}p a,p a:visited{line-height:inherit}.left{float:left}.right{float:right}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.hide{display:none}.hide-override{display:none !important}.highlight{background:#e3cda4}#googlemap img,object,embed{max-width:none}#map_canvas embed{max-width:none}#map_canvas img{max-width:none}#map_canvas object{max-width:none}figure{margin:0}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;font-size:14px;direction:ltr}p{font-family:inherit;font-weight:normal;font-size:14px;line-height:1.6;margin-bottom:17px}p.lead{font-size:17.5px;line-height:1.6;margin-bottom:17px}aside p{font-size:13px;line-height:1.35;font-style:italic}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:bold;font-style:normal;color:#222;text-rendering:optimizeLegibility;line-height:1.1;margin-bottom:14px;margin-top:14px}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:60%;color:#6f6f6f;line-height:0}h1{font-size:44px}h2{font-size:37px}h3{font-size:27px}h4{font-size:23px}h5{font-size:17px}h6{font-size:14px}hr{border:solid #ddd;border-width:1px 0 0;clear:both;margin:22px 0 21px;height:0}.subheader{line-height:1.3;color:#6f6f6f;font-weight:300;margin-bottom:17px}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:60%;line-height:inherit}code{font-weight:bold;background:#e3cda4}ul,ol,dl{font-size:14px;line-height:1.6;margin-bottom:17px;list-style-position:outside}ul li ul,ul li ol{margin-left:20px;margin-bottom:0}ul.square,ul.circle,ul.disc{margin-left:17px}ul.square{list-style-type:square}ul.square li ul{list-style:inherit}ul.circle{list-style-type:circle}ul.circle li ul{list-style:inherit}ul.disc{list-style-type:disc}ul.disc li ul{list-style:inherit}ul.no-bullet{list-style:none}ul.large li{line-height:21px}ol{margin-left:20px}ol li ul,ol li ol{margin-left:20px;margin-bottom:0}blockquote,blockquote p{line-height:1.5;color:#6f6f6f}blockquote{margin:0 0 17px;padding:9px 20px 0 19px;border-left:1px solid #ddd}blockquote cite{display:block;font-size:13px;color:#555}blockquote cite:before{content:"\2014 \0020"}blockquote cite a,blockquote cite a:visited{color:#555}abbr,acronym{text-transform:uppercase;font-size:90%;color:#222;border-bottom:1px solid #ddd;cursor:help}abbr{text-transform:none}.print-only{display:none !important}@media print{*{background:transparent !important;color:black !important;box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.hide-on-print{display:none !important}.print-only{display:block !important}.hide-for-print{display:none !important}.show-for-print{display:inherit !important}}form{margin:0 0 19.41641px}.row form .row{margin:0 -6px}.row form .row .column,.row form .row .columns{padding:0 6px}.row form .row.collapse{margin:0}.row form .row.collapse .column,.row form .row.collapse .columns{padding:0}label{font-size:14px;color:#4d4d4d;cursor:pointer;display:block;font-weight:500;margin-bottom:3px}label.right{float:none;text-align:right}label.inline{line-height:32px;margin:0 0 12px 0}.prefix,.postfix{display:block;position:relative;z-index:2;text-align:center;width:100%;padding-top:0;padding-bottom:0;height:32px;line-height:31px}a.button.prefix,a.button.postfix{padding-left:0;padding-right:0;text-align:center}span.prefix,span.postfix{background:#f2f2f2;border:1px solid #ccc}.prefix{left:2px;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-bottomleft:2px;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px;overflow:hidden}.postfix{right:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px;-moz-border-radius-bottomright:2px;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}input[type="text"],input[type="password"],input[type="date"],input[type="datetime"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],textarea{background-color:#fff;border:1px solid #ccc;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-size:14px;margin:0 0 12px 0;padding:6px;height:32px;width:100%;-webkit-transition:all 0.15s linear;-moz-transition:all 0.15s linear;-o-transition:all 0.15s linear;transition:all 0.15s linear}input[type="text"].oversize,input[type="password"].oversize,input[type="date"].oversize,input[type="datetime"].oversize,input[type="email"].oversize,input[type="number"].oversize,input[type="search"].oversize,input[type="tel"].oversize,input[type="time"].oversize,input[type="url"].oversize,textarea.oversize{font-size:17px;padding:4px 6px}input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,textarea:focus{background:#fafafa;border-color:#b3b3b3}input[type="text"][disabled],input[type="password"][disabled],input[type="date"][disabled],input[type="datetime"][disabled],input[type="email"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="time"][disabled],input[type="url"][disabled],textarea[disabled]{background-color:#ddd}textarea{height:auto}select{width:100%}fieldset{border:solid 1px #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;padding:12px;margin:18px 0}fieldset legend{font-weight:bold;background:#fff;padding:0 3px;margin:0;margin-left:-3px}.error input,input.error,.error textarea,textarea.error,.error input:focus,input.error:focus,.error textarea:focus,textarea.error:focus{border-color:#703030;background-color:rgba(112,48,48,0.1)}.error input:focus,input.error:focus,.error textarea:focus,textarea.error:focus{outline-color:#c47575}.error label,label.error{color:#703030}.error small,small.error{display:block;padding:6px 4px;margin-top:-13px;margin-bottom:12px;background:#703030;color:#fff;font-size:12px;font-weight:bold;-moz-border-radius-bottomleft:2px;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px;-moz-border-radius-bottomright:2px;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}form.custom span.custom{display:inline-block;width:16px;height:16px;position:relative;top:2px;border:solid 1px #ccc;background:#fff}form.custom span.custom.radio{-webkit-border-radius:100px;-moz-border-radius:100px;-ms-border-radius:100px;-o-border-radius:100px;border-radius:100px}form.custom span.custom.checkbox:before{content:"";display:block;line-height:0.8;height:14px;width:14px;text-align:center;position:absolute;top:0;left:0;font-size:14px;color:#fff}form.custom span.custom.radio.checked:before{content:"";display:block;width:8px;height:8px;-webkit-border-radius:100px;-moz-border-radius:100px;-ms-border-radius:100px;-o-border-radius:100px;border-radius:100px;background:#222;position:relative;top:3px;left:3px}form.custom span.custom.checkbox.checked:before{content:"\00d7";color:#222}form.custom div.custom.dropdown{display:block;position:relative;width:auto;height:28px;margin-bottom:9px;margin-top:2px}form.custom div.custom.dropdown ul{overflow-y:auto;max-height:200px}form.custom div.custom.dropdown a.current{display:block;width:auto;line-height:26px;min-height:28px;padding:0;padding-left:6px;padding-right:38px;border:solid 1px #ddd;color:#141414;background-color:#fff;white-space:nowrap}form.custom div.custom.dropdown a.selector{position:absolute;width:27px;height:28px;display:block;right:0;top:0;border:solid 1px #ddd}form.custom div.custom.dropdown a.selector:after{content:"";display:block;content:"";display:block;width:0;height:0;border:solid 5px;border-color:#aaa transparent transparent transparent;position:absolute;left:50%;top:50%;margin-top:-2px;margin-left:-5px}form.custom div.custom.dropdown:hover a.selector:after,form.custom div.custom.dropdown.open a.selector:after{content:"";display:block;width:0;height:0;border:solid 5px;border-color:#222 transparent transparent transparent}form.custom div.custom.dropdown.open ul{display:block;z-index:10}form.custom div.custom.dropdown.small{width:134px !important}form.custom div.custom.dropdown.medium{width:254px !important}form.custom div.custom.dropdown.large{width:434px !important}form.custom div.custom.dropdown.expand{width:100% !important}form.custom div.custom.dropdown.open.small ul{width:134px !important}form.custom div.custom.dropdown.open.medium ul{width:254px !important}form.custom div.custom.dropdown.open.large ul{width:434px !important}form.custom div.custom.dropdown.open.expand ul{width:100% !important}form.custom div.custom.dropdown ul{position:absolute;width:auto;display:none;margin:0;left:0;top:27px;margin:0;padding:0;background:#fff;background:rgba(255,255,255,0.95);border:solid 1px #ccc}form.custom div.custom.dropdown ul li{color:#555;font-size:13px;cursor:pointer;padding:3px;padding-left:6px;padding-right:38px;min-height:18px;line-height:18px;margin:0;white-space:nowrap;list-style:none}form.custom div.custom.dropdown ul li.selected{background:#cdebf5;color:#000}form.custom div.custom.dropdown ul li.selected:after{content:"\2013";position:absolute;right:10px}form.custom div.custom.dropdown ul li:hover{background-color:#cdebf5;color:#000}form.custom div.custom.dropdown ul li:hover:after{content:"\2013";position:absolute;right:10px;color:#a3dbec}form.custom div.custom.dropdown ul li.selected:hover{background:#cdebf5;cursor:default;color:#000}form.custom div.custom.dropdown ul li.selected:hover:after{color:#000}form.custom div.custom.dropdown ul.show{display:block}form.custom .custom.disabled{background-color:#ddd}@-moz-document url-prefix(){form.custom div.custom.dropdown a.selector{height:28px}}.lt-ie9 form.custom div.custom.dropdown a.selector{height:28px}.row{width:940px;max-width:100%;min-width:768px;margin:0 auto}.row .row{width:auto;max-width:none;min-width:0;margin:0 -15px}.row.collapse .column,.row.collapse .columns{padding:0}.row .row{width:auto;max-width:none;min-width:0;margin:0 -15px}.row .row.collapse{margin:0}.column,.columns{float:left;min-height:1px;padding:0 15px;position:relative}.column.centered,.columns.centered{float:none;margin:0 auto}[class*="column"]+[class*="column"]:last-child{float:right}[class*="column"]+[class*="column"].end{float:left}.one,.row .one{width:8.33333%}.two,.row .two{width:16.66667%}.three,.row .three{width:25%}.four,.row .four{width:33.33333%}.five,.row .five{width:41.66667%}.six,.row .six{width:50%}.seven,.row .seven{width:58.33333%}.eight,.row .eight{width:66.66667%}.nine,.row .nine{width:75%}.ten,.row .ten{width:83.33333%}.eleven,.row .eleven{width:91.66667%}.twelve,.row .twelve{width:100%}.row .offset-by-one{margin-left:8.33333%}.row .offset-by-two{margin-left:16.66667%}.row .offset-by-three{margin-left:25%}.row .offset-by-four{margin-left:33.33333%}.row .offset-by-five{margin-left:41.66667%}.row .offset-by-six{margin-left:50%}.row .offset-by-seven{margin-left:58.33333%}.row .offset-by-eight{margin-left:66.66667%}.row .offset-by-nine{margin-left:75%}.row .offset-by-ten{margin-left:83.33333%}.push-two{left:16.66667%}.pull-two{right:16.66667%}.push-three{left:25%}.pull-three{right:25%}.push-four{left:33.33333%}.pull-four{right:33.33333%}.push-five{left:41.66667%}.pull-five{right:41.66667%}.push-six{left:50%}.pull-six{right:50%}.push-seven{left:58.33333%}.pull-seven{right:58.33333%}.push-eight{left:66.66667%}.pull-eight{right:66.66667%}.push-nine{left:75%}.pull-nine{right:75%}.push-ten{left:83.33333%}.pull-ten{right:83.33333%}img{height:auto}img,object,embed{max-width:100%}img{-ms-interpolation-mode:bicubic}#map_canvas img,.map_canvas img{max-width:none!important}.row{*zoom:1}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.block-grid{display:block;overflow:hidden;padding:0}.block-grid>li{display:block;height:auto;float:left}.block-grid.one-up{margin:0}.block-grid.one-up>li{width:100%;padding:0 0 15px}.block-grid.two-up{margin:0 -15px}.block-grid.two-up>li{width:50%;padding:0 15px 15px}.block-grid.two-up>li:nth-child(2n+1){clear:both}.block-grid.three-up{margin:0 -12px}.block-grid.three-up>li{width:33.33333%;padding:0 12px 12px}.block-grid.three-up>li:nth-child(3n+1){clear:both}.block-grid.four-up{margin:0 -10px}.block-grid.four-up>li{width:25%;padding:0 10px 10px}.block-grid.four-up>li:nth-child(4n+1){clear:both}.block-grid.five-up{margin:0 -8px}.block-grid.five-up>li{width:20%;padding:0 8px 8px}.block-grid.five-up>li:nth-child(5n+1){clear:both}.block-grid.six-up{margin:0 -8px}.block-grid.six-up>li{width:16.66667%;padding:0 8px 8px}.block-grid.six-up>li:nth-child(6n+1){clear:both}.block-grid.seven-up{margin:0 -8px}.block-grid.seven-up>li{width:14.28571%;padding:0 8px 8px}.block-grid.seven-up>li:nth-child(7n+1){clear:both}.block-grid.eight-up{margin:0 -8px}.block-grid.eight-up>li{width:12.5%;padding:0 8px 8px}.block-grid.eight-up>li:nth-child(8n+1){clear:both}.block-grid.nine-up{margin:0 -8px}.block-grid.nine-up>li{width:11.11111%;padding:0 8px 8px}.block-grid.nine-up>li:nth-child(9n+1){clear:both}.block-grid.ten-up{margin:0 -8px}.block-grid.ten-up>li{width:10%;padding:0 8px 8px}.block-grid.ten-up>li:nth-child(10n+1){clear:both}.block-grid.eleven-up{margin:0 -8px}.block-grid.eleven-up>li{width:9.09091%;padding:0 8px 8px}.block-grid.eleven-up>li:nth-child(11n+1){clear:both}.block-grid.twelve-up{margin:0 -8px}.block-grid.twelve-up>li{width:8.33333%;padding:0 8px 8px}.block-grid.twelve-up>li:nth-child(12n+1){clear:both}.button{width:auto;background:#2f343b;border:1px solid #0d0e10;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;color:#fff;cursor:pointer;display:inline-block;font-family:inherit;font-size:14px;font-weight:bold;line-height:1;margin:0;padding:10px 20px 11px;position:relative;text-align:center;text-decoration:none;-webkit-transition:background-color 0.15s ease-in-out;-moz-transition:background-color 0.15s ease-in-out;-o-transition:background-color 0.15s ease-in-out;transition:background-color 0.15s ease-in-out}.button:hover,.button:focus{color:#fff;background-color:#181b1f}.button:active{-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.2) inset;-moz-box-shadow:0 1px 0 rgba(0,0,0,0.2) inset;box-shadow:0 1px 0 rgba(0,0,0,0.2) inset}.button.large{font-size:17px;padding:15px 30px 16px}.button.medium{font-size:14px}.button.small{font-size:11px;padding:7px 14px 8px}.button.tiny{font-size:10px;padding:5px 10px 6px}.button.expand{width:100%;text-align:center}.button.primary{background-color:#2f343b;border:1px solid #0d0e10}.button.primary:hover,.button.primary:focus{background-color:#181b1f}.button.success{background-color:#c77966;border:1px solid #a4513c}.button.success:hover,.button.success:focus{background-color:#b75a43}.button.alert{background-color:#703030;border:1px solid #3a1919}.button.alert:hover,.button.alert:focus{background-color:#4c2121}.button.secondary{background-color:#7e827a;color:#000;border:1px solid #585b55}.button.secondary:hover,.button.secondary:focus{background-color:#656861}.button.radius{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.button.round{-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px}.button.full-width{width:100%;text-align:center;padding-left:0px !important;padding-right:0px !important}.button.left-align{text-align:left;text-indent:12px}.button.disabled,.button[disabled]{opacity:0.6;cursor:default;background:#2f343b;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.button.disabled:hover,.button[disabled]:hover{background:#2f343b}.button.disabled.success,.button[disabled].success{background-color:#c77966}.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#c77966;outline:none}.button.disabled.alert,.button[disabled].alert{background-color:#703030}.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#703030;outline:none}.button.disabled.secondary,.button[disabled].secondary{background-color:#7e827a}.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#7e827a;outline:none}input[type=submit].button,button.button{-webkit-appearance:none}@-moz-document url-prefix(){button::-moz-focus-inner,input[type="reset"]::-moz-focus-inner,input[type="button"]::-moz-focus-inner,input[type="submit"]::-moz-focus-inner,input[type="file"]>input[type="button"]::-moz-focus-inner{border:none;padding:0}input[type="submit"].tiny.button{padding:3px 10px 4px}input[type="submit"].small.button{padding:5px 14px 6px}input[type="submit"].button,input[type=submit].medium.button{padding:8px 20px 9px}input[type="submit"].large.button{padding:13px 30px 14px}}.button.dropdown{position:relative;padding-right:44px}.button.dropdown.large{padding-right:60px}.button.dropdown.small{padding-right:28px}.button.dropdown.tiny{padding-right:20px}.button.dropdown:after{content:"";display:block;width:0;height:0;border:solid 6px;border-color:#fff transparent transparent transparent;position:absolute;top:50%;right:20px;margin-top:-2px}.button.dropdown.large:after{content:"";display:block;width:0;height:0;border:solid 7px;border-color:#fff transparent transparent transparent;margin-top:-3px;right:30px}.button.dropdown.small:after{content:"";display:block;width:0;height:0;border:solid 5px;border-color:#fff transparent transparent transparent;margin-top:-2px;right:14px}.button.dropdown.tiny:after{content:"";display:block;width:0;height:0;border:solid 4px;border-color:#fff transparent transparent transparent;margin-top:-1px;right:10px}.button.dropdown>ul{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:none;position:absolute;left:-1px;background:#fff;background:rgba(255,255,255,0.95);list-style:none;margin:0;padding:0;border:1px solid #ccc;border-top:none;min-width:100%;z-index:40}.button.dropdown>ul li{width:100%;cursor:pointer;padding:0;min-height:18px;line-height:18px;margin:0;white-space:nowrap;list-style:none}.button.dropdown>ul li a,.button.dropdown>ul li button{display:block;color:#555;font-size:13px;font-weight:normal;padding:6px 14px;text-align:left}.button.dropdown>ul li button{width:100%;border:inherit;background:inherit;font-family:inherit;margin:inherit;-webkit-font-smoothing:antialiased}.button.dropdown>ul li:hover,.button.dropdown>ul li:focus{background-color:#9ea6b2;color:#222}.button.dropdown>ul li.divider{min-height:0;padding:0;height:1px;margin:4px 0;background:#ededed}.button.dropdown.up>ul{border-top:1px solid #ccc;border-bottom:none}.button.dropdown ul.no-hover.show-dropdown{display:block !important}.button.dropdown:hover>ul.no-hover{display:none}.button.dropdown.split{padding:0;position:relative}.button.dropdown.split:after{display:none}.button.dropdown.split:hover,.button.dropdown.split:focus{background-color:#2f343b}.button.dropdown.split.alert:hover,.button.dropdown.split.alert:focus{background-color:#703030}.button.dropdown.split.success:hover,.button.dropdown.split.success:focus{background-color:#c77966}.button.dropdown.split.secondary:hover,.button.dropdown.split.secondary:focus{background-color:#7e827a}.button.dropdown.split>a{color:#fff;display:block;padding:10px 50px 11px 20px;padding-left:20px;padding-right:50px;-webkit-transition:background-color 0.15s ease-in-out;-moz-transition:background-color 0.15s ease-in-out;-o-transition:background-color 0.15s ease-in-out;transition:background-color 0.15s ease-in-out}.button.dropdown.split>a:hover,.button.dropdown.split>a:focus{background-color:#181b1f;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;box-shadow:0 1px 0 rgba(255,255,255,0.5) inset}.button.dropdown.split.large>a{padding:15px 75px 16px 30px;padding-left:30px;padding-right:75px}.button.dropdown.split.small>a{padding:7px 35px 8px 14px;padding-left:14px;padding-right:35px}.button.dropdown.split.tiny>a{padding:5px 25px 6px 10px;padding-left:10px;padding-right:25px}.button.dropdown.split>span{background-color:#2f343b;position:absolute;right:0;top:0;height:100%;width:30px;border-left:1px solid #0d0e10;-webkit-box-shadow:1px 1px 0 rgba(255,255,255,0.5) inset;-moz-box-shadow:1px 1px 0 rgba(255,255,255,0.5) inset;box-shadow:1px 1px 0 rgba(255,255,255,0.5) inset;-webkit-transition:background-color 0.15s ease-in-out;-moz-transition:background-color 0.15s ease-in-out;-o-transition:background-color 0.15s ease-in-out;transition:background-color 0.15s ease-in-out}.button.dropdown.split>span:hover,.button.dropdown.split>span:focus{background-color:#181b1f}.button.dropdown.split>span:after{content:"";display:block;width:0;height:0;border:solid 6px;border-color:#fff transparent transparent transparent;position:absolute;top:50%;left:50%;margin-left:-6px;margin-top:-2px}.button.dropdown.split.secondary>span:after{content:"";display:block;width:0;height:0;border:solid 6px;border-color:#000 transparent transparent transparent}.button.dropdown.split.large span{width:45px}.button.dropdown.split.small span{width:21px}.button.dropdown.split.tiny span{width:15px}.button.dropdown.split.large span:after{content:"";display:block;width:0;height:0;border:solid 7px;border-color:#fff transparent transparent transparent;margin-top:-3px;margin-left:-7px}.button.dropdown.split.small span:after{content:"";display:block;width:0;height:0;border:solid 4px;border-color:#fff transparent transparent transparent;margin-top:-1px;margin-left:-4px}.button.dropdown.split.tiny span:after{content:"";display:block;width:0;height:0;border:solid 3px;border-color:#fff transparent transparent transparent;margin-top:-1px;margin-left:-3px}.button.dropdown.split.alert>span{background-color:#703030;border-left-color:#3a1919}.button.dropdown.split.success>span{background-color:#c77966;border-left-color:#a4513c}.button.dropdown.split.secondary>span{background-color:#7e827a;border-left-color:#585b55}.button.dropdown.split.secondary>a{color:#000}.button.dropdown.split.alert>a:hover,.button.dropdown.split.alert>span:hover,.button.dropdown.split.alert>a:focus,.button.dropdown.split.alert>span:focus{background-color:#4c2121}.button.dropdown.split.success>a:hover,.button.dropdown.split.success>span:hover,.button.dropdown.split.success>a:focus,.button.dropdown.split.success>span:focus{background-color:#b75a43}.button.dropdown.split.secondary>a:hover,.button.dropdown.split.secondary>span:hover,.button.dropdown.split.secondary>a:focus,.button.dropdown.split.secondary>span:focus{background-color:#656861}ul.button-group{list-style:none;padding:0;margin:0 0 12px;*zoom:1}ul.button-group:before,ul.button-group:after{content:" ";display:table}ul.button-group:after{clear:both}ul.button-group li{padding:0;margin:0 0 0 -1px;float:left}ul.button-group li:first-child{margin-left:0}ul.button-group.radius li .button,ul.button-group.radius li .button.radius,ul.button-group.radius li .button-rounded{-webkit-border-radius:0px;-moz-border-radius:0px;-ms-border-radius:0px;-o-border-radius:0px;border-radius:0px}ul.button-group.radius li:first-child .button,ul.button-group.radius li:first-child .button.radius{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}ul.button-group.radius li:first-child .button.rounded{-moz-border-radius-topleft:1000px;-webkit-border-top-left-radius:1000px;border-top-left-radius:1000px;-moz-border-radius-bottomleft:1000px;-webkit-border-bottom-left-radius:1000px;border-bottom-left-radius:1000px}ul.button-group.radius li:last-child .button,ul.button-group.radius li:last-child .button.radius{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}ul.button-group.radius li:last-child .button.rounded{-moz-border-radius-topright:1000px;-webkit-border-top-right-radius:1000px;border-top-right-radius:1000px;-moz-border-radius-bottomright:1000px;-webkit-border-bottom-right-radius:1000px;border-bottom-right-radius:1000px}ul.button-group.even .button{width:100%}ul.button-group.even.two-up li{width:50%}ul.button-group.even.three-up li{width:33.3%}ul.button-group.even.three-up li:first-child{width:33.4%}ul.button-group.even.four-up li{width:25%}ul.button-group.even.five-up li{width:20%}div.button-bar{overflow:hidden}div.button-bar ul.button-group{float:left;margin-right:8px}div.button-bar ul.button-group:last-child{margin-left:0}.nav-bar{height:40px;background:#4d4d4d;margin-left:0;margin-top:20px;padding:0}.nav-bar>li{float:left;display:block;position:relative;padding:0;margin:0;border:1px solid #333;border-right:none;line-height:38px;-webkit-box-shadow:1px 0 0 rgba(255,255,255,0.2) inset;-moz-box-shadow:1px 0 0 rgba(255,255,255,0.2) inset;box-shadow:1px 0 0 rgba(255,255,255,0.2) inset}.nav-bar>li:first-child{-webkit-box-shadow:0 0 0;-moz-box-shadow:0 0 0;box-shadow:0 0 0}.nav-bar>li:last-child{border-right:solid 1px #333;-webkit-box-shadow:1px 0 0 rgba(255,255,255,0.2) inset,1px 0 0 rgba(255,255,255,0.2);-moz-box-shadow:1px 0 0 rgba(255,255,255,0.2) inset,1px 0 0 rgba(255,255,255,0.2);box-shadow:1px 0 0 rgba(255,255,255,0.2) inset,1px 0 0 rgba(255,255,255,0.2)}.nav-bar>li.active{background:#2f343b;border-color:#181b1f}.nav-bar>li.active>a{color:#fff;cursor:default}.nav-bar>li.active:hover{background:#2f343b;cursor:default}.nav-bar>li:hover{background:#333}.nav-bar>li>a{color:#e6e6e6}.nav-bar>li ul{margin-bottom:0}.nav-bar>li .flyout{display:none}.nav-bar>li.has-flyout>a:first-child{padding-right:40px;position:relative}.nav-bar>li.has-flyout>a:first-child:after{content:"";display:block;width:0;height:0;border:solid 4px;border-color:#e6e6e6 transparent transparent transparent;position:absolute;right:20px;top:17px}.nav-bar>li.has-flyout>a.flyout-toggle{border-left:0 !important;position:absolute;right:0;top:0;padding:20px;z-index:2;display:block}.nav-bar>li.has-flyout.is-touch>a:first-child{padding-right:55px}.nav-bar>li.has-flyout.is-touch>a.flyout-toggle{border-left:1px dashed #666}.nav-bar>li>a:first-child{position:relative;padding:0 20px;display:block;text-decoration:none;font-size:14px}.nav-bar>li>input{margin:0 10px}.nav-bar.vertical{height:auto;margin-top:0}.nav-bar.vertical>li{float:none;border-bottom:none;border-right:solid 1px #333;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-bar.vertical>li.has-flyout>a:first-child:after{content:"";display:block;width:0;height:0;border:solid 4px;border-color:transparent transparent transparent #e6e6e6}.nav-bar.vertical>li .flyout{left:100%;top:-1px}.nav-bar.vertical>li .flyout.right{left:auto;right:100%}.nav-bar.vertical>li.active{border-right:solid 1px #181b1f}.nav-bar.vertical>li:last-child{border-bottom:solid 1px #333}.flyout{background:#f2f2f2;padding:20px;margin:0;border:1px solid #d9d9d9;position:absolute;top:39px;left:-1px;width:250px;z-index:40;-webkit-box-shadow:0 1px 5px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 5px rgba(0,0,0,0.1);box-shadow:0 1px 5px rgba(0,0,0,0.1)}.flyout p{line-height:1.2;font-size:13px}.flyout *:first-child{margin-top:0}.flyout *:last-child{margin-bottom:0}.flyout.small{width:166.66667px}.flyout.large{width:437.5px}.flyout.right{left:auto;right:-2px}.flyout.left{right:auto;left:-2px}.flyout.up{top:auto;bottom:39px}ul.flyout,.nav-bar li ul{padding:0;list-style:none}ul.flyout li,.nav-bar li ul li{border-left:solid 3px #CCC}ul.flyout li a,.nav-bar li ul li a{background:#f2f2f2;border:1px solid #e6e6e6;border-width:1px 1px 0 0;color:#555;display:block;font-size:14px;height:auto;line-height:1;padding:15px 20px;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;box-shadow:0 1px 0 rgba(255,255,255,0.5) inset}ul.flyout li a:hover,ul.flyout li a:focus,.nav-bar li ul li a:hover,.nav-bar li ul li a:focus{background:#ebebeb;color:#333}ul.flyout li.active,.nav-bar li ul li.active{margin-top:0;border-top:1px solid #4d4d4d;border-left:4px solid #1a1a1a}ul.flyout li.active a,.nav-bar li ul li.active a{background:#4d4d4d;border:none;color:#fff;height:auto;margin:0;position:static;top:0;-webkit-box-shadow:0 0 0;-moz-box-shadow:0 0 0;box-shadow:0 0 0}.orbit-wrapper{width:1px;height:1px;position:relative}.orbit{width:1px;height:1px;position:relative;overflow:hidden;margin-bottom:17px}.orbit.with-bullets{margin-bottom:40px}.orbit .orbit-slide{max-width:100%;position:absolute;top:0;left:0}.orbit a.orbit-slide{border:none;line-height:0;display:none}.orbit div.orbit-slide{width:100%;height:100%;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);opacity:0}.orbit-wrapper .timer{width:40px;height:40px;overflow:hidden;position:absolute;top:10px;right:10px;opacity:.6;cursor:pointer;z-index:31}.orbit-wrapper span.rotator{display:block;width:40px;height:40px;position:absolute;top:0;left:-20px;background:url('../images/foundation/orbit/rotator-black.png') no-repeat;z-index:3}.orbit-wrapper span.rotator.move{left:0}.orbit-wrapper span.mask{display:block;width:20px;height:40px;position:absolute;top:0;right:0;z-index:2;overflow:hidden}.orbit-wrapper span.mask.move{width:40px;left:0;background:url('../images/foundation/orbit/timer-black.png') repeat 0 0}.orbit-wrapper span.pause{display:block;width:40px;height:40px;position:absolute;top:0;left:0;background:url('../images/foundation/orbit/pause-black.png') no-repeat;z-index:4;opacity:0}.orbit-wrapper span.pause.active{background:url('../images/foundation/orbit/pause-black.png') no-repeat 0 -40px}.orbit-wrapper .timer:hover span.pause,.orbit-wrapper .timer:focus span.pause,.orbit-wrapper span.pause.active{opacity:1}.orbit-caption{display:none;font-family:inherit}.orbit-wrapper .orbit-caption{background:#000;background:rgba(0,0,0,0.6);z-index:30;color:#fff;text-align:center;padding:7px 0;font-size:13px;position:absolute;right:0;bottom:0;width:100%}.orbit-wrapper .slider-nav{display:block}.orbit-wrapper .slider-nav span{width:39px;height:50px;text-indent:-9999px;position:absolute;z-index:30;top:50%;margin-top:-25px;cursor:pointer}.orbit-wrapper .slider-nav span.right{background:url('../images/foundation/orbit/right-arrow.png');background-size:100%;right:0}.orbit-wrapper .slider-nav span.left{background:url('../images/foundation/orbit/left-arrow.png');background-size:100%;left:0}.lt-ie9 .orbit-wrapper .slider-nav span.right{background:url('../images/foundation/orbit/right-arrow-small.png')}.lt-ie9 .orbit-wrapper .slider-nav span.left{background:url('../images/foundation/orbit/left-arrow-small.png')}ul.orbit-bullets{position:absolute;z-index:30;list-style:none;bottom:-40px;left:50%;margin-left:-50px;padding:0}ul.orbit-bullets li{float:left;margin-left:5px;cursor:pointer;color:#999;text-indent:-9999px;background:url('../images/foundation/orbit/bullets.jpg') no-repeat 4px 0;width:13px;height:12px;overflow:hidden}ul.orbit-bullets li.active{color:#222;background-position:-8px 0}ul.orbit-bullets li.has-thumb{background:none;width:100px;height:75px}ul.orbit-bullets li.active.has-thumb{background-position:0 0;border-top:2px solid #000}.orbit-slide-counter{position:absolute;bottom:0;z-index:99;background:rgba(0,0,0,0.7);color:#fff;padding:5px}.orbit img.fluid-placeholder{visibility:hidden;position:static;display:block;width:100%}.orbit,.orbit-wrapper{width:100% !important}.lt-ie9 .timer{display:none !important}.lt-ie9 .orbit-caption{background:#000;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000,endColorstr=#99000000);zoom:1}@media only screen and (max-width: 767px){.orbit.orbit-stack-on-small img.fluid-placeholder{visibility:visible}.orbit.orbit-stack-on-small .orbit-slide{position:static;margin-bottom:10px}}.reveal-modal-bg{position:fixed;height:100%;width:100%;background:#000;background:rgba(0,0,0,0.45);z-index:40;display:none;top:0;left:0}.reveal-modal{background:#fff;visibility:hidden;display:none;top:100px;left:50%;margin-left:-260px;width:520px;position:absolute;z-index:41;padding:30px;-webkit-box-shadow:0 0 10px rgba(0,0,0,0.4);-moz-box-shadow:0 0 10px rgba(0,0,0,0.4);box-shadow:0 0 10px rgba(0,0,0,0.4)}.reveal-modal .close-reveal-modal:not(.button){font-size:22px;font-size:2.2rem;line-height:.5;position:absolute;top:8px;right:11px;color:#aaa;text-shadow:0 -1px 1px rgba(0,0,0,0.6);font-weight:bold;cursor:pointer}.reveal-modal.small{width:30%;margin-left:-15%}.reveal-modal.medium{width:40%;margin-left:-20%}.reveal-modal.large{width:60%;margin-left:-30%}.reveal-modal.xlarge{width:70%;margin-left:-35%}.reveal-modal.expand{width:90%;margin-left:-45%}.reveal-modal .row{min-width:0;margin-bottom:10px}.reveal-modal>:first-child{margin-top:0}.reveal-modal>:last-child{margin-bottom:0}@media print{.reveal-modal{border:solid 1px #000;background:#fff}}.tabs{list-style:none;border-bottom:solid 1px #e6e6e6;display:block;height:40px;padding:0;margin-bottom:20px}.tabs.contained{margin-bottom:0;margin-left:0}.tabs dt,.tabs li.section-title{color:#b3b3b3;cursor:default;display:block;float:left;font-size:12px;height:40px;line-height:40px;padding:0;padding-right:9px;padding-left:20px;font-weight:normal;width:auto;text-transform:uppercase}.tabs dt:first-child,.tabs li.section-title:first-child{padding:0;padding-right:9px}.tabs dd,.tabs li{display:block;float:left;padding:0;margin:0}.tabs dd a,.tabs li a{color:#6f6f6f;display:block;font-size:14px;height:40px;line-height:40px;padding:0px 23.8px}.tabs dd a:focus,.tabs li a:focus{font-weight:bold;color:#2f343b}.tabs dd.active,.tabs li.active{border-top:3px solid #2f343b;margin-top:-3px}.tabs dd.active a,.tabs li.active a{cursor:default;color:#3c3c3c;background:#fff;border-left:1px solid #e6e6e6;border-right:1px solid #e6e6e6;font-weight:bold}.tabs dd:first-child,.tabs li:first-child{margin-left:0}.tabs.vertical{height:auto;border-bottom:1px solid #e6e6e6}.tabs.vertical dt,.tabs.vertical dd,.tabs.vertical li{float:none;height:auto}.tabs.vertical dd,.tabs.vertical li{border-left:3px solid #ccc}.tabs.vertical dd a,.tabs.vertical li a{background:#f2f2f2;border:none;border:1px solid #e6e6e6;border-width:1px 1px 0 0;color:#555;display:block;font-size:14px;height:auto;line-height:1;padding:15px 20px;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;box-shadow:0 1px 0 rgba(255,255,255,0.5) inset}.tabs.vertical dd.active,.tabs.vertical li.active{margin-top:0;border-top:1px solid #4d4d4d;border-left:4px solid #1a1a1a}.tabs.vertical dd.active a,.tabs.vertical li.active a{background:#4d4d4d;border:none;color:#fff;height:auto;margin:0;position:static;top:0;-webkit-box-shadow:0 0 0;-moz-box-shadow:0 0 0;box-shadow:0 0 0}.tabs.vertical dd:first-child a.active,.tabs.vertical li:first-child a.active{margin:0}.tabs.pill{border-bottom:none;margin-bottom:10px}.tabs.pill dd,.tabs.pill li{margin-right:10px}.tabs.pill dd:last-child,.tabs.pill li:last-child{margin-right:0}.tabs.pill dd a,.tabs.pill li a{-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px;background:#e6e6e6;height:26px;line-height:26px;color:#666}.tabs.pill dd.active,.tabs.pill li.active{border:none;margin-top:0}.tabs.pill dd.active a,.tabs.pill li.active a{background-color:#2f343b;border:none;color:#fff}.tabs.pill.contained{border-bottom:solid 1px #eee;margin-bottom:0}.tabs.pill.two-up dd,.tabs.pill.two-up li,.tabs.pill.three-up dd,.tabs.pill.three-up li,.tabs.pill.four-up dd,.tabs.pill.four-up li,.tabs.pill.five-up dd,.tabs.pill.five-up li{margin-right:0}.tabs.two-up dt a,.tabs.two-up dd a,.tabs.two-up li a,.tabs.three-up dt a,.tabs.three-up dd a,.tabs.three-up li a,.tabs.four-up dt a,.tabs.four-up dd a,.tabs.four-up li a,.tabs.five-up dt a,.tabs.five-up dd a,.tabs.five-up li a{padding:0 17px;text-align:center;overflow:hidden}.tabs.two-up dt,.tabs.two-up dd,.tabs.two-up li{width:50%}.tabs.three-up dt,.tabs.three-up dd,.tabs.three-up li{width:33.33%}.tabs.four-up dt,.tabs.four-up dd,.tabs.four-up li{width:25%}.tabs.five-up dt,.tabs.five-up dd,.tabs.five-up li{width:20%}ul.tabs-content{display:block;margin:0 0 20px;padding:0}ul.tabs-content>li{display:none}ul.tabs-content>li.active{display:block}ul.tabs-content.contained{padding:0}ul.tabs-content.contained>li{border:solid 0 #e6e6e6;border-width:0 1px 1px 1px;padding:20px}ul.tabs-content.contained.vertical>li{border-width:1px 1px 1px 1px}.no-js ul.tabs-content>li{display:block}div.alert-box{display:block;padding:6px 7px 7px;font-weight:bold;font-size:14px;color:#fff;background-color:#2f343b;border:1px solid rgba(0,0,0,0.1);margin-bottom:12px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;text-shadow:0 -1px rgba(0,0,0,0.3);position:relative}div.alert-box.success{background-color:#c77966;color:#fff;text-shadow:0 -1px rgba(0,0,0,0.3)}div.alert-box.alert{background-color:#703030;color:#fff;text-shadow:0 -1px rgba(0,0,0,0.3)}div.alert-box.secondary{background-color:#7e827a;color:#000;text-shadow:0 1px rgba(255,255,255,0.3)}div.alert-box a.close{color:#333;position:absolute;right:4px;top:-1px;font-size:17px;opacity:0.2;padding:4px}div.alert-box a.close:hover,div.alert-box a.close:focus{opacity:0.4}.label{padding:1px 4px 2px;font-size:12px;font-weight:bold;text-align:center;text-decoration:none;line-height:1;white-space:nowrap;display:inline;position:relative;bottom:1px;color:#fff;background:#2f343b}.label.radius{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.label.round{padding:1px 7px 2px;-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px}.label.alert{background-color:#703030}.label.success{background-color:#c77966}.label.secondary{background-color:#7e827a;color:#000}.has-tip{border-bottom:dotted 1px #ccc;cursor:help;font-weight:bold;color:#333}.has-tip:hover,.has-tip:focus{border-bottom:dotted 1px #020202;color:#2f343b}.has-tip.tip-left,.has-tip.tip-right{float:none !important}.tooltip{display:none;background:#000;background:rgba(0,0,0,0.85);position:absolute;color:#fff;font-weight:bold;font-size:12px;padding:5px;z-index:999;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;line-height:normal}.tooltip>.nub{display:block;width:0;height:0;border:solid 5px;border-color:transparent transparent #000 transparent;border-color:transparent transparent rgba(0,0,0,0.85) transparent;position:absolute;top:-10px;left:10px}.tooltip.tip-override>.nub{border-color:transparent transparent #000 transparent !important;border-color:transparent transparent rgba(0,0,0,0.85) transparent !important;top:-10px !important}.tooltip.tip-top>.nub,.tooltip.tip-centered-top>.nub{border-color:#000 transparent transparent transparent;border-color:rgba(0,0,0,0.85) transparent transparent transparent;top:auto;bottom:-10px}.tooltip.tip-left,.tooltip.tip-right{float:none !important}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #000;border-color:transparent transparent transparent rgba(0,0,0,0.85);right:-10px;left:auto}.tooltip.tip-right>.nub{border-color:transparent #000 transparent transparent;border-color:transparent rgba(0,0,0,0.85) transparent transparent;right:auto;left:-10px}.tooltip.noradius{-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}.tooltip.opened{color:#2f343b !important;border-bottom:dotted 1px #020202 !important}.tap-to-close{display:block;font-size:10px;font-size:1rem;color:#888;font-weight:normal}.panel{background:#f2f2f2;border:solid 1px #e6e6e6;margin:0 0 22px 0;padding:20px}.panel>:first-child{margin-top:0}.panel>:last-child{margin-bottom:0}.panel.callout{background:#2f343b;color:#fff;border-color:#181b1f;-webkit-box-shadow:inset 0px 1px 0px rgba(255,255,255,0.5);-moz-box-shadow:inset 0px 1px 0px rgba(255,255,255,0.5);box-shadow:inset 0px 1px 0px rgba(255,255,255,0.5)}.panel.callout a{color:#fff}.panel.callout .button{background:#fff;border:none;color:#2f343b;text-shadow:none}.panel.callout .button:hover,.panel.callout .button:focus{background:rgba(255,255,255,0.8)}.panel.radius{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}ul.accordion{margin:0 0 22px 0;border-bottom:1px solid #7e827a}ul.accordion>li{list-style:none;margin:0;padding:0;border-top:1px solid #7e827a}ul.accordion>li>div.title{cursor:pointer;background:#8b8e87;padding:15px;margin:0;position:relative;border-left:1px solid #7e827a;border-right:1px solid #7e827a;-webkit-transition:0.15s background linear;-moz-transition:0.15s background linear;-o-transition:0.15s background linear;transition:0.15s background linear}ul.accordion>li>div.title h1,ul.accordion>li>div.title h2,ul.accordion>li>div.title h3,ul.accordion>li>div.title h4,ul.accordion>li>div.title h5{margin:0}ul.accordion>li>div.title:after{content:"";display:block;width:0;height:0;border:solid 6px;border-color:transparent #323330 transparent transparent;position:absolute;right:15px;top:21px}ul.accordion>li .content{display:none;padding:15px}ul.accordion>li.active{border-top:3px solid #2f343b}ul.accordion>li.active .title{background:#fff;padding-top:13px}ul.accordion>li.active .title:after{content:"";display:block;width:0;height:0;border:solid 6px;border-color:#323330 transparent transparent transparent}ul.accordion>li.active .content{background:#fff;display:block;border-left:1px solid #7e827a;border-right:1px solid #7e827a}ul.side-nav{display:block;list-style:none;margin:0;padding:17px 0}ul.side-nav li{display:block;list-style:none;margin:0 0 7px 0}ul.side-nav li a{display:block}ul.side-nav li.active a{color:#4d4d4d;font-weight:bold}ul.side-nav li.divider{border-top:1px solid #e6e6e6;height:0;padding:0}dl.sub-nav{display:block;width:auto;overflow:hidden;margin:-4px 0 18px;margin-right:0;margin-left:-9px;padding-top:4px}dl.sub-nav dt,dl.sub-nav dd{float:left;display:inline;margin-left:9px;margin-bottom:10px}dl.sub-nav dt{color:#999;font-weight:normal}dl.sub-nav dd a{text-decoration:none;-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px}dl.sub-nav dd.active a{font-weight:bold;background:#2f343b;color:#fff;padding:3px 9px;cursor:default}ul.pagination{display:block;height:24px;margin-left:-5px}ul.pagination li{float:left;display:block;height:24px;color:#999;font-size:14px;margin-left:5px}ul.pagination li a{display:block;padding:1px 7px 1px;color:#555}ul.pagination li:hover a,ul.pagination li a:focus{background:#e6e6e6}ul.pagination li.unavailable a{cursor:default;color:#999}ul.pagination li.unavailable:hover a,ul.pagination li.unavailable a:focus{background:transparent}ul.pagination li.current a{background:#2f343b;color:#fff;font-weight:bold;cursor:default}ul.pagination li.current a:hover,ul.pagination li.current a:focus{background:#2f343b}div.pagination-centered{text-align:center}div.pagination-centered ul>li{float:none;display:inline-block}ul.breadcrumbs{display:block;background:#8b8e87;padding:6px 10px 7px;border:1px solid #7e827a;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;overflow:hidden;margin-left:0}ul.breadcrumbs li{margin:0;padding:0 12px 0 0;float:left;list-style:none}ul.breadcrumbs li a,ul.breadcrumbs li span{text-transform:uppercase;font-size:11px;font-size:1.1rem;padding-left:12px}ul.breadcrumbs li:first-child a,ul.breadcrumbs li:first-child span{padding-left:0}ul.breadcrumbs li:before{content:"/";color:#aaa}ul.breadcrumbs li:first-child:before{content:" "}ul.breadcrumbs li.current a{cursor:default;color:#333}ul.breadcrumbs li:hover a,ul.breadcrumbs li a:focus{text-decoration:underline}ul.breadcrumbs li.current:hover a,ul.breadcrumbs li.current a:focus{text-decoration:none}ul.breadcrumbs li.unavailable a{color:#999}ul.breadcrumbs li.unavailable:hover a,ul.breadcrumbs li.unavailable a:focus{text-decoration:none;color:#999;cursor:default}ul.inline-list,ul.link-list{margin:0 0 17px -22px;padding:0;list-style:none;overflow:hidden}ul.inline-list>li,ul.link-list>li{list-style:none;float:left;margin-left:22px;display:block}ul.inline-list>li>*,ul.link-list>li>*{display:block}.keystroke,kbd{font-family:"Consolas", "Menlo", "Courier", monospace;font-size:13px;padding:2px 4px 0px;margin:0;background:#ededed;border:solid 1px #dbdbdb;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.th{display:block}.th img{display:block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,0.2);-moz-box-shadow:0 0 0 1px rgba(0,0,0,0.2);box-shadow:0 0 0 1px rgba(0,0,0,0.2);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-transition-property:box-shadow;-moz-transition-property:box-shadow;-o-transition-property:box-shadow;transition-property:box-shadow;-webkit-transition-duration:300ms;-moz-transition-duration:300ms;-o-transition-duration:300ms;transition-duration:300ms}.th:hover img,.th:focus img{-webkit-box-shadow:0 0 6px 1px rgba(47,52,59,0.5);-moz-box-shadow:0 0 6px 1px rgba(47,52,59,0.5);box-shadow:0 0 6px 1px rgba(47,52,59,0.5)}.flex-video{position:relative;padding-top:25px;padding-bottom:67.5%;height:0;margin-bottom:16px;overflow:hidden}.flex-video.widescreen{padding-bottom:57.25%}.flex-video.vimeo{padding-top:0}.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}table{background:#fff;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;margin:0 0 18px;border:1px solid #ddd}table thead,table tfoot{background:#f5f5f5}table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;font-size:14px;line-height:18px;text-align:left}table thead tr th,table tfoot tr td{padding:8px 10px 9px;font-size:14px;font-weight:bold;color:#222}table thead tr th:first-child,table tfoot tr td:first-child{border-left:none}table thead tr th:last-child,table tfoot tr td:last-child{border-right:none}table tbody tr.even,table tbody tr.alt{background:#f9f9f9}table tbody tr:nth-child(even){background:#f9f9f9}table tbody tr td{color:#333;padding:9px 10px;vertical-align:top;border:none}ul.vcard{display:inline-block;margin:0 0 12px 0;border:1px solid #ddd;padding:10px}ul.vcard li{margin:0;display:block}ul.vcard li.fn{font-weight:bold;font-size:15px}p.vevent span.summary{font-weight:bold}p.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 1px}div.progress{padding:2px;margin-bottom:10px;border:1px solid #ccc;height:25px}div.progress .meter{background:#2f343b;height:100%;display:block;width:50%}div.progress.secondary .meter{background:#7e827a}div.progress.success .meter{background:#c77966}div.progress.alert .meter{background:#703030}div.progress.radius{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}div.progress.radius .meter{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px}div.progress.round{-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px}div.progress.round .meter{-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px}.pricing-table{border:solid 1px #ddd;margin-left:0;margin-bottom:20px}.pricing-table *{list-style:none;line-height:1}.pricing-table .title{background-color:#ddd;padding:15px 20px;text-align:center;color:#333;font-weight:bold;font-size:16px}.pricing-table .price{background-color:#eee;padding:15px 20px;text-align:center;color:#333;font-weight:normal;font-size:20px}.pricing-table .description{background-color:#fff;padding:15px;text-align:center;color:#777;font-size:12px;font-weight:normal;line-height:1.4;border-bottom:dotted 1px #ddd}.pricing-table .bullet-item{background-color:#fff;padding:15px;text-align:center;color:#333;font-size:14px;font-weight:normal;border-bottom:dotted 1px #ddd}.pricing-table .cta-button{background-color:#f5f5f5;text-align:center;padding:20px}.top-bar-js-breakpoint{width:940px !important;visibility:hidden}.contain-to-grid{width:100%;background:#222}.fixed{width:100%;left:0;position:fixed;top:0;z-index:99}.sticky{float:left;overflow:hidden}.sticky.fixed{float:none}.top-bar{background:#222;min-height:45px;line-height:45px;margin:0 0 30px 0;padding:0;width:100%;position:relative}.contain-to-grid .top-bar{max-width:940px;margin:0 auto}.top-bar>ul .name h1{line-height:45px;margin:0}.top-bar>ul .name h1 a{font-weight:bold;padding:0 22.5px;font-size:17px !important}.top-bar>ul .name img{margin-top:-5px;vertical-align:middle}.top-bar.expanded{height:inherit}.top-bar ul{margin-left:0;display:inline;height:45px;line-height:45px;list-style:none}.top-bar ul>li{float:left}.top-bar ul>li a:not(.button){color:#fff;display:block;font-size:13px;font-weight:bold;height:45px;line-height:45px;padding:0 15px}.top-bar ul>li:not(.name):hover,.top-bar ul>li:not(.name).active,.top-bar ul>li:not(.name):focus{background:#000}.top-bar ul>li:not(.name):hover a,.top-bar ul>li:not(.name).active a,.top-bar ul>li:not(.name):focus a{color:#d9d9d9}.top-bar ul>li.divider{background:#000;-webkit-box-shadow:1px 0 0 rgba(255,255,255,0.1);-moz-box-shadow:1px 0 0 rgba(255,255,255,0.1);box-shadow:1px 0 0 rgba(255,255,255,0.1);height:100%;margin-right:1px;width:1px}.top-bar ul>li.has-button a.button{margin:0 11.25px}.top-bar ul>li.has-button:hover,.top-bar ul>li.has-button:focus{background:#222}.top-bar ul>li.has-button:hover a,.top-bar ul>li.has-button:focus a{color:#fff}.top-bar ul>li.search{padding:0 15px}.top-bar ul>li.search form{display:inline-block;margin-bottom:0;vertical-align:middle;width:200px}.top-bar ul>li.search form input[type=text]{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;float:left;font-size:13px;margin-top:-1px;height:22.5px;margin-bottom:0;width:130px}.top-bar ul>li.search form input[type=text]+.button{border-left:none;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;float:left;font-size:12px;margin-top:-1px;padding:5px 12px 4px}.top-bar ul>li.search form input[type=search]{font-size:16px;margin-bottom:0}.top-bar ul>li.search:hover,.top-bar ul>li.search:focus{background:#222}.top-bar ul>li.login{padding:0 15px}.top-bar ul>li.login form{display:inline-block;margin-bottom:0;vertical-align:middle;width:300px}.top-bar ul>li.login form input{float:left;width:auto;font-size:13px;margin-top:-1px;height:22.5px;margin-bottom:0}.top-bar ul>li.login form input[type=text]{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;width:120px}.top-bar ul>li.login form input[type=password]{margin-bottom:0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;width:120px}.top-bar ul>li.login form input[type=password]+.button{border-left:none;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px;-moz-border-radius-bottomright:2px;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px;float:left;font-size:12px;margin-top:-1px;padding:5px 12px 4px;width:60px}.top-bar ul>li.login:hover,.top-bar ul>li.login:focus{background:#222}.top-bar ul>li.toggle-topbar{display:none}.top-bar ul>li.has-dropdown{position:relative}.top-bar ul>li.has-dropdown:hover>.dropdown,.top-bar ul>li.has-dropdown:focus>.dropdown{display:block;visibility:visible}.top-bar ul>li.has-dropdown a{padding-right:33.75px}.top-bar ul>li.has-dropdown a:after{content:"";display:block;width:0;height:0;border:solid 5px;border-color:#fff transparent transparent transparent;margin-right:15px;margin-top:-2.5px;position:absolute;right:0;top:50%}.top-bar ul>li.has-dropdown .dropdown{background:#222;left:0;margin:0;padding:9px 0 0 0;position:absolute;visibility:hidden;z-index:99}.top-bar ul>li.has-dropdown .dropdown li{background:#222;line-height:1;min-width:100%;padding-bottom:5px}.top-bar ul>li.has-dropdown .dropdown li a{color:#fff;font-weight:normal;height:100%;line-height:1;padding:5px 17px 5px 15px;white-space:nowrap}.top-bar ul>li.has-dropdown .dropdown li a:after{border:none}.top-bar ul>li.has-dropdown .dropdown li a:hover,.top-bar ul>li.has-dropdown .dropdown li a:focus{background:#3c3c3c}.top-bar ul>li.has-dropdown .dropdown li label{color:#6f6f6f;font-size:10px;font-weight:bold;margin:0;padding-left:15px;text-transform:uppercase}.top-bar ul>li.has-dropdown .dropdown li.divider{border-top:solid 1px #000;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.1) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.1) inset;box-shadow:0 1px 0 rgba(255,255,255,0.1) inset;height:10px;padding:0;width:100%}.top-bar ul>li.has-dropdown .dropdown li:last-child{padding-bottom:10px}.top-bar ul>li.has-dropdown .dropdown li.active a{background:#000}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown>a{padding-right:30px}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown>a:after{border:none;content:"\00bb";right:5px;top:6px}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown .dropdown{position:absolute;left:100%;top:0}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown:hover>.dropdown,.top-bar ul>li.has-dropdown .dropdown li.has-dropdown:focus>.dropdown{display:block}.top-bar ul.left{float:left;width:auto;margin-bottom:0}.top-bar ul.right{float:right;width:auto;margin-bottom:0}.top-bar ul.right .has-dropdown .dropdown{left:auto;right:0px}.top-bar ul.right .has-dropdown .dropdown li.has-dropdown>.dropdown{right:100%;left:auto;width:100%}.top-bar .js-generated{display:none}@-moz-document url-prefix(){.top-bar ul li .button.small{padding-bottom:6px}.top-bar ul li.search form input[type=search]{font-size:14px;height:22px;padding:3px}}.lt-ie9 .top-bar ul li a{color:#fff;display:block;font-weight:bold;font-size:13px;height:45px;line-height:45px;padding:0 15px}.lt-ie9 .top-bar ul li a.button{height:auto;line-height:30px;margin-top:7px}.lt-ie9 .top-bar ul li a img{margin-top:-5px;vertical-align:middle}.lt-ie9 .top-bar section>ul>li a:hover,.lt-ie9 .top-bar section>ul>li a:focus{color:#ccc}.lt-ie9 .top-bar section>ul>li:hover,.lt-ie9 .top-bar section>ul>li:focus{background:#000}.lt-ie9 .top-bar section>ul>li.search:hover,.lt-ie9 .top-bar section>ul>li.search:focus,.lt-ie9 .top-bar section>ul>li.has-button:hover,.lt-ie9 .top-bar section>ul>li.has-button:focus{background:none}.lt-ie9 .top-bar section>ul>li.active{background:#000;color:#d9d9d9}.lt-ie9 .top-bar ul li.has-dropdown{padding-right:33.75px}.lt-ie9 .top-bar ul li.has-dropdown>ul li{padding-right:0}#joyRideTipContent{display:none}.joyride-tip-guide{display:none;position:absolute;background:#000;background:rgba(0,0,0,0.8);color:#fff;width:300px;z-index:101;top:0;left:0;font-family:inherit;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.joyride-content-wrapper{padding:18px 20px 24px}.joyride-tip-guide span.joyride-nub{display:block;position:absolute;left:22px;width:0;height:0;border:solid 14px}.joyride-tip-guide span.joyride-nub.top{border-color:#000;border-color:rgba(0,0,0,0.8);border-top-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;top:-28px;bottom:none}.joyride-tip-guide span.joyride-nub.bottom{border-color:#000;border-color:rgba(0,0,0,0.8) !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-28px;bottom:none}.joyride-tip-guide span.joyride-nub.right{border-color:#000;border-color:rgba(0,0,0,0.8) !important;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important;top:22px;bottom:none;left:auto;right:-28px}.joyride-tip-guide span.joyride-nub.left{border-color:#000;border-color:rgba(0,0,0,0.8) !important;border-top-color:transparent !important;border-left-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:-28px;right:auto;bottom:none}.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6{line-height:1.25;margin:0;font-weight:bold;color:#fff}.joyride-tip-guide p{margin:0 0 18px 0;font-size:14px;line-height:1.3}.joyride-timer-indicator-wrap{width:50px;height:3px;border:solid 1px #555;position:absolute;right:17px;bottom:16px}.joyride-timer-indicator{display:block;width:0;height:inherit;background:#666}.joyride-close-tip{position:absolute;right:10px;top:10px;color:#777 !important;text-decoration:none;font-size:20px;font-weight:normal;line-height:.5 !important}.joyride-close-tip:hover,.joyride-close-tip:focus{color:#eee !important}.joyride-modal-bg{position:fixed;height:100%;width:100%;background:transparent;background:rgba(0,0,0,0.5);z-index:100;display:none;top:0;left:0;cursor:pointer}.clearing-blackout{background:#000;background:rgba(0,0,0,0.8);position:fixed;width:100%;height:100%;top:0;left:0;z-index:999}.clearing-blackout .clearing-close{display:block}.clearing-container{position:relative;z-index:999;height:100%;overflow:hidden}.visible-img{height:75%;position:relative}.visible-img img{position:absolute;left:50%;top:50%;margin-left:-50%;max-height:100%;max-width:100%}.visible-img .clearing-caption{color:#fff;margin-bottom:0;text-align:center;position:absolute;bottom:0;background:#000;background:rgba(0,0,0,0.7);width:100%;padding:10px 100px}.clearing-close{z-index:999;position:absolute;top:10px;right:20px;font-size:30px;line-height:1;color:#fff;display:none}.clearing-close:hover,.clearing-close:focus{color:#ccc}.clearing-main-left,.clearing-main-right{position:absolute;top:50%;margin-top:-16px}.clearing-main-left.disabled,.clearing-main-right.disabled{opacity:0.5}.clearing-main-left:active,.clearing-main-right:active{margin-top:-15px}.clearing-main-left{left:10px;content:"";display:block;width:0;height:0;border:solid 16px;border-color:transparent #fff transparent transparent}.clearing-main-right{right:10px;content:"";display:block;width:0;height:0;border:solid 16px;border-color:transparent transparent transparent #fff}ul[data-clearing].block-grid.three-up>li:nth-child(3n+1){clear:none}ul[data-clearing] li{cursor:pointer;display:block}ul[data-clearing] li.clearing-feature ~ li{display:none}.clearing-assembled .clearing-container .carousel{background:#000;background:rgba(0,0,0,0.75);height:150px;margin-top:5px}.clearing-assembled .clearing-container .visible-img{background:#000;background:rgba(0,0,0,0.75);overflow:hidden}.clearing-assembled .clearing-container ul[data-clearing]{z-index:999;width:200%;height:100%;margin-left:0;position:relative;left:0}.clearing-assembled .clearing-container ul[data-clearing] li{display:block;width:175px;height:inherit;padding:0;float:left;overflow:hidden;background:#222;margin-right:1px;position:relative}.clearing-assembled .clearing-container ul[data-clearing] li.fix-height img{min-height:100%;height:100%;max-width:none}.clearing-assembled .clearing-container ul[data-clearing] li img{cursor:pointer !important;min-width:100% !important}.clearing-assembled .clearing-container ul[data-clearing] li.visible{border-top:4px solid #fff}ul.block-grid[data-clearing]{overflow:visible}.clearing-blackout ul.block-grid[data-clearing].two-up>li:nth-child(2n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].three-up>li:nth-child(3n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].four-up>li:nth-child(4n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].five-up>li:nth-child(5n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].six-up>li:nth-child(6n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].seven-up>li:nth-child(7n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].eight-up>li:nth-child(8n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].nine-up>li:nth-child(9n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].ten-up>li:nth-child(10n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].eleven-up>li:nth-child(11n+1){clear:none}.clearing-blackout ul.block-grid[data-clearing].twelve-up>li:nth-child(12n+1){clear:none}.clearing-blackout .th img{border:none;-webkit-box-shadow:0 0 0 0 rgba(0,0,0,0);-moz-box-shadow:0 0 0 0 rgba(0,0,0,0);box-shadow:0 0 0 0 rgba(0,0,0,0);-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}.clearing-blackout:hover img,.clearing-blackout:focus img{-webkit-box-shadow:0 0 0 0 rgba(0,0,0,0);-moz-box-shadow:0 0 0 0 rgba(0,0,0,0);box-shadow:0 0 0 0 rgba(0,0,0,0)}.show-for-small,.show-for-medium,.show-for-medium-down,.hide-for-large,.hide-for-large-up,.show-for-xlarge,.show-for-print{display:none !important}.hide-for-small,.hide-for-medium,.hide-for-medium-down,.show-for-large,.show-for-large-up,.hide-for-xlarge,.hide-for-print{display:inherit !important}@media only screen and (min-width: 1441px){.hide-for-small,.hide-for-medium,.hide-for-medium-down,.hide-for-large,.show-for-large-up,.show-for-xlarge{display:inherit !important}.show-for-small,.show-for-medium,.show-for-medium-down,.show-for-large,.hide-for-large-up,.hide-for-xlarge{display:none !important}}@media only screen and (max-width: 1279px) and (min-width: 768px){.hide-for-small,.show-for-medium,.show-for-medium-down,.hide-for-large,.hide-for-large-up,.hide-for-xlarge{display:inherit !important}.show-for-small,.hide-for-medium,.hide-for-medium-down,.show-for-large,.show-for-large-up,.show-for-xlarge{display:none !important}}@media only screen and (max-width: 767px){.show-for-small,.hide-for-medium,.show-for-medium-down,.hide-for-large,.hide-for-large-up,.hide-for-xlarge{display:inherit !important}.hide-for-small,.show-for-medium,.hide-for-medium-down,.show-for-large,.show-for-large-up,.show-for-xlarge{display:none !important}}.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}@media screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}}@media screen and (orientation: portrait){.show-for-portrait,.hide-for-landscape{display:inherit !important}.hide-for-portrait,.show-for-landscape{display:none !important}}.show-for-touch{display:none !important}.hide-for-touch{display:inherit !important}.touch .show-for-touch{display:inherit !important}.touch .hide-for-touch{display:none !important}table.show-for-xlarge,table.show-for-large,table.hide-for-small,table.hide-for-medium{display:table !important}@media only screen and (max-width: 1279px) and (min-width: 768px){.touch table.hide-for-xlarge,.touch table.hide-for-large,.touch table.hide-for-small,.touch table.show-for-medium{display:table !important}}@media only screen and (max-width: 767px){table.hide-for-xlarge,table.hide-for-large,table.hide-for-medium,table.show-for-small{display:table !important}}@media only screen and (max-device-width: 1280px){.touch .nav-bar li.has-flyout>a{padding-right:36px !important}}@media only screen and (max-device-width: 800px), only screen and (device-width: 1024px) and (device-height: 600px), only screen and (width: 1280px) and (orientation: landscape), only screen and (device-width: 800px), only screen and (max-width: 767px){.flex-video{padding-top:0}}@media only screen and (max-width: 1279px) and (min-width: 768px){.touch .nav-bar li a{font-size:13px}.touch .nav-bar li.has-flyout>a.flyout-toggle{padding:20px !important}.touch .nav-bar li.has-flyout>a{padding-right:36px !important}.clearing-main-right,.clearing-main-left{height:100%;width:40px;top:0;border:none}.clearing-main-right:before,.clearing-main-left:before{position:absolute;top:50%}.clearing-main-left{left:0}.clearing-main-left:before{left:5px;content:"";display:block;width:0;height:0;border:solid 16px;border-color:transparent #fff transparent transparent}.clearing-main-right{height:100%;right:0}.clearing-main-right:before{content:"";display:block;width:0;height:0;border:solid 16px;border-color:transparent transparent transparent #fff}}@media only screen and (max-width: 767px){.left,.right{float:none}body{-webkit-text-size-adjust:none;-ms-text-size-adjust:none;width:100%;min-width:0;margin-left:0;margin-right:0;padding-left:0;padding-right:0}.row{width:auto;min-width:0;margin-left:0;margin-right:0}.column,.columns{width:auto !important;float:none}.column:last-child,.columns:last-child{float:none}[class*="column"]+[class*="column"]:last-child{float:none}.column:before,.columns:before,.column:after,.columns:after{content:"";display:table}.column:after,.columns:after{clear:both}.offset-by-one,.offset-by-two,.offset-by-three,.offset-by-four,.offset-by-five,.offset-by-six,.offset-by-seven,.offset-by-eight,.offset-by-nine,.offset-by-ten{margin-left:0 !important}.push-two,.push-three,.push-four,.push-five,.push-six,.push-seven,.push-eight,.push-nine,.push-ten{left:auto}.pull-two,.pull-three,.pull-four,.pull-five,.pull-six,.pull-seven,.pull-eight,.pull-nine,.pull-ten{right:auto}.row .mobile-one{width:25% !important;float:left;padding:0 15px}.row .mobile-one:last-child{float:right}.row .mobile-one.end{float:left}.row.collapse .mobile-one{padding:0}.row .mobile-two{width:50% !important;float:left;padding:0 15px}.row .mobile-two:last-child{float:right}.row .mobile-two.end{float:left}.row.collapse .mobile-two{padding:0}.row .mobile-three{width:75% !important;float:left;padding:0 15px}.row .mobile-three:last-child{float:right}.row .mobile-three.end{float:left}.row.collapse .mobile-three{padding:0}.row .mobile-four{width:100% !important;float:left;padding:0 15px}.row .mobile-four:last-child{float:right}.row .mobile-four.end{float:left}.row.collapse .mobile-four{padding:0}.push-one-mobile{left:25%}.pull-one-mobile{right:25%}.push-two-mobile{left:50%}.pull-two-mobile{right:50%}.push-three-mobile{left:75%}.pull-three-mobile{right:75%}.block-grid.mobile>li{float:none;width:100%;margin-left:0}.block-grid>li{clear:none}.block-grid.mobile-one-up>li{width:100%}.block-grid.mobile-two-up>li{width:50%}.block-grid.mobile-two-up>li:nth-child(2n+1){clear:both}.block-grid.mobile-three-up>li{width:33.33333%}.block-grid.mobile-three-up>li:nth-child(3n+1){clear:both}.block-grid.mobile-four-up>li{width:25%}.block-grid.mobile-four-up>li:nth-child(4n+1){clear:both}.block-grid.mobile-five-up>li{width:20%}.block-grid.mobile-five-up>li:nth-child(5n+1){clear:both}.block-grid.mobile-six-up>li{width:16.66667%}.block-grid.mobile-six-up>li:nth-child(6n+1){clear:both}.block-grid.mobile-seven-up>li{width:14.28571%}.block-grid.mobile-seven-up>li:nth-child(7n+1){clear:both}.block-grid.mobile-eight-up>li{width:12.5%}.block-grid.mobile-eight-up>li:nth-child(8n+1){clear:both}.block-grid.mobile-nine-up>li{width:11.11111%}.block-grid.mobile-nine-up>li:nth-child(9n+1){clear:both}.block-grid.mobile-ten-up>li{width:10%}.block-grid.mobile-ten-up>li:nth-child(10n+1){clear:both}.block-grid.mobile-eleven-up>li{width:9.09091%}.block-grid.mobile-eleven-up>li:nth-child(11n+1){clear:both}.block-grid.mobile-twelve-up>li{width:8.33333%}.block-grid.mobile-twelve-up>li:nth-child(12n+1){clear:both}label.right{text-align:left}input[type="text"].one,.row input[type="text"].one,input[type="password"].one,.row input[type="password"].one,input[type="date"].one,.row input[type="date"].one,input[type="datetime"].one,.row input[type="datetime"].one,input[type="email"].one,.row input[type="email"].one,input[type="number"].one,.row input[type="number"].one,input[type="search"].one,.row input[type="search"].one,input[type="tel"].one,.row input[type="tel"].one,input[type="time"].one,.row input[type="time"].one,input[type="url"].one,.row input[type="url"].one,textarea.one,.row textarea.one{width:100% !important}input[type="text"].two,.row input[type="text"].two,input[type="password"].two,.row input[type="password"].two,input[type="date"].two,.row input[type="date"].two,input[type="datetime"].two,.row input[type="datetime"].two,input[type="email"].two,.row input[type="email"].two,input[type="number"].two,.row input[type="number"].two,input[type="search"].two,.row input[type="search"].two,input[type="tel"].two,.row input[type="tel"].two,input[type="time"].two,.row input[type="time"].two,input[type="url"].two,.row input[type="url"].two,textarea.two,.row textarea.two{width:100% !important}input[type="text"].three,.row input[type="text"].three,input[type="password"].three,.row input[type="password"].three,input[type="date"].three,.row input[type="date"].three,input[type="datetime"].three,.row input[type="datetime"].three,input[type="email"].three,.row input[type="email"].three,input[type="number"].three,.row input[type="number"].three,input[type="search"].three,.row input[type="search"].three,input[type="tel"].three,.row input[type="tel"].three,input[type="time"].three,.row input[type="time"].three,input[type="url"].three,.row input[type="url"].three,textarea.three,.row textarea.three{width:100% !important}input[type="text"].four,.row input[type="text"].four,input[type="password"].four,.row input[type="password"].four,input[type="date"].four,.row input[type="date"].four,input[type="datetime"].four,.row input[type="datetime"].four,input[type="email"].four,.row input[type="email"].four,input[type="number"].four,.row input[type="number"].four,input[type="search"].four,.row input[type="search"].four,input[type="tel"].four,.row input[type="tel"].four,input[type="time"].four,.row input[type="time"].four,input[type="url"].four,.row input[type="url"].four,textarea.four,.row textarea.four{width:100% !important}input[type="text"].five,.row input[type="text"].five,input[type="password"].five,.row input[type="password"].five,input[type="date"].five,.row input[type="date"].five,input[type="datetime"].five,.row input[type="datetime"].five,input[type="email"].five,.row input[type="email"].five,input[type="number"].five,.row input[type="number"].five,input[type="search"].five,.row input[type="search"].five,input[type="tel"].five,.row input[type="tel"].five,input[type="time"].five,.row input[type="time"].five,input[type="url"].five,.row input[type="url"].five,textarea.five,.row textarea.five{width:100% !important}input[type="text"].six,.row input[type="text"].six,input[type="password"].six,.row input[type="password"].six,input[type="date"].six,.row input[type="date"].six,input[type="datetime"].six,.row input[type="datetime"].six,input[type="email"].six,.row input[type="email"].six,input[type="number"].six,.row input[type="number"].six,input[type="search"].six,.row input[type="search"].six,input[type="tel"].six,.row input[type="tel"].six,input[type="time"].six,.row input[type="time"].six,input[type="url"].six,.row input[type="url"].six,textarea.six,.row textarea.six{width:100% !important}input[type="text"].seven,.row input[type="text"].seven,input[type="password"].seven,.row input[type="password"].seven,input[type="date"].seven,.row input[type="date"].seven,input[type="datetime"].seven,.row input[type="datetime"].seven,input[type="email"].seven,.row input[type="email"].seven,input[type="number"].seven,.row input[type="number"].seven,input[type="search"].seven,.row input[type="search"].seven,input[type="tel"].seven,.row input[type="tel"].seven,input[type="time"].seven,.row input[type="time"].seven,input[type="url"].seven,.row input[type="url"].seven,textarea.seven,.row textarea.seven{width:100% !important}input[type="text"].eight,.row input[type="text"].eight,input[type="password"].eight,.row input[type="password"].eight,input[type="date"].eight,.row input[type="date"].eight,input[type="datetime"].eight,.row input[type="datetime"].eight,input[type="email"].eight,.row input[type="email"].eight,input[type="number"].eight,.row input[type="number"].eight,input[type="search"].eight,.row input[type="search"].eight,input[type="tel"].eight,.row input[type="tel"].eight,input[type="time"].eight,.row input[type="time"].eight,input[type="url"].eight,.row input[type="url"].eight,textarea.eight,.row textarea.eight{width:100% !important}input[type="text"].nine,.row input[type="text"].nine,input[type="password"].nine,.row input[type="password"].nine,input[type="date"].nine,.row input[type="date"].nine,input[type="datetime"].nine,.row input[type="datetime"].nine,input[type="email"].nine,.row input[type="email"].nine,input[type="number"].nine,.row input[type="number"].nine,input[type="search"].nine,.row input[type="search"].nine,input[type="tel"].nine,.row input[type="tel"].nine,input[type="time"].nine,.row input[type="time"].nine,input[type="url"].nine,.row input[type="url"].nine,textarea.nine,.row textarea.nine{width:100% !important}input[type="text"].ten,.row input[type="text"].ten,input[type="password"].ten,.row input[type="password"].ten,input[type="date"].ten,.row input[type="date"].ten,input[type="datetime"].ten,.row input[type="datetime"].ten,input[type="email"].ten,.row input[type="email"].ten,input[type="number"].ten,.row input[type="number"].ten,input[type="search"].ten,.row input[type="search"].ten,input[type="tel"].ten,.row input[type="tel"].ten,input[type="time"].ten,.row input[type="time"].ten,input[type="url"].ten,.row input[type="url"].ten,textarea.ten,.row textarea.ten{width:100% !important}input[type="text"].eleven,.row input[type="text"].eleven,input[type="password"].eleven,.row input[type="password"].eleven,input[type="date"].eleven,.row input[type="date"].eleven,input[type="datetime"].eleven,.row input[type="datetime"].eleven,input[type="email"].eleven,.row input[type="email"].eleven,input[type="number"].eleven,.row input[type="number"].eleven,input[type="search"].eleven,.row input[type="search"].eleven,input[type="tel"].eleven,.row input[type="tel"].eleven,input[type="time"].eleven,.row input[type="time"].eleven,input[type="url"].eleven,.row input[type="url"].eleven,textarea.eleven,.row textarea.eleven{width:100% !important}input[type="text"].twelve,.row input[type="text"].twelve,input[type="password"].twelve,.row input[type="password"].twelve,input[type="date"].twelve,.row input[type="date"].twelve,input[type="datetime"].twelve,.row input[type="datetime"].twelve,input[type="email"].twelve,.row input[type="email"].twelve,input[type="number"].twelve,.row input[type="number"].twelve,input[type="search"].twelve,.row input[type="search"].twelve,input[type="tel"].twelve,.row input[type="tel"].twelve,input[type="time"].twelve,.row input[type="time"].twelve,input[type="url"].twelve,.row input[type="url"].twelve,textarea.twelve,.row textarea.twelve{width:100% !important}.button{display:block}button.button,input[type="submit"].button,input[type="reset"].button{width:100%;padding-left:0;padding-right:0}.button-group button.button,.button-group input[type="submit"].button{width:auto;padding:10px 20px 11px}.button-group button.button.large,.button-group input[type="submit"].button.large{padding:15px 30px 16px}.button-group button.button.medium,.button-group input[type="submit"].button.medium{padding:10px 20px 11px}.button-group button.button.small,.button-group input[type="submit"].button.small{padding:7px 14px 8px}.button-group button.button.tiny,.button-group input[type="submit"].button.tiny{padding:5px 10px 6px}.button-group.even button.button,.button-group.even input[type="submit"].button{width:100%;padding-left:0;padding-right:0}.nav-bar{height:auto}.nav-bar>li{float:none;display:block;border-right:none}.nav-bar>li>a.main{text-align:left;border-top:1px solid #ddd;border-right:none}.nav-bar>li:first-child>a.main{border-top:none}.nav-bar>li.has-flyout>a.flyout-toggle{position:absolute;right:0;top:0;padding:22px;z-index:2;display:block}.nav-bar>li.has-flyout.is-touch>a.flyout-toggle span{content:"";width:0;height:0;display:block}.nav-bar>li.has-flyout>a.flyout-toggle:hover span{border-top-color:#141414}.nav-bar.vertical>li.has-flyout>.flyout{left:0}.flyout{position:relative;width:100% !important;top:auto;margin-right:-2px;border-width:1px 1px 0 1px}.flyout.right{float:none;right:auto;left:-1px}.flyout.small,.flyout.large{width:100% !important}.flyout p:last-child{margin-bottom:18px}.reveal-modal-bg{position:absolute}.reveal-modal,.reveal-modal.small,.reveal-modal.medium,.reveal-modal.large,.reveal-modal.xlarge{width:80%;top:15px;left:50%;margin-left:-40%;padding:20px;height:auto}.clearing-container{margin:0}.clearing-close{z-index:99;font-size:37px;top:0px;right:5px}.clearing-caption{position:fixed;bottom:0;left:0;padding:10px !important;line-height:1.3}.clearing-main-right,.clearing-main-left{display:none}.clearing-blackout.clearing-assembled .visible-img,.clearing-blackout.clearing-assembled .clearing-container{height:100%}.clearing-blackout.clearing-assembled ul[data-clearing]{display:none}.joyride-tip-guide{width:95% !important;left:2.5% !important;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px}.joyride-tip-guide-wrapper{width:100%}.tabs.mobile{width:auto;margin:20px -20px 40px;border-bottom:solid 1px #ccc;height:auto;margin:20px -15px 0px -15px}.tabs.mobile dt,.tabs.mobile li,.tabs.mobile dd{float:none;height:auto}.tabs.mobile dd a,.tabs.mobile li a{font-size:15px;display:block;width:auto;height:auto;padding:18px 20px;margin:0;color:#555;line-height:1;border:none;border-left:none;border-right:none;border-top:1px solid #ccc;background:#fff}.tabs.mobile dd a.active,.tabs.mobile li a.active{border:none;background:#2f343b;color:#fff;margin:0;position:static;top:0;height:auto}.tabs.mobile dd:first-child a.active,.tabs.mobile li:first-child a.active{margin:0}.tabs.mobile+.tabs-content.contained{margin-left:-15px;margin-right:-15px}.tabs.mobile .section-title{padding-left:20px !important}.contained.mobile{margin-bottom:0}.contained.tabs.mobile dd a,.contained.tabs.mobile li a{padding:18px 20px}.tabs.mobile+ul.contained{margin-left:-20px;margin-right:-20px;border-width:0 0 1px 0}.tooltip{font-size:14px;line-height:1.4;padding:7px 10px 9px 10px;left:50% !important;max-width:80% !important;margin-left:-40%;font-size:110%}.tooltip>.nub,.tooltip.top>.nub,.tooltip.left>.nub,.tooltip.right>.nub{border-color:transparent transparent #000 transparent;border-color:transparent transparent rgba(0,0,0,0.85) transparent;top:-12px;left:10px}}@media only screen and (max-width: 940px){.top-bar{margin-bottom:0;overflow:hidden;height:45px;background:#222}.top-bar .js-generated{display:block}.contain-to-grid .top-bar{width:auto}.top-bar section{left:0;position:relative;width:auto;-webkit-transition:left 300ms 0;-moz-transition:left 300ms 0;-o-transition:left 300ms 0;transition:left 300ms 0}.top-bar ul{width:100%;height:100%;margin-bottom:0;display:block}.top-bar ul>li{float:none}.top-bar ul>li.active,.top-bar ul>li:hover{background:#151515}.top-bar ul>li.name{height:45px}.top-bar ul>li.name h1{line-height:1}.top-bar ul>li.name h1 a{color:#fff;display:block;line-height:45px !important;padding-left:15px;height:45px}.top-bar ul>li:hover a,.top-bar ul>li.active a{color:#fff}.top-bar ul>li a:not(.button){color:#fff}.top-bar ul>li.toggle-topbar{cursor:pointer;display:block;height:45px;position:absolute;right:0;top:0;width:50%}.top-bar ul>li.toggle-topbar a{content:"";display:block;width:0;height:0;border:solid 8px;border-color:#fff transparent transparent transparent;padding:0;position:absolute;top:50%;right:22.5px;margin-top:-4px}.top-bar ul>li.toggle-topbar:hover{background:inherit}.top-bar ul>li.toggle-topbar a{padding:0 !important}.top-bar ul>li.divider{border-bottom:solid 1px #3c3c3c;border-top:solid 1px #000;clear:both;height:1px !important;margin:8px 0 !important;width:100%}.top-bar ul>li.search{padding:0 22.5px}.top-bar ul>li.search form{width:100%}.top-bar ul>li.search form input[type=text]{width:75%}.top-bar ul>li.search form .button{top:-1px;width:25%}.top-bar ul>li.has-dropdown a{padding-right:33.75px}.top-bar ul>li.has-dropdown a:after{content:"";display:block;width:0;height:0;border:solid 5px;border-color:transparent transparent transparent rgba(255,255,255,0.5);margin-right:15px;margin-top:-4.5px;position:absolute;top:50%}.top-bar ul>li.has-dropdown:hover>.dropdown{display:block;visibility:hidden}.top-bar ul>li.has-dropdown .dropdown{visibility:hidden;z-index:0 !important}.top-bar ul>li.has-dropdown.moved{position:static}.top-bar ul>li.has-dropdown.moved>.dropdown{top:0;visibility:visible}.top-bar ul>li.has-dropdown.moved>.dropdown li label{margin-bottom:6px;padding-top:6px !important;font-size:11px}.top-bar ul>li.has-dropdown.moved>.dropdown li:not(.title){padding-bottom:0}.top-bar ul>li.has-dropdown.moved>.dropdown li:not(.title) a{padding:8px 22.5px;font-size:14px}.top-bar ul>li.has-dropdown.moved>.dropdown li a,.top-bar ul>li.has-dropdown.moved>.dropdown li label{padding:0 22.5px}.top-bar ul>li.has-dropdown.moved>.dropdown li a:hover{background:#3c3c3c;display:block}.top-bar ul>li.has-dropdown.moved>.dropdown li.divider{border-bottom:solid 1px rgba(255,255,255,0.1);margin-top:8px !important;margin-bottom:8px !important}.top-bar ul>li.has-dropdown.moved .back.title{padding-bottom:0}.top-bar ul>li.has-dropdown.moved .back.title a:before{position:absolute;top:50%;left:17.5px;margin-top:-5px;width:0;height:0;content:"";display:block;width:0;height:0;border:solid 5px;border-color:transparent #fff transparent transparent}.top-bar ul>li.has-dropdown.moved .back.title h5{margin:0;padding-left:15px;position:relative}.top-bar ul>li.has-dropdown.moved .back.title h5 a{background:transparent;padding-top:8px;padding-bottom:8px;font-size:23px;font-weight:bold}.top-bar ul>li.has-dropdown .dropdown li{background:transparent}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown .dropdown{left:100% !important;top:0;right:auto !important}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown>a{padding-right:33.75px}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown>a:after{content:"";margin-right:15px;content:"";display:block;width:0;height:0;border:solid 5px;border-color:transparent transparent transparent rgba(255,255,255,0.5);position:absolute;top:50%;margin-top:-4.5px}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown>a li a:hover{background:#3c3c3c}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown.moved{position:static}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown.moved .dropdown{top:0;visibility:visible}.top-bar ul>li.has-dropdown .dropdown li.has-dropdown:hover{display:block}.top-bar ul.left,.top-bar ul.right{float:none;width:100%}.top-bar ul.left>li,.top-bar ul.right>li{display:block;float:none;margin:0 !important}.top-bar ul.left>li.has-dropdown .dropdown,.top-bar ul.right>li.has-dropdown .dropdown{left:100% !important;top:0;right:auto !important}.top-bar section>ul li a:not(.button){padding-left:22.5px !important}.top-bar.expanded{height:100%}.top-bar.expanded ul li.toggle-topbar a{content:"";display:block;width:0;height:0;border:solid 8px;border-color:transparent transparent #ccc transparent;top:auto;bottom:50%;margin-bottom:-4px}.top-bar ul li.has-button{padding:5px 15px}.top-bar ul li .button.small{margin:0 !important;display:inline-block;width:100%}.top-bar ul>li.has-button a.button{margin:0}}
diff --git a/themes/RalfFallsIntoFoundation/404.php b/themes/RalfFallsIntoFoundation/404.php
--- a/themes/RalfFallsIntoFoundation/404.php
+++ b/themes/RalfFallsIntoFoundation/404.php
@@ -1,4 +1,4 @@
-<div class="eight columns">
+<div class="large-8 columns">
<h2>Something creative.</h2>
<p>This page should be print something creative about a 404 error but currently doesn't.</p>
<p>That's not a nice behavior for such a page.</p>
@@ -7,7 +7,7 @@
<h2>This is a 404 error.</h2>
<p>[ . ]</p>
</div>
-<div class="four columns justify">
+<div class="large-4 .text-justify">
<h2>Mais où est donc cette créativité attendue ?</h2>
<p>Cette page devrait faire preuve de créativité et afficher quelque chose de spécial à propos des erreurs 404, avec une quelconque référence culturelle à un mème, mais ne le fait pas ; on pourrait l'accuser d'anticonformisme en la matière.</p>
-</div>
\ No newline at end of file
+</div>
diff --git a/themes/RalfFallsIntoFoundation/footer.php b/themes/RalfFallsIntoFoundation/footer.php
--- a/themes/RalfFallsIntoFoundation/footer.php
+++ b/themes/RalfFallsIntoFoundation/footer.php
@@ -2,15 +2,15 @@
<!-- Footer -->
<footer><div class="row">
- <div class="twelve columns"><hr />
+ <div class="large-12 medium-12 columns"><hr />
<div class="row">
- <div class="three columns site-description">
+ <div class="large-3 medium-3 columns site-description">
<p><img src="/images/Nasqueron.png" width="80px" /></p>
<p><strong>Nasqueron</strong> is a community of developers <span class="ampersand">&</span> creative people.</p>
<hr />
<p><strong>Nasqueron Tools</strong> is a collection of small utilities, gadgets <span class="ampersand">&</span> scripts to perform daily tasks.</p>
</div>
- <div class="three columns">
+ <div class="large-3 medium-3 columns">
<dl>
<dt>Wikimedia dev</dt>
<dd><a href="/wikimedia/dev/feeds/">Gerrit activity feeds</a></dd>
@@ -30,7 +30,7 @@
<dd><a href="/geocaching/string2number">String to number</a></dd>
</dl>
</div>
- <div class="three columns">
+ <div class="large-3 medium-3 columns">
<dl>
<dt>Lists</dt>
<dd><a href="/lists/operations">Lists operations</a></dd>
@@ -47,7 +47,7 @@
<dd><a href="/color/screen/879497">Gray-blue screen</a></dd>
</dl>
</div>
- <div class="three columns">
+ <div class="large-3 medium-3 columns">
<dl>
<dt>Generators</dt>
<dd><a href="/generators/GNOME/desktop-file">GNOME .desktop file generator</dd>
@@ -66,27 +66,30 @@
</div>
</div>
</div>
- <div class="twelve columns"><hr />
+ <div class="large-12 columns"><hr />
<div class="row extrainfos">
- <div class="six columns">
+ <div class="large-6 medium-6 columns">
<p><i class="general foundicon-settings"></i> <strong>Options:</strong> <a href="javascript:SetUITonality('dark');">dark mode</a> | <a href="javascript:SetUITonality('light');">light mode</a></p>
</div>
- <div class="six columns">
- <p class="right"><i class="general foundicon-flag"></i> <strong>Git revision:</strong> <?= substr(`git rev-parse HEAD`, 0, 7) ?> | <strong>Version:</strong> alpha preview</p>
+ <div class="large-6 medium-6 columns">
+ <p class="medium-text-right"><i class="general foundicon-flag"></i> <strong>Git revision:</strong> <?= substr(`git rev-parse HEAD`, 0, 7) ?> | <strong>Version:</strong> alpha preview</p>
</div>
</div>
<div class="row extrainfos">
- <div class="six columns">
+ <div class="large-6 medium-6 columns">
<p><i class="general foundicon-globe"></i> <strong>Crafted by</strong> <a href="http://www.dereckson.be/">Dereckson</a> | <strong>Powered by</strong> <a href="http://keruald.sf.net">Keruald/Pluton</a> <span class="ampersand">&</span> <a href="http://foundation.zurb.com/">Foundation</a>.</p>
</div>
- <div class="six columns">
- <p class="right">“For water, though supposedly incompressible, is not entirely so.”</p>
+ <div class="large-6 medium-6 columns">
+ <p class="medium-text-right">“For water, though supposedly incompressible, is not entirely so.”</p>
</div>
</div>
</div>
</div></footer>
- <script src="/javascripts/jquery.cookie.js"></script>
+ <script src="/javascripts/vendor/jquery.min.js"></script>
+ <script src="/javascripts/vendor/jquery.cookie.js"></script>
+ <script src="/javascripts/vendor/what-input.min.js"></script>
+ <script src="/javascripts/vendor/foundation.js"></script>
<script src="/javascripts/app.js"></script>
<?= $document->footer ?>
</body>
diff --git a/themes/RalfFallsIntoFoundation/header.php b/themes/RalfFallsIntoFoundation/header.php
--- a/themes/RalfFallsIntoFoundation/header.php
+++ b/themes/RalfFallsIntoFoundation/header.php
@@ -1,27 +1,13 @@
-<!DOCTYPE html>
-
-<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
-<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
-<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
+<!doctype html>
+<html class="no-js" lang="en">
<head>
<meta charset="utf-8" />
-
- <!-- Set the viewport width to device width for mobile -->
- <meta name="viewport" content="width=device-width" />
-
+ <meta http-equiv="x-ua-compatible" content="ie=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><?= $document->title ?> - Tools</title>
- <!-- Included CSS Files (Uncompressed) -->
- <!--
<link rel="stylesheet" href="/stylesheets/foundation.css">
- -->
-
- <!-- Included CSS Files (Compressed) -->
- <link rel="stylesheet" href="/stylesheets/foundation.min.css">
-
- <script src="/javascripts/modernizr.foundation.js"></script>
- <script src="/javascripts/foundation.min.js"></script>
- <link href='//fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,400italic' rel='stylesheet' type='text/css'>
+ <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,400italic" type="text/css">
<link rel="stylesheet" href="/stylesheets/general_foundicons.css">
<link rel="stylesheet" href="/stylesheets/general_enclosed_foundicons.css">
<link rel="stylesheet" href="/stylesheets/social_foundicons.css">
@@ -40,12 +26,12 @@
<!-- Header -->
<header>
<div class="row">
- <div class="twelve columns">
+ <div class="large-12 columns">
<h1><a href="/"><i class="general foundicon-tools"></i></a><?= $document->title ?></h1>
</div>
</div>
<div class="row">
- <div class="six columns">
+ <div class="large-6 medium-6 columns">
<?php
if ($document->description) {
$description = str_replace('&', '<span class="ampersand">&amp;</span>', $document->description);
@@ -53,8 +39,8 @@
}
?>
</div>
- <div class="six columns">
- <p class="right"><a href="/"><i class="accessibility foundicon-braille"></i></a><br />
+ <div class="large-6 medium-6 columns">
+ <p><a href="/"><i class="accessibility foundicon-braille"></i></a><br />
Tools — <em>Small utilities, gadgets <span class="ampersand">&amp;</span> scripts to perform daily tasks.</em></p>
</div>
</div>

File Metadata

Mime Type
text/plain
Expires
Mon, Dec 23, 20:10 (18 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2313107
Default Alt Text
D268.diff (1 MB)

Event Timeline