:root {
  --zoo-homepage-grid-spacing: 1em;
  --zoo-em-font: "century-gothic", sans-serif;
}

html,
body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
}

body {
  font-family: "Open Sans", "Calibri", "Trebuchet MS", sans-serif;
  font-size: 14px;
  line-height: 1.5;
}

@media (min-width: 1500px) {
  body {
    font-size: 15px;
  }
}

a:link,
a:visited {
  color: inherit;
  text-decoration: none;
}

img,
video {
  max-width: 100%;
}

input,
select,
textarea,
button {
  font-family: inherit;
  font-size: 100%;
  color: inherit;
}

h1,
h2,
h3,
h4,
button {
  font-family: "century-gothic", sans-serif;
  font-family: var(--zoo-em-font);
}

#zoo-pagewidth-wrapper {
  padding: 0 1em;
}

#zoo-pagewidth-wrapper:before {
  content: "";
  display: block;
  height: 66px;
}

@media (max-width: 600px) {
  #zoo-pagewidth-wrapper:before {
    height: 66px;
  }
}

#zoo-header-content,
#zoo-content {
  position: relative;
  margin: 0 auto;
  max-width: 1200px;
}

@media (min-width: 1500px) {
  #zoo-header-content,
  #zoo-content {
    max-width: 1400px;
  }
}

#zoo-header-content:after {
  content: "";
  display: block;
  clear: both;
}

#zoo-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  padding: 8px 1em;
  background-color: white;
  color: #404040;
  text-align: center;
  z-index: 3;
}

#zoo-header-logo {
  display: block;
  width: 150px;
  height: 50px;
  background: url("images/zoo-header-logo.png") no-repeat left center / 100px;
  float: left;
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  #zoo-header-logo {
    background-image: url("images/zoo-header-logo@2x.png");
  }
}

#zoo-header nav {
  padding: 11px 0;
  font-size: 120%;
  text-align: right;
}

#zoo-header nav a {
  display: inline-block;
  margin: 0 1em;
  font-family: "Roboto", sans-serif;
}

#zoo-header nav a.active span {
  border-bottom: 2px solid #8bcfdc;
}

#zoo-header nav a:first-child {
  text-align: right;
}

#zoo-header nav a:last-child {
  text-align: left;
}

@media (max-width: 600px) {
  #zoo-header {
    padding: 20px 1em;
  }
  #zoo-header-logo {
    height: 26px;
    background-size: contain;
  }
  #zoo-header-nav {
    position: absolute;
    top: -1em;
    right: 0;
    background: url("images/zoo-header-nav@2x.png") no-repeat center / 27px;
    width: 27px;
    height: 50px;
    z-index: 2;
  }
  #zoo-header nav {
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    background-color: white;
    overflow: hidden;
    transition: height 0.2s;
  }
  #zoo-header-nav + nav {
    margin: 0 -1em;
    padding-bottom: 0;
    height: 0;
  }
  #zoo-header-nav.active + nav {
    height: 7.5em;
  }
  #zoo-header nav a {
    display: block;
    padding-top: 0.25em;
    padding-bottom: 0.75em;
    width: auto !important;
    text-align: center !important;
  }
  #zoo-header a.active span {
    border-bottom-style: none;
  }
}

#zoo-contact-us {
  margin: 0 -1em;
  padding: 1em;
  background-color: #707070;
  color: white;
  text-align: center;
}

#zoo-contact-us h3 {
  margin: 0;
  font-size: 300%;
  font-weight: normal;
}

#zoo-contact-us p {
  margin: 0.25em 0;
  font-size: 90%;
}

#zoo-contact-us-form {
  margin: 0 auto 3em;
  padding: 1em 0;
  width: 445px;
  max-width: 100%;
  max-width: calc(100vw - 4em);
  box-sizing: border-box;
  text-align: left;
}

#zoo-contact-us input {
  display: block;
  margin: 0.75em 0;
  padding: 0.75em 1.25em;
  width: 100%;
  border-style: none;
  background-color: white;
  color: #404040;
}

#zoo-contact-us button {
  padding: 0.5em 1.5em;
  border-style: none;
  background-color: #67c0d2;
  cursor: pointer;
}

