/*
  setup


*/

:root {
  --color-background: #222831;
  --color-primary: #393E46;
  --color-accent: #00ADB5;
  --color-accent-dark: #00848b;
  --color-text: #EEEEEE;
  --color-text-dark: #CCCCCC;
}

*, ::before, ::after {
  padding: 0;
  margin: 0;

  box-sizing: border-box;
}

body {
  position: relative;
  overflow-x: hidden;

  min-height: 90vh;

  background-color: var(--color-background);
  color: var(--color-text);

  font-family: system-ui;
}

main {
  margin-top: 10vh;
  margin-left: 25vw;

  padding-bottom: 4.5rem;
}

@media only screen and (max-width: 800px) {
  main {
    margin-top: 5vh;
  }
}

/*
  general
*/

h1 {
  font-size: 2.5rem;
}

h2 {
  font-size: 1.8rem;
  font-weight: normal;
}

h3 {
  font-size: 1.6rem;
}

p {
  font-size: 1.25rem;
}

li {
  font-size: 1.25rem;
}

a {
  text-decoration: none;
  color: var(--color-accent);
}

a:hover {
  color: var(--color-accent-dark);
}

svg {
  fill: var(--color-accent);
}

svg:hover {
  fill: var(--color-accent-dark);
}

code {
  background-color: var(--color-primary);
  padding: .1rem;
  border-radius: .2rem;
}

@media only screen and (max-width: 800px) {
  h1 {
    font-size: 1.8rem;
  }
  
  h2 {
    font-size: 1.5rem;
  }
  
  h3 {
    font-size: 1.2rem;
  }
  
  p {
    font-size: 1rem;
  }

  li {
    font-size: 1rem;
  }
}

/*
  copy to clipboard animation
*/

@keyframes jump {
  25% {
    translate: 0 -4px;
  }
  50% {
    translate: 0 0;
  }
  75% {
    translate: 0 -2px;
  }
  100% {
    translate: 0 0;
  }
}

.copy {
  animation: jump .5s ease-in-out;
}

/*
  apear animations
*/

@keyframes appear {
  0% {
    clip-path: inset(0 100% 0 0);
  }
  100% {
    clip-path: inset(0 0 0 0);
  }
}

@keyframes revealer {
  0% {
    clip-path: inset(0 100% 0 0);
  }
  50% {
    clip-path: inset(0 0 0 0);
  }
  100% {
    clip-path: inset(0 0 0 100%);
  }
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.fadeIn {
  opacity: 0;
  animation: fadeIn .75s ease-in-out forwards;
}

.appear {
  position: relative;
  width: fit-content;

  clip-path: inset(0 100% 0 0);
  
  animation: appear .375s .075s ease-in forwards;
}

.appear::before {
  content: '';

  position: absolute;
  inset: 0;

  background-color: var(--color-accent);

  animation: revealer .75s .075s ease-in-out forwards;
}

.animation_appear,
.animation_fadeIn,
.animation_child_fadeIn > * {
  opacity: 0;
}

/*
  navbar
*/

nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: clamp(2rem, 10vw, 20rem);

  width: fit-content;

  margin-top: 10vh;
  margin-left: 18vw;
}

nav > div {
  display: flex;
  gap: clamp(.5rem, 4vw, 10rem);
}

nav > div > a {
  font-size: 1.125rem;
}

@media only screen and (max-width: 800px) {
  nav > div {
    flex-direction: column;
    gap: 0;
  }
}

/*
  footer
*/

footer {
  position: absolute;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .5rem;

  width: 100vw;
  height: 4.5rem;
  margin-top: 10vh;
  margin-bottom: 1vh;

  bottom: 0;
}

footer > span {
  display: flex;
}

footer > span > p {
  font-size: 1rem;
  text-align: center;
}
