html {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  font-size: 62.5%; }

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

body {
  position: relative;
  margin-left: 10%;
  margin-right: 10%;
  padding: 0;
  font-family: "Work Sans", "Helvetica", sans-serif;
  font-size: 1.5rem;
  font-style: normal;
  font-weight: 400;
  line-height: 1.5;
  color: #575960;
  background-color: #fff;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-flow: column;
  flex-flow: column;
  min-height: 100vh; }

nav { font-size: .7em }

@page { size: A5; margin: 1cm }
@media print {
    nav { display: none }
}

h1, h2, h3, h4, h5, h6 {
  width: 100%;
  font-family: "Work Sans", "Helvetica", sans-serif;
  color: #575960;
  margin: 2rem 0; }

h1 {
  font-size: 3rem;
  color: white;
  text-align: center;
  line-height: 1.2;
  margin: 0; }
  @media screen and (min-width: 650px) {
    h1 {
      font-size: 4.7rem; } }

h2 {
  font-size: 2rem;
  font-weight: 400;
  margin-bottom: 1rem;
  line-height: 1.1; }
  @media screen and (min-width: 650px) {
    h2 {
      font-size: 2.3rem; } }

i.icon {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center; }

.text-light {
  font-weight: 300; }

.text-primary {
  color: #2D6AD2; }

.text-size-2 {
  font-size: 2.5rem; }

@media screen and (min-width: 800px) {
  .text-size-2 {
    font-size: 3.2rem; } }

.block {
  display: block;
  max-width: 100%;
  height: 5%; }

p.important {
  text-indent: 2.0rem; }

p {
  margin: 2.5rem 0; }

a,
a:hover,
a:active,
a:visited,
a:link {
  color: #2D6AD2; }

a h2 {
  color: inherit; }

a:hover {
  color: #2455a8; }

hr {
  width: 6rem;
  border: none;
  border-bottom: 0.2rem solid #2D6AD2; }

img {
  display: block;
  max-width: 100%;
  height: 5%; }

ul {
  padding: 0 0 0 1.5rem;
  margin: 2.5rem 0; }

/* Site Width */
.site-width {
  max-width: 96rem;
  margin-left: auto;
  margin-right: auto;
  padding-left: 1.5rem;
  padding-right: 1.5rem; }

/* Site Width */
.wide-width {
  max-width: 120rem;
  margin-left: auto;
  margin-right: auto;
  padding-left: 1.5rem;
  padding-right: 1.5rem; }

.reading-width {
  max-width: 64rem;
  margin-left: auto;
  margin-right: auto;
  padding-left: 1.5rem;
  padding-right: 1.5rem; }

/* Elements */
.plain-links a,
.plain-links a:hover,
.plain-links a:active,
.plain-links a:visited,
.plain-links a:link,
a.plain,
a.plain:hover,
a.plain:active,
a.plain:visited,
a.plain:link {
  color: inherit;
  text-decoration: none;
  outline: none;
  cursor: pointer; }

a.plain.u:hover,
.plain-links.u a:hover {
  text-decoration: underline; }

ul.plain {
  margin-top: 0;
  margin-bottom: 0;
  padding: 0;
  list-style: none; }

.mw-100 {
  max-width: 100%; }

.center {
  text-align: center; }

.light-text {
  font-weight: 300; }

.margin-bottom {
  margin-bottom: 2rem; }

.m-center {
  margin-left: auto;
  margin-right: auto; }

.mb4 {
  margin-bottom: 4rem; }

.mb2 {
  margin-bottom: 2rem; }

.mt0 {
  margin-top: 0; }

.my0 {
  margin-top: 0;
  margin-bottom: 0; }

.my2 {
  margin-top: 2rem;
  margin-bottom: 2rem; }

.mr1 {
  margin-right: 1rem; }

.ml1 {
  margin-left: 1rem; }

.flex-col {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-flow: column;
  flex-flow: column;
  text-align: center; }

.flex-center {
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center; }

.flex-col.flex-center {
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center; }

header {
  color: white;
  background-color: #2D6AD2;
  background-image: url("/static/img/tech-pattern-tile.svg");
  background-repeat: repeat;
  background-attachment: fixed; }

header .site-header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-flow: column;
  flex-flow: column;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  padding-top: 1.8rem; }
  @media screen and (min-width: 650px) {
    header .site-header {
      -webkit-box-orient: horizontal;
      -webkit-box-direction: normal;
      -ms-flex-flow: row nowrap;
      flex-flow: row nowrap; } }

header .logo {
  font-weight: 700; }

header .logo svg {
  height: 3rem;
  width: auto; }

header .logo svg:hover path {
  fill: #e3e3e3; }

header .site-header .site-nav ul {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-flow: row;
  flex-flow: row;
  font-size: 1.8rem; }
  @media screen and (max-width: 649px) {
    header .site-header .site-nav ul {
      margin-top: 2rem; } }

header .site-header .site-nav ul li:not(:first-of-type) {
  margin-left: 1.5rem; }
  @media screen and (min-width: 650px) {
    header .site-header .site-nav ul li:not(:first-of-type) {
      margin-left: 4rem; } }

header .site-nav a:hover {
  border-bottom: 0.2rem white solid; }

header .page-title {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-flow: column;
  flex-flow: column;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  padding-top: 4rem;
  padding-bottom: 4rem; }
  @media screen and (min-width: 650px) {
    header .page-title {
      max-height: 1rem; } }

main {
  -webkit-box-flex: 1;
  -ms-flex: 1;
  flex: 1; }

@media screen and (min-width: 650px) {
  .work main,
  .tools main {
    padding-top: 3rem;
    padding-bottom: 3rem; } }

section {
  padding-top: 3rem;
  padding-bottom: 3rem; }

section > h2 {
  text-align: center; }

.intro > div > p {
  margin: 0; }

.intro .services {
  margin-top: 3rem; }

#icons {
  opacity: 0;
  -webkit-animation: fade-in 0.5s ease 0.25s;
  animation: fade-in 0.5s ease 0.25s;
  -webkit-animation-iteration-count: 1;
  animation-iteration-count: 1;
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards; }

#icons .tile img {
  max-height: 6.2rem;
  max-width: 6.2rem; }

.services-icons p {
  margin: 2rem 0 0; }

.portfolio,
.work,
.tools,
.bg-light {
  background-color: #E8E9EE; }

.portfolio .center {
  margin-top: 2rem; }

.list-columns {
  -webkit-columns: 280px 2;
  columns: 280px 2; }

ul.icon-list {
  list-style: none;
  padding-left: 0; }

ul.icon-list > li {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center; }

ul.icon-list > li:not(:first-of-type) {
  margin-top: 1rem; }

ul.icon-list > li::before {
  content: url("/img/icon/check.svg");
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  float: left;
  min-width: 2rem;
  margin-right: 1rem; }

.tools-list {
  margin: 0;
  padding: 0;
  list-style: none; }

.tools-list li:not(:last-of-type) {
  padding-bottom: 2rem; }

.tools-list li:not(:first-of-type) {
  padding-top: 2rem;
  border-top: 0.2rem #A1A8B0 solid; }

.tools-list li a h2 {
  font-size: 1.5rem;
  margin: 0; }

.tools-list li p {
  margin: 0; }

.services .grid.thirds .tile {
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start; }

.service-summary {
  position: relative;
  padding-left: 5rem;
  width: 100%; }

.service-summary > img {
  position: absolute;
  left: 0;
  top: 0.3rem;
  width: 3rem;
  height: 3rem; }

.service-summary h3 {
  font-size: 1.6rem;
  margin: 0;
  font-weight: 700; }

.service-summary p {
  font-size: 1.3rem;
  margin: 0.3rem 0 1rem; }

/* Grid */
.grid {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-flow: row wrap;
  flex-flow: row wrap;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start;
  width: 100%; }

.grid.stretch,
.grid.stretch .tile {
  -webkit-box-align: stretch;
  -ms-flex-align: stretch;
  align-items: stretch; }

.tile,
.grid.thirds .tile {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  width: 100%;
  padding: 0.5rem; }

.grid.small .tile {
  width: 50%; }

@media screen and (min-width: 500px) {
  .tile,
  .grid.small .tile,
  .grid.thirds .tile {
    width: 50%;
    padding: 1rem; } }

@media screen and (min-width: 800px) {
  .tile,
  .grid.small .tile {
    width: 25%;
    padding: 2rem; }
  .grid.thirds .tile {
    width: 33.33%;
    padding: 2rem; } }

/* Rows and Columns */
.row {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-flow: column;
  flex-flow: column;
  margin-bottom: 2rem; }

.row:last-of-type {
  margin-bottom: 0; }

.row.stretch {
  -webkit-box-align: stretch;
  -ms-flex-align: stretch;
  align-items: stretch; }

.row.center {
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center; }

.column {
  -webkit-box-flex: 1;
  -ms-flex: 1;
  flex: 1;
  width: 100%;
  margin-bottom: 2rem; }

.column:last-of-type {
  margin-bottom: 0; }

.column.center {
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center; }

.column > *:first-child {
  margin-top: 0; }

.column > *:last-child {
  margin-bottom: 0; }

.col-static {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center; }

@media screen and (min-width: 650px) {
  .row {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -ms-flex-flow: row nowrap;
    flex-flow: row nowrap; }
  .row.stretch-col .column {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -ms-flex-flow: column nowrap;
    flex-flow: column nowrap;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between; }
  .column {
    width: auto;
    padding: 0 1rem;
    margin-bottom: 0; }
  .column:first-of-type,
  .row.narrow-margin .column:first-of-type {
    padding-left: 0; }
  .column:last-of-type,
  .row.narrow-margin .column:last-of-type {
    padding-right: 0; }
  .col-1_5 {
    -webkit-box-flex: 1.5;
    -ms-flex: 1.5;
    flex: 1.5; }
  .col-2 {
    -webkit-box-flex: 2;
    -ms-flex: 2;
    flex: 2; }
  .col-3 {
    -webkit-box-flex: 3;
    -ms-flex: 3;
    flex: 3; }
  .col-fill {
    -webkit-box-flex: 1;
    -ms-flex: 1 0;
    flex: 1 0; }
  .col-static {
    -webkit-box-flex: 0;
    -ms-flex: 0 0;
    flex: 0 0; } }

@media screen and (min-width: 800px) {
  .row.narrow-margin .column {
    padding: 0 0.75rem; }
  .column {
    padding: 0 1.5rem; } }

.lightbox {
  cursor: pointer;
  position: fixed;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: black;
  background: rgba(0, 0, 0, 0.7);
  -webkit-filter: none !important;
  filter: none !important;
  z-index: 9997; }

.lightbox img {
  display: block;
  position: absolute;
  border: 5px solid #fff;
  -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.4);
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.4);
  border-radius: 0.2rem; }

body.blurred {
  overflow: hidden; }

body.blurred > * {
  -webkit-filter: blur(3px);
  -webkit-transform: translate3d(0, 0, 0);
  filter: blur(3px); }

.lightbox__loading {
  background: url(/img/icon/loading.svg) center center no-repeat;
  width: 32px;
  height: 32px;
  margin: -16px 0 0 -16px;
  position: absolute;
  top: 50%;
  left: 50%; }

.lightbox__caption {
  display: none;
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  text-align: center;
  z-index: 9998;
  background: #000;
  background: rgba(0, 0, 0, 0.7); }

.lightbox__caption p {
  margin: 0 auto;
  max-width: 70%;
  display: inline-block;
  *display: inline;
  *zoom: 1;
  padding: 10px;
  color: #fff;
  font-size: 12px;
  line-height: 18px; }

.lightbox__caption p a,
.lightbox__caption p a:hover,
.lightbox__caption p a:active,
.lightbox__caption p a:visited,
.lightbox__caption p a:link {
  color: white; }

.lightbox__button {
  position: absolute;
  z-index: 9999;
  background: no-repeat center center;
  width: 32px;
  height: 32px;
  opacity: 0.4;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.25);
  -webkit-box-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.25);
  box-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.25); }