#zoo-contact-us-form.waiting button {
  opacity: 0.5;
  pointer-events: none;
}

#zoo-contact-us-form span.error,
#zoo-contact-us-form span.success {
  display: none;
}

#zoo-contact-us-form.thanks input,
#zoo-contact-us-form.thanks button,
#zoo-contact-us-form.thanks .g-recaptcha {
  display: none !important;
}

#zoo-contact-us-form.thanks span.success {
  display: block;
  padding: 1em;
  text-align: center;
  font-size: 120%;
}

#zoo-contact-us-form.fail span.error {
  display: block;
  margin-top: 0.5em;
  text-align: center;
}

/* Common */

article p {
  margin: 0.75em 0;
  line-height: 1.8;
  color: #565656;
}

button.zoo-button-more {
  display: block;
  margin: 0 auto 1em;
  border-style: none;
  background-color: transparent;
  color: #404040;
  font-size: 150%;
  cursor: pointer;
  clear: both;
}

button.zoo-button-more:before,
button.zoo-button-more:after {
  content: "";
  display: inline-block;
  width: 30px;
  height: 20px;
  background: url("images/zoo-content-homepage-more.png") no-repeat center /
    10px;
  vertical-align: middle;
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  button.zoo-button-more:before,
  button.zoo-button-more:after {
    background-image: url("images/zoo-content-homepage-more@2x.png");
  }
}

/* Grid */

.zoo-content-grid {
  margin-right: calc(0px - 1em);
  margin-right: calc(0px - var(--zoo-homepage-grid-spacing));
}

.zoo-content-grid:after {
  content: "";
  display: block;
  clear: both;
}

#zoo-content-homepage .zoo-content-grid-row {
  position: relative;
  margin-bottom: 1em;
  margin-bottom: var(--zoo-homepage-grid-spacing);
  padding-bottom: calc(25% - 1em);
  padding-bottom: calc(25% - var(--zoo-homepage-grid-spacing));
  clear: both;
}

.zoo-content-grid-item {
  position: relative;
  display: block;
  margin-right: 1em;
  margin-right: var(--zoo-homepage-grid-spacing);
  margin-bottom: 1em;
  margin-bottom: var(--zoo-homepage-grid-spacing);
  width: calc(25% - 1em);
  width: calc(25% - var(--zoo-homepage-grid-spacing));
  font-family: "century-gothic";
  overflow: hidden;
  float: left;
}

.zoo-content-grid-row .zoo-content-grid-item {
  position: absolute;
  z-index: 1;
}

.zoo-content-grid-item.col-0 {
  left: 0;
}

.zoo-content-grid-item.col-1 {
  left: 25%;
}

.zoo-content-grid-item.col-2 {
  left: 50%;
}

.zoo-content-grid-item.col-3 {
  left: 75%;
}

.zoo-content-grid-item.item-free-height {
  width: calc(100% - 1em);
  width: calc(100% - var(--zoo-homepage-grid-spacing));
}

.zoo-content-grid-item.hidden,
.zoo-content-grid-item.two-col-only {
  display: none;
}

.zoo-content-grid-item.anim {
  transition: opacity 0.5s, transform 0.5s;
}

.zoo-content-grid-item.item-2x1 {
  margin-bottom: calc(1em - 1px);
  margin-bottom: calc(var(--zoo-homepage-grid-spacing) - 1px);
  width: calc(50% - 1em);
  width: calc(50% - var(--zoo-homepage-grid-spacing));
}

.zoo-content-grid-item.item-2x2 {
  margin-bottom: calc(1em - 2px);
  margin-bottom: calc(var(--zoo-homepage-grid-spacing) - 2px);
  width: calc(50% - 1em);
  width: calc(50% - var(--zoo-homepage-grid-spacing));
}

.zoo-content-grid-item:before {
  content: "";
  display: block;
  position: relative;
  top: 0;
  left: 0;
  width: 100%;
  padding-top: 100%;
  background-color: rgba(255, 255, 255, 0.5);
  background-size: cover;
  opacity: 0;
  z-index: 1;
  pointer-events: none;
  transform: scale(1.5);
  transition: opacity 0.2s ease-out, transform 0.2s ease-out;
}

