html {
  color: #222;
  line-height: 1.4;
  font-size: 16px;
}

::-moz-selection {
  background: #b3d4fc;
  text-shadow: none;
}

::selection {
  background: #b3d4fc;
  text-shadow: none;
}

hr {
  display: block;
  height: 1px;
  border: 0;
  border-top: 1px solid #ccc;
  margin: 1em 0;
  padding: 0;
}

audio,
canvas,
iframe,
img,
svg,
video {
  vertical-align: middle;
}

fieldset {
  border: 0;
  margin: 0;
  padding: 0;
}

textarea {
  resize: vertical;
}

.browserupgrade {
  margin: 0.2em 0;
  background: #ccc;
  color: #000;
  padding: 0.2em 0;
}

a,
a:active,
a:hover {
  margin: -0.25rem;
  padding: 0.25rem;
}

* {
  box-sizing: border-box;
}

body,
html {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
}

@media screen and (max-width: 500px) {
  html {
    font-size: 2vw;
  }
}

@media screen and (min-width: 500px) and (max-width: 1000px) {
  html {
    font-size: 10px;
  }
}

@media screen and (min-width: 1000px) {
  html {
    font-size: 1vw;
  }
}

a {
  transition: 0.3s;
  color: #000;
}

a:active,
a:hover {
  outline: #000 solid 1.2rem;
  outline-offset: -0.2rem;
  background-color: #000;
  color: #fff;
}

a.contact {
  position: absolute;
  top: 0;
  right: 0;
  margin: 4rem 3.5rem;
  font-size: 6rem;
  line-height: 1em;
  text-decoration: none;
}

@media screen and (min-width: 500px) and (max-width: 1000px) {
  a.contact {
    font-size: 4rem;
  }
}

@media screen and (min-width: 1000px) {
  a.contact {
    font-size: 4rem;
  }
}

a.contact .revealer {
  transition: width 0.6s;
  display: inline-block;
  overflow: hidden;
  position: relative;

  top: -0.25rem;
  width: 0;
  height: 2.2rem;
  margin: 0 1.2rem 0 0.7rem;
  padding: 0;

  white-space: nowrap;
  font-size: 2rem;
  line-height: 2.2rem;
  text-align: right;
}

a.contact:hover .revealer {
  width: 22.5rem;
}

body.homepage > article.intro {
  position: absolute;
  bottom: 20px;
  max-width: 500px;
  margin-left: auto;
  margin-right: auto;
  padding: 5rem;
  font-family: Helvetica, "Helvetica Neue", Arial, Sans-serif;
}

body.homepage > article.intro h1,
body.homepage > article.intro h2,
body.homepage > article.intro p {
  margin: 0;
  padding: 0;
}

body.homepage > article.intro h1 + *,
body.homepage > article.intro header + *,
body.homepage > article.intro p + * {
  margin-top: 3rem;
}

body.homepage > article.intro h1 {
  font-size: 4.8rem;
  line-height: 1.1em;
  font-weight: 800;
}

body.homepage > article.intro h2 {
  font-size: 2.8rem;
  line-height: 1.15em;
  font-weight: 400;
}

@media screen and (min-width: 1000px) {
  body.homepage > article.intro header {
    max-width: 80%;
  }
}

body.homepage > article.intro p {
  font-size: 2rem;
  line-height: 1.45em;
  font-weight: 200;
}

@media screen and (min-width: 500px) and (max-width: 1000px) {
  body.homepage > article.intro header {
    max-width: 80%;
  }

  body.homepage > article.intro {
    width: 100%;
    max-width: 900px;
  }
}

@media screen and (min-width: 1000px) {
  body.homepage > article.intro {
    width: 90%;
    max-width: none;
  }
}

.hidden {
  display: none !important;
}

.visuallyhidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
}

.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
  clip: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  position: static;
  width: auto;
}

.invisible {
  visibility: hidden;
}

.clearfix:after,
.clearfix:before {
  content: " ";
  display: table;
}

.clearfix:after {
  clear: both;
}

@media print {
  blockquote,
  img,
  pre,
  tr {
    page-break-inside: avoid;
  }

  *,
  :after,
  :before,
  :first-letter,
  :first-line {
    background: 0 0 !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }

  a,
  a:visited {
    text-decoration: underline;
  }

  a[href]:after {
    content: " (" attr(href) ")";
  }

  abbr[title]:after {
    content: " (" attr(title) ")";
  }

  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }

  blockquote,
  pre {
    border: 1px solid #999;
  }

  thead {
    display: table-header-group;
  }

  img {
    max-width: 100% !important;
  }

  h2,
  h3,
  p {
    orphans: 3;
    widows: 3;
  }

  h2,
  h3 {
    page-break-after: avoid;
  }
}
