*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  background: #348cb2;
  color: #fff;
  font-family: "Source Sans 3", sans-serif;
  font-size: 15pt;
  font-weight: 300;
  letter-spacing: -0.025em;
  line-height: 1.75em;
  overflow: hidden;
}
body.loading * {
  animation: none !important;
}

@keyframes bg {
  0% {
    background-position: 0% 50%;
  }
  100% {
    background-position: 100% 50%;
  }
}
@keyframes wrapper {
  to {
    opacity: 1;
  }
}
@keyframes overlay {
  to {
    opacity: 1;
  }
}
@keyframes header {
  0% {
    transform: translateY(1em);
    opacity: 0;
  }
  100% {
    transform: translateY(0);
    opacity: 1;
  }
}
@keyframes nav-icon {
  0% {
    transform: translateY(1em);
    opacity: 0;
  }
  100% {
    transform: translateY(0);
    opacity: 1;
  }
}
#wrapper {
  animation: wrapper 3s forwards;
  position: fixed;
  inset: 0;
  opacity: 0;
}

#bg {
  animation: bg 60s linear infinite alternate;
  background: #348cb2 url("images/bg-hires.jpg") 0% 50%/cover no-repeat;
  position: fixed;
  inset: 0;
}

#overlay {
  animation: overlay 1.5s 1.5s forwards;
  background-image: url("images/overlay-pattern.png"), url("images/overlay.svg");
  background-position: top left, center center;
  background-repeat: repeat, no-repeat;
  background-size: auto, cover;
  background-attachment: fixed, fixed;
  position: fixed;
  inset: 0;
  opacity: 0;
}

#main {
  position: fixed;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

#header {
  animation: header 1s 2.25s forwards;
  opacity: 0;
  text-align: center;
  width: 90%;
}
#header h1 {
  font-size: 4.35em;
  font-weight: 900;
  letter-spacing: -0.035em;
  line-height: 1em;
}
#header p {
  font-size: 1.25em;
  margin: 0.75em 0 0.25em;
  opacity: 0.75;
}
#header nav {
  margin-top: 1.5em;
}
#header nav ul {
  list-style: none;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.5em;
}
#header nav li {
  animation: nav-icon 0.5s ease-in-out forwards;
  opacity: 0;
}
#header nav li:nth-child(1) {
  animation-delay: 2.5s;
}
#header nav li:nth-child(2) {
  animation-delay: 2.75s;
}
#header nav li:nth-child(3) {
  animation-delay: 3s;
}
#header nav li:nth-child(4) {
  animation-delay: 3.25s;
}
#header nav li:nth-child(5) {
  animation-delay: 3.5s;
}
#header nav li:nth-child(6) {
  animation-delay: 3.75s;
}
#header nav li:nth-child(7) {
  animation-delay: 4s;
}
#header nav li:nth-child(8) {
  animation-delay: 4.25s;
}
#header nav li:nth-child(9) {
  animation-delay: 4.5s;
}
#header nav li:nth-child(10) {
  animation-delay: 4.75s;
}
#header nav a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4.375em;
  height: 4.375em;
  border: solid 1px #fff;
  border-radius: 50%;
  color: #fff;
  text-decoration: none;
  transition: background-color 0.2s ease-in-out, transform 0.2s ease-in-out;
  -webkit-tap-highlight-color: transparent;
}
#header nav a svg {
  width: 1.75em;
  height: 1.75em;
  fill: currentColor;
  pointer-events: none;
}
#header nav a:hover {
  background-color: rgba(255, 255, 255, 0.175);
  transform: scale(1.1);
}
#header nav a:active {
  background-color: rgba(255, 255, 255, 0.35);
  transform: scale(0.95);
}

#footer {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 6em;
  line-height: 8em;
  text-align: center;
  background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.5) 75%);
  font-size: 0.85em;
}
#footer a {
  color: inherit;
  border-bottom: dotted 1px;
  text-decoration: none;
  transition: border-color 0.2s ease-in-out;
}
#footer a:hover {
  border-color: transparent;
}

@media (max-width: 1280px) {
  body {
    font-size: 12pt;
  }
}
@media (max-width: 736px) {
  body {
    font-size: 11pt;
    min-width: 320px;
  }
  #header h1 {
    font-size: 2.5em;
  }
  #header p {
    font-size: 1em;
  }
  #header nav a:hover {
    transform: none;
  }
  #header nav a:active {
    transform: scale(0.95);
  }
}
@media (max-width: 480px) {
  #header nav ul {
    flex-wrap: wrap;
    padding: 0 1em;
  }
}
@media (prefers-reduced-motion: reduce) {
  #bg {
    animation: none;
  }
  #wrapper,
  #overlay,
  #header,
  #header nav li {
    animation: none;
    opacity: 1;
    transform: none;
  }
}