.zoo-content-grid-item.item-1x2:before {
  padding-top: calc(200% + 1em);
  padding-top: calc(200% + var(--zoo-homepage-grid-spacing));
}

.zoo-content-grid-item.item-2x1:before {
  padding-top: calc(50% - 1em / 2);
  padding-top: calc(50% - var(--zoo-homepage-grid-spacing) / 2);
}

.zoo-content-grid-item.item-1x2:before,
.zoo-content-grid-item.item-about-us:before {
  visibility: hidden;
}

.zoo-content-grid-item.item-free-height:before {
  padding-top: 0;
}

.zoo-content-grid-item:hover:before,
.zoo-content-grid-item.active:before {
  transform: scale(1);
}

.zoo-content-grid-item img,
.zoo-content-grid-item video {
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
  transition: transform 0.2s ease-out;
}

.zoo-content-grid-item:hover img {
  transform: scale(1.1);
}

.zoo-content-grid-item.item-free-height video {
  position: relative;
}

.zoo-content-grid-item .text {
  position: absolute;
  bottom: 0;
  padding: 0 1em;
  width: 100%;
  background-color: rgb(255, 255, 255, 0.5);
  color: #404040;
  font-size: 110%;
  box-sizing: border-box;
  opacity: 0;
  transition: opacity 0.2s;
  z-index: 2;
}

.zoo-content-grid-item .text.video-text {
  top: 50%;
  bottom: auto;
  padding-top: 0;
  padding-bottom: 0;
  background-color: transparent;
  font-size: 200%;
  color: white;
  text-align: center;
  opacity: 1;
  transform: translateY(-50%);
}

.zoo-content-grid-item:hover .text,
.zoo-content-grid-item.active .text {
  opacity: 1;
}

.zoo-content-grid-item .text h3,
.zoo-content-grid-item .text p {
  margin: 0.5em 0;
}

.zoo-content-grid-item .text h3:empty,
.zoo-content-grid-item .text p:empty {
  display: none;
}

.zoo-content-grid-item .text.video-text h3,
.zoo-content-grid-item .text.video-text p {
  margin: 0.2em;
}

.zoo-content-grid-item .text h3 {
  margin: 0.5em 0 0.25em;
  font-size: 175%;
  font-weight: bold;
  line-height: 1;
}

.zoo-content-grid-item .text.video-text p:before {
  content: "";
  display: block;
  margin: 0 auto;
  width: 3em;
  border-top: 2px solid;
}

.zoo-content-grid-item.item-about-us .text {
  display: block;
  color: white;
}

@media (min-width: 601px) {
  .zoo-content-grid.grid-2 {
    display: none !important;
  }
}

@media (max-width: 600px) {
  .zoo-content-grid.grid-4,
  .zoo-content-grid-row {
    display: none !important;
  }
  .zoo-content-grid {
    font-size: 2.5vw;
  }
  .zoo-content-grid-item {
    width: calc(50% - 1em);
    width: calc(50% - var(--zoo-homepage-grid-spacing));
    font-size: 2.5vw;
  }
  .zoo-content-grid-item.three-col-fillup {
    margin-top: 0;
    margin-bottom: calc(1em - 1px);
    margin-bottom: calc(var(--zoo-homepage-grid-spacing) - 1px);
  }
  .zoo-content-grid-item.two-col-fillup {
    margin-top: calc(-50%);
  }
  .zoo-content-grid-item.three-col-only {
    display: none;
  }
  .zoo-content-grid-item.two-col-only {
    display: block;
  }
  .zoo-content-grid-item.item-2x1,
  .zoo-content-grid-item.item-2x2 {
    width: calc(100% - 1em);
    width: calc(100% - var(--zoo-homepage-grid-spacing));
  }
}

#zoo-content-homepage {
  min-height: 100vh;
}

/* About us */

#zoo-content-about {
  margin-bottom: 3em;
}

#zoo-content-about-banner {
  height: 500px;
  background: no-repeat center / cover;
}

#zoo-content-about-banner:before {
  position: absolute;
  bottom: 0;
  padding-top: 0;
  background-color: rgba(0, 0, 0, 0.25);
  opacity: 1;
  transform: none;
}

