Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                
  <body class="nav-is-fixed">
    <header class="cd-main-header">
      <a class="cd-logo" href="#0"><img src="img/cd-logo.svg" alt="Logo"></a>

      <ul class="cd-header-buttons">
        <li><a class="cd-search-trigger" href="#cd-search">Search<span></span></a></li>
        <li><a class="cd-nav-trigger" href="#cd-primary-nav">Menu<span></span></a></li>
      </ul>
      <!-- cd-header-buttons -->
    </header>

    <main class="cd-main-content m-h">
      <div class="cd-intro">
        <h1>Mega-Site Navigation</h1>
        <div class="cd-nugget-info">
          <a href="https://codyhouse.co/?p=409">
            <span>
						<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
							<style type="text/css">
								.cd-nugget-info-arrow{fill:#383838;}
							</style>
							<polygon class="cd-nugget-info-arrow" points="15,7 4.4,7 8.4,3 7,1.6 0.6,8 0.6,8 0.6,8 7,14.4 8.4,13 4.4,9 15,9 "/>
						</svg>
					</span> Article &amp; Download
          </a>
        </div>
        <!-- cd-nugget-info -->
      </div>
    </main>
    <div class="cd-overlay"></div>

    <nav class="cd-nav">
      <ul id="cd-primary-nav" class="cd-primary-nav is-fixed">
        <li class="has-children">
          <a href="https://codyhouse.co/?p=409">Clothing</a>

          <ul class="cd-secondary-nav is-hidden">
            <li class="go-back"><a href="#0">Menu</a></li>
            <li class="see-all"><a href="https://codyhouse.co/?p=409">All Clothing</a></li>
            <li class="has-children">
              <a href="https://codyhouse.co/?p=409">Accessories</a>

              <ul class="is-hidden">
                <li class="go-back"><a href="#0">Clothing</a></li>
                <li class="see-all"><a href="https://codyhouse.co/?p=409">All Accessories</a></li>
                <li class="has-children">
                  <a href="#0">Beanies</a>

                  <ul class="is-hidden">
                    <li class="go-back"><a href="#0">Accessories</a></li>
                    <li class="see-all"><a href="https://codyhouse.co/?p=409">All Benies</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Caps &amp; Hats</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Gifts</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Scarves &amp; Snoods</a></li>
                  </ul>
                </li>
                <li class="has-children">
                  <a href="#0">Caps &amp; Hats</a>

                  <ul class="is-hidden">
                    <li class="go-back"><a href="#0">Accessories</a></li>
                    <li class="see-all"><a href="https://codyhouse.co/?p=409">All Caps &amp; Hats</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Beanies</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Caps</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Hats</a></li>
                  </ul>
                </li>
                <li><a href="https://codyhouse.co/?p=409">Glasses</a></li>
                <li><a href="https://codyhouse.co/?p=409">Gloves</a></li>
                <li><a href="https://codyhouse.co/?p=409">Jewellery</a></li>
                <li><a href="https://codyhouse.co/?p=409">Scarves</a></li>
                <li><a href="https://codyhouse.co/?p=409">Wallets</a></li>
                <li><a href="https://codyhouse.co/?p=409">Watches</a></li>
              </ul>
            </li>

            <li class="has-children">
              <a href="https://codyhouse.co/?p=409">Bottoms</a>

              <ul class="is-hidden">
                <li class="go-back"><a href="#0">Clothing</a></li>
                <li class="see-all"><a href="https://codyhouse.co/?p=409">All Bottoms</a></li>
                <li><a href="https://codyhouse.co/?p=409">Casual Trousers</a></li>
                <li class="has-children">
                  <a href="#0">Jeans</a>

                  <ul class="is-hidden">
                    <li class="go-back"><a href="#0">Bottoms</a></li>
                    <li class="see-all"><a href="https://codyhouse.co/?p=409">All Jeans</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Ripped</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Skinny</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Slim</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Straight</a></li>
                  </ul>
                </li>
                <li><a href="#0">Leggings</a></li>
                <li><a href="#0">Shorts</a></li>
              </ul>
            </li>

            <li class="has-children">
              <a href="https://codyhouse.co/?p=409">Jackets</a>

              <ul class="is-hidden">
                <li class="go-back"><a href="#0">Clothing</a></li>
                <li class="see-all"><a href="https://codyhouse.co/?p=409">All Jackets</a></li>
                <li><a href="https://codyhouse.co/?p=409">Blazers</a></li>
                <li><a href="https://codyhouse.co/?p=409">Bomber jackets</a></li>
                <li><a href="https://codyhouse.co/?p=409">Denim Jackets</a></li>
                <li><a href="https://codyhouse.co/?p=409">Duffle Coats</a></li>
                <li><a href="https://codyhouse.co/?p=409">Leather Jackets</a></li>
                <li><a href="https://codyhouse.co/?p=409">Parkas</a></li>
              </ul>
            </li>

            <li class="has-children">
              <a href="https://codyhouse.co/?p=409">Tops</a>

              <ul class="is-hidden">
                <li class="go-back"><a href="#0">Clothing</a></li>
                <li class="see-all"><a href="https://codyhouse.co/?p=409">All Tops</a></li>
                <li><a href="https://codyhouse.co/?p=409">Cardigans</a></li>
                <li><a href="https://codyhouse.co/?p=409">Coats</a></li>
                <li><a href="https://codyhouse.co/?p=409">Hoodies &amp; Sweatshirts</a></li>
                <li><a href="https://codyhouse.co/?p=409">Jumpers</a></li>
                <li><a href="https://codyhouse.co/?p=409">Polo Shirts</a></li>
                <li><a href="https://codyhouse.co/?p=409">Shirts</a></li>
                <li class="has-children">
                  <a href="#0">T-Shirts</a>

                  <ul class="is-hidden">
                    <li class="go-back"><a href="#0">Tops</a></li>
                    <li class="see-all"><a href="https://codyhouse.co/?p=409">All T-shirts</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Plain</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Print</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Striped</a></li>
                    <li><a href="https://codyhouse.co/?p=409">Long sleeved</a></li>
                  </ul>
                </li>
                <li><a href="https://codyhouse.co/?p=409">Vests</a></li>
              </ul>
            </li>
          </ul>
        </li>

        <li class="has-children">
          <a href="https://codyhouse.co/?p=409">Gallery</a>

          <ul class="cd-nav-gallery is-hidden">
            <li class="go-back"><a href="#0">Menu</a></li>
            <li class="see-all"><a href="https://codyhouse.co/?p=409">Browse Gallery</a></li>
            <li>
              <a class="cd-nav-item" href="https://codyhouse.co/?p=409">
                <img src="img/img.jpg" alt="Product Image">
                <h3>Product #1</h3>
              </a>
            </li>

            <li>
              <a class="cd-nav-item" href="https://codyhouse.co/?p=409">
                <img src="img/img.jpg" alt="Product Image">
                <h3>Product #2</h3>
              </a>
            </li>

            <li>
              <a class="cd-nav-item" href="https://codyhouse.co/?p=409">
                <img src="img/img.jpg" alt="Product Image">
                <h3>Product #3</h3>
              </a>
            </li>

            <li>
              <a class="cd-nav-item" href="https://codyhouse.co/?p=409">
                <img src="img/img.jpg" alt="Product Image">
                <h3>Product #4</h3>
              </a>
            </li>
          </ul>
        </li>

        <li class="has-children">
          <a href="https://codyhouse.co/?p=409">Services</a>
          <ul class="cd-nav-icons is-hidden">
            <li class="go-back"><a href="#0">Menu</a></li>
            <li class="see-all"><a href="https://codyhouse.co/?p=409">Browse Services</a></li>
            <li>
              <a class="cd-nav-item item-1" href="https://codyhouse.co/?p=409">
                <h3>Service #1</h3>
                <p>This is the item description</p>
              </a>
            </li>

            <li>
              <a class="cd-nav-item item-2" href="https://codyhouse.co/?p=409">
                <h3>Service #2</h3>
                <p>This is the item description</p>
              </a>
            </li>

            <li>
              <a class="cd-nav-item item-3" href="https://codyhouse.co/?p=409">
                <h3>Service #3</h3>
                <p>This is the item description</p>
              </a>
            </li>

            <li>
              <a class="cd-nav-item item-4" href="https://codyhouse.co/?p=409">
                <h3>Service #4</h3>
                <p>This is the item description</p>
              </a>
            </li>

            <li>
              <a class="cd-nav-item item-5" href="https://codyhouse.co/?p=409">
                <h3>Service #5</h3>
                <p>This is the item description</p>
              </a>
            </li>

            <li>
              <a class="cd-nav-item item-6" href="https://codyhouse.co/?p=409">
                <h3>Service #6</h3>
                <p>This is the item description</p>
              </a>
            </li>

            <li>
              <a class="cd-nav-item item-7" href="https://codyhouse.co/?p=409">
                <h3>Service #7</h3>
                <p>This is the item description</p>
              </a>
            </li>

            <li>
              <a class="cd-nav-item item-8" href="https://codyhouse.co/?p=409">
                <h3>Service #8</h3>
                <p>This is the item description</p>
              </a>
            </li>
          </ul>
        </li>

        <li><a href="https://codyhouse.co/?p=409">Standard</a></li>
      </ul>
      <!-- primary-nav -->
    </nav>
    <!-- cd-nav -->

    <div id="cd-search" class="cd-search">
      <form>
        <input type="search" placeholder="Search...">
      </form>
    </div>
    <div id="carbonads-container">
      <div class="carbonad">
        <script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=codyhouseco" id="_carbonads_js"></script>
      </div>
      <a href="#0" class="close-carbon-adv">Close</a>
    </div>

              
            
!

CSS

              
                /* https://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}


/* HTML5 display-role reset for older browsers */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section,
main {
  display: block;
}

body {
  line-height: 1;
}

ol,
ul {
  list-style: none;
}

blockquote,
q {
  quotes: none;
}

blockquote:before,
blockquote:after,
q:before,
q:after {
  content: '';
  content: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}


/* -------------------------------- 

Primary style

-------------------------------- */

*,
*::after,
*::before {
  box-sizing: border-box;
}

html {
  font-size: 62.5%;
}

body {
  font-size: 1.6rem;
  font-family: sans-serif;
  color: #2e3233;
  background-color: #ffffff;
}

@media only screen and (max-width: 1169px) {
  body.nav-on-left.overflow-hidden {
    overflow: hidden;
  }
}

a {
  color: #69aa6f;
  text-decoration: none;
}

img {
  /* make images responsive */
  max-width: 100%;
}

input {
  font-family: sans-serif;
  font-size: 1.6rem;
}

input[type="search"]::-ms-clear {
  /* removes close icon - IE */
  display: none;
}

input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
  display: none;
}


/* -------------------------------- 

xnugget info 

-------------------------------- */

.cd-nugget-info {
  text-align: center;
}

.cd-nugget-info a {
  display: inline-block;
  padding: 1.6em 2.2em;
  background: #2e3233;
  position: relative;
  font-size: 14px;
  color: #ffffff;
  border-radius: 50em;
  -webkit-transition: all 0.2s;
  -moz-transition: all 0.2s;
  transition: all 0.2s;
}

.no-touch .cd-nugget-info a:hover {
  opacity: .8;
}

.cd-nugget-info span {
  vertical-align: middle;
  display: inline-block;
}

.cd-nugget-info span svg {
  display: block;
}

.cd-nugget-info .cd-nugget-info-arrow {
  fill: #ffffff;
}


/* -------------------------------- 

xcarbonads 

-------------------------------- */

#carbonads-container,
#ui8ads-container {
  position: fixed;
  top: 120px;
  right: 5%;
  width: 180px;
  display: none;
  z-index: 10;
}

#carbonads-container .close-carbon-adv,
#carbonads-container .close-ui8-adv,
#ui8ads-container .close-carbon-adv,
#ui8ads-container .close-ui8-adv {
  display: inline-block;
  position: absolute;
  top: 0;
  right: 100%;
  background: rgba(56, 56, 56, 0.8);
  text-indent: 100%;
  overflow: hidden;
  width: 32px;
  height: 32px;
}

#carbonads-container .close-carbon-adv:hover,
#carbonads-container .close-ui8-adv:hover,
#ui8ads-container .close-carbon-adv:hover,
#ui8ads-container .close-ui8-adv:hover {
  background: #383838;
}

#carbonads-container .close-carbon-adv::after,
#carbonads-container .close-carbon-adv::before,
#carbonads-container .close-ui8-adv::after,
#carbonads-container .close-ui8-adv::before,
#ui8ads-container .close-carbon-adv::after,
#ui8ads-container .close-carbon-adv::before,
#ui8ads-container .close-ui8-adv::after,
#ui8ads-container .close-ui8-adv::before {
  content: '';
  background-color: #fff;
  height: 2px;
  width: 14px;
  position: absolute;
  top: 14px;
  left: 9px;
}

#carbonads-container .close-carbon-adv::after,
#carbonads-container .close-ui8-adv::after,
#ui8ads-container .close-carbon-adv::after,
#ui8ads-container .close-ui8-adv::after {
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  transform: rotate(45deg);
}

