/**
 Copyright © 2019 Gamut.nyc. All rights reserved.
 @link        http://gamut.nyc
 @version     0.1
 @package     Gamut.nyc
 
 https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties
 http://www.w3schools.com/cssref/css3_pr_box-shadow.asp
 https://css-tricks.com/snippets/css/complete-guide-grid/
 https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048
 https://developer.mozilla.org/en-US/docs/Web/CSS/
 https://learncssgrid.com/
 https://platform-status.mozilla.org/
 https://css-tricks.com/fun-viewport-units/
 https://github.com/Hiswe/vh-check
 http://mediaqueriestest.com/
 https://www.clicktorelease.com/blog/how-to-make-clouds-with-css-3d/

 TODO: add style icon icon-name to divs instead of span. Test if icon-only possible
*/
@font-face {
  font-family: gamut-icons;
  src: url(/lib/font/gamut-icons/gamut-icons.woff2) format('woff2'),
       url(/lib/font/gamut-icons/gamut-icons.woff) format('woff'),
       url(/lib/font/gamut-icons/gamut-icons.ttf) format('truetype');
  font-weight: normal;
  font-style: normal;
}

html {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box; /* https://github.com/Schepp/box-sizing-polyfill */
}
*, *:before, *:after {
  -webkit-box-sizing: inherit;
  -moz-box-sizing: inherit;
  box-sizing: inherit;
}
html, body {
  min-height: 100%;
  padding: 0;
  margin: 0;
}