.lightbox__button:hover,
.lightbox__button:focus {
  opacity: 1; }

.lightbox__close {
  right: 10px;
  top: 10px;
  background-image: url("/img/icon/close.svg"); }

.lightbox__nav {
  top: 50%;
  margin-top: -16px; }

.lightbox__nav--next {
  right: 10px;
  background-image: url("/img/icon/next.svg"); }

.lightbox__nav--prev {
  left: 10px;
  background-image: url("/img/icon/previous.svg"); }

.card {
  display: block;
  position: relative;
  width: 100%;
  background: #fff;
  -webkit-box-shadow: 0 0.1rem 0.2rem 0 rgba(0, 0, 0, 0.15);
  box-shadow: 0 0.1rem 0.2rem 0 rgba(0, 0, 0, 0.15);
  border-radius: 0.2rem; }

.card .header,
.card .content {
  padding: 1rem; }

.card .content {
  padding-bottom: 2rem; }

.card > img:first-child {
  border-top-left-radius: 0.2rem;
  border-top-right-radius: 0.2rem; }

.card .header .title,
.card .header .subtitle {
  font-size: 1.8rem;
  margin: 0; }
  @media screen and (min-width: 650px) {
    .card .header .title,
    .card .header .subtitle {
      font-size: 2rem; } }