#carbonads-container .close-carbon-adv::before,
#carbonads-container .close-ui8-adv::before,
#ui8ads-container .close-carbon-adv::before,
#ui8ads-container .close-ui8-adv::before {
  -webkit-transform: rotate(-45deg);
  -moz-transform: rotate(-45deg);
  -ms-transform: rotate(-45deg);
  -o-transform: rotate(-45deg);
  transform: rotate(-45deg);
}

#carbonads-container .carbonad,
#carbonads-container .ui8ad,
#ui8ads-container .carbonad,
#ui8ads-container .ui8ad {
  background: rgba(255, 255, 255, 0.9);
  border: none;
  width: 100%;
  height: auto;
  padding: 14px;
  text-align: center;
  border-radius: 0 3px 3px 3px;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
}

#carbonads-container .carbonad .carbonad-image img,
#carbonads-container .carbonad .ui8ad-image img,
#carbonads-container .ui8ad .carbonad-image img,
#carbonads-container .ui8ad .ui8ad-image img,
#ui8ads-container .carbonad .carbonad-image img,
#ui8ads-container .carbonad .ui8ad-image img,
#ui8ads-container .ui8ad .carbonad-image img,
#ui8ads-container .ui8ad .ui8ad-image img {
  width: 130px;
}

#carbonads-container .carbonad .carbonad-image img,
#carbonads-container .ui8ad .carbonad-image img,
#ui8ads-container .carbonad .carbonad-image img,
#ui8ads-container .ui8ad .carbonad-image img {
  margin: 0 0 10px 10px;
}

#carbonads-container .carbonad .ui8ad-image img,
#carbonads-container .carbonad .carbon-img img,
#carbonads-container .ui8ad .ui8ad-image img,
#carbonads-container .ui8ad .carbon-img img,
#ui8ads-container .carbonad .ui8ad-image img,
#ui8ads-container .carbonad .carbon-img img,
#ui8ads-container .ui8ad .ui8ad-image img,
#ui8ads-container .ui8ad .carbon-img img {
  margin: 0 10px 10px;
  width: 130px;
}

#carbonads-container .carbonad .carbon-text,
#carbonads-container .carbonad .carbonad-tag,
#carbonads-container .carbonad .carbon-poweredby,
#carbonads-container .carbonad .ui8ad-text,
#carbonads-container .carbonad .ui8ad-tag,
#carbonads-container .ui8ad .carbon-text,
#carbonads-container .ui8ad .carbonad-tag,
#carbonads-container .ui8ad .carbon-poweredby,
#carbonads-container .ui8ad .ui8ad-text,
#carbonads-container .ui8ad .ui8ad-tag,
#ui8ads-container .carbonad .carbon-text,
#ui8ads-container .carbonad .carbonad-tag,
#ui8ads-container .carbonad .carbon-poweredby,
#ui8ads-container .carbonad .ui8ad-text,
#ui8ads-container .carbonad .ui8ad-tag,
#ui8ads-container .ui8ad .carbon-text,
#ui8ads-container .ui8ad .carbonad-tag,
#ui8ads-container .ui8ad .carbon-poweredby,
#ui8ads-container .ui8ad .ui8ad-text,
#ui8ads-container .ui8ad .ui8ad-tag {
  font-family: 'Helvetica Neue', Arial, sans-serif;
}

#carbonads-container .carbonad .carbon-wrap,
#carbonads-container .carbonad .ui8ad-text,
#carbonads-container .ui8ad .carbon-wrap,
#carbonads-container .ui8ad .ui8ad-text,
#ui8ads-container .carbonad .carbon-wrap,
#ui8ads-container .carbonad .ui8ad-text,
#ui8ads-container .ui8ad .carbon-wrap,
#ui8ads-container .ui8ad .ui8ad-text {
  display: block;
  width: 100%;
  padding: 0;
}

#carbonads-container .carbonad .carbon-wrap a,
#carbonads-container .carbonad .ui8ad-text a,
#carbonads-container .ui8ad .carbon-wrap a,
#carbonads-container .ui8ad .ui8ad-text a,
#ui8ads-container .carbonad .carbon-wrap a,
#ui8ads-container .carbonad .ui8ad-text a,
#ui8ads-container .ui8ad .carbon-wrap a,
#ui8ads-container .ui8ad .ui8ad-text a {
  color: #69aa6f;
  font-size: 13px;
  font-weight: bold;
}

.no-touch #carbonads-container .carbonad .carbon-wrap a:hover,
.no-touch #carbonads-container .carbonad .ui8ad-text a:hover,
.no-touch #carbonads-container .ui8ad .carbon-wrap a:hover,
.no-touch #carbonads-container .ui8ad .ui8ad-text a:hover,
.no-touch #ui8ads-container .carbonad .carbon-wrap a:hover,
.no-touch #ui8ads-container .carbonad .ui8ad-text a:hover,
.no-touch #ui8ads-container .ui8ad .carbon-wrap a:hover,
.no-touch #ui8ads-container .ui8ad .ui8ad-text a:hover {
  text-decoration: underline;
}

#carbonads-container .carbonad .carbonad-tag,
#carbonads-container .carbonad .carbon-poweredby,
#carbonads-container .carbonad .ui8ad-tag,
#carbonads-container .ui8ad .carbonad-tag,
#carbonads-container .ui8ad .carbon-poweredby,
#carbonads-container .ui8ad .ui8ad-tag,
#ui8ads-container .carbonad .carbonad-tag,
#ui8ads-container .carbonad .carbon-poweredby,
#ui8ads-container .carbonad .ui8ad-tag,
#ui8ads-container .ui8ad .carbonad-tag,
#ui8ads-container .ui8ad .carbon-poweredby,
#ui8ads-container .ui8ad .ui8ad-tag {
  margin-top: 5px;
  color: #2e3233;
}

#carbonads-container .carbonad .carbonad-tag a,
#carbonads-container .carbonad .carbon-poweredby a,
#carbonads-container .carbonad .ui8ad-tag a,
#carbonads-container .ui8ad .carbonad-tag a,
#carbonads-container .ui8ad .carbon-poweredby a,
#carbonads-container .ui8ad .ui8ad-tag a,
#ui8ads-container .carbonad .carbonad-tag a,
#ui8ads-container .carbonad .carbon-poweredby a,
#ui8ads-container .carbonad .ui8ad-tag a,
#ui8ads-container .ui8ad .carbonad-tag a,
#ui8ads-container .ui8ad .carbon-poweredby a,
#ui8ads-container .ui8ad .ui8ad-tag a {
  color: #2e3233;
}

#carbonads-container .carbonad .carbonad-tag a:hover,
#carbonads-container .carbonad .carbon-poweredby a:hover,
#carbonads-container .carbonad .ui8ad-tag a:hover,
#carbonads-container .ui8ad .carbonad-tag a:hover,
#carbonads-container .ui8ad .carbon-poweredby a:hover,
#carbonads-container .ui8ad .ui8ad-tag a:hover,
#ui8ads-container .carbonad .carbonad-tag a:hover,
#ui8ads-container .carbonad .carbon-poweredby a:hover,
#ui8ads-container .carbonad .ui8ad-tag a:hover,
#ui8ads-container .ui8ad .carbonad-tag a:hover,
#ui8ads-container .ui8ad .carbon-poweredby a:hover,
#ui8ads-container .ui8ad .ui8ad-tag a:hover {
  color: #69aa6f;
}

#carbonads-container .carbonad .ui8ad-tag,
#carbonads-container .carbonad .carbon-poweredby,
#carbonads-container .ui8ad .ui8ad-tag,
#carbonads-container .ui8ad .carbon-poweredby,
#ui8ads-container .carbonad .ui8ad-tag,
#ui8ads-container .carbonad .carbon-poweredby,
#ui8ads-container .ui8ad .ui8ad-tag,
#ui8ads-container .ui8ad .carbon-poweredby {
  display: inline-block;
  font-size: 11px;
  line-height: 15px;
}

@media only screen and (min-width: 1170px) {
  #carbonads-container,
  #ui8ads-container {
    display: block;
  }
}


/* -------------------------------- 

Main components 

-------------------------------- */

.cd-intro {
  padding: 140px 20px;
}

.cd-intro h1 {
  text-align: center;
  font-weight: 300;
  font-size: 22px;
  margin-bottom: 20px;
  color: #989c8d;
}

@media only screen and (min-width: 1170px) {
  .cd-intro {
    padding: 250px 20px 0;
  }
  .cd-intro h1 {
    font-size: 32px;
  }
}

.cd-main-content,
.cd-main-header {
  /* Force Hardware Acceleration in WebKit */
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  will-change: transform;
}

.cd-main-content,
.cd-main-header {
  position: relative;
  -webkit-transition: -webkit-transform 0.3s;
  -moz-transition: -moz-transform 0.3s;
  transition: transform 0.3s;
}

@media only screen and (max-width: 1169px) {
  .cd-main-content.nav-is-visible,
  .cd-main-header.nav-is-visible {
    -webkit-transform: translateX(-260px);
    -moz-transform: translateX(-260px);
    -ms-transform: translateX(-260px);
    -o-transform: translateX(-260px);
    transform: translateX(-260px);
  }
  .nav-on-left .cd-main-content.nav-is-visible,
  .nav-on-left .cd-main-header.nav-is-visible {
    -webkit-transform: translateX(260px);
    -moz-transform: translateX(260px);
    -ms-transform: translateX(260px);
    -o-transform: translateX(260px);
    transform: translateX(260px);
  }
}

.cd-main-content {
  background: #e2e3df;
  min-height: 100vh;
  z-index: 2;
}

.cd-main-header {
  height: 50px;
  background: #ffffff;
  z-index: 3;
}

.nav-is-fixed .cd-main-header {
  /* add .nav-is-fixed class to body if you want a fixed navigation on > 1170px */
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
}

@media only screen and (min-width: 1170px) {
  .cd-main-header {
    height: 80px;
  }
  .cd-main-header::after {
    clear: both;
    content: "";
    display: table;
  }
}

.cd-logo {
  position: absolute;
  top: 12px;
  left: 5%;
}

.cd-logo img {
  display: block;
}

@media only screen and (max-width: 1169px) {
  .nav-on-left .cd-logo {
    left: auto;
    right: 5%;
  }
}

@media only screen and (min-width: 1170px) {
  .cd-logo {
    top: 26px;
    left: 4em;
  }
}

.cd-header-buttons {
  position: absolute;
  display: inline-block;
  top: 3px;
  right: 5%;
}

.cd-header-buttons li {
  display: inline-block;
}

@media only screen and (max-width: 1169px) {
  .nav-on-left .cd-header-buttons {
    right: auto;
    left: 5%;
  }
  .nav-on-left .cd-header-buttons li {
    float: right;
  }
}

@media only screen and (min-width: 1170px) {
  .cd-header-buttons {
    top: 18px;
    right: 4em;
  }
}

.cd-search-trigger,
.cd-nav-trigger {
  position: relative;
  display: block;
  width: 44px;
  height: 44px;
  overflow: hidden;
  white-space: nowrap;
  /* hide text */
  color: transparent;
  z-index: 3;
}