/** Page grid */
body > header {
  grid-area: header;
}
body > nav {
  grid-area: nav;
}
body > main, body > article {
  grid-area: main;
}
body > aside {
  grid-area: aside;

  /* for now, hide aside */
  grid-area: unset;
  display: none;
}
body > footer {
  color: black;
  text-align: center;
  grid-area: footer;
  white-space: nowrap;
  font-size: 92%;
  line-height: 1.8;
}
body > * { /** page sides */
  padding: 0 3%;
  padding: 0 expression(4% - 0.5em);
  padding: 0 calc(4vw - 0.5em);
}
body {
  color: white;
  font-family: 'Roboto', Helvetica, Arial, sans-serif;
  font-weight: 300;
  font-size: calc(12.8px + 0.25vw + 0.18vh);
  width: 100vw;
  height: 100vh; /* fixed at the bottom for mobile browsers */
  background-color: #002565; /* #00408a */
  background-repeat: no-repeat;
  background-size: 100%;
  background-position: center bottom -2vw;
  background-image: url(/img/Gamut.NYC-Skyline-Silhouette.svg), url(/img/Gamut.NYC-Skyline-Buildings.svg), url(/img/Gamut.NYC-Skyline-Background.svg),
    linear-gradient(0deg, #e2eff4, #e0eef4 5%, #5e94c4 30%, #002565);
  display: grid;
  grid-template-columns: 3fr 1fr;
  grid-template-rows: min-content 1fr min-content;
  grid-template-areas:
    "header header"
    "main main"
    "footer footer"; /* "main aside" */ /* "article article . aside" */
}
html.standard > body, html.ie10 > body {
  background-position: center bottom calc(1.5em - 7.7vw);
}

/** reset built-in styles for semantic use for elements in navigation and / or headers */
nav ul, header ul {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0;
}
header h1, header h2, header h3, nav h1, nav h2, nav h3 {
  font-weight: inherit;
  font-size: inherit;
  font-style: inherit;
  font-size: 100%;
  margin-top: 0;
  margin-bottom: 0;
}
nav a, header a, footer a {
  text-decoration: none;
  color: inherit;
}



body > header {
  /* color: white; */
  /* background-color: #00408a; */
}
body > header h1, body > header h2, body > header h3 {
  display: inline;
}
body > header img { /** logo */
  vertical-align: middle;
  height: 2.1em;
  padding: 0.3em 0.18em 0.3em 0;
  border: 0;
  position: relative;
  z-index: 12;
}
body > header h1 {
  font-size: 108%;
  position: relative;
  top: 0.06em;
}
body > header a {
  line-height: 2.5em;
  display: inline-block;
  position: relative;
}
body > header a:hover,
body > header a:active {
  text-shadow: 0 0 0.5em rgba(255,255,255,0.6); 
  transition: text-shadow ease 250ms;
}
body > header a::after { /** animated link underline */
  content: '';
  display: block;
  height: 0.2em;
  background: #3e88dd;
  position: relative;
  bottom: 0.45em;
  transform: scale(0, 1);
  transition: transform ease-in-out 250ms;
}
nav a:hover::after {
  transform: scale(1,1);
}

/** Header nav */
body > header > nav > ul {
  display: -webkit-flex; /* Safari */
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
html.ie10 > body > header > nav > ul {
  -ms-display: flexbox;
  display: flexbox;
  -ms-flex-pack: justify;
}
body > header > nav > ul > li {
  margin: auto 0;
  white-space: nowrap;
}

/** Body Variants */
body.nonsell nav li.sell { /** Shortened top menu sans "selling" items */
  display: none;
}
body.long { /** Display long-form content, not expected to fit on one page */
  /* TODO: Optimize for magazine style text with multi-column, figures and key quotes in middle */
  color: black;
  background-color: white;
  background-position: center bottom -2vw;
  background-image: url(/img/Gamut.NYC-Skyline-Silhouette.svg), url(/img/Gamut.NYC-Skyline-Buildings.svg);
}
body.long > header {
  color: white;
  background-color: #002565;
  background-image: linear-gradient(0deg, #00408a, #002565);
}
body.long > main, body.long > article {
  overflow: auto;
}
body:not(.long) > main a, body:not(.long) > article a {
  color: inherit;
}


/** Main */
main > h1, body > article > h1 {
  padding: 1em 0;
  font-size: 170%;
  font-weight: 300;
  /* text-shadow: 0 0 2.2em white, 0 0 1.6em white,
    0 0 1em rgba(255,255,255,0.9), 0 0 0.6em rgba(255,255,255,0.8); */
}
main > ul {
  font-size: 115%;
  font-weight: 300;
  list-style-type: none;
  padding-left: 0;
  /* text-shadow: 0 0 3em white, 0 0 2em white,
    0 0 1.5em rgba(255,255,255,0.9), 0 0 1em rgba(255,255,255,0.8); */
}
main > ul > li {
  display: inline;
}
main > ul > li::before {
  content: '\25CB\2009';
}
main > ul > li:first-child::before {
  content: '';
}

/** Main nav grid */
main dl > dt {
  text-align: center;
  /* grid-area: nav-name; */
  grid-row: 1;
}

main dl > dd {
  margin-left: 0;
  /* grid-area: nav-descr; */
  grid-row: 2;
  grid-column: 1 / -1;
  visibility: hidden;
}

main dl > dt:first-child + dd {
  visibility: visible;
  z-index: -1;
}


main dl > dt:focus-within + dd,
main dl > dt:focus + dd,
main dl > dt:hover + dd,
main dl > dt:active + dd {
  visibility: visible;
}

main dl {
  display: grid;
  align-content: center;
  grid-gap: 0.5em calc(5vw - 0.8em);
  grid-template-columns: repeat(3, minmax(max-content, 1fr));
}

/** Form */
form {
  display: grid;
  grid-template-columns: max-content 1fr;
  grid-gap: 2vh 1vw;
}
form label {
  display: block;
}
input[type=submit] {
  font-size: 107%;
  padding: 0.2em 0;
  margin: 0.2em 0;
  border-radius: 0.3em;
}
body.long input[type=submit] {
  color: inherit;
  background-color: #002565;
  background-image: linear-gradient(0deg, #00408a, #002565);
}
textarea {
  overflow: auto;
}

/** Icons see http://fontello.com/ */
a.icon:before, span.icon:before {
  font-family: gamut-icons, Arial, Verdana, Helvetica, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: 0.5em;
}
.icon.amazon:before { content: '\2380'; } /* ⎀ */
.icon.android:before { content: '\26c7'; } /* ⛇ */
.icon.apple:before { content: '\2688'; } /* ⚈ */
.icon.attach:before { content: '\2350'; } /* ⍐ */
.icon.attention-alt:before { content: '\21'; } /* ! */
.icon.attention:before { content: '\26a0'; } /* ⚠ */
.icon.award:before { content: '\235a'; } /* ⍚ */
.icon.basket:before { content: '\43'; } /* C */
.icon.beaker:before { content: '\2359'; } /* ⍙ */
.icon.bell-off:before { content: '\266d'; } /* ♭ */
.icon.bell:before { content: '\266b'; } /* ♫ */
.icon.binoculars:before { content: '\2389'; } /* ⎉ */
.icon.bookmark:before { content: '\2690'; } /* ⚐ */
.icon.bug:before { content: '\2639'; } /* ☹ */
.icon.calc:before { content: '\2328'; } /* ⌨ */
.icon.calendar-check-o:before { content: '\233b'; } /* ⌻ */
.icon.calendar-minus-o:before { content: '\2342'; } /* ⍂ */
.icon.calendar-plus-o:before { content: '\233a'; } /* ⌺ */
.icon.calendar:before { content: '\234d'; } /* ⍍ */
.icon.camera:before { content: '\25c9'; } /* ◉ */
.icon.cancel:before { content: '\d7'; } /* × */
.icon.cc:before { content: '\63'; } /* c */
.icon.ccw:before { content: '\21ba'; } /* ↺ */
.icon.chart-line:before { content: '\23c8'; } /* ⏈ */
.icon.chart-pie:before { content: '\25d5'; } /* ◕ */
.icon.check-empty:before { content: '\2610'; } /* ☐ */
.icon.check:before { content: '\2611'; } /* ☑ */
.icon.cloud:before { content: '\2601'; } /* ☁ */
.icon.cog:before { content: '\2699'; } /* ⚙ */
.icon.comment:before { content: '\e813'; } /*  */
.icon.credit-card:before { content: '\239a'; } /* ⎚ */
.icon.crop:before { content: '\25f0'; } /* ◰ */
.icon.cw:before { content: '\21bb'; } /* ↻ */
.icon.do-not-enter:before { content: '\26d4'; } /* ⛔ */
.icon.doc:before { content: '\220e'; } /* ∎ */
.icon.dollar:before { content: '\24'; } /* $ */
.icon.down-open:before { content: '\76'; } /* v */
.icon.download-cloud:before { content: '\2356'; } /* ⍖ */
.icon.dropbox:before { content: '\f16b'; } /*  */
.icon.eject:before { content: '\23cf'; } /* ⏏ */
.icon.envelope:before { content: '\234c'; font-size: 82%; } /* ⍌ */
.icon.facebook:before { content: '\66'; } /* f */
.icon.fast-bw:before { content: '\23ea'; } /* ⏪ */
.icon.fast-fw:before { content: '\23e9'; } /* ⏩ */
.icon.flag:before { content: '\2691'; } /* ⚑ */
.icon.floppy:before { content: '\2357'; } /* ⍗ */
.icon.folder-open:before { content: '\2344'; } /* ⍄ */
.icon.folder:before { content: '\2341'; } /* ⍁ */
.icon.forward:before { content: '\2192'; } /* → */
.icon.foursquare:before { content: '\46'; } /* F */
.icon.gauge:before { content: '\238b'; } /* ⎋ */
.icon.globe:before { content: '\25cd'; } /* ◍ */
.icon.graduation-cap:before { content: '\26d1'; } /* ⛑ */
.icon.handshake:before { content: '\261b'; } /* ☛ */
.icon.heart:before { content: '\2665'; } /* ♥ */
.icon.help:before { content: '\3f'; } /* ? */
.icon.home:before { content: '\48'; } /* H */
.icon.info:before { content: '\69'; } /* i */
.icon.laptop:before { content: '\25fc'; } /* ◼ */
.icon.left-open:before { content: '\3c'; } /* < */
.icon.lifebuoy:before { content: '\2297'; } /* ⊗ */
.icon.lightbulb:before { content: '\0229'; } /* ȩ */
.icon.link:before { content: '\221e'; } /* ∞ */
.icon.linkedin:before { content: '\6e'; } /* n */
.icon.linux:before { content: '\2603'; } /* ☃ */
.icon.location:before { content: '\234e'; } /* ⍎ */
.icon.lock-open:before { content: '\55'; } /* U */
.icon.lock:before { content: '\4c'; } /* L */
.icon.magic:before { content: '\233f'; } /* ⌿ */
.icon.menu:before { content: '\2261'; } /* ≡ */
.icon.mic:before { content: '\6d'; } /* m */
.icon.mobile:before { content: '\25fe'; } /* ◾ */
.icon.move:before { content: '\21f2'; } /* ⇲ */
.icon.off:before { content: '\233d'; } /* ⌽ */
.icon.ok:before { content: '\56'; } /* V */
.icon.pause:before { content: '\23f8'; } /* ⏸ */
.icon.paypal:before { content: '\50'; } /* P */
.icon.pencil:before { content: '\2396'; } /* ⎖ */
.icon.phone:before { content: '\260e'; font-size: 105%; } /* ☎ */
.icon.picture:before { content: '\25b0'; } /* ▰ */
.icon.pinterest:before { content: '\70'; } /* p */
.icon.play:before { content: '\23f5'; } /* ⏵ */
.icon.plus:before { content: '\2b'; } /* + */
.icon.print:before { content: '\2399'; } /* ⎙ */
.icon.qrcode:before { content: '\229e'; } /* ⊞ */
.icon.quote:before { content: '\22'; } /* " */
.icon.reddit:before { content: '\263a'; } /* ☺ */
.icon.reply-all:before { content: '\21c7'; } /* ⇇ */
.icon.reply:before { content: '\2190'; } /* ← */
.icon.resize-horizontal:before { content: '\2194'; } /* ↔ */
.icon.resize-small:before { content: '\21a7'; } /* ↧ */
.icon.resize-vertical:before { content: '\2195'; } /* ↕ */
.icon.right-open:before { content: '\3e'; } /* > */
.icon.search:before { content: '\2315'; } /* ⌕ */
.icon.share:before { content: '\2282'; } /* ⊂ */
.icon.sitemap:before { content: '\2697'; } /* ⚗ */
.icon.skype:before { content: '\73'; } /* s */
.icon.sliders:before { content: '\53'; } /* S */
.icon.sort-name-down:before { content: '\21e1'; } /* ⇡ */
.icon.sort-name-up:before { content: '\21e3'; } /* ⇣ */
.icon.sort-number-down:before { content: '\2191'; } /* ↑ */
.icon.sort-number-up:before { content: '\2193'; } /* ↓ */
.icon.spin:before { content: '\232c'; } /* ⌬ */
.icon.star-half:before { content: '\2606'; } /* ☆ */
.icon.star:before { content: '\2605'; } /* ★ */
.icon.stop:before { content: '\23f9'; } /* ⏹ */
.icon.tablet:before { content: '\25ae'; } /* ▮ */
.icon.tag:before { content: '\23'; } /* # */
.icon.th-large:before { content: '\2235'; } /* ∵ */
.icon.th-list:before { content: '\2630'; } /* ☰ */
.icon.th:before { content: '\2237'; } /* ∷ */
.icon.to-end:before { content: '\23ed'; } /* ⏭ */
.icon.to-start:before { content: '\23ee'; } /* ⏮ */
.icon.toggle-off:before { content: '\26aa'; } /* ⚪ */
.icon.toggle-on:before { content: '\26ab'; } /* ⚫ */
.icon.trash:before { content: '\267b'; } /* ♻ */
.icon.twitter:before { content: '\74'; } /* t */
.icon.unlink:before { content: '\221d'; } /* ∝ */
.icon.up-open:before { content: '\5e'; } /* ^ */
.icon.upload-cloud:before { content: '\234f'; } /* ⍏ */
.icon.user-plus:before { content: '\222e'; } /* ∮ */
.icon.user-times:before { content: '\222b'; } /* ∫ */
.icon.user:before { content: '\263b'; } /* ☻ */
.icon.users:before { content: '\2230'; } /* ∰ */
.icon.videocam:before { content: '\2384'; } /* ⎄ */
.icon.vimeo:before { content: '\03bd'; } /* ν */
.icon.windows:before { content: '\2685'; } /* ⚅ */
.icon.youtube:before { content: '\25ba'; } /* ► */
.icon.zoom-in:before { content: '\2295'; } /* ⊕ */
.icon.zoom-out:before { content: '\2296'; } /* ⊖ */

/* for icon-only display a.icon > span { display: none; } */


/** debug elements */
#debug-message {
  /* white-space: pre-line; */
}

/** Background Image Manipulation 
  See http://tutorials.jenkov.com/svg/svg-and-css.html
*/
#SkylineFilter, #SkylineOutline_1_ {
  opacity: 0.8;
  fill-opacity: 0.8;
}
path {
  fill: lime;
}


/** Narrow-screen fixes */
@media
  only screen and (max-width: 640px), /* todo: add rem */
  only screen and (max-height: 640px) { /* todo: add height and width to both conditions to exclude high area tall/wide windows */

  /* Hide this on screens narrower than 480pix*/
  .sub480-hide {
    display: none;
  }
  /** Only to be shown on screens narrower than 480pix, typically as a shorter substitution for that deleted with .sub480-hide */
  .sub480-show {
    display: initial;
  }

  /** convert top menu to bottom buttons */
  body, html.standard > body, html.ie10 > body {
    background-position: center bottom +4.7em;
  }
  body {
    grid-template-columns: 1fr;
    /* grid-template-rows: min-content 1fr min-content; */
    grid-template-rows: min-content 1fr min-content min-content;
    grid-template-areas:
    "header"
    "main"
    /* "aside" */
    "footer"; /* "article article . aside" */
  }
  body > footer {
    grid-area: unset;
    display: none;
  }
  body > aside {
    overflow: auto;

    /* for now, hide aside */
    grid-area: unset;
    display: none;
  }
  body > main, body > article {
    overflow: auto;
  }
  body > header, body.long > header {
    grid-area: footer;
    background-color: #8EA8BF;
    background-image: linear-gradient(0deg, #8EA8BF, #8EA8BF 69%, rgba(142, 168, 191, 0.2));
  }
  body > header > nav > ul > li {
    font-size: 106%;
    letter-spacing: -0.033ch;
    background-color: #002565;
    background-image: linear-gradient(0deg, #00408a, #002565);
    width: 32.9%;
    text-align: center;
    padding: 0.2em 0;
    margin: 0.17em 0;
    border-radius: 0.3em;
  }
  body.nonsell > header > nav > ul > li { /** Shortened top menu sans "selling" items */
    letter-spacing: initial;
    width: 49%;
  }
    body > header img {
    height: 1.9em;
    padding-right: 0.01em;
  }
  body > header a {
    line-height: 2.2em;
  }
  a.icon:before, span.icon:before {
    font-family: gamut-icons, Arial, Verdana, Helvetica, sans-serif;
    font-style: normal;
    font-weight: normal;
    letter-spacing: 0.25em;
  }

  #debug-message:after {
    content: '@media Mobile-only fixes matched'
  }
}
@media
  only screen and (max-width: 720px),
  only screen and (max-height: 1010px) { /* todo: add height and width to both conditions to exclude high area tall/wide windows */

  .grid.collapsible {
    grid-template-columns: repeat(auto-fit, minmax(12ch, 1fr));
  }
  /* Hide this on screens narrower than 720pix*/
  .sub720-hide {
    display: none;
  }
  /** Only to be shown on screens narrower than 480pix, typically as a shorter substitution for that deleted with .sub720-hide */
  .sub720-show {
    display: initial;
  }
}

@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
  /* IE10 and IE11 CSS styles go here */
}
@media screen and (min-width:0\0) {
  /* IE9 and IE10 rule sets go here */
}


/** Mobile-only fixes */
@media
  only screen and (-webkit-min-device-pixel-ratio: 2) and (min-width: 320px) and (max-width: 1000px),
  only screen and (min--moz-device-pixel-ratio: 2) and (min-width: 320px) and (max-width: 1000px),
  only screen and (-o-min-device-pixel-ratio: 2/1) and (min-width: 320px) and (max-width: 1000px),
  only screen and (min-device-pixel-ratio: 2) and (min-width: 320px) and (max-width: 1000px),
  only screen and (min-resolution: 192dpi) and (min-width: 320px) and (max-width: 1000px),
  only screen and (min-resolution: 2dppx) and (min-width: 320px) and (max-width: 1000px) { 

  html, body { /** JavaScript --vh re-computed from window.innerHeight, accountig for mobile browser "chrome" */
    height: calc(var(--vh, 1vh) * 100);
  }

  #debug-message:before {
    content: '@media Narrow-screen fixes matched; '
  }
}