.card.small .header .title {
  font-size: 1.5rem; }

.card.small .header .subtitle {
  font-size: 1.3rem; }

.card .header .title {
  font-weight: 700; }

.card .header .subtitle {
  opacity: 0.6;
  margin-top: 0.4rem; }

.card .content * {
  margin: 0; }

.card .content h3:not(:first-of-type) {
  margin-top: 2rem; }

.card .content p {
  margin-top: 0.3rem; }

.card .content ul {
  list-style: none;
  padding: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-flow: row wrap;
  flex-flow: row wrap;
  margin: 0.5rem -0.5rem -0.5rem -0.5rem; }

.card .content ul li {
  margin: 0.5rem; }

.card .content ul.gallery li a img {
  border-radius: 0.4rem;
  width: 10rem;
  height: 10rem; }

.card .content ul li a {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  position: relative; }

.card .content ul li a::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  border-radius: 0.4rem;
  opacity: 0;
  background-color: rgba(0, 0, 0, 0.55);
  background-image: url("/img/icon/zoom.svg");
  background-position: center center;
  background-repeat: no-repeat;
  -webkit-transition: opacity 0.3s ease;
  transition: opacity 0.3s ease; }

.card .content ul li a:hover::after {
  opacity: 1; }

.card .content .button {
  margin-top: 2rem; }

