@-ms-viewport {
  width: device-width; }

@-o-viewport {
  width: device-width; }

@viewport {
  width: device-width; }

/**
 * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
 * http://cssreset.com
 */
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 {
  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; }

/* MIX-INS */
/* ADDITIONAL RESET */
html {
  min-height: 100%;
  height: 100%;
  -webkit-text-size-adjust: none; }

body {
  height: 100%;
  width: 100%;
  position: relative;
  overflow-x: hidden; }

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

/* CLEAR & FLOATS */
.left {
  float: left !important; }

.right {
  float: right !important; }

.clearfix:after {
  clear: both;
  display: table;
  content: ''; }

@media only screen and (max-width: 641px) {
  .nomobile {
    display: none; } }

/* INCLUDED */
/* VARIABLES */
/* GRID */
body.noscroll {
  overflow: hidden;
  position: fixed; }

nav, div, article, section, main, footer, header {
  display: block;
  position: relative;
  overflow: hidden; }

nav, header, main, footer {
  font-size: 100%; }
  @media only screen and (min-width: 1600px) {
    nav, header, main, footer {
      font-size: 115%; } }
  @media only screen and (min-width: 1401px) and (max-width: 1559px) {
    nav, header, main, footer {
      font-size: 105%; } }
  @media only screen and (min-width: 802px) and (max-width: 1025px) {
    nav, header, main, footer {
      font-size: 82%; } }
  @media only screen and (min-width: 642px) and (max-width: 801px) {
    nav, header, main, footer {
      font-size: 80%; } }
  @media only screen and (max-width: 641px) {
    nav, header, main, footer {
      font-size: 70%; } }

.grid_row {
  width: 100%;
  overflow: visible; }
  .grid_row:after {
    clear: both;
    display: table;
    content: ''; }

.grid2 {
  float: left;
  width: 64%;
  width: -moz-calc(((100% / 3) * 2) - 25px);
  width: -o-calc(((100% / 3) * 2) - 25px);
  width: -webkit-calc(((100% / 3) * 2) - 25px);
  width: calc(((100% / 3) * 2) - 25px); }
  .grid2 .half {
    float: left;
    width: 50%;
    width: -moz-calc(50% - 25px);
    width: -o-calc(50% - 25px);
    width: -webkit-calc(50% - 25px);
    width: calc(50% - 25px);
    margin-right: 50px; }
    .grid2 .half:nth-of-type(2n) {
      margin-right: 0; }
    @media only screen and (max-width: 641px) {
      .grid2 .half {
        width: 100%;
        margin-right: 0;
        margin-bottom: 22px; } }

.grid3 {
  clear: both;
  width: 100%; }

@media only screen and (max-width: 641px) {
  .grid1, .grid2, .grid3 {
    width: 100%;
    margin-bottom: 22px;
    margin-right: 0; } }

.grid1, .grid2 {
  margin-right: 50px;
  overflow: visible; }
  .grid1:last-child, .grid2:last-child {
    margin-right: 0;
    margin-bottom: 0; }

.padded {
  padding: 3em; }
  @media only screen and (max-width: 641px) {
    .padded {
      padding: 25px; } }

.padded-horizontal {
  padding-left: 3em;
  padding-right: 3em; }
  @media only screen and (max-width: 641px) {
    .padded-horizontal {
      padding-left: 25px;
      padding-right: 25px; } }

.height-95 {
  min-height: 95vh; }
  .height-95.exact {
    height: 95vh; }

/* Z-INDEX & LAYERS */
#loader-logo {
  z-index: 1000; }

#loader, #initial-loader {
  z-index: 999; }

nav {
  z-index: 997; }

.header-text, .header-subtext, .form-dropdown-list, .case-study-featured-text, .device_screen {
  z-index: 10; }

.header-number .data-number {
  pointer-events: none;
  font-family: "NeueHaasBold", Helvetica, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: #ac2eff;
  letter-spacing: -0.025em;
  font-size: 20vw; }