#zoo-content-about-banner .text {
  display: flex;
  padding: 1em;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.3);
  color: white;
  text-align: center;
  line-height: 1.7;
  flex-direction: column;
  justify-content: center;
  box-sizing: border-box;
}

#zoo-content-about-banner .text p {
  font-size: 80%;
}

#zoo-content-about-banner .text a {
  font-family: "century-gothic", sans-serif;
  font-family: var(--zoo-em-font);
  font-size: 200%;
}

/* Article */

#zoo-content-article {
  margin-bottom: 3em;
}

#zoo-content-article-banner {
  margin: 1em 0;
  text-align: center;
}

#zoo-content-article-content {
  display: flex;
  margin-top: 2em;
}

#zoo-content-article-content > :first-child {
  flex: 1 0 1px;
  color: #565656;
}

#zoo-content-article-content > * > :first-child {
  margin-top: 0 !important;
}

#zoo-content-article-content a {
  text-decoration: underline;
}

#zoo-content-article-related {
  width: 270px;
  margin-left: 2em;
}

#zoo-content-article-related h3 {
  padding-bottom: 0.5em;
  border-bottom: 2px solid #67c0d2;
  font-size: 120%;
}

#zoo-content-article-related a:link,
#zoo-content-article-related a:visited {
  display: block;
  position: relative;
  margin: 1em 0;
  padding-left: 110px;
  min-height: 60px;
  color: #7b7b7b;
  text-decoration: none;
}

#zoo-content-article-related h4 {
  margin: 0;
  font-size: 90%;
}

#zoo-content-article-related p.date {
  margin: 0;
  font-size: 80%;
}

#zoo-content-article-related img {
  position: absolute;
  left: 0;
  max-height: 100%;
  max-width: 98px;
}

.zoo-content-article-title {
  padding: 0.5em 0;
  border-bottom: 2px solid #67c0d2;
}

#zoo-content-article .zoo-content-article-title {
  padding: 2em 1em 1.5em;
  background-color: #ededed;
  text-align: center;
  border-bottom-style: none;
}

.zoo-content-article-title h1 {
  margin: 0;
  font-size: 150%;
  font-weight: bold;
  color: #404040;
}

.zoo-content-article-title h2 {
  margin: 0;
  font-size: 120%;
  font-weight: bold;
  color: #404040;
}

.zoo-content-article-title p.date {
  margin: 0.25em 0 0;
  font-size: 80%;
  font-weight: bold;
  color: #5f5f5f;
}

@media (max-width: 600px) {
  #zoo-content-article .zoo-content-article-title {
    margin-left: -1em;
    margin-right: -1em;
  }
  #zoo-content-article-content {
    display: block;
  }
  #zoo-content-article-related {
    margin-left: 0;
    margin-top: 3em;
    width: auto;
  }
}

/* Blog */

#zoo-content-blog {
  margin-bottom: 3em;
}

#zoo-content-blog article a.more {
  display: inline-block;
  margin: 0;
  padding-right: 20px;
  background: url("images/zoo-content-blog-more.png") no-repeat right center /
    6px;
  font-family: "century-gothic", sans-serif;
  font-family: var(--zoo-em-font);
  font-weight: bold;
  color: #67c0d2;
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  #zoo-content-blog article a.more {
    background-image: url("images/zoo-content-blog-more@2x.png");
  }
}

#zoo-content-blog-highlight {
  margin-bottom: 1em;
  text-align: center;
}

#zoo-content-blog-highlight .zoo-content-article-title {
  font-size: 120%;
}

#zoo-content-blog-list {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
}

#zoo-content-blog-list article {
  width: calc(33.33% - 0.66em);
  margin-bottom: 1.5em;
}

#zoo-content-blog-list article img {
  width: 100%;
}

@media (max-width: 600px) {
  #zoo-content-blog-highlight {
    text-align: left;
  }
  #zoo-content-blog-highlight .zoo-content-article-title {
    font-size: 100%;
  }
  #zoo-content-blog-list article {
    width: auto;
  }
}

/* Project */

#zoo-content-project-banner {
  margin-bottom: 1em;
  text-align: center;
}

#zoo-content-project-content {
  margin: 0 auto;
  max-width: 700px;
  text-align: center;
}

@media (min-width: 1500px) {
  #zoo-content-project-content {
    max-width: 866px;
  }
}

#zoo-content-project-content h1 {
  margin: 0;
  font-size: 300%;
  font-weight: bold;
  line-height: 1.3;
  color: #404040;
}

#zoo-content-project-content h2 {
  margin: 0;
  font-size: 200%;
  font-weight: bold;
  line-height: 1.3;
  color: #404040;
}

#zoo-content-project-content img {
  display: block;
  max-width: 100%;
  margin: 1em 0;
}

/* Clients */

#zoo-content-clients {
  position: fixed;
  top: 4em;
  left: 50%;
  width: 100%;
  box-sizing: border-box;
  pointer-events: none;
  transform: translateX(-50%);
  z-index: 10;
}

@media (min-width: 1400px) {
  #zoo-content-clients {
    width: 1400px;
  }
}

#zoo-content-clients-list {
  display: flex;
  margin: 0;
  background-color: white;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-around;
  transform: translateY(-250%);
  transition: transform 0.2s;
}

#zoo-content-clients.active {
  pointer-events: all;
}

#zoo-content-clients.active #zoo-content-clients-list {
  transform: none;
}

#zoo-content-clients a {
  display: block;
  padding: 1.5em 3em;
  width: 25%;
  text-align: center;
  box-sizing: border-box;
}

#zoo-content-clients a img {
  max-height: 100px;
}

@media (max-width: 600px) {
  #zoo-content-clients {
    margin: 6em 0 0;
    background-color: transparent;
  }
  #zoo-content-clients-list:before,
  #zoo-content-clients-list:after {
    content: "Clients";
    position: absolute;
    left: 50%;
    bottom: 100%;
    margin-bottom: 0.75em;
    padding-left: 1.5em;
    padding-right: 1.5em;
    font-family: "Roboto", sans-serif;
    font-size: 120%;
    text-align: center;
    transform: translateX(-50%);
    background: white url("images/zoo-content-clients-arrow-up@2x.png")
      no-repeat center left / 10px;
  }
  #zoo-content-clients-list:before {
    color: transparent;
  }
  #zoo-content-clients-list:after {
    background-position-x: right;
    background-color: transparent;
  }
  #zoo-content-clients a {
    padding: 0.5em 0;
  }
}

.zoo-vimeo-container {
  position: relative;
  width: 100%;
  padding-top: 56.25%;
  background-size: cover;
}

.zoo-vimeo-container iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-style: none;
}

a iframe {
  pointer-events: none;
}

/** Loader **/

.loader {
  color: #fff;
  position: absolute;
  box-sizing: border-box;
  left: -9999px;
  top: -9999px;
  width: 0;
  height: 0;
  overflow: hidden;
  z-index: 999999;
}

.loader:after,
.loader:before {
  box-sizing: border-box;
  display: none;
}

.loader.is-active {
  /* background-color: rgba(0, 0, 0, .85); */
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
}

.loader.is-active:after,
.loader.is-active:before {
  display: block;
}

@keyframes rotation {
  0% {
    transform: rotate(0);
  }
  to {
    transform: rotate(359deg);
  }
}

@keyframes blink {
  0% {
    opacity: 0.5;
  }
  to {
    opacity: 1;
  }
}

.loader[data-text]:before {
  position: fixed;
  left: 0;
  top: 50%;
  color: currentColor;
  font-family: Helvetica, Arial, sans-serif;
  text-align: center;
  width: 100%;
  font-size: 14px;
}

.loader[data-text=""]:before {
  content: "Loading";
}

.loader[data-text]:not([data-text=""]):before {
  content: attr(data-text);
}

.loader[data-text][data-blink]:before {
  animation: blink 1s linear infinite alternate;
}

.loader-default[data-text]:before {
  top: calc(50% - 63px);
}

.loader-default:after {
  content: "";
  position: absolute;
  width: 48px;
  height: 48px;
  border: 4px solid #404040;
  border-left-color: transparent;
  border-radius: 50%;
  top: calc(50% - 24px);
  left: calc(50% - 24px);
  animation: rotation 1s linear infinite;
}

.loader-default[data-half]:after {
  border-right-color: transparent;
}

.loader-default[data-inverse]:after {
  animation-direction: reverse;
}