.cd-search-trigger::before,
.cd-search-trigger::after {
  /* search icon */
  content: '';
  position: absolute;
  -webkit-transition: opacity 0.3s;
  -moz-transition: opacity 0.3s;
  transition: opacity 0.3s;
  /* Force Hardware Acceleration in WebKit */
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.cd-search-trigger::before {
  /* lens */
  top: 11px;
  left: 11px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 3px solid #2e3233;
}

.cd-search-trigger::after {
  /* handle */
  height: 3px;
  width: 8px;
  background: #2e3233;
  bottom: 14px;
  right: 11px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  transform: rotate(45deg);
}

.cd-search-trigger span {
  /* container for the X icon */
  position: absolute;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
}

.cd-search-trigger span::before,
.cd-search-trigger span::after {
  /* close icon */
  content: '';
  position: absolute;
  display: inline-block;
  height: 3px;
  width: 22px;
  top: 50%;
  margin-top: -2px;
  left: 50%;
  margin-left: -11px;
  background: #2e3233;
  opacity: 0;
  /* Force Hardware Acceleration in WebKit */
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -webkit-transition: opacity 0.3s, -webkit-transform 0.3s;
  -moz-transition: opacity 0.3s, -moz-transform 0.3s;
  transition: opacity 0.3s, transform 0.3s;
}

.cd-search-trigger span::before {
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  transform: rotate(45deg);
}

.cd-search-trigger span::after {
  -webkit-transform: rotate(-45deg);
  -moz-transform: rotate(-45deg);
  -ms-transform: rotate(-45deg);
  -o-transform: rotate(-45deg);
  transform: rotate(-45deg);
}

.cd-search-trigger.search-is-visible::before,
.cd-search-trigger.search-is-visible::after {
  /* hide search icon */
  opacity: 0;
}

.cd-search-trigger.search-is-visible span::before,
.cd-search-trigger.search-is-visible span::after {
  /* show close icon */
  opacity: 1;
}

.cd-search-trigger.search-is-visible span::before {
  -webkit-transform: rotate(135deg);
  -moz-transform: rotate(135deg);
  -ms-transform: rotate(135deg);
  -o-transform: rotate(135deg);
  transform: rotate(135deg);
}

.cd-search-trigger.search-is-visible span::after {
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  transform: rotate(45deg);
}

.cd-nav-trigger span,
.cd-nav-trigger span::before,
.cd-nav-trigger span::after {
  /* hamburger icon in CSS */
  position: absolute;
  display: inline-block;
  height: 3px;
  width: 24px;
  background: #2e3233;
}

.cd-nav-trigger span {
  /* line in the center */
  position: absolute;
  top: 50%;
  right: 10px;
  margin-top: -2px;
  -webkit-transition: background 0.3s 0.3s;
  -moz-transition: background 0.3s 0.3s;
  transition: background 0.3s 0.3s;
}

.cd-nav-trigger span::before,
.cd-nav-trigger span::after {
  /* other 2 lines */
  content: '';
  /* Force Hardware Acceleration in WebKit */
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  right: 0;
  -webkit-transform-origin: 0% 50%;
  -moz-transform-origin: 0% 50%;
  -ms-transform-origin: 0% 50%;
  -o-transform-origin: 0% 50%;
  transform-origin: 0% 50%;
  -webkit-transition: -webkit-transform 0.3s 0.3s;
  -moz-transition: -moz-transform 0.3s 0.3s;
  transition: transform 0.3s 0.3s;
}

.cd-nav-trigger span::before {
  /* menu icon top line */
  top: -6px;
}

.cd-nav-trigger span::after {
  /* menu icon bottom line */
  top: 6px;
}

.cd-nav-trigger.nav-is-visible span {
  /* hide line in the center */
  background: rgba(46, 50, 51, 0);
}

.cd-nav-trigger.nav-is-visible span::before,
.cd-nav-trigger.nav-is-visible span::after {
  /* keep visible other 2 lines */
  background: #2e3233;
}

.cd-nav-trigger.nav-is-visible span::before {
  -webkit-transform: translateX(4px) translateY(-3px) rotate(45deg);
  -moz-transform: translateX(4px) translateY(-3px) rotate(45deg);
  -ms-transform: translateX(4px) translateY(-3px) rotate(45deg);
  -o-transform: translateX(4px) translateY(-3px) rotate(45deg);
  transform: translateX(4px) translateY(-3px) rotate(45deg);
}

.cd-nav-trigger.nav-is-visible span::after {
  -webkit-transform: translateX(4px) translateY(2px) rotate(-45deg);
  -moz-transform: translateX(4px) translateY(2px) rotate(-45deg);
  -ms-transform: translateX(4px) translateY(2px) rotate(-45deg);
  -o-transform: translateX(4px) translateY(2px) rotate(-45deg);
  transform: translateX(4px) translateY(2px) rotate(-45deg);
}

@media only screen and (min-width: 1170px) {
  .cd-nav-trigger {
    display: none;
  }
}

.cd-primary-nav,
.cd-primary-nav ul {
  position: fixed;
  top: 0;
  right: 0;
  height: 100%;
  width: 260px;
  background: #2e3233;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  z-index: 1;
  /* Force Hardware Acceleration in WebKit */
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-transform: translateX(0);
  -moz-transform: translateX(0);
  -ms-transform: translateX(0);
  -o-transform: translateX(0);
  transform: translateX(0);
  -webkit-transition: -webkit-transform 0.3s;
  -moz-transition: -moz-transform 0.3s;
  transition: transform 0.3s;
}

.cd-primary-nav a,
.cd-primary-nav ul a {
  display: block;
  height: 50px;
  line-height: 50px;
  padding: 0 20px;
  color: #ffffff;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  border-bottom: 1px solid #3a3f40;
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  will-change: transform, opacity;
  -webkit-transition: -webkit-transform 0.3s, opacity 0.3s;
  -moz-transition: -moz-transform 0.3s, opacity 0.3s;
  transition: transform 0.3s, opacity 0.3s;
}

.cd-primary-nav.is-hidden,
.cd-primary-nav ul.is-hidden {
  /* secondary navigations hidden by default */
  -webkit-transform: translateX(100%);
  -moz-transform: translateX(100%);
  -ms-transform: translateX(100%);
  -o-transform: translateX(100%);
  transform: translateX(100%);
}

.cd-primary-nav.moves-out > li > a,
.cd-primary-nav ul.moves-out > li > a {
  /* push the navigation items to the left - and lower down opacity - when secondary nav slides in */
  -webkit-transform: translateX(-100%);
  -moz-transform: translateX(-100%);
  -ms-transform: translateX(-100%);
  -o-transform: translateX(-100%);
  transform: translateX(-100%);
  opacity: 0;
}

@media only screen and (max-width: 1169px) {
  .nav-on-left .cd-primary-nav,
  .nav-on-left .cd-primary-nav ul {
    right: auto;
    left: 0;
  }
}

.cd-primary-nav .see-all a {
  /* different style for the See all button on mobile and tablet */
  color: #69aa6f;
}

.cd-primary-nav .cd-nav-gallery .cd-nav-item,
.cd-primary-nav .cd-nav-icons .cd-nav-item {
  /* items with picture (or icon) and title */
  height: 80px;
  line-height: 80px;
}

.cd-primary-nav .cd-nav-gallery .cd-nav-item h3,
.cd-primary-nav .cd-nav-icons .cd-nav-item h3 {
  overflow: hidden;
  text-overflow: ellipsis;
}

.cd-primary-nav .cd-nav-gallery .cd-nav-item {
  padding-left: 90px;
}

.cd-primary-nav .cd-nav-gallery .cd-nav-item img {
  position: absolute;
  display: block;
  height: 40px;
  width: auto;
  left: 20px;
  top: 50%;
  margin-top: -20px;
}

.cd-primary-nav .cd-nav-icons .cd-nav-item {
  padding-left: 75px;
}

.cd-primary-nav .cd-nav-icons .cd-nav-item p {
  color: #2e3233;
  font-size: 1.3rem;
  /* hide description on small devices */
  display: none;
}

.cd-primary-nav .cd-nav-icons .cd-nav-item::before {
  /* item icon */
  content: '';
  display: block;
  position: absolute;
  left: 20px;
  top: 50%;
  margin-top: -20px;
  width: 40px;
  height: 40px;
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 40px 40px;
}

.cd-primary-nav .cd-nav-icons .cd-nav-item.item-1::before {
  background-image: url("../img/line-icon-1.svg");
}

.cd-primary-nav .cd-nav-icons .cd-nav-item.item-2::before {
  background-image: url("../img/line-icon-2.svg");
}

.cd-primary-nav .cd-nav-icons .cd-nav-item.item-3::before {
  background-image: url("../img/line-icon-3.svg");
}

.cd-primary-nav .cd-nav-icons .cd-nav-item.item-4::before {
  background-image: url("../img/line-icon-4.svg");
}

.cd-primary-nav .cd-nav-icons .cd-nav-item.item-5::before {
  background-image: url("../img/line-icon-5.svg");
}

.cd-primary-nav .cd-nav-icons .cd-nav-item.item-6::before {
  background-image: url("../img/line-icon-6.svg");
}

.cd-primary-nav .cd-nav-icons .cd-nav-item.item-7::before {
  background-image: url("../img/line-icon-7.svg");
}

.cd-primary-nav .cd-nav-icons .cd-nav-item.item-8::before {
  background-image: url("../img/line-icon-8.svg");
}

@media only screen and (max-width: 1169px) {
  .cd-primary-nav {
    /* by default .cd-primary-nav is hidden - trick for iOS devices where you can see the navigation if you pull down */
    visibility: hidden;
    -webkit-transition: visibility 0s 0.3s;
    -moz-transition: visibility 0s 0.3s;
    transition: visibility 0s 0.3s;
  }
  .cd-primary-nav.nav-is-visible {
    visibility: visible;
    -webkit-transition: visibility 0s 0s;
    -moz-transition: visibility 0s 0s;
    transition: visibility 0s 0s;
  }
}

@media only screen and (min-width: 1170px) {
  .cd-primary-nav {
    position: static;
    padding: 0 150px 0 0;
    height: auto;
    width: auto;
    float: right;
    overflow: visible;
    background: transparent;
  }
  .cd-primary-nav::after {
    clear: both;
    content: "";
    display: table;
  }
  .cd-primary-nav.moves-out > li > a {
    /* reset mobile style */
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  .cd-primary-nav ul {
    position: static;
    height: auto;
    width: auto;
    background: transparent;
    overflow: visible;
    z-index: 3;
  }
  .cd-primary-nav ul.is-hidden {
    /* reset mobile style */
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  .cd-primary-nav ul.moves-out > li > a {
    /* reset mobile style */
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    opacity: 1;
  }
  .cd-primary-nav > li {
    float: left;
    margin-left: 3em;
  }
  .cd-primary-nav > li > a {
    /* main navigation buttons style */
    position: relative;
    display: inline-block;
    height: 80px;
    line-height: 80px;
    padding: 0 10px;
    color: #2e3233;
    overflow: visible;
    border-bottom: none;
    -webkit-transition: color 0.3s, box-shadow 0.3s;
    -moz-transition: color 0.3s, box-shadow 0.3s;
    transition: color 0.3s, box-shadow 0.3s;
  }
  .cd-primary-nav > li > a:hover {
    color: #69aa6f;
  }
  .cd-primary-nav > li > a.selected {
    color: #69aa6f;
    box-shadow: inset 0 -2px 0 #69aa6f;
  }
  .cd-primary-nav .go-back,
  .cd-primary-nav .see-all {
    display: none;
  }
  .cd-primary-nav .cd-secondary-nav,
  .cd-primary-nav .cd-nav-gallery,
  .cd-primary-nav .cd-nav-icons {
    /* dropdown menu style */
    position: absolute;
    top: 80px;
    width: 100vw;
    background: #ffffff;
    padding: 48px 64px 130px;
    box-shadow: inset 0 1px 0 #e2e3df, 0 3px 6px rgba(0, 0, 0, 0.05);
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
    -webkit-transition: opacity .3s 0s, visibility 0s 0s;
    -moz-transition: opacity .3s 0s, visibility 0s 0s;
    transition: opacity .3s 0s, visibility 0s 0s;
  }
  .cd-primary-nav .cd-secondary-nav::after,
  .cd-primary-nav .cd-nav-gallery::after,
  .cd-primary-nav .cd-nav-icons::after {
    clear: both;
    content: "";
    display: table;
  }
  .cd-primary-nav .cd-secondary-nav.is-hidden,
  .cd-primary-nav .cd-nav-gallery.is-hidden,
  .cd-primary-nav .cd-nav-icons.is-hidden {
    opacity: 0;
    visibility: hidden;
    -webkit-transition: opacity .3s 0s, visibility 0s .3s;
    -moz-transition: opacity .3s 0s, visibility 0s .3s;
    transition: opacity .3s 0s, visibility 0s .3s;
  }
  .cd-primary-nav .cd-secondary-nav > .see-all,
  .cd-primary-nav .cd-nav-gallery > .see-all,
  .cd-primary-nav .cd-nav-icons > .see-all {
    /* this is the BIG See all button at the bottom of the dropdown menu */
    display: block;
    position: absolute;
    left: 0;
    bottom: 0;
    height: 80px;
    width: 100%;
    overflow: hidden;
    /* reset some inherited style */
    margin: 0;
    padding: 0;
  }
  .cd-primary-nav .cd-secondary-nav > .see-all a,
  .cd-primary-nav .cd-nav-gallery > .see-all a,
  .cd-primary-nav .cd-nav-icons > .see-all a {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    font-size: 2.2rem;
    font-weight: bold;
    text-align: center;
    line-height: 80px;
    border-top: 1px solid #e2e3df;
    /* reset some inherited style */
    border-bottom: none;
    margin: 0;
    padding: 0;
    -webkit-transition: color 0.2s, background 0.2s, border 0.2s;
    -moz-transition: color 0.2s, background 0.2s, border 0.2s;
    transition: color 0.2s, background 0.2s, border 0.2s;
  }
  .cd-primary-nav .cd-secondary-nav > .see-all a:hover,
  .cd-primary-nav .cd-nav-gallery > .see-all a:hover,
  .cd-primary-nav .cd-nav-icons > .see-all a:hover {
    background: #2e3233;
    border-color: #2e3233;
    color: #ffffff;
  }
  .cd-primary-nav .cd-secondary-nav > li {
    /* change the height according to your needs - you can even set height: auto */
    height: 340px;
    /* here you set the number of columns - use width percentage */
    width: 23%;
    float: left;
    margin-right: 2.66%;
    border-right: 1px solid #e2e3df;
    overflow: hidden;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
  .cd-primary-nav .cd-secondary-nav > li:nth-child(4n+2) {
    /* +2 because we have 2 list items with display:none */
    margin-right: 0;
    border-right: none;
  }
  .cd-primary-nav .cd-secondary-nav > li > a {
    /* secondary nav title */
    color: #69aa6f;
    font-weight: bold;
    font-size: 1.6rem;
    margin-bottom: .6em;
  }
  .cd-primary-nav .cd-secondary-nav a {
    height: 30px;
    line-height: 30px;
    padding: 0 18% 0 0;
    color: #2e3233;
    border-bottom: none;
    font-size: 1.4rem;
  }
  .cd-primary-nav .cd-secondary-nav a:hover {
    color: #69aa6f;
  }
  .cd-primary-nav .cd-secondary-nav ul {
    /* Force Hardware Acceleration in WebKit */
    -webkit-transform: translateZ(0);
    -moz-transform: translateZ(0);
    -ms-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
  }
  .cd-primary-nav .cd-secondary-nav ul ul {
    /* tertiary navigation */
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
  }
  .cd-primary-nav .cd-secondary-nav ul ul.is-hidden {
    -webkit-transform: translateX(100%);
    -moz-transform: translateX(100%);
    -ms-transform: translateX(100%);
    -o-transform: translateX(100%);
    transform: translateX(100%);
  }
  .cd-primary-nav .cd-secondary-nav ul ul .go-back {
    display: block;
  }
  .cd-primary-nav .cd-secondary-nav ul ul .go-back a {
    color: transparent;
  }
  .cd-primary-nav .cd-secondary-nav ul ul .see-all {
    display: block;
  }
  .cd-primary-nav .cd-secondary-nav .moves-out > li > a {
    /* push the navigation items to the left - and lower down opacity - when tertiary nav slides in */
    -webkit-transform: translateX(-100%);
    -moz-transform: translateX(-100%);
    -ms-transform: translateX(-100%);
    -o-transform: translateX(-100%);
    transform: translateX(-100%);
  }
  .cd-primary-nav .cd-nav-gallery li {
    /* set here number of columns - use width percentage */
    width: 22%;
    float: left;
    margin: 0 4% 40px 0;
  }
  .cd-primary-nav .cd-nav-gallery li:nth-child(4n+2) {
    /* +2 because we have two additional list items with display:none */
    margin-right: 0;
  }
  .cd-primary-nav .cd-nav-gallery .cd-nav-item {
    border-bottom: none;
    padding: 0;
    height: auto;
    line-height: 1.2;
  }
  .cd-primary-nav .cd-nav-gallery .cd-nav-item img {
    position: static;
    margin-top: 0;
    height: auto;
    width: 100%;
    margin-bottom: .6em;
  }
  .cd-primary-nav .cd-nav-gallery .cd-nav-item h3 {
    color: #69aa6f;
    font-weight: bold;
    padding: 0 .4em;
  }
  .cd-primary-nav .cd-nav-icons li {
    /* set here number of columns - use width percentage */
    width: 32%;
    float: left;
    margin: 0 2% 20px 0;
  }
  .cd-primary-nav .cd-nav-icons li:nth-child(3n+2) {
    /* +2 because we have two additional list items with display:none */
    margin-right: 0;
  }
  .cd-primary-nav .cd-nav-icons .cd-nav-item {
    border-bottom: none;
    height: 80px;
    line-height: 1.2;
    padding: 24px 0 0 85px;
    position: relative;
  }
  .cd-primary-nav .cd-nav-icons .cd-nav-item:hover {
    background: #f6f6f5;
  }
  .cd-primary-nav .cd-nav-icons .cd-nav-item h3 {
    color: #69aa6f;
    font-weight: bold;
  }
  .cd-primary-nav .cd-nav-icons .cd-nav-item p {
    display: block;
  }
  .cd-primary-nav .cd-nav-icons .cd-nav-item::before {
    left: 25px;
  }
}

.has-children > a,
.go-back a {
  position: relative;
}

.has-children > a::before,
.has-children > a::after,
.go-back a::before,
.go-back a::after {
  /* arrow icon in CSS - for element with nested unordered lists */
  content: '';
  position: absolute;
  top: 50%;
  margin-top: -1px;
  display: inline-block;
  height: 2px;
  width: 10px;
  background: #464c4e;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.has-children > a::before,
.go-back a::before {
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  transform: rotate(45deg);
}

.has-children > a::after,
.go-back a::after {
  -webkit-transform: rotate(-45deg);
  -moz-transform: rotate(-45deg);
  -ms-transform: rotate(-45deg);
  -o-transform: rotate(-45deg);
  transform: rotate(-45deg);
}

@media only screen and (min-width: 1170px) {
  .has-children > a::before,
  .has-children > a::after,
  .go-back a::before,
  .go-back a::after {
    background: #c9cbc4;
  }
  .has-children > a:hover::before,
  .has-children > a:hover::after,
  .go-back a:hover::before,
  .go-back a:hover::after {
    background: #69aa6f;
  }
}

.has-children > a {
  padding-right: 40px;
}

.has-children > a::before,
.has-children > a::after {
  /* arrow goes on the right side - children navigation */
  right: 20px;
  -webkit-transform-origin: 9px 50%;
  -moz-transform-origin: 9px 50%;
  -ms-transform-origin: 9px 50%;
  -o-transform-origin: 9px 50%;
  transform-origin: 9px 50%;
}

.cd-primary-nav .go-back a {
  padding-left: 40px;
}

.cd-primary-nav .go-back a::before,
.cd-primary-nav .go-back a::after {
  /* arrow goes on the left side - go back button */
  left: 20px;
  -webkit-transform-origin: 1px 50%;
  -moz-transform-origin: 1px 50%;
  -ms-transform-origin: 1px 50%;
  -o-transform-origin: 1px 50%;
  transform-origin: 1px 50%;
}

@media only screen and (min-width: 1170px) {
  .has-children > a::before,
  .has-children > a::after {
    right: 15%;
  }
  .cd-primary-nav > .has-children > a {
    /* main navigation arrows on larger devices */
    padding-right: 30px !important;
  }
  .cd-primary-nav > .has-children > a::before,
  .cd-primary-nav > .has-children > a::after {
    width: 9px;
    -webkit-transform-origin: 50% 50%;
    -moz-transform-origin: 50% 50%;
    -ms-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    background: #c9cbc4;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-transition: width 0.3s, -webkit-transform 0.3s;
    -moz-transition: width 0.3s, -moz-transform 0.3s;
    transition: width 0.3s, transform 0.3s;
  }
  .cd-primary-nav > .has-children > a::before {
    right: 12px;
  }
  .cd-primary-nav > .has-children > a::after {
    right: 7px;
  }
  .cd-primary-nav > .has-children > a.selected::before,
  .cd-primary-nav > .has-children > a.selected::after {
    width: 14px;
  }
  .cd-primary-nav > .has-children > a.selected::before {
    -webkit-transform: translateX(5px) rotate(-45deg);
    -moz-transform: translateX(5px) rotate(-45deg);
    -ms-transform: translateX(5px) rotate(-45deg);
    -o-transform: translateX(5px) rotate(-45deg);
    transform: translateX(5px) rotate(-45deg);
  }
  .cd-primary-nav > .has-children > a.selected::after {
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
  }
  .cd-secondary-nav > .has-children > a::before,
  .cd-secondary-nav > .has-children > a::after {
    /* remove arrows on secondary nav titles */
    display: none;
  }
  .cd-primary-nav .go-back a {
    padding-left: 20px;
  }
  .cd-primary-nav .go-back a::before,
  .cd-primary-nav .go-back a::after {
    left: 1px;
  }
}

.cd-search {
  position: absolute;
  height: 50px;
  width: 100%;
  top: 50px;
  left: 0;
  z-index: 3;
  opacity: 0;
  visibility: hidden;
  -webkit-transition: opacity .3s 0s, visibility 0s .3s;
  -moz-transition: opacity .3s 0s, visibility 0s .3s;
  transition: opacity .3s 0s, visibility 0s .3s;
}

.cd-search form {
  height: 100%;
  width: 100%;
}

.cd-search input {
  border-radius: 0;
  border: none;
  background: #ffffff;
  height: 100%;
  width: 100%;
  padding: 0 5%;
  box-shadow: inset 0 1px 0 #e2e3df, 0 3px 6px rgba(0, 0, 0, 0.05);
  -webkit-appearance: none;
  -moz-appearance: none;
  -ms-appearance: none;
  -o-appearance: none;
  appearance: none;
}

.cd-search input::-webkit-input-placeholder {
  color: #c9cbc4;
}

.cd-search input::-moz-placeholder {
  color: #c9cbc4;
}

.cd-search input:-moz-placeholder {
  color: #c9cbc4;
}

.cd-search input:-ms-input-placeholder {
  color: #c9cbc4;
}

.cd-search input:focus {
  outline: none;
}

.cd-search.is-visible {
  opacity: 1;
  visibility: visible;
  -webkit-transition: opacity .3s 0s, visibility 0s 0s;
  -moz-transition: opacity .3s 0s, visibility 0s 0s;
  transition: opacity .3s 0s, visibility 0s 0s;
}

.nav-is-fixed .cd-search {
  position: fixed;
}

@media only screen and (min-width: 1170px) {
  .cd-search {
    height: 120px;
    top: 80px;
  }
  .cd-search input {
    padding: 0 2em;
    font-size: 3.2rem;
    font-weight: 300;
  }
}

.cd-overlay {
  /* shadow layer visible when navigation is active */
  position: fixed;
  z-index: 2;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
  cursor: pointer;
  background-color: rgba(105, 170, 111, 0.8);
  visibility: hidden;
  opacity: 0;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -webkit-transition: opacity 0.3s 0s, visibility 0s 0.3s, -webkit-transform 0.3s 0s;
  -moz-transition: opacity 0.3s 0s, visibility 0s 0.3s, -moz-transform 0.3s 0s;
  transition: opacity 0.3s 0s, visibility 0s 0.3s, transform 0.3s 0s;
}

.cd-overlay.is-visible {
  opacity: 1;
  visibility: visible;
  -webkit-transition: opacity 0.3s 0s, visibility 0s 0s, -webkit-transform 0.3s 0s;
  -moz-transition: opacity 0.3s 0s, visibility 0s 0s, -moz-transform 0.3s 0s;
  transition: opacity 0.3s 0s, visibility 0s 0s, transform 0.3s 0s;
}

@media only screen and (max-width: 1169px) {
  .cd-overlay.is-visible {
    -webkit-transform: translateX(-260px);
    -moz-transform: translateX(-260px);
    -ms-transform: translateX(-260px);
    -o-transform: translateX(-260px);
    transform: translateX(-260px);
  }
  .nav-on-left .cd-overlay.is-visible {
    -webkit-transform: translateX(260px);
    -moz-transform: translateX(260px);
    -ms-transform: translateX(260px);
    -o-transform: translateX(260px);
    transform: translateX(260px);
  }
  .cd-overlay.is-visible.search-is-visible,
  .nav-on-left .cd-overlay.is-visible.search-is-visible {
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}


/* -------------------------------- 

support for no js 

-------------------------------- */

.no-js .cd-primary-nav {
  position: relative;
  height: auto;
  width: 100%;
  overflow: visible;
  visibility: visible;
  z-index: 2;
}

.no-js .cd-search {
  position: relative;
  top: 0;
  opacity: 1;
  visibility: visible;
}

@media only screen and (min-width: 1170px) {
  .no-js .cd-primary-nav {
    position: absolute;
    z-index: 3;
    display: inline-block;
    width: auto;
    top: 0;
    right: 150px;
    padding: 0;
  }
  .no-js .nav-is-fixed .cd-primary-nav {
    position: fixed;
  }
}

.f-ixed {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
}

.m-h {
  height: 300%;
  overflow: scroll;
}

body,html {
  height: 100%;
  min-height: 100%;
}
              
            
!

JS

              
                jQuery(document).ready(function($) {
  //if you change this breakpoint in the style.css file (or _layout.scss if you use SASS), don't forget to update this value as well
  var MqL = 1170;
  //move nav element position according to window width
  moveNavigation();
  $(window).on('resize', function() {
    (!window.requestAnimationFrame) ? setTimeout(moveNavigation, 300): window.requestAnimationFrame(moveNavigation);
  });

  //mobile - open lateral menu clicking on the menu icon
  $('.cd-nav-trigger').on('click', function(event) {
    event.preventDefault();
    if ($('.cd-main-content').hasClass('nav-is-visible')) {
      closeNav();
      $('.cd-overlay').removeClass('is-visible');
    } else {
      $(this).addClass('nav-is-visible');
      $('.cd-primary-nav').addClass('nav-is-visible');
      $('.cd-main-header').addClass('nav-is-visible');
      $('.cd-main-content').addClass('nav-is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function() {
        $('body').addClass('overflow-hidden');
      });
      toggleSearch('close');
      $('.cd-overlay').addClass('is-visible');
    }
  });

  //open search form
  $('.cd-search-trigger').on('click', function(event) {
    event.preventDefault();
    toggleSearch();
    closeNav();
  });

  //close lateral menu on mobile 
  $('.cd-overlay').on('swiperight', function() {
    if ($('.cd-primary-nav').hasClass('nav-is-visible')) {
      closeNav();
      $('.cd-overlay').removeClass('is-visible');
    }
  });
  $('.nav-on-left .cd-overlay').on('swipeleft', function() {
    if ($('.cd-primary-nav').hasClass('nav-is-visible')) {
      closeNav();
      $('.cd-overlay').removeClass('is-visible');
    }
  });
  $('.cd-overlay').on('click', function() {
    closeNav();
    toggleSearch('close')
    $('.cd-overlay').removeClass('is-visible');
  });


  //prevent default clicking on direct children of .cd-primary-nav 
  $('.cd-primary-nav').children('.has-children').children('a').on('click', function(event) {
    event.preventDefault();
  });
  //open submenu
  $('.has-children').children('a').on('click', function(event) {
    if (!checkWindowWidth()) event.preventDefault();
    var selected = $(this);
    if (selected.next('ul').hasClass('is-hidden')) {
      //desktop version only
      selected.addClass('selected').next('ul').removeClass('is-hidden').end().parent('.has-children').parent('ul').addClass('moves-out');
      selected.parent('.has-children').siblings('.has-children').children('ul').addClass('is-hidden').end().children('a').removeClass('selected');
      $('.cd-overlay').addClass('is-visible');
    } else {
      selected.removeClass('selected').next('ul').addClass('is-hidden').end().parent('.has-children').parent('ul').removeClass('moves-out');
      $('.cd-overlay').removeClass('is-visible');
    }
    toggleSearch('close');
  });

  //submenu items - go back link
  $('.go-back').on('click', function() {
    $(this).parent('ul').addClass('is-hidden').parent('.has-children').parent('ul').removeClass('moves-out');
  });

  function closeNav() {
    $('.cd-nav-trigger').removeClass('nav-is-visible');
    $('.cd-main-header').removeClass('nav-is-visible');
    $('.cd-primary-nav').removeClass('nav-is-visible');
    $('.has-children ul').addClass('is-hidden');
    $('.has-children a').removeClass('selected');
    $('.moves-out').removeClass('moves-out');
    $('.cd-main-content').removeClass('nav-is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function() {
      $('body').removeClass('overflow-hidden');
    });
  }

  function toggleSearch(type) {
    if (type == "close") {
      //close serach 
      $('.cd-search').removeClass('is-visible');
      $('.cd-search-trigger').removeClass('search-is-visible');
      $('.cd-overlay').removeClass('search-is-visible');
    } else {
      //toggle search visibility
      $('.cd-search').toggleClass('is-visible');
      $('.cd-search-trigger').toggleClass('search-is-visible');
      $('.cd-overlay').toggleClass('search-is-visible');
      if ($(window).width() > MqL && $('.cd-search').hasClass('is-visible')) $('.cd-search').find('input[type="search"]').focus();
      ($('.cd-search').hasClass('is-visible')) ? $('.cd-overlay').addClass('is-visible'): $('.cd-overlay').removeClass('is-visible');
    }
  }

  function checkWindowWidth() {
    //check window width (scrollbar included)
    var e = window,
      a = 'inner';
    if (!('innerWidth' in window)) {
      a = 'client';
      e = document.documentElement || document.body;
    }
    if (e[a + 'Width'] >= MqL) {
      return true;
    } else {
      return false;
    }
  }

  function moveNavigation() {
    var navigation = $('.cd-nav');
    var desktop = checkWindowWidth();
    if (desktop) {
      navigation.detach();
      navigation.insertBefore('.cd-header-buttons');
    } else {
      navigation.detach();
      navigation.insertAfter('.cd-main-content');
    }
  }
});
/*! jQuery Mobile v1.4.5 | Copyright 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */

(function(e, t, n) {
  typeof define == "function" && define.amd ? define(["jquery"], function(r) {
    return n(r, e, t), r.mobile
  }) : n(e.jQuery, e, t)
})(this, document, function(e, t, n, r) {
  (function(e, t, n, r) {
    function T(e) {
      while (e && typeof e.originalEvent != "undefined") e = e.originalEvent;
      return e
    }

    function N(t, n) {
      var i = t.type,
        s, o, a, l, c, h, p, d, v;
      t = e.Event(t), t.type = n, s = t.originalEvent, o = e.event.props, i.search(/^(mouse|click)/) > -1 && (o = f);
      if (s)
        for (p = o.length, l; p;) l = o[--p], t[l] = s[l];
      i.search(/mouse(down|up)|click/) > -1 && !t.which && (t.which = 1);
      if (i.search(/^touch/) !== -1) {
        a = T(s), i = a.touches, c = a.changedTouches, h = i && i.length ? i[0] : c && c.length ? c[0] : r;
        if (h)
          for (d = 0, v = u.length; d < v; d++) l = u[d], t[l] = h[l]
      }
      return t
    }

    function C(t) {
      var n = {},
        r, s;
      while (t) {
        r = e.data(t, i);
        for (s in r) r[s] && (n[s] = n.hasVirtualBinding = !0);
        t = t.parentNode
      }
      return n
    }

    function k(t, n) {
      var r;
      while (t) {
        r = e.data(t, i);
        if (r && (!n || r[n])) return t;
        t = t.parentNode
      }
      return null
    }

    function L() {
      g = !1
    }

    function A() {
      g = !0
    }

    function O() {
      E = 0, v.length = 0, m = !1, A()
    }

    function M() {
      L()
    }

    function _() {
      D(), c = setTimeout(function() {
        c = 0, O()
      }, e.vmouse.resetTimerDuration)
    }

    function D() {
      c && (clearTimeout(c), c = 0)
    }

    function P(t, n, r) {
      var i;
      if (r && r[t] || !r && k(n.target, t)) i = N(n, t), e(n.target).trigger(i);
      return i
    }

    function H(t) {
      var n = e.data(t.target, s),
        r;
      !m && (!E || E !== n) && (r = P("v" + t.type, t), r && (r.isDefaultPrevented() && t.preventDefault(), r.isPropagationStopped() && t.stopPropagation(), r.isImmediatePropagationStopped() && t.stopImmediatePropagation()))
    }

    function B(t) {
      var n = T(t).touches,
        r, i, o;
      n && n.length === 1 && (r = t.target, i = C(r), i.hasVirtualBinding && (E = w++, e.data(r, s, E), D(), M(), d = !1, o = T(t).touches[0], h = o.pageX, p = o.pageY, P("vmouseover", t, i), P("vmousedown", t, i)))
    }

    function j(e) {
      if (g) return;
      d || P("vmousecancel", e, C(e.target)), d = !0, _()
    }

    function F(t) {
      if (g) return;
      var n = T(t).touches[0],
        r = d,
        i = e.vmouse.moveDistanceThreshold,
        s = C(t.target);
      d = d || Math.abs(n.pageX - h) > i || Math.abs(n.pageY - p) > i, d && !r && P("vmousecancel", t, s), P("vmousemove", t, s), _()
    }

    function I(e) {
      if (g) return;
      A();
      var t = C(e.target),
        n, r;
      P("vmouseup", e, t), d || (n = P("vclick", e, t), n && n.isDefaultPrevented() && (r = T(e).changedTouches[0], v.push({
        touchID: E,
        x: r.clientX,
        y: r.clientY
      }), m = !0)), P("vmouseout", e, t), d = !1, _()
    }

    function q(t) {
      var n = e.data(t, i),
        r;
      if (n)
        for (r in n)
          if (n[r]) return !0;
      return !1
    }

    function R() {}

    function U(t) {
      var n = t.substr(1);
      return {
        setup: function() {
          q(this) || e.data(this, i, {});
          var r = e.data(this, i);
          r[t] = !0, l[t] = (l[t] || 0) + 1, l[t] === 1 && b.bind(n, H), e(this).bind(n, R), y && (l.touchstart = (l.touchstart || 0) + 1, l.touchstart === 1 && b.bind("touchstart", B).bind("touchend", I).bind("touchmove", F).bind("scroll", j))
        },
        teardown: function() {
          --l[t], l[t] || b.unbind(n, H), y && (--l.touchstart, l.touchstart || b.unbind("touchstart", B).unbind("touchmove", F).unbind("touchend", I).unbind("scroll", j));
          var r = e(this),
            s = e.data(this, i);
          s && (s[t] = !1), r.unbind(n, R), q(this) || r.removeData(i)
        }
      }
    }
    var i = "virtualMouseBindings",
      s = "virtualTouchID",
      o = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),
      u = "clientX clientY pageX pageY screenX screenY".split(" "),
      a = e.event.mouseHooks ? e.event.mouseHooks.props : [],
      f = e.event.props.concat(a),
      l = {},
      c = 0,
      h = 0,
      p = 0,
      d = !1,
      v = [],
      m = !1,
      g = !1,
      y = "addEventListener" in n,
      b = e(n),
      w = 1,
      E = 0,
      S, x;
    e.vmouse = {
      moveDistanceThreshold: 10,
      clickDistanceThreshold: 10,
      resetTimerDuration: 1500
    };
    for (x = 0; x < o.length; x++) e.event.special[o[x]] = U(o[x]);
    y && n.addEventListener("click", function(t) {
      var n = v.length,
        r = t.target,
        i, o, u, a, f, l;
      if (n) {
        i = t.clientX, o = t.clientY, S = e.vmouse.clickDistanceThreshold, u = r;
        while (u) {
          for (a = 0; a < n; a++) {
            f = v[a], l = 0;
            if (u === r && Math.abs(f.x - i) < S && Math.abs(f.y - o) < S || e.data(u, s) === f.touchID) {
              t.preventDefault(), t.stopPropagation();
              return
            }
          }
          u = u.parentNode
        }
      }
    }, !0)
  })(e, t, n),
  function(e) {
    e.mobile = {}
  }(e),
  function(e, t) {
    var r = {
      touch: "ontouchend" in n
    };
    e.mobile.support = e.mobile.support || {}, e.extend(e.support, r), e.extend(e.mobile.support, r)
  }(e),
  function(e, t, r) {
    function l(t, n, i, s) {
      var o = i.type;
      i.type = n, s ? e.event.trigger(i, r, t) : e.event.dispatch.call(t, i), i.type = o
    }
    var i = e(n),
      s = e.mobile.support.touch,
      o = "touchmove scroll",
      u = s ? "touchstart" : "mousedown",
      a = s ? "touchend" : "mouseup",
      f = s ? "touchmove" : "mousemove";
    e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "), function(t, n) {
      e.fn[n] = function(e) {
        return e ? this.bind(n, e) : this.trigger(n)
      }, e.attrFn && (e.attrFn[n] = !0)
    }), e.event.special.scrollstart = {
      enabled: !0,
      setup: function() {
        function s(e, n) {
          r = n, l(t, r ? "scrollstart" : "scrollstop", e)
        }
        var t = this,
          n = e(t),
          r, i;
        n.bind(o, function(t) {
          if (!e.event.special.scrollstart.enabled) return;
          r || s(t, !0), clearTimeout(i), i = setTimeout(function() {
            s(t, !1)
          }, 50)
        })
      },
      teardown: function() {
        e(this).unbind(o)
      }
    }, e.event.special.tap = {
      tapholdThreshold: 750,
      emitTapOnTaphold: !0,
      setup: function() {
        var t = this,
          n = e(t),
          r = !1;
        n.bind("vmousedown", function(s) {
          function a() {
            clearTimeout(u)
          }

          function f() {
            a(), n.unbind("vclick", c).unbind("vmouseup", a), i.unbind("vmousecancel", f)
          }

          function c(e) {
            f(), !r && o === e.target ? l(t, "tap", e) : r && e.preventDefault()
          }
          r = !1;
          if (s.which && s.which !== 1) return !1;
          var o = s.target,
            u;
          n.bind("vmouseup", a).bind("vclick", c), i.bind("vmousecancel", f), u = setTimeout(function() {
            e.event.special.tap.emitTapOnTaphold || (r = !0), l(t, "taphold", e.Event("taphold", {
              target: o
            }))
          }, e.event.special.tap.tapholdThreshold)
        })
      },
      teardown: function() {
        e(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"), i.unbind("vmousecancel")
      }
    }, e.event.special.swipe = {
      scrollSupressionThreshold: 30,
      durationThreshold: 1e3,
      horizontalDistanceThreshold: 30,
      verticalDistanceThreshold: 30,
      getLocation: function(e) {
        var n = t.pageXOffset,
          r = t.pageYOffset,
          i = e.clientX,
          s = e.clientY;
        if (e.pageY === 0 && Math.floor(s) > Math.floor(e.pageY) || e.pageX === 0 && Math.floor(i) > Math.floor(e.pageX)) i -= n, s -= r;
        else if (s < e.pageY - r || i < e.pageX - n) i = e.pageX - n, s = e.pageY - r;
        return {
          x: i,
          y: s
        }
      },
      start: function(t) {
        var n = t.originalEvent.touches ? t.originalEvent.touches[0] : t,
          r = e.event.special.swipe.getLocation(n);
        return {
          time: (new Date).getTime(),
          coords: [r.x, r.y],
          origin: e(t.target)
        }
      },
      stop: function(t) {
        var n = t.originalEvent.touches ? t.originalEvent.touches[0] : t,
          r = e.event.special.swipe.getLocation(n);
        return {
          time: (new Date).getTime(),
          coords: [r.x, r.y]
        }
      },
      handleSwipe: function(t, n, r, i) {
        if (n.time - t.time < e.event.special.swipe.durationThreshold && Math.abs(t.coords[0] - n.coords[0]) > e.event.special.swipe.horizontalDistanceThreshold && Math.abs(t.coords[1] - n.coords[1]) < e.event.special.swipe.verticalDistanceThreshold) {
          var s = t.coords[0] > n.coords[0] ? "swipeleft" : "swiperight";
          return l(r, "swipe", e.Event("swipe", {
            target: i,
            swipestart: t,
            swipestop: n
          }), !0), l(r, s, e.Event(s, {
            target: i,
            swipestart: t,
            swipestop: n
          }), !0), !0
        }
        return !1
      },
      eventInProgress: !1,
      setup: function() {
        var t, n = this,
          r = e(n),
          s = {};
        t = e.data(this, "mobile-events"), t || (t = {
          length: 0
        }, e.data(this, "mobile-events", t)), t.length++, t.swipe = s, s.start = function(t) {
          if (e.event.special.swipe.eventInProgress) return;
          e.event.special.swipe.eventInProgress = !0;
          var r, o = e.event.special.swipe.start(t),
            u = t.target,
            l = !1;
          s.move = function(t) {
            if (!o || t.isDefaultPrevented()) return;
            r = e.event.special.swipe.stop(t), l || (l = e.event.special.swipe.handleSwipe(o, r, n, u), l && (e.event.special.swipe.eventInProgress = !1)), Math.abs(o.coords[0] - r.coords[0]) > e.event.special.swipe.scrollSupressionThreshold && t.preventDefault()
          }, s.stop = function() {
            l = !0, e.event.special.swipe.eventInProgress = !1, i.off(f, s.move), s.move = null
          }, i.on(f, s.move).one(a, s.stop)
        }, r.on(u, s.start)
      },
      teardown: function() {
        var t, n;
        t = e.data(this, "mobile-events"), t && (n = t.swipe, delete t.swipe, t.length--, t.length === 0 && e.removeData(this, "mobile-events")), n && (n.start && e(this).off(u, n.start), n.move && i.off(f, n.move), n.stop && i.off(a, n.stop))
      }
    }, e.each({
      scrollstop: "scrollstart",
      taphold: "tap",
      swipeleft: "swipe.left",
      swiperight: "swipe.right"
    }, function(t, n) {
      e.event.special[t] = {
        setup: function() {
          e(this).bind(n, e.noop)
        },
        teardown: function() {
          e(this).unbind(n)
        }
      }
    })
  }(e, this)
});

/*!
 * Modernizr v2.8.3
 * www.modernizr.com
 *
 * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
 * Available under the BSD and MIT licenses: www.modernizr.com/license/
 */

/*
 * Modernizr tests which native CSS3 and HTML5 features are available in
 * the current UA and makes the results available to you in two ways:
 * as properties on a global Modernizr object, and as classes on the
 * <html> element. This information allows you to progressively enhance
 * your pages with a granular level of control over the experience.
 *
 * Modernizr has an optional (not included) conditional resource loader
 * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
 * To get a build that includes Modernizr.load(), as well as choosing
 * which tests to include, go to www.modernizr.com/download/
 *
 * Authors        Faruk Ates, Paul Irish, Alex Sexton
 * Contributors   Ryan Seddon, Ben Alman
 */

window.Modernizr = (function(window, document, undefined) {

  var version = '2.8.3',

    Modernizr = {},

    /*>>cssclasses*/
    // option for enabling the HTML classes to be added
    enableClasses = true,
    /*>>cssclasses*/

    docElement = document.documentElement,

    /**
     * Create our "modernizr" element that we do most feature tests on.
     */
    mod = 'modernizr',
    modElem = document.createElement(mod),
    mStyle = modElem.style,

    /**
     * Create the input element for various Web Forms feature tests.
     */
    inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,

    /*>>smile*/
    smile = ':)',
    /*>>smile*/

    toString = {}.toString,

    // TODO :: make the prefixes more granular
    /*>>prefixes*/
    // List of property values to set for css tests. See ticket #21
    prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
    /*>>prefixes*/

    /*>>domprefixes*/
    // Following spec is to expose vendor-specific style properties as:
    //   elem.style.WebkitBorderRadius
    // and the following would be incorrect:
    //   elem.style.webkitBorderRadius

    // Webkit ghosts their properties in lowercase but Opera & Moz do not.
    // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
    //   erik.eae.net/archives/2008/03/10/21.48.10/

    // More here: github.com/Modernizr/Modernizr/issues/issue/21
    omPrefixes = 'Webkit Moz O ms',

    cssomPrefixes = omPrefixes.split(' '),

    domPrefixes = omPrefixes.toLowerCase().split(' '),
    /*>>domprefixes*/

    /*>>ns*/
    ns = {
      'svg': 'http://www.w3.org/2000/svg'
    },
    /*>>ns*/

    tests = {},
    inputs = {},
    attrs = {},

    classes = [],

    slice = classes.slice,

    featureName, // used in testing loop


    /*>>teststyles*/
    // Inject element with style element and some CSS rules
    injectElementWithStyles = function(rule, callback, nodes, testnames) {

      var style, ret, node, docOverflow,
        div = document.createElement('div'),
        // After page load injecting a fake body doesn't work so check if body exists
        body = document.body,
        // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
        fakeBody = body || document.createElement('body');

      if (parseInt(nodes, 10)) {
        // In order not to give false positives we create a node for each test
        // This also allows the method to scale for unspecified uses
        while (nodes--) {
          node = document.createElement('div');
          node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
          div.appendChild(node);
        }
      }

      // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
      // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
      // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
      // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
      // Documents served as xml will throw if using &shy; so use xml friendly encoded version. See issue #277
      style = ['&#173;', '<style id="s', mod, '">', rule, '</style>'].join('');
      div.id = mod;
      // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
      // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
      (body ? div : fakeBody).innerHTML += style;
      fakeBody.appendChild(div);
      if (!body) {
        //avoid crashing IE8, if background image is used
        fakeBody.style.background = '';
        //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
        fakeBody.style.overflow = 'hidden';
        docOverflow = docElement.style.overflow;
        docElement.style.overflow = 'hidden';
        docElement.appendChild(fakeBody);
      }

      ret = callback(div, rule);
      // If this is done after page load we don't want to remove the body so check if body exists
      if (!body) {
        fakeBody.parentNode.removeChild(fakeBody);
        docElement.style.overflow = docOverflow;
      } else {
        div.parentNode.removeChild(div);
      }

      return !!ret;

    },
    /*>>teststyles*/

    /*>>mq*/
    // adapted from matchMedia polyfill
    // by Scott Jehl and Paul Irish
    // gist.github.com/786768
    testMediaQuery = function(mq) {

      var matchMedia = window.matchMedia || window.msMatchMedia;
      if (matchMedia) {
        return matchMedia(mq) && matchMedia(mq).matches || false;
      }

      var bool;

      injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function(node) {
        bool = (window.getComputedStyle ?
          getComputedStyle(node, null) :
          node.currentStyle)['position'] == 'absolute';
      });

      return bool;

    },
    /*>>mq*/


    /*>>hasevent*/
    //
    // isEventSupported determines if a given element supports the given event
    // kangax.github.com/iseventsupported/
    //
    // The following results are known incorrects:
    //   Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
    //   Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
    //   ...
    isEventSupported = (function() {

      var TAGNAMES = {
        'select': 'input',
        'change': 'input',
        'submit': 'form',
        'reset': 'form',
        'error': 'img',
        'load': 'img',
        'abort': 'img'
      };

      function isEventSupported(eventName, element) {

        element = element || document.createElement(TAGNAMES[eventName] || 'div');
        eventName = 'on' + eventName;

        // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
        var isSupported = eventName in element;

        if (!isSupported) {
          // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
          if (!element.setAttribute) {
            element = document.createElement('div');
          }
          if (element.setAttribute && element.removeAttribute) {
            element.setAttribute(eventName, '');
            isSupported = is(element[eventName], 'function');

            // If property was created, "remove it" (by setting value to `undefined`)
            if (!is(element[eventName], 'undefined')) {
              element[eventName] = undefined;
            }
            element.removeAttribute(eventName);
          }
        }

        element = null;
        return isSupported;
      }
      return isEventSupported;
    })(),
    /*>>hasevent*/

    // TODO :: Add flag for hasownprop ? didn't last time

    // hasOwnProperty shim by kangax needed for Safari 2.0 support
    _hasOwnProperty = ({}).hasOwnProperty,
    hasOwnProp;

  if (!is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined')) {
    hasOwnProp = function(object, property) {
      return _hasOwnProperty.call(object, property);
    };
  } else {
    hasOwnProp = function(object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
      return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
    };
  }

  // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
  // es5.github.com/#x15.3.4.5

  if (!Function.prototype.bind) {
    Function.prototype.bind = function bind(that) {

      var target = this;

      if (typeof target != "function") {
        throw new TypeError();
      }

      var args = slice.call(arguments, 1),
        bound = function() {

          if (this instanceof bound) {

            var F = function() {};
            F.prototype = target.prototype;
            var self = new F();

            var result = target.apply(
              self,
              args.concat(slice.call(arguments))
            );
            if (Object(result) === result) {
              return result;
            }
            return self;

          } else {

            return target.apply(
              that,
              args.concat(slice.call(arguments))
            );

          }

        };

      return bound;
    };
  }

  /**
   * setCss applies given styles to the Modernizr DOM node.
   */
  function setCss(str) {
    mStyle.cssText = str;
  }

  /**
   * setCssAll extrapolates all vendor-specific css strings.
   */
  function setCssAll(str1, str2) {
    return setCss(prefixes.join(str1 + ';') + (str2 || ''));
  }

  /**
   * is returns a boolean for if typeof obj is exactly type.
   */
  function is(obj, type) {
    return typeof obj === type;
  }

  /**
   * contains returns a boolean for if substr is found within str.
   */
  function contains(str, substr) {
    return !!~('' + str).indexOf(substr);
  }

  /*>>testprop*/

  // testProps is a generic CSS / DOM property test.

  // In testing support for a given CSS property, it's legit to test:
  //    `elem.style[styleName] !== undefined`
  // If the property is supported it will return an empty string,
  // if unsupported it will return undefined.

  // We'll take advantage of this quick test and skip setting a style
  // on our modernizr element, but instead just testing undefined vs
  // empty string.

  // Because the testing of the CSS property names (with "-", as
  // opposed to the camelCase DOM properties) is non-portable and
  // non-standard but works in WebKit and IE (but not Gecko or Opera),
  // we explicitly reject properties with dashes so that authors
  // developing in WebKit or IE first don't end up with
  // browser-specific content by accident.

  function testProps(props, prefixed) {
    for (var i in props) {
      var prop = props[i];
      if (!contains(prop, "-") && mStyle[prop] !== undefined) {
        return prefixed == 'pfx' ? prop : true;
      }
    }
    return false;
  }
  /*>>testprop*/

  // TODO :: add testDOMProps
  /**
   * testDOMProps is a generic DOM property test; if a browser supports
   *   a certain property, it won't return undefined for it.
   */
  function testDOMProps(props, obj, elem) {
    for (var i in props) {
      var item = obj[props[i]];
      if (item !== undefined) {

        // return the property name as a string
        if (elem === false) return props[i];

        // let's bind a function
        if (is(item, 'function')) {
          // default to autobind unless override
          return item.bind(elem || obj);
        }

        // return the unbound function or obj or value
        return item;
      }
    }
    return false;
  }

  /*>>testallprops*/
  /**
   * testPropsAll tests a list of DOM properties we want to check against.
   *   We specify literally ALL possible (known and/or likely) properties on
   *   the element including the non-vendor prefixed one, for forward-
   *   compatibility.
   */
  function testPropsAll(prop, prefixed, elem) {

    var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
      props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');

    // did they call .prefixed('boxSizing') or are we just testing a prop?
    if (is(prefixed, "string") || is(prefixed, "undefined")) {
      return testProps(props, prefixed);

      // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
    } else {
      props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
      return testDOMProps(props, prefixed, elem);
    }
  }
  /*>>testallprops*/


  /**
   * Tests
   * -----
   */

  // The *new* flexbox
  // dev.w3.org/csswg/css3-flexbox

  tests['flexbox'] = function() {
    return testPropsAll('flexWrap');
  };

  // The *old* flexbox
  // www.w3.org/TR/2009/WD-css3-flexbox-20090723/

  tests['flexboxlegacy'] = function() {
    return testPropsAll('boxDirection');
  };

  // On the S60 and BB Storm, getContext exists, but always returns undefined
  // so we actually have to call getContext() to verify
  // github.com/Modernizr/Modernizr/issues/issue/97/

  tests['canvas'] = function() {
    var elem = document.createElement('canvas');
    return !!(elem.getContext && elem.getContext('2d'));
  };

  tests['canvastext'] = function() {
    return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
  };

  // webk.it/70117 is tracking a legit WebGL feature detect proposal

  // We do a soft detect which may false positive in order to avoid
  // an expensive context creation: bugzil.la/732441

  tests['webgl'] = function() {
    return !!window.WebGLRenderingContext;
  };

  /*
   * The Modernizr.touch test only indicates if the browser supports
   *    touch events, which does not necessarily reflect a touchscreen
   *    device, as evidenced by tablets running Windows 7 or, alas,
   *    the Palm Pre / WebOS (touch) phones.
   *
   * Additionally, Chrome (desktop) used to lie about its support on this,
   *    but that has since been rectified: crbug.com/36415
   *
   * We also test for Firefox 4 Multitouch Support.
   *
   * For more info, see: modernizr.github.com/Modernizr/touch.html
   */

  tests['touch'] = function() {
    var bool;

    if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
      bool = true;
    } else {
      injectElementWithStyles(['@media (', prefixes.join('touch-enabled),('), mod, ')', '{#modernizr{top:9px;position:absolute}}'].join(''), function(node) {
        bool = node.offsetTop === 9;
      });
    }

    return bool;
  };


  // geolocation is often considered a trivial feature detect...
  // Turns out, it's quite tricky to get right:
  //
  // Using !!navigator.geolocation does two things we don't want. It:
  //   1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
  //   2. Disables page caching in WebKit: webk.it/43956
  //
  // Meanwhile, in Firefox < 8, an about:config setting could expose
  // a false positive that would throw an exception: bugzil.la/688158

  tests['geolocation'] = function() {
    return 'geolocation' in navigator;
  };


  tests['postmessage'] = function() {
    return !!window.postMessage;
  };


  // Chrome incognito mode used to throw an exception when using openDatabase
  // It doesn't anymore.
  tests['websqldatabase'] = function() {
    return !!window.openDatabase;
  };

  // Vendors had inconsistent prefixing with the experimental Indexed DB:
  // - Webkit's implementation is accessible through webkitIndexedDB
  // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
  // For speed, we don't test the legacy (and beta-only) indexedDB
  tests['indexedDB'] = function() {
    return !!testPropsAll("indexedDB", window);
  };

  // documentMode logic from YUI to filter out IE8 Compat Mode
  //   which false positives.
  tests['hashchange'] = function() {
    return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
  };

  // Per 1.6:
  // This used to be Modernizr.historymanagement but the longer
  // name has been deprecated in favor of a shorter and property-matching one.
  // The old API is still available in 1.6, but as of 2.0 will throw a warning,
  // and in the first release thereafter disappear entirely.
  tests['history'] = function() {
    return !!(window.history && history.pushState);
  };

  tests['draganddrop'] = function() {
    var div = document.createElement('div');
    return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
  };

  // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
  // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
  // FF10 still uses prefixes, so check for it until then.
  // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
  tests['websockets'] = function() {
    return 'WebSocket' in window || 'MozWebSocket' in window;
  };


  // css-tricks.com/rgba-browser-support/
  tests['rgba'] = function() {
    // Set an rgba() color and check the returned value

    setCss('background-color:rgba(150,255,150,.5)');

    return contains(mStyle.backgroundColor, 'rgba');
  };

  tests['hsla'] = function() {
    // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
    //   except IE9 who retains it as hsla

    setCss('background-color:hsla(120,40%,100%,.5)');

    return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
  };

  tests['multiplebgs'] = function() {
    // Setting multiple images AND a color on the background shorthand property
    //  and then querying the style.background property value for the number of
    //  occurrences of "url(" is a reliable method for detecting ACTUAL support for this!

    setCss('background:url(https://),url(https://),red url(https://)');

    // If the UA supports multiple backgrounds, there should be three occurrences
    //   of the string "url(" in the return value for elemStyle.background

    return (/(url\s*\(.*?){3}/).test(mStyle.background);
  };



  // this will false positive in Opera Mini
  //   github.com/Modernizr/Modernizr/issues/396

  tests['backgroundsize'] = function() {
    return testPropsAll('backgroundSize');
  };

  tests['borderimage'] = function() {
    return testPropsAll('borderImage');
  };


  // Super comprehensive table about all the unique implementations of
  // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance

  tests['borderradius'] = function() {
    return testPropsAll('borderRadius');
  };

  // WebOS unfortunately false positives on this test.
  tests['boxshadow'] = function() {
    return testPropsAll('boxShadow');
  };

  // FF3.0 will false positive on this test
  tests['textshadow'] = function() {
    return document.createElement('div').style.textShadow === '';
  };


  tests['opacity'] = function() {
    // Browsers that actually have CSS Opacity implemented have done so
    //  according to spec, which means their return values are within the
    //  range of [0.0,1.0] - including the leading zero.

    setCssAll('opacity:.55');

    // The non-literal . in this regex is intentional:
    //   German Chrome returns this value as 0,55
    // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
    return (/^0.55$/).test(mStyle.opacity);
  };


  // Note, Android < 4 will pass this test, but can only animate
  //   a single property at a time
  //   goo.gl/v3V4Gp
  tests['cssanimations'] = function() {
    return testPropsAll('animationName');
  };


  tests['csscolumns'] = function() {
    return testPropsAll('columnCount');
  };


  tests['cssgradients'] = function() {
    /**
     * For CSS Gradients syntax, please see:
     * webkit.org/blog/175/introducing-css-gradients/
     * developer.mozilla.org/en/CSS/-moz-linear-gradient
     * developer.mozilla.org/en/CSS/-moz-radial-gradient
     * dev.w3.org/csswg/css3-images/#gradients-
     */

    var str1 = 'background-image:',
      str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
      str3 = 'linear-gradient(left top,#9f9, white);';

    setCss(
      // legacy webkit syntax (FIXME: remove when syntax not in use anymore)
      (str1 + '-webkit- '.split(' ').join(str2 + str1) +
        // standard syntax             // trailing 'background-image:'
        prefixes.join(str3 + str1)).slice(0, -str1.length)
    );

    return contains(mStyle.backgroundImage, 'gradient');
  };


  tests['cssreflections'] = function() {
    return testPropsAll('boxReflect');
  };


  tests['csstransforms'] = function() {
    return !!testPropsAll('transform');
  };


  tests['csstransforms3d'] = function() {

    var ret = !!testPropsAll('perspective');

    // Webkit's 3D transforms are passed off to the browser's own graphics renderer.
    //   It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
    //   some conditions. As a result, Webkit typically recognizes the syntax but
    //   will sometimes throw a false positive, thus we must do a more thorough check:
    if (ret && 'webkitPerspective' in docElement.style) {

      // Webkit allows this media query to succeed only if the feature is enabled.
      // `@media (transform-3d),(-webkit-transform-3d){ ... }`
      injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function(node, rule) {
        ret = node.offsetLeft === 9 && node.offsetHeight === 3;
      });
    }
    return ret;
  };


  tests['csstransitions'] = function() {
    return testPropsAll('transition');
  };


  /*>>fontface*/
  // @font-face detection routine by Diego Perini
  // javascript.nwbox.com/CSSSupport/

  // false positives:
  //   WebOS github.com/Modernizr/Modernizr/issues/342
  //   WP7   github.com/Modernizr/Modernizr/issues/538
  tests['fontface'] = function() {
    var bool;

    injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function(node, rule) {
      var style = document.getElementById('smodernizr'),
        sheet = style.sheet || style.styleSheet,
        cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';

      bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
    });

    return bool;
  };
  /*>>fontface*/

  // CSS generated content detection
  tests['generatedcontent'] = function() {
    var bool;

    injectElementWithStyles(['#', mod, '{font:0/0 a}#', mod, ':after{content:"', smile, '";visibility:hidden;font:3px/1 a}'].join(''), function(node) {
      bool = node.offsetHeight >= 3;
    });

    return bool;
  };



  // These tests evaluate support of the video/audio elements, as well as
  // testing what types of content they support.
  //
  // We're using the Boolean constructor here, so that we can extend the value
  // e.g.  Modernizr.video     // true
  //       Modernizr.video.ogg // 'probably'
  //
  // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
  //                     thx to NielsLeenheer and zcorpan

  // Note: in some older browsers, "no" was a return value instead of empty string.
  //   It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
  //   It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5

  tests['video'] = function() {
    var elem = document.createElement('video'),
      bool = false;

    // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
    try {
      if (bool = !!elem.canPlayType) {
        bool = new Boolean(bool);
        bool.ogg = elem.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, '');

        // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
        bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, '');

        bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, '');
      }

    } catch (e) {}

    return bool;
  };

  tests['audio'] = function() {
    var elem = document.createElement('audio'),
      bool = false;

    try {
      if (bool = !!elem.canPlayType) {
        bool = new Boolean(bool);
        bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, '');
        bool.mp3 = elem.canPlayType('audio/mpeg;').replace(/^no$/, '');

        // Mimetypes accepted:
        //   developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
        //   bit.ly/iphoneoscodecs
        bool.wav = elem.canPlayType('audio/wav; codecs="1"').replace(/^no$/, '');
        bool.m4a = (elem.canPlayType('audio/x-m4a;') ||
          elem.canPlayType('audio/aac;')).replace(/^no$/, '');
      }
    } catch (e) {}

    return bool;
  };


  // In FF4, if disabled, window.localStorage should === null.

  // Normally, we could not test that directly and need to do a
  //   `('localStorage' in window) && ` test first because otherwise Firefox will
  //   throw bugzil.la/365772 if cookies are disabled

  // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
  // will throw the exception:
  //   QUOTA_EXCEEDED_ERRROR DOM Exception 22.
  // Peculiarly, getItem and removeItem calls do not throw.

  // Because we are forced to try/catch this, we'll go aggressive.

  // Just FWIW: IE8 Compat mode supports these features completely:
  //   www.quirksmode.org/dom/html5.html
  // But IE8 doesn't support either with local files

  tests['localstorage'] = function() {
    try {
      localStorage.setItem(mod, mod);
      localStorage.removeItem(mod);
      return true;
    } catch (e) {
      return false;
    }
  };

  tests['sessionstorage'] = function() {
    try {
      sessionStorage.setItem(mod, mod);
      sessionStorage.removeItem(mod);
      return true;
    } catch (e) {
      return false;
    }
  };


  tests['webworkers'] = function() {
    return !!window.Worker;
  };


  tests['applicationcache'] = function() {
    return !!window.applicationCache;
  };


  // Thanks to Erik Dahlstrom
  tests['svg'] = function() {
    return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
  };

  // specifically for SVG inline in HTML, not within XHTML
  // test page: paulirish.com/demo/inline-svg
  tests['inlinesvg'] = function() {
    var div = document.createElement('div');
    div.innerHTML = '<svg/>';
    return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
  };

  // SVG SMIL animation
  tests['smil'] = function() {
    return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
  };

  // This test is only for clip paths in SVG proper, not clip paths on HTML content
  // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg

  // However read the comments to dig into applying SVG clippaths to HTML content here:
  //   github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
  tests['svgclippaths'] = function() {
    return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
  };

  /*>>webforms*/
  // input features and input types go directly onto the ret object, bypassing the tests loop.
  // Hold this guy to execute in a moment.
  function webforms() {
    /*>>input*/
    // Run through HTML5's new input attributes to see if the UA understands any.
    // We're using f which is the <input> element created early on
    // Mike Taylr has created a comprehensive resource for testing these attributes
    //   when applied to all input types:
    //   miketaylr.com/code/input-type-attr.html
    // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary

    // Only input placeholder is tested while textarea's placeholder is not.
    // Currently Safari 4 and Opera 11 have support only for the input placeholder
    // Both tests are available in feature-detects/forms-placeholder.js
    Modernizr['input'] = (function(props) {
      for (var i = 0, len = props.length; i < len; i++) {
        attrs[props[i]] = !!(props[i] in inputElem);
      }
      if (attrs.list) {
        // safari false positive's on datalist: webk.it/74252
        // see also github.com/Modernizr/Modernizr/issues/146
        attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
      }
      return attrs;
    })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
    /*>>input*/

    /*>>inputtypes*/
    // Run through HTML5's new input types to see if the UA understands any.
    //   This is put behind the tests runloop because it doesn't return a
    //   true/false like all the other tests; instead, it returns an object
    //   containing each input type with its corresponding true/false value

    // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
    Modernizr['inputtypes'] = (function(props) {

      for (var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++) {

        inputElem.setAttribute('type', inputElemType = props[i]);
        bool = inputElem.type !== 'text';

        // We first check to see if the type we give it sticks..
        // If the type does, we feed it a textual value, which shouldn't be valid.
        // If the value doesn't stick, we know there's input sanitization which infers a custom UI
        if (bool) {

          inputElem.value = smile;
          inputElem.style.cssText = 'position:absolute;visibility:hidden;';

          if (/^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined) {

            docElement.appendChild(inputElem);
            defaultView = document.defaultView;

            // Safari 2-4 allows the smiley as a value, despite making a slider
            bool = defaultView.getComputedStyle &&
              defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
              // Mobile android web browser has false positive, so must
              // check the height to see if the widget is actually there.
              (inputElem.offsetHeight !== 0);

            docElement.removeChild(inputElem);

          } else if (/^(search|tel)$/.test(inputElemType)) {
            // Spec doesn't define any special parsing or detectable UI
            //   behaviors so we pass these through as true

            // Interestingly, opera fails the earlier test, so it doesn't
            //  even make it here.

          } else if (/^(url|email)$/.test(inputElemType)) {
            // Real url and email support comes with prebaked validation.
            bool = inputElem.checkValidity && inputElem.checkValidity() === false;

          } else {
            // If the upgraded input compontent rejects the :) text, we got a winner
            bool = inputElem.value != smile;
          }
        }

        inputs[props[i]] = !!bool;
      }
      return inputs;
    })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
    /*>>inputtypes*/
  }
  /*>>webforms*/


  // End of test definitions
  // -----------------------



  // Run through all tests and detect their support in the current UA.
  // todo: hypothetically we could be doing an array of tests and use a basic loop here.
  for (var feature in tests) {
    if (hasOwnProp(tests, feature)) {
      // run the test, throw the return value into the Modernizr,
      //   then based on that boolean, define an appropriate className
      //   and push it into an array of classes we'll join later.
      featureName = feature.toLowerCase();
      Modernizr[featureName] = tests[feature]();

      classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
    }
  }

  /*>>webforms*/
  // input tests need to run.
  Modernizr.input || webforms();
  /*>>webforms*/


  /**
   * addTest allows the user to define their own feature tests
   * the result will be added onto the Modernizr object,
   * as well as an appropriate className set on the html element
   *
   * @param feature - String naming the feature
   * @param test - Function returning true if feature is supported, false if not
   */
  Modernizr.addTest = function(feature, test) {
    if (typeof feature == 'object') {
      for (var key in feature) {
        if (hasOwnProp(feature, key)) {
          Modernizr.addTest(key, feature[key]);
        }
      }
    } else {

      feature = feature.toLowerCase();

      if (Modernizr[feature] !== undefined) {
        // we're going to quit if you're trying to overwrite an existing test
        // if we were to allow it, we'd do this:
        //   var re = new RegExp("\\b(no-)?" + feature + "\\b");
        //   docElement.className = docElement.className.replace( re, '' );
        // but, no rly, stuff 'em.
        return Modernizr;
      }

      test = typeof test == 'function' ? test() : test;

      if (typeof enableClasses !== "undefined" && enableClasses) {
        docElement.className += ' ' + (test ? '' : 'no-') + feature;
      }
      Modernizr[feature] = test;

    }

    return Modernizr; // allow chaining.
  };


  // Reset modElem.cssText to nothing to reduce memory footprint.
  setCss('');
  modElem = inputElem = null;

  /*>>shiv*/
  /**
   * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
   */
  ;
  (function(window, document) {
    /*jshint evil:true */
    /** version */
    var version = '3.7.0';

    /** Preset options */
    var options = window.html5 || {};

    /** Used to skip problem elements */
    var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;

    /** Not all elements can be cloned in IE **/
    var saveClones = /^(?: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;

    /** Detect whether the browser supports default html5 styles */
    var supportsHtml5Styles;

    /** Name of the expando, to work with multiple documents or to re-shiv one document */
    var expando = '_html5shiv';

    /** The id for the the documents expando */
    var expanID = 0;

    /** Cached data for each document */
    var expandoData = {};

    /** Detect whether the browser supports unknown elements */
    var supportsUnknownElements;

    (function() {
      try {
        var a = document.createElement('a');
        a.innerHTML = '<xyz></xyz>';
        //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
        supportsHtml5Styles = ('hidden' in a);

        supportsUnknownElements = a.childNodes.length == 1 || (function() {
          // assign a false positive if unable to shiv
          (document.createElement)('a');
          var frag = document.createDocumentFragment();
          return (
            typeof frag.cloneNode == 'undefined' ||
            typeof frag.createDocumentFragment == 'undefined' ||
            typeof frag.createElement == 'undefined'
          );
        }());
      } catch (e) {
        // assign a false positive if detection fails => unable to shiv
        supportsHtml5Styles = true;
        supportsUnknownElements = true;
      }

    }());

    /*--------------------------------------------------------------------------*/

    /**
     * Creates a style sheet with the given CSS text and adds it to the document.
     * @private
     * @param {Document} ownerDocument The document.
     * @param {String} cssText The CSS text.
     * @returns {StyleSheet} The style element.
     */
    function addStyleSheet(ownerDocument, cssText) {
      var p = ownerDocument.createElement('p'),
        parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;

      p.innerHTML = 'x<style>' + cssText + '</style>';
      return parent.insertBefore(p.lastChild, parent.firstChild);
    }

    /**
     * Returns the value of `html5.elements` as an array.
     * @private
     * @returns {Array} An array of shived element node names.
     */
    function getElements() {
      var elements = html5.elements;
      return typeof elements == 'string' ? elements.split(' ') : elements;
    }

    /**
     * Returns the data associated to the given document
     * @private
     * @param {Document} ownerDocument The document.
     * @returns {Object} An object of data.
     */
    function getExpandoData(ownerDocument) {
      var data = expandoData[ownerDocument[expando]];
      if (!data) {
        data = {};
        expanID++;
        ownerDocument[expando] = expanID;
        expandoData[expanID] = data;
      }
      return data;
    }

    /**
     * returns a shived element for the given nodeName and document
     * @memberOf html5
     * @param {String} nodeName name of the element
     * @param {Document} ownerDocument The context document.
     * @returns {Object} The shived element.
     */
    function createElement(nodeName, ownerDocument, data) {
      if (!ownerDocument) {
        ownerDocument = document;
      }
      if (supportsUnknownElements) {
        return ownerDocument.createElement(nodeName);
      }
      if (!data) {
        data = getExpandoData(ownerDocument);
      }
      var node;

      if (data.cache[nodeName]) {
        node = data.cache[nodeName].cloneNode();
      } else if (saveClones.test(nodeName)) {
        node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
      } else {
        node = data.createElem(nodeName);
      }

      // Avoid adding some elements to fragments in IE < 9 because
      // * Attributes like `name` or `type` cannot be set/changed once an element
      //   is inserted into a document/fragment
      // * Link elements with `src` attributes that are inaccessible, as with
      //   a 403 response, will cause the tab/window to crash
      // * Script elements appended to fragments will execute when their `src`
      //   or `text` property is set
      return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
    }

    /**
     * returns a shived DocumentFragment for the given document
     * @memberOf html5
     * @param {Document} ownerDocument The context document.
     * @returns {Object} The shived DocumentFragment.
     */
    function createDocumentFragment(ownerDocument, data) {
      if (!ownerDocument) {
        ownerDocument = document;
      }
      if (supportsUnknownElements) {
        return ownerDocument.createDocumentFragment();
      }
      data = data || getExpandoData(ownerDocument);
      var clone = data.frag.cloneNode(),
        i = 0,
        elems = getElements(),
        l = elems.length;
      for (; i < l; i++) {
        clone.createElement(elems[i]);
      }
      return clone;
    }

    /**
     * Shivs the `createElement` and `createDocumentFragment` methods of the document.
     * @private
     * @param {Document|DocumentFragment} ownerDocument The document.
     * @param {Object} data of the document.
     */
    function shivMethods(ownerDocument, data) {
      if (!data.cache) {
        data.cache = {};
        data.createElem = ownerDocument.createElement;
        data.createFrag = ownerDocument.createDocumentFragment;
        data.frag = data.createFrag();
      }


      ownerDocument.createElement = function(nodeName) {
        //abort shiv
        if (!html5.shivMethods) {
          return data.createElem(nodeName);
        }
        return createElement(nodeName, ownerDocument, data);
      };

      ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
        'var n=f.cloneNode(),c=n.createElement;' +
        'h.shivMethods&&(' +
        // unroll the `createElement` calls
        getElements().join().replace(/[\w\-]+/g, function(nodeName) {
          data.createElem(nodeName);
          data.frag.createElement(nodeName);
          return 'c("' + nodeName + '")';
        }) +
        ');return n}'
      )(html5, data.frag);
    }

    /*--------------------------------------------------------------------------*/

    /**
     * Shivs the given document.
     * @memberOf html5
     * @param {Document} ownerDocument The document to shiv.
     * @returns {Document} The shived document.
     */
    function shivDocument(ownerDocument) {
      if (!ownerDocument) {
        ownerDocument = document;
      }
      var data = getExpandoData(ownerDocument);

      if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
        data.hasCSS = !!addStyleSheet(ownerDocument,
          // corrects block display not defined in IE6/7/8/9
          'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
          // adds styling not present in IE6/7/8/9
          'mark{background:#FF0;color:#000}' +
          // hides non-rendered elements
          'template{display:none}'
        );
      }
      if (!supportsUnknownElements) {
        shivMethods(ownerDocument, data);
      }
      return ownerDocument;
    }

    /*--------------------------------------------------------------------------*/

    /**
     * The `html5` object is exposed so that more elements can be shived and
     * existing shiving can be detected on iframes.
     * @type Object
     * @example
     *
     * // options can be changed before the script is included
     * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
     */
    var html5 = {

      /**
       * An array or space separated string of node names of the elements to shiv.
       * @memberOf html5
       * @type Array|String
       */
      'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',

      /**
       * current version of html5shiv
       */
      'version': version,

      /**
       * A flag to indicate that the HTML5 style sheet should be inserted.
       * @memberOf html5
       * @type Boolean
       */
      'shivCSS': (options.shivCSS !== false),

      /**
       * Is equal to true if a browser supports creating unknown/HTML5 elements
       * @memberOf html5
       * @type boolean
       */
      'supportsUnknownElements': supportsUnknownElements,

      /**
       * A flag to indicate that the document's `createElement` and `createDocumentFragment`
       * methods should be overwritten.
       * @memberOf html5
       * @type Boolean
       */
      'shivMethods': (options.shivMethods !== false),

      /**
       * A string to describe the type of `html5` object ("default" or "default print").
       * @memberOf html5
       * @type String
       */
      'type': 'default',

      // shivs the document according to the specified `html5` object options
      'shivDocument': shivDocument,

      //creates a shived element
      createElement: createElement,

      //creates a shived documentFragment
      createDocumentFragment: createDocumentFragment
    };

    /*--------------------------------------------------------------------------*/

    // expose html5
    window.html5 = html5;

    // shiv the document
    shivDocument(document);

  }(this, document));
  /*>>shiv*/

  // Assign private properties to the return object with prefix
  Modernizr._version = version;

  // expose these for the plugin API. Look in the source for how to join() them against your input
  /*>>prefixes*/
  Modernizr._prefixes = prefixes;
  /*>>prefixes*/
  /*>>domprefixes*/
  Modernizr._domPrefixes = domPrefixes;
  Modernizr._cssomPrefixes = cssomPrefixes;
  /*>>domprefixes*/

  /*>>mq*/
  // Modernizr.mq tests a given media query, live against the current state of the window
  // A few important notes:
  //   * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
  //   * A max-width or orientation query will be evaluated against the current state, which may change later.
  //   * You must specify values. Eg. If you are testing support for the min-width media query use:
  //       Modernizr.mq('(min-width:0)')
  // usage:
  // Modernizr.mq('only screen and (max-width:768)')
  Modernizr.mq = testMediaQuery;
  /*>>mq*/

  /*>>hasevent*/
  // Modernizr.hasEvent() detects support for a given event, with an optional element to test on
  // Modernizr.hasEvent('gesturestart', elem)
  Modernizr.hasEvent = isEventSupported;
  /*>>hasevent*/

  /*>>testprop*/
  // Modernizr.testProp() investigates whether a given style property is recognized
  // Note that the property names must be provided in the camelCase variant.
  // Modernizr.testProp('pointerEvents')
  Modernizr.testProp = function(prop) {
    return testProps([prop]);
  };
  /*>>testprop*/

  /*>>testallprops*/
  // Modernizr.testAllProps() investigates whether a given style property,
  //   or any of its vendor-prefixed variants, is recognized
  // Note that the property names must be provided in the camelCase variant.
  // Modernizr.testAllProps('boxSizing')
  Modernizr.testAllProps = testPropsAll;
  /*>>testallprops*/


  /*>>teststyles*/
  // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
  // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
  Modernizr.testStyles = injectElementWithStyles;
  /*>>teststyles*/


  /*>>prefixed*/
  // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
  // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'

  // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
  // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
  //
  //     str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');

  // If you're trying to ascertain which transition end event to bind to, you might do something like...
  //
  //     var transEndEventNames = {
  //       'WebkitTransition' : 'webkitTransitionEnd',
  //       'MozTransition'    : 'transitionend',
  //       'OTransition'      : 'oTransitionEnd',
  //       'msTransition'     : 'MSTransitionEnd',
  //       'transition'       : 'transitionend'
  //     },
  //     transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];

  Modernizr.prefixed = function(prop, obj, elem) {
    if (!obj) {
      return testPropsAll(prop, 'pfx');
    } else {
      // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
      return testPropsAll(prop, obj, elem);
    }
  };
  /*>>prefixed*/


  /*>>cssclasses*/
  // Remove "no-js" class from <html> element, if it exists:
  docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +

    // Add the new classes to the <html> element.
    (enableClasses ? ' js ' + classes.join(' ') : '');
  /*>>cssclasses*/

  return Modernizr;

})(this, this.document);

              
            
!
999px

Console