.header-number.eliza .data-number {
  color: #1ff042; }

#loader-text {
  color: #1ff042;
  display: block;
  font-family: 'AndaleMono', monospace;
  font-weight: bold;
  text-transform: uppercase;
  font-size: 0.9em;
  letter-spacing: 0.15em;
  text-shadow: 0 0 2px rgba(31, 240, 66, 0.75); }
  @media only screen and (max-width: 641px) {
    #loader-text {
      font-size: 0.6em; } }
  #loader-text:before {
    content: '> '; }
  #loader-text:after {
    display: inline-block;
    vertical-align: -0.15em;
    width: 0.75em;
    height: 1em;
    margin-left: 5px;
    background: #1ff042;
    box-shadow: 1px 1px 1px rgba(31, 240, 66, 0.65), -1px -1px 1px rgba(31, 240, 66, 0.65), 1px -1px 1px rgba(31, 240, 66, 0.65), -1px 1px 1px rgba(31, 240, 66, 0.65);
    -webkit-animation: cursor-blink 1.25s steps(1) infinite;
    -moz-animation: cursor-blink 1.25s steps(1) infinite;
    animation: cursor-blink 1.25s steps(1) infinite;
    content: ''; }

@-webkit-keyframes cursor-blink {
  0% {
    opacity: 0; }

  50% {
    opacity: 1; }

  100% {
    opacity: 0; } }

@-moz-keyframes cursor-blink {
  0% {
    opacity: 0; }

  50% {
    opacity: 1; }

  100% {
    opacity: 0; } }

@keyframes cursor-blink {
  0% {
    opacity: 0; }

  50% {
    opacity: 1; }

  100% {
    opacity: 0; } }

/* IMAGES */
img:not(#site_logo) {
  display: block;
  width: 100%;
  height: auto;
  margin: 0;
  padding: 0; }
  /* .horiscroll img {
    width: auto;
    height: 100%; } */
  
svg {
  image-rendering: optimizeSpeed;
  image-rendering: -moz-crisp-edges;
  image-rendering: -webkit-optimize-contrast;
  image-rendering: optimize-contrast;
  -ms-interpolation-mode: nearest-neighbor; }

#loader-logo {
  position: fixed;
  top: 50%;
  left: 50%;
  width: 4.5em;
  margin-left: -2.25em;
  margin-top: -2.25em; }

#loader_triangle_outer, #loader_triangle_middle, #loader_triangle_inner {
  -webkit-transform-origin: 76px 76px;
  -moz-transform-origin: 76px 76px;
  -ms-transform-origin: 76px 76px;
  -o-transform-origin: 76px 76px;
  transform-origin: 76px 76px;
  -webkit-transform-origin: 0px 0px;
  -moz-transform-origin: 0px 0px;
  -ms-transform-origin: 0px 0px;
  -o-transform-origin: 0px 0px;
  transform-origin: 0px 0px;
  -webkit-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0);
  -moz-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0);
  -ms-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0);
  -o-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0);
  transform: rotate(-30deg) scale(0) translate3d(0, 0, 0);
  -webkit-animation: loader-logo 2s ease;
  -moz-animation: loader-logo 2s ease;
  animation: loader-logo 2s ease;
  -webkit-animation-direction: alternate;
  -moz-animation-direction: alternate;
  animation-direction: alternate;
  -webkit-animation-iteration-count: infinite;
  -moz-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
  -webkit-animation-fill-mode: forwards;
  -moz-animation-fill-mode: forwards;
  animation-fill-mode: forwards; }

#loader_triangle_outer {
  -webkit-animation-delay: 0;
  -moz-animation-delay: 0;
  animation-delay: 0; }

#loader_triangle_middle {
  -webkit-animation-delay: 0.25s;
  -moz-animation-delay: 0.25s;
  animation-delay: 0.25s; }

#loader_triangle_inner {
  -webkit-animation-delay: 0.5s;
  -moz-animation-delay: 0.5s;
  animation-delay: 0.5s; }

@-webkit-keyframes loader-logo {
  0% {
    -webkit-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0); }

  90% {
    -webkit-transform: rotate(0) scale(1) translate3d(0, 0, 0); }

  100% {
    -webkit-transform: rotate(0) scale(1) translate3d(0, 0, 0); } }

@-moz-keyframes loader-logo {
  0% {
    -moz-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0); }

  90% {
    -moz-transform: rotate(0) scale(1) translate3d(0, 0, 0); }

  100% {
    -moz-transform: rotate(0) scale(1) translate3d(0, 0, 0); } }