.card:not(:first-of-type) {
  margin-top: 3rem; }

.portfolio.preview .card {
  overflow: hidden; }

.portfolio.preview .card img {
  display: block;
  position: absolute;
  left: 0;
  width: 100%;
  -webkit-transition: all 0.8s ease;
  transition: all 0.8s ease; }

.portfolio.preview .card img.top {
  top: 0; }

.portfolio.preview .card:hover img.top {
  top: -100%; }

.portfolio.preview .card img.bottom {
  bottom: -100%; }

.portfolio.preview .card:hover img.bottom {
  bottom: 0; }

.portfolio.preview .card .header {
  padding: 65% 10% 10%;
  -webkit-transition: all 0.8s ease;
  transition: all 0.8s ease; }

.portfolio.preview .card:hover .header {
  padding: 10% 10% 65%; }

/* Default Button */
.button,
.button:link,
.button:hover,
.button:active,
.button:visited,
button {
  position: relative;
  cursor: pointer;
  display: inline-block;
  font-family: "Work Sans", "Helvetica", sans-serif;
  font-size: 1.6rem;
  font-weight: 400;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  border: 0.2rem solid #2D6AD2;
  color: #2D6AD2;
  background: none;
  padding: 0.5rem 2rem;
  border-radius: 0.3rem;
  outline: none; }

.button:hover,
button:hover,
.button:active,
button:active {
  background-color: #2D6AD2;
  color: white; }

.button.white,
.button.white:link,
.button.white:hover,
.button.white:active,
.button.white:visited,
button.white {
  border: 0.2rem solid white;
  color: white; }

.button.white:hover,
button.white:hover,
.button.white:active,
button.white:active {
  background-color: white;
  color: #2D6AD2; }

.button.lowercase,
.button.lowercase:link,
.button.lowercase:hover,
.button.lowercase:active,
.button.lowercase:visited,
button.lowercase {
  text-transform: none; }

.button.icon {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-flow: row wrap;
  flex-flow: row wrap;
  -webkit-box-align: left;
  -ms-flex-align: left;
  align-items: left; }

.button.icon svg {
  fill: #2D6AD2; }

.button.icon:hover svg {
  fill: white; }

.button.white.icon svg {
  fill: white; }

.button.white.icon:hover svg {
  fill: #2D6AD2; }

.button-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-flow: column nowrap;
  flex-flow: column nowrap;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center; }

.button-container > .button:not(:first-of-type) {
  margin-top: 2rem; }

@media screen and (min-width: 500px) {
  .button-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    -ms-flex-flow: row wrap;
    flex-flow: row wrap;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center; }
  .button-container > .button:not(:first-of-type) {
    margin-top: 0; }
  .button-container > .button {
    margin-left: 1rem;
    margin-right: 1rem; } }

form label {
  font-size: 1.2em;
  font-weight: bold;
  display: block;
  padding: 10px 0; }

form input#name,
form input#email,
form input#subject {
  width: 400px;
  background-color: #fafafa;
  border-radius: 3px;
  border: 1px solid #cccccc;
  padding: 5px;
  font-size: 1.1em; }

form textarea#message {
  width: 500px;
  height: 100px;
  background-color: #fafafa;
  border-radius: 3px;
  border: 1px solid #cccccc;
  margin-bottom: 10px;
  padding: 5px;
  font-size: 1.1em; }

/* Contact page Message flashing */
.flash {
  background-color: #FBB0B0;
  padding: 10px;
  width: 400px; }

footer {
  color: white;
  background-color: #2D6AD2;
  padding-top: 4rem;
  text-align: center; }

footer h2 {
  font-size: 3.3rem;
  font-weight: 700;
  color: white; }

footer .social-links {
  background-color: #575960;
  padding: 2rem;
  margin-top: 4rem; }

footer .social-links ul {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  list-style: none;
  margin: 0;
  padding: 0; }

footer .social-links ul li {
  margin-left: 1rem;
  margin-right: 1rem; }

footer .social-links ul li a {
  display: block; }

footer .social-links ul li svg {
  display: block;
  width: 2rem;
  height: 2rem; }

footer .social-links ul li svg path {
  fill: white; }

footer .copyright {
  background-color: #575960;
  padding: 0 2rem 2rem; }

@-webkit-keyframes fade-in {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }

@keyframes fade-in {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }
