/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
#navBack {
  position: absolute;
  top: 0;
  left: 50%;
  margin-left: -215px;
  width: 430px;
}
#navBack #navBackFill {
  fill: rgba(0, 0, 0, 0.5);
}
#navBack #navBackLine {
  fill: none;
  stroke: #fff;
  stroke-width: 1.5;
}
nav {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  width: 430px;
  max-width: 100vw;
  height: 75px;
  margin: 0 auto;
  display: flex;
  justify-content: space-evenly;
}
nav .iconWidget {
  text-align: center;
  width: 50px;
  padding: 10px 0;
  position: relative;
  pointer-events: none;
}
nav .iconWidget.active {
  cursor: pointer;
  pointer-events: auto;
}
nav .iconWidget svg {
  width: 40px;
  height: 35px;
  pointer-events: none;
}
nav .iconWidget .iconPath {
  fill: none;
  stroke: #fff;
  stroke-width: 1.5;
  stroke-linecap: butt;
  stroke-dasharray: 0 100;
  stroke-dashoffset: -50;
  transition: stroke 0.5s ease-out;
}
nav .iconWidget .iconPath.active#navWork {
  stroke: #09f;
}
nav .iconWidget .iconPath.active#navLab {
  stroke: #f90;
}
nav .iconWidget .iconPath.active#navContact {
  stroke: #9f0;
}
nav .iconWidget .iconPath.active#navAbout {
  stroke: #f30;
}
nav .iconWidget .toggleGroup path {
  fill: rgba(0, 0, 0, 0.5);
  stroke: #fff;
  stroke-width: 1.5;
  transition: 0.3s fill ease-out;
  opacity: 0;
}
nav .iconWidget .toggleGroup circle {
  fill: #fff;
  transform-origin: 50% 50%;
  transition: 0.2s transform ease-in;
}
nav .iconWidget .toggleGroup.on path {
  fill: rgba(255, 255, 255, 0.3);
}
nav .iconWidget .toggleGroup.on circle {
  transform: translateY(14px);
}
nav .iconWidget .navTxt {
  width: 100%;
  position: absolute;
  bottom: 10px;
  overflow: hidden;
  pointer-events: none;
  line-height: 0;
}
nav #logoSVG {
  margin-top: 5px;
  cursor: pointer;
  transform-origin: 50% 45%;
}
nav #logoSVG #logoPathL,
nav #logoSVG #logoPathR {
  pointer-events: none;
  fill: #fff;
  transform: translateY(-100%);
  opacity: 0;
}
nav #logoSVG #logoPathL {
  transform: translate(11px, -5px);
}
nav #logoSVG #logoPathR {
  transform: translate(-11px, 5px);
}
#work {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  display: none;
}
#work.active {
  display: block;
}
#work #workBox {
  position: absolute;
  bottom: 80px;
  left: 0;
  right: 0;
  width: 780px;
  height: 430px;
  max-width: 100%;
  margin: 0 auto;
  transform: translate(100vw, 0);
  overflow: hidden;
}
#work #workBox #workImg {
  width: 100%;
  height: 100%;
  background: center center / cover no-repeat;
}
#work #workBox #workFWA {
  width: 100px;
  height: 0px;
  position: absolute;
  top: 0;
  right: 0;
  background: url("../img/shell/award-FWA.png") top right / 100% auto no-repeat;
  transition: height 0.3s ease-out;
}
#work #workBox #workFWA.active {
  height: 100px;
}
#work #workBox #workDetail {
  height: auto;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 30px;
  background: linear-gradient(rgba(0, 0, 0, 0), 30%, rgba(0, 0, 0, 0.75));
  background-repeat: no-repeat;
  cursor: pointer;
  display: flex;
  align-items: flex-end;
}
#work #workBox #workDetail:hover {
  background: linear-gradient(rgba(0, 0, 0, 0), 30%, #000000);
}
#work #workBox #workButton #workCaret {
  stroke-width: 2px;
  stroke: #fff;
  fill: none;
}
#work #workBox #workButton #workOutie {
  fill: #fff;
  cursor: pointer;
}
#work #workBox #workPipe {
  background: #fff;
  width: 2px;
  height: 90px;
  margin: 0 10px;
}
#work #workBox #workTxtBox {
  margin-bottom: 10px;
  flex-grow: 2;
}
#work #workBox #workTxtBox #workTitle {
  font-size: 4em;
  font-weight: 100;
}
#work #workBox #workTxtBox #workDesc {
  margin-left: 5px;
  font-size: 1em;
  font-weight: 400;
}
#work #workLine {
  position: absolute;
  bottom: 0px;
  right: 0;
  width: 0;
  height: 70px;
  background: rgba(0, 0, 0, 0.7);
  border-top: 1px solid #fff;
}
#work #workNav {
  position: absolute;
  bottom: 30px;
  left: 0;
  right: 0;
  width: 430px;
  height: 30px;
  margin: 0 auto;
}
#work #workNav #workNavTxt {
  position: absolute;
  top: 40px;
  left: 10px;
  width: 120px;
  margin-left: -60px;
  text-align: center;
  opacity: 0;
  white-space: nowrap;
}
#work #workNav #workX {
  cursor: pointer;
}
#work #workNav .workXLine {
  fill: none;
  stroke: #fff;
  stroke-width: 1.5px;
  stroke-dasharray: 43px 43px;
  stroke-dashoffset: 0px;
}
#work #workNav .workHex {
  transform-origin: 15px 15px;
  cursor: pointer;
}
#work #workNav .workHex .outie {
  fill: transparent;
  stroke: #fff;
  stroke-width: 1px;
  stroke-dasharray: 11.5px 0px;
  stroke-dashoffset: -2.875;
}
#work #workNav .workHex .innie {
  fill: #fff;
  stroke: none;
}
@media screen and (max-width: 780px) {
  #work #workBox #workDetail {
    padding: 10px;
  }
  #work #workBox #workPipe {
    height: 80px;
  }
  #work #workBox #workTxtBox {
    width: calc(100% - 90px);
  }
  #work #workBox #workTxtBox #workTitle {
    font-size: 3em;
    font-weight: 300;
  }
  #work #workBox #workTxtBox #workDesc {
    font-weight: 300;
  }
}
#contact {
  width: 100%;
  height: 100%;
  pointer-events: auto;
  display: none;
}
#contact div {
  position: absolute;
}
#contact #contactBox {
  width: 550px;
  height: 340px;
  top: 50%;
  right: 150px;
  margin-top: -170px;
}
#contact #contactInfo {
  width: 275px;
  height: 100px;
  top: 120px;
  left: 350px;
  padding-left: 20px;
  overflow: hidden;
}
#contact #contactLine {
  width: 2px;
  height: 100%;
  background: #fff;
  left: 0;
  transform: scaleY(0);
  -webkit-transform: scaleY(0);
}
#contact #contactTitle {
  font-size: 4em;
  font-weight: 100;
  line-height: 1em;
  position: relative;
  margin-left: -5px;
  transform: translateX(-120%);
  -webkit-transform: translateX(-120%);
}
#contact #contactDesc {
  top: 70px;
  font-size: 1em;
  font-weight: 300;
  white-space: nowrap;
  transform: translateX(-120%);
  -webkit-transform: translateX(-120%);
}
#contact #contactHexBox {
  width: 345px;
  height: 100%;
  left: 0;
}
#contact .contactHex {
  width: 82px;
  height: 93px;
  cursor: pointer;
  border-radius: 50%;
}
#contact .contactHex svg,
#contact .contactHex .contactLogo {
  pointer-events: none;
}
#contact #contactHex0 .contactLogo {
  background-position: 0% 0%;
}
#contact #contactHex1 .contactLogo {
  background-position: 100% 0%;
}
#contact #contactHex2 .contactLogo {
  background-position: 0% 50%;
}
#contact #contactHex3 .contactLogo {
  background-position: 100% 50%;
}
#contact #contactHex4 .contactLogo {
  background-position: 0% 100%;
}
#contact #contactHex5 .contactLogo {
  background-position: 100% 100%;
}
#contact .edge {
  fill: rgba(0, 0, 0, 0);
  stroke: #fff;
  stroke-width: 2px;
  stroke-dasharray: 0 270;
  stroke-dashoffset: -135;
  stroke-linecap: butt;
}
#contact .fill {
  fill: #09f;
}
#contact .contactLogo {
  top: 31px;
  left: 26px;
  width: 30px;
  height: 30px;
  background: url(../img/shell/contactIcons.png) top left / 200% 300% no-repeat;
  transform: translateY(30px) scale(0);
  -webkit-transform: translateY(30px) scale(0);
}
@media screen and (max-width: 700px) {
  #contact #contactBox {
    top: 0;
    right: 0;
    width: 100%;
    height: 100%;
    margin-left: 0;
    margin-top: 0;
  }
  #contact #contactInfo {
    top: 120px;
    left: 0px;
  }
  #contact #contactHexBox {
    top: 260px;
    width: 100%;
  }
}
#about {
  width: 100%;
  height: 100%;
  pointer-events: auto;
  display: none;
}
#about div {
  position: relative;
}
#about #abPipe {
  position: absolute;
  right: 0px;
  top: 0px;
  width: 100%;
  height: 100%;
  background: transparent;
  border-right: 2px solid rgba(255, 255, 255, 0.3);
  transform: scaleY(0);
  -webkit-transform: scaleY(0);
  transform-origin: 0% 0%;
  -webkit-transform-origin: 0% 0%;
  transition: 1s background linear;
}
#about #abBox {
  width: 380px;
  height: 100%;
  left: 90px;
  padding: 0 20px;
  position: absolute;
  overflow-y: auto;
  overflow-x: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