@keyframes loader-logo {
  0% {
    -webkit-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0);
    -moz-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0);
    -ms-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0);
    -o-transform: rotate(-30deg) scale(0) translate3d(0, 0, 0);
    transform: rotate(-30deg) scale(0) translate3d(0, 0, 0); }

  90% {
    -webkit-transform: rotate(0) scale(1) translate3d(0, 0, 0);
    -moz-transform: rotate(0) scale(1) translate3d(0, 0, 0);
    -ms-transform: rotate(0) scale(1) translate3d(0, 0, 0);
    -o-transform: rotate(0) scale(1) translate3d(0, 0, 0);
    transform: rotate(0) scale(1) translate3d(0, 0, 0); }

  100% {
    -webkit-transform: rotate(0) scale(1) translate3d(0, 0, 0);
    -moz-transform: rotate(0) scale(1) translate3d(0, 0, 0);
    -ms-transform: rotate(0) scale(1) translate3d(0, 0, 0);
    -o-transform: rotate(0) scale(1) translate3d(0, 0, 0);
    transform: rotate(0) scale(1) translate3d(0, 0, 0); } }

/* NAV BAR */
nav {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  width: 100%;
  pointer-events: none; }
  nav a {
    pointer-events: auto; }
  nav.sticky {
    pointer-events: auto;
    background: black;
    position: fixed;
    padding-top: 1.5em;
    padding-bottom: 1em;
    -webkit-transform: translate(0, -100%);
    -moz-transform: translate(0, -100%);
    -ms-transform: translate(0, -100%);
    -o-transform: translate(0, -100%);
    transform: translate(0, -100%); }
    nav.sticky.animate {
      -webkit-transition: -webkit-transform 0.2s;
      -moz-transition: -moz-transform 0.2s;
      transition: transform 0.2s; }
    nav.sticky.revealed {
      -webkit-transform: translate(0, 0);
      -moz-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
      -o-transform: translate(0, 0);
      transform: translate(0, 0); }
    @media only screen and (max-width: 641px) {
      nav.sticky {
        padding-bottom: 1.5em; } }
  @media only screen and (max-width: 641px) {
    nav {
      overflow: visible;
      pointer-events: auto; } }

/* HEADER */
header {
  background-size: cover;
  background-position: center center;
  overflow: visible; }

#canvas {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -moz-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  -o-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  min-width: 100%; }
  #canvas canvas {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 1; }

.header-text {
  position: absolute;
  top: 58%;
  top: -moz-calc(50% + 3em);
  top: -o-calc(50% + 3em);
  top: -webkit-calc(50% + 3em);
  top: calc(50% + 3em);
  left: 0;
  right: 0;
  width: 100%;
  -webkit-transform: translateY(-50%);
  -moz-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -o-transform: translateY(-50%);
  transform: translateY(-50%);
  pointer-events: none; }
  @media only screen and (max-width: 641px) {
    .case-study-head .header-text {
      top: 45%; } }

#main-body {
  min-height: 100vh; }

.black {
  background-color: black; }

.back-block-green-bottom-right:before {
  position: absolute;
  pointer-events: none;
  display: block;
  bottom: -1.5em;
  right: 2em;
  width: 30%;
  height: 3em;
  border: 2px solid #1ff042;
  z-index: 20;
  content: ''; }
  @media only screen and (max-width: 641px) {
    .back-block-green-bottom-right:before {
      display: none; } }
.back-block-green-bottom-right:after {
  position: absolute;
  pointer-events: none;
  display: block;
  bottom: 2.5em;
  right: 2em;
  width: 20%;
  height: 3em;
  border: 2px solid #1ff042;
  z-index: 20;
  content: ''; }
  @media only screen and (max-width: 641px) {
    .back-block-green-bottom-right:after {
      display: none; } }

/* LOADER */
#loader {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
  -webkit-transition: opacity 100ms ease-out;
  -moz-transition: opacity 100ms ease-out;
  transition: opacity 100ms ease-out; }
  #loader.active {
    opacity: 1; }

#initial-loader {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: 100%;
  height: 100%;
  background: black;
  opacity: 1;
  transition: opacity 300ms ease-out; }
  #initial-loader.hidden {
    opacity: 0; }