@import url('https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic:wght@400&display=block');

* {
  margin: 0;
  padding: 0;
  font-family: "Zen Maru Gothic", serif;
  font-feature-settings: "palt";
}

:root {
  --bg-col: linear-gradient(-45deg, #4e2e8c 0%, #1a996a 100%);
  --curtain-col: #0002;
  --text-col: #eef;
  --shadow-col: #333c;
  --filter-col: #2229;
  --filter-icon-col: #2224;
  --icon-col: #aab;
  --modal-bg-col: linear-gradient(-45deg, #634a94f4 0%, #349e77f4 100%);
  font-size: min(3.75px, 1vw);
}

body {
  background: var(--bg-col);
  min-height: 100lvh;
}

#wrap {
  display: none;
}

header {
  background: var(--curtain-col);
  padding: 3rem 0 4rem;

  div {
    color: #fff;
    font-size: 10rem;
    text-align: center;
  }
}

footer {
  background: var(--curtain-col);
  padding: 6rem;
  position: sticky;
  top: 100lvh;

  div {
    color: var(--text-col);
    font-size: 5rem;
    text-align: center;
  }
}

h2 {
  color: var(--text-col);
  font-size: 9rem;
  text-align: center;
  margin: 8rem 0 8rem;
}

.dashboard {
  display: grid;
  place-content: center;
  grid-template-columns: repeat(auto-fit, 65rem);
  gap: 20rem;
  place-items: center;
  margin: 8rem 0 20rem;

  a {
    text-decoration: none;
    display: inline-block;
  }

  .item {
    width: 65rem;
    font-size: 4.5rem;
    aspect-ratio: 1;
    position: relative;
    border-radius: 50%;

    display: flex;
    align-items: center;
    justify-content: center;

    cursor: pointer;
    scale: 1;
    transition: scale 0.15s ease-out;

    &::before {
      content: "";
      position: absolute;
      width: 100%;
      height: 100%;
      border-radius: 50%;
      top: 0;
      left: 0;
      background-color: var(--filter-col);
      z-index: -1;
    }

    @media (hover:hover) {
      &:hover {
        scale: 1.15;
        box-shadow: 1rem 1rem 1rem #0006;
      }
    }

    .description {
      color: var(--text-col);
      text-align: center;
      text-shadow:
        0.5rem 0.5rem 1rem var(--shadow-col),
        -0.5rem 0.5rem 1rem var(--shadow-col),
        0.5rem -0.5rem 1rem var(--shadow-col),
        -0.5rem -0.5rem 1rem var(--shadow-col);

      h3 {
        font-size: 150%;
      }
    }

    .image {
      width: 100%;
      height: 100%;
      position: absolute;
      top: 0;
      left: 0;
      z-index: -2;

      display: flex;
      justify-content: center;
      align-items: center;

      img {
        width: 100%;
        height: 100%;
        filter: saturate(1);
        clip-path: inset(0 0 round 50%);
        object-fit: cover;
        z-index: -2;
      }
    }
  }

  .valid {
    border: #fff 0.5rem solid;
  }
}

.info {
  grid-template-columns: repeat(auto-fit, min(160px, 35vw));
  gap: min(32px, 7vw);

  .item {
    width: min(160px, 35vw);
    font-size: min(14.4px, 3.15vw);

    &::before {
      background-color: var(--filter-icon-col);
    }

    .icon {
      img {
        width: 70%;
        height: 70%;
        clip-path: none;
      }
    }
  }
}

.modal {
  font-size: 4.5rem;
  width: min(calc(100% - 30rem), 800px);
  height: calc(100% - 30rem);
  padding: 3rem 5rem 2rem 6rem;
  position: fixed;
  inset: 0;
  margin: auto;
  background: var(--modal-bg-col);
  border-radius: 5rem;
  color: var(--text-col);
  overflow: hidden;
  z-index: 1;

  opacity: 0;
  scale: 0;
  transition: opacity 0.15s ease-out, scale 0.15s ease-out;

  .container {
    width: 100%;
    height: calc(100% - 31rem);
    padding-right: 3rem;
    overflow: hidden scroll;
    overscroll-behavior: contain;

    li {
      margin: 4rem 0;
    }

    ul {
      padding-left: 4rem;
    }

    &>ul {
      padding-left: 6rem;
    }

    ol {
      padding-left: 8rem;
    }

    ul>li::marker {
      font-size: 4rem;
    }

    ol>li::marker {
      font-size: 5rem;
    }
  }

  h3 {
    width: 100%;
    height: 10rem;
    margin-bottom: 3rem;
    font-size: 6rem;
    text-align: center;

    display: flex;
    justify-content: center;
    align-items: center;
  }

  .close {
    width: 100%;
    height: 15rem;
    font-size: 5.5rem;
    text-align: center;

    margin-top: 4rem;
    border-top: var(--text-col) 0.3rem solid;

    display: flex;
    justify-content: center;
    align-items: center;

    cursor: pointer;
  }
}

#jump-modal {
  width: 70rem;
  height: fit-content;
  padding-top: 5rem;

  .container {
    height: fit-content;
    margin-bottom: 3rem;
    overflow: auto;
  }

  .buttons {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    border: none;

    div {
      border-top: var(--text-col) 0.3rem solid;
      height: 12rem;
    }
  }
}

noscript {
  font-size: 4rem;
  text-align: center;
  color: var(--text-col);
  display: block;
  margin: 20rem 0;

  h2 {
    font-size: 150%;
  }
}

.error {
  margin-top: 20vh;

  font-size: 6rem;
  text-align: center;
  color: var(--text-col);

  h1 {
    font-size: 10rem;
    margin-bottom: 1vh;
  }

  a {
    color: var(--text-col);
  }
}