#about #abHead,
#about #abBody,
#about #abFoot {
  width: 100%;
  text-align: right;
}
#about #abHead {
  margin-bottom: 20px;
}
#about #abBody {
  overflow: hidden;
}
#about #abLine {
  width: 2px;
  height: 100%;
  right: -20px;
  background: #fff;
  position: absolute;
  transform: scaleY(0);
  -webkit-transform: scaleY(0);
}
#about #abTitle {
  font-size: 5em;
  line-height: 1em;
  width: 100%;
  font-weight: 100;
  transform: translateX(100%);
  -webkit-transform: translateX(100%);
}
#about #abSubtitle {
  width: 100%;
  font-size: 1.6em;
  line-height: 1em;
  padding-bottom: 15px;
  font-weight: 400;
  transform: translateX(100%);
  -webkit-transform: translateX(100%);
}
#about .abLineH {
  width: 50%;
  right: 0px;
  height: 1px;
  position: absolute;
  background: #fff;
  transform: scaleX(0);
  -webkit-transform: scaleX(0);
  transform-origin: 100% 0;
  -webkit-transform-origin: 100% 0;
}
#about #abLineH1 {
  bottom: 0;
}
#about #abText {
  font-size: 1em;
  font-weight: 300;
  line-height: 1.3em;
  padding: 10px 0;
}
#about #abText p {
  transform: translateX(100%);
  -webkit-transform: translateX(100%);
}
@media screen and (max-width: 1200px) {
  #about #abPipe {
    background: rgba(0, 0, 0, 0.7);
  }
}
@media screen and (max-width: 600px) {
  #about #abBox {
    right: 20px;
    left: 20px;
    width: auto;
  }
}
@media screen and (max-height: 550px) {
  #about #abBox {
    padding-top: 0;
    -webkit-overflow-scrolling: touch;
  }
}
@font-face {
  font-family: 'Alegreya Sans';
  font-style: normal;
  font-weight: 100;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/alegreyasans/v20/5aUt9_-1phKLFgshYDvh6Vwt5TltuA.ttf) format('truetype');
}
@font-face {
  font-family: 'Alegreya Sans';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/alegreyasans/v20/5aUu9_-1phKLFgshYDvh6Vwt5fFPmE0.ttf) format('truetype');
}
@font-face {
  font-family: 'Alegreya Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/alegreyasans/v20/5aUz9_-1phKLFgshYDvh6Vwt3V0.ttf) format('truetype');
}
#statBox {
  top: auto !important;
  bottom: 0px;
}
body,
html {
  margin: 0px;
  padding: 0px;
  overflow: hidden;
  background: linear-gradient(to bottom, #48c4ff, #c1e9f4);
  height: 100%;
  font-family: "Alegreya Sans", Arial, Helvetica, sans-serif;
  color: #fff;
  font-size: 16px;
  line-height: 1;
  user-select: none;
}
main {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  pointer-events: none;
}
a {
  color: #fff;
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}
a:visited {
  color: inherit;
}
section {
  position: absolute;
  top: 0;
  pointer-events: auto;
}
#toolTip {
  display: none;
  position: absolute;
  width: 200px;
  margin-left: -100px;
  text-align: center;
  transform-origin: center top;
  transform: scale(1);
  opacity: 0;
  cursor: pointer;
}
#toolTip #toolTipArrow {
  position: absolute;
  top: -5px;
  left: calc(50% - 5px);
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 5px solid rgba(0, 0, 0, 0.5);
}
#toolTip #toolTipText {
  display: inline-block;
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  white-space: nowrap;
  padding: 5px 10px;
  border-radius: 8px;
  margin: 0;
  letter-spacing: 0.5px;
}
#hidden {
  display: none;
}
#webgl {
  position: absolute;
  top: 0;
  left: 0;
  display: none;
}
#webgl.inactive {
  pointer-events: none;
}

