:root {
  --border-width: 2px;
  --padding: 1vw;
  --speed: 1s;
  --delay: 0.2s;
}

@font-face {
  font-family: Sequel;
  src: url("./fonts/Sequel 100 Wide 75.otf");
}

@font-face {
  font-family: Untitled Sans;
  font-weight: normal;
  src: url("./fonts/Untitled\ Sans\ Regular.woff");
}

@font-face {
  font-family: Untitled Sans;
  font-weight: bold;
  src: url("./fonts/Untitled\ Sans\ Medium.woff");
}

@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes translate-left {
  from {
    transform: translateX(-5vw);
  }
  to {
    transform: translateX(0vw);
  }
}

@keyframes translate-right {
  from {
    transform: translateX(5vw);
  }
  to {
    transform: translateX(0vw);
  }
}

@keyframes reveal-left {
  from {
    clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%);
  }
  to {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  }
}

@keyframes reveal-right {
  from {
    clip-path: polygon(0 0, 0 0, 0 100%, 0 100%);
  }
  to {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  }
}

@keyframes reveal-up {
  from {
    clip-path: polygon(0 100%, 100% 100%, 100% 100%, 0 100%);
  }
  to {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  }
}

@keyframes reveal-down {
  from {
    clip-path: polygon(0 0, 100% 0, 100% 0, 0 0);
  }
  to {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  }
}

img {
  height: auto;
  max-width: 100%;
  vertical-align: middle;
}

* {
  box-sizing: border-box;
  margin: 0;
}

[class^="heading-"] {
  animation: fade-in calc(var(--speed) - var(--delay)) ease-in both var(--delay);
  font-family: Sequel, sans-serif;
  font-size: 5vw;
  margin: 0;
  line-height: 0.8em;
}

[class^="subheading-"] {
  animation: fade-in calc(var(--speed) - var(--delay)) ease-in both var(--delay);
  font-size: 2.5vw;
  font-weight: normal;
  margin: 0;
}

p {
  animation: fade-in calc(var(--speed) - var(--delay)) ease-in both var(--delay);
  line-height: 1.4em;
  font-size: 16px;
}

small {
  animation: fade-in calc(var(--speed) - var(--delay)) ease-in both var(--delay);
  font-size: 12px;
  line-height: 1.25em;
}

.vr {
  height: calc(100% + var(--border-width));
  width: var(--border-width);
  background: black;
  border: 0px;
  position: relative;
  z-index: 5;
}

.hr {
  width: calc(100% + var(--border-width));
  height: var(--border-width);
  background: black;
  border: 0px;
  position: relative;
  z-index: 5;
}

.line-1-a {
  grid-area: 2 / 1 / span 1 / span 3;
  animation: reveal-right var(--speed) ease-out;
}

.line-1-b {
  grid-area: 2 / 4 / span 3 / 4;
  animation: reveal-down var(--speed) ease-out;
}

.line-1-c {
  grid-area: 5 / 1 / 5 / span 3;
  animation: reveal-left var(--speed) ease-out;
}

.line-2-a {
  grid-area: 1 / 8 / span 4 / span 1;
  animation: reveal-down var(--speed) ease-out;
}

.line-2-b {
  grid-area: 5 / 8 / span 1 / span 2;
  animation: reveal-left var(--speed) ease-out;
}

.line-2-c {
  grid-area: 5 / 10 / span 6 / span 1;
  animation: reveal-down var(--speed) ease-out;
}

.line-3-a {
  grid-area: 9 / 1 / span 1 / span 3;
  animation: reveal-left var(--speed) ease-out;
}

.line-4-a {
  grid-area: 7 / 4 / span 1 / span 6;
  animation: reveal-right var(--speed) ease-out;
}

.line-4-b {
  grid-area: 7 / 4 / span 4 / span 2;
  animation: reveal-down var(--speed) ease-out;
}

.line-5-a {
  grid-area: 7 / 14 / span 1 / span 3;
  animation: reveal-left var(--speed) ease-out;
}

.line-5-b {
  grid-area: 7 / 14 / span 2 / span 1;
  animation: reveal-down var(--speed) ease-out;
}

.line-5-c {
  grid-area: 9 / 14 / span 1 / span 3;
  animation: reveal-right var(--speed) ease-out;
}

html {
  height: 0;
  width: 100%;
}

body {
  margin: 0;
  font-family: Untitled Sans, sans-serif;
}

