.nav {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 10000;
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  padding-inline-end: var(--scrollbar-width);
  background: var(--white);
  opacity: 0;
  transition: opacity var(--medium) ease-in-out;
  will-change: opacity;
  pointer-events: none;
}

.nav-open {
  overflow-y: hidden;
}

.nav-open .nav {
  padding-inline-end: var(--scrollbar-width);
}

.nav-main {
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: var(--s5);
  padding-left: calc(var(--s6) + var(--s2));
  padding-top: calc(var(--s8) + var(--s2));
  overflow-x: hidden;
  overflow-y: auto;
}

.nav.visible {
  pointer-events: all;
  opacity: 1;
}

.nav-info,
.nav-contact,
.nav-social {
  display: none;
}

.nav .title {
  margin-bottom: var(--s2);
}

.nav-menu {
  grid-column: 1 / span 2;
}

.nav li {
  margin-bottom: var(--s0);
}

.nav-menu li {
  width: 100%;
  transition: transform var(--medium) ease-in-out;
}

.nav-menu li:hover {
  transform: translateX(0.5ch);
}

.nav-menu li + li {
  margin-block-start: var(--s1);
  margin-block-end: 0;
}

.nav-menu li a {
  display: inline-block;
}

.nav-categories {
  grid-column: 1 / -1;
  margin-top: var(--s2);
}

.nav-categories ul {
  column-count: 2;
  width: 36ch;
}

.nav-categories li {
  text-transform: capitalize;
  max-width: 12ch;
}

.nav-image {
  display: none;
  padding: var(--s5);
}

@media (min-width: 500px) {
  .nav-main {
    display: grid;
    grid-gap: var(--s3);
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: 1fr 3fr 2fr 1fr;
    align-items: center;
    flex: 1 0 auto;
  }

  .nav {
    display: flex;
    justify-content: space-between;
  }

  .nav-main {
    grid-template-columns: 1fr;
  }

  .nav-menu {
    grid-row: 2;
  }

  .nav-categories {
    grid-column: span 1;
    grid-row: 3;
    align-self: start;
  }

  .nav-image {
    display: block;
    object-fit: contain;
    height: 100%;
    width: auto;
  }
}

@media (min-width: 1200px) {
  .nav-main {
    grid-template-columns: 1fr 1fr minmax(20ch, 1fr);
    grid-template-rows: 2fr 3fr 1.5fr;
    grid-column-gap: var(--s2);
    grid-row-gap: var(--s6);
    padding-top: 0;
  }

  .nav-menu {
    align-self: center;
  }

  .nav-categories {
    grid-column: 3 / span 2;
    grid-row: 2;
  }

  .nav-categories ul {
    columns: 1;
    width: auto;
  }

  .nav-info,
  .nav-contact,
  .nav-social {
    display: block;
    grid-row: 3;
    align-self: start;
  }
}

@media (min-width: 1600px) {
  .nav-categories li {
    max-width: 100%;
  }
}

@media (min-width: 2000px) {
  .nav-main {
    width: 50%;
  }
}