.hero {
  height: 0;
  width: 100%;
  padding-bottom: 71.111111111%;
  position: relative;
}

.hero__inner {
  display: grid;
  grid-template-columns: repeat(16, 1fr);
  grid-template-rows: repeat(10, 1fr);
  overflow: hidden;
  height: 100%;
  width: 100%;
  position: absolute;
}

.banner {
  font-family: "Sequel";
  text-transform: uppercase;
  font-size: 9vw;
  line-height: 0.7em;
  display: contents;
}

.banner > * {
  align-self: center;
  height: 90%;
}

.banner__line-1 {
  grid-area: 2 / 8 / span 1 / span 9;
  margin-left: 2vw;
  animation: fade-in var(--speed) ease-in, translate-right var(--speed) ease-out;
}

.banner__line-2 {
  grid-area: 3 / 15 / span 1 / span 2;
  animation: fade-in var(--speed) ease-in, translate-left var(--speed) ease-out;
}

.banner__line-3 {
  grid-area: 4 / 12 / span 1 / span 5;
  animation: fade-in var(--speed) ease-in, translate-right var(--speed) ease-out;
}

.banner__line-4 {
  grid-area: 5 / 11 / span 1 / span 4;
  animation: fade-in var(--speed) ease-in, translate-left var(--speed) ease-out;
}

.title {
  grid-area: 1 / 1 / 2 / 4;
  display: grid;
  justify-content: center;
  align-content: center;
  font-size: 20px;
  text-transform: uppercase;
  font-weight: bold;
  animation: fade-in calc(var(--speed) - var(--delay)) ease-in both var(--delay);
}

.nav {
  grid-area: 1 / 9 / 2 / 16;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.nav a {
  color: inherit;
  text-decoration: none;
  text-transform: uppercase;
  font-size: 14px;
  letter-spacing: 1px;
  font-weight: bold;
}

.nav a:nth-child(1) {
  animation: fade-in calc(var(--speed) - var(--delay)) ease-in both var(--delay);
}

.nav a:nth-child(2) {
  animation: fade-in calc(var(--speed) - var(--delay)) ease-in both
    calc(var(--delay) + 0.1s);
}

.nav a:nth-child(3) {
  animation: fade-in calc(var(--speed) - var(--delay)) ease-in both
    calc(var(--delay) + 0.2s);
}

.nav a:nth-child(4) {
  animation: fade-in calc(var(--speed) - var(--delay)) ease-in both
    calc(var(--delay) + 0.3s);
}

.image-1 {
  grid-area: 2 / 2 / 3 / 4;
  object-fit: cover;
  width: 100%;
  height: 100%;
  justify-self: flex-end;
  animation: reveal-up var(--speed) ease-out;
}

.text-1 {
  grid-area: 2 / 4 / 4 / 8;
  padding: 0 var(--padding);
}

.subheading-1 {
  grid-area: 4 / 1 / 5 / 2;
  align-self: end;
  padding: var(--padding);
}

.subheading-2 {
  grid-area: 4 / 4 / span 1 / span 1;
  align-self: end;
  padding: var(--padding);
}

.text-2 {
  grid-area: 6 / 4 / span 1 / span 3;
  align-self: end;
  padding-bottom: var(--padding);
}

.heading-1 {
  align-self: end;
  grid-area: 8 / 1 / span 1 / span 1;
  padding: var(--padding);
}

.image-2 {
  grid-area: 7 / 7 / 10 / 10;
  object-fit: cover;
  width: 100%;
  height: 82.5%;
  animation: reveal-left var(--speed) ease-out;
}

.text-3 {
  padding: 0 var(--padding);
  grid-area: 7 / 10 / 9 / span 4;
}

.text-4 {
  grid-area: 9 / 1 / 11 / 4;
  padding: var(--padding);
}

.subheading-3 {
  grid-area: 10 / 4 / span 1 / span 1;
  padding: var(--padding);
  align-self: end;
}

.subheading-4 {
  grid-area: 7 / 14 / span 1 / span 1;
  padding: var(--padding);
}

.text-5 {
  grid-area: 9 / 7 / 11 / 9;
  padding: 27% 0 var(--padding);
  align-self: end;
}

.text-6 {
  grid-area: 7 / 14 / span 2 / span 3;
  padding: var(--padding);
  align-self: end;
}

.heading-2 {
  grid-area: 10 / 10 / span 1 / span 1;
  padding: var(--padding);
  align-self: end;
}
