body {
  min-height: 100dvh;
  margin: 0;
  position: relative;
  font-family: "Noto Sans JP", sans-serif;
  color: #222;

  background-image: url("/assets/images/backgrounds/background_sp.png");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;

  @media (min-width: 768px) {
    background-image: url("/assets/images/backgrounds/background_pc.png");
  }

  &.is-subpage {
    background-image: none;
    background-color: #fff;
  }
}

:root {
  --kumo-1-start: 100%;
  --kumo-1-end: -102%;
  --kumo-2-start: 100%;
  --kumo-2-end: 10%;
  --kumo-3-start: 100%;
  --kumo-3-end: 14%;
  --kumo-4-start: 100%;
  --kumo-4-end: 8%;

  @media (min-width: 768px) {
    --kumo-1-end: 28%;
    --kumo-2-end: 63%;
    --kumo-3-end: 46%;
    --kumo-4-end: 58%;
  }
}

.bg-motion {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: clip;

  & > img {
    max-width: none;
  }

  .kumo-1 {
    width: 1027px;
    height: auto;

    position: absolute;
    top: -236px;

    @media (min-width: 768px) {
      width: 1129px;
      height: auto;

      top: -197px;
    }
  }

  .kumo-2 {
    width: 697px;
    height: auto;

    position: absolute;
    top: 690px;

    @media (min-width: 768px) {
      width: 743px;
      height: auto;

      top: 898px;
    }
  }

  .kumo-3 {
    width: 906px;
    height: auto;

    position: absolute;
    top: 216px;

    @media (min-width: 768px) {
      width: 982px;
      height: auto;

      top: 230px;
    }
  }

  .kumo-4 {
    position: absolute;
    display: none;

    @media (min-width: 768px) {
      width: 652px;
      height: auto;

      top: 908px;
      display: block;
    }
  }
}

.main-visual {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 36px;
  width: auto;
  padding: 0 24px;
  margin: 27px auto 0;

  @media (min-width: 768px) {
    align-items: center;
    gap: 74px;
    width: 700px;
    padding: 0 0;
    margin: 114px auto 0;
  }
}
.main-visual__img {
  width: 351px;
  height: 88px;
  @media (min-width: 768px) {
    width: 645px;
    height: 162px;
  }
}
.main-visual__text {
  display: grid;
  gap: 32px;
  color: rgba(0, 67, 134, 1);
}
.main-visual__text-first {
  font-size: 20px;
  line-height: 40px;
  letter-spacing: 0.05em;

  @media (min-width: 768px) {
    font-size: 22px;
    letter-spacing: 0.2em;
  }

  .dash {
    letter-spacing: -0.2em;
    width: 2em;
    margin-left: 0.2em;
    margin-right: 0.3em;
  }
}
.main-visual__text-second {
  font-size: 15px;
  line-height: 32px;
  letter-spacing: 0.1em;

  @media (min-width: 768px) {
    font-size: 18px;
    letter-spacing: 0.2em;
  }
}

.company-detail {
  background-color: rgba(255, 255, 255, 0.6);
  padding: 42px 16px;
  position: relative;

  margin-top: 64px;

  @media (min-width: 1024px) {
    max-width: 970px;
    padding: 76px 104px 90px;
    margin: 0 auto;
    position: relative;
    background-color: transparent;

    margin-top: 138px;
  }

  .company-detail__background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    display: none;

    @media (min-width: 1024px) {
      display: block;
    }
  }

  .company-detail__section-title {
    --color: #226aaa;

    font-size: 28px;
    letter-spacing: 0.1em;
    line-height: 1em;
    text-align: center;
    color: var(--color);

    padding-bottom: 12px;
    border-bottom: 2px solid var(--color);
    position: relative;

    @media (min-width: 768px) {
      text-align: left;
    }
  }

  .insurance-companies {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    height: 266px;

    margin: 40px 0 60px;

    @media (min-width: 768px) {
      flex-direction: row;
      justify-content: center;
      gap: 74px;
      width: 701px;
      height: auto;

      margin: 40px auto 70px;
    }

    img {
      &._nihon {
        width: 194px;
        height: 51px;

        @media (min-width: 768px) {
          width: auto;
          height: auto;
        }
      }

      &._hanasaku {
        width: 216px;
        height: 44px;

        @media (min-width: 768px) {
          width: auto;
          height: auto;
        }
      }

      &._fwd {
        width: 114px;
        height: 38px;

        @media (min-width: 768px) {
          width: auto;
          height: auto;
        }
      }

      &._akusa {
        width: 173px;
        height: 54px;

        @media (min-width: 768px) {
          width: auto;
          height: auto;
        }
      }
    }
  }

  .company-profile {
    display: grid;
    gap: 12px;
    padding-top: 30px;
    padding-bottom: 24px;
    width: 344px;
    margin: 0 auto;

    font-size: 16px;
    line-height: 1.5;

    @media (min-width: 768px) {
      width: auto;
      padding-top: 30px;
      padding-bottom: 24px;
      padding-left: 20px;
      padding-right: 20px;

      line-height: 1;
    }
  }
  .company-profile__item {
    display: grid;
    grid-template-columns: 72px 1fr;
    gap: 14px;

    @media (min-width: 768px) {
      grid-template-columns: 94px 1fr;
      gap: 24px;
    }

    ul {
      display: grid;
      gap: 0px;

      @media (min-width: 768px) {
        gap: 8px;
      }
    }
  }
  .company-profile__item-label {
    text-align: justify;
    word-break: break-all;
    text-align-last: justify;
  }

  .nav-wrapper {
    max-width: 764px;
    margin: 0 auto;
    padding-bottom: 36px;

    @media (min-width: 1024px) {
      padding-bottom: 54px;
    }
  }
  .nav-list {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 32px;

    @media (min-width: 1024px) {
      flex-direction: row;
      align-items: center;
    }
  }
  .nav-link {
    --color: #226aaa;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    border: 2px solid var(--color);
    border-radius: 3px;

    width: 344px;
    max-width: 344px;
    height: 50px;

    color: var(--color);
    font-size: 18px;
    line-height: 1;

    &:hover {
      opacity: 0.8;
    }
    &:focus-visible {
      opacity: 0.8;
    }

    @media (min-width: 1024px) {
      width: 210px;
      height: 36px;
      font-size: 16px;
    }
  }

  .company-access {
    font-size: 13px;
    line-height: 1.5;

    padding-top: 30px;
    padding-bottom: 20px;
    width: 344px;
    max-width: 100%;
    margin: 0 auto;

    @media (min-width: 768px) {
      padding-bottom: 24px;
      padding-left: 20px;
      padding-right: 20px;
      width: auto;
    }
  }
  .company-access__title {
    font-size: 16px;
  }
  .company-access__address {
    margin-top: 5px;
    display: grid;
    gap: 8px;

    font-style: normal;

    @media (min-width: 768px) {
      display: flex;
      gap: 20px;
    }
  }
  .company-access__contact-address {
    .contact-address__item {
      display: flex;
      gap: 8px;
    }
    .contact-address__label {
      width: 23px;
      display: inline-flex;
      justify-content: center;
    }
    ._img {
      margin-top: 2px;
    }
    ._br {
      @media (min-width: 768px) {
        display: none;
      }
    }
  }

  .company-access__map {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-top: 24px;

    filter: grayscale(100%);

    ._map-link {
      text-decoration: underline;
      font-size: 14px;
      line-height: 1;
    }

    ._map-wrapper {
      position: relative;
      width: 100%;
      padding-top: 42.55%;
      height: 0;
      max-width: 100%;
    }

    ._for-sp {
      display: block;
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      @media (min-width: 768px) {
        display: none;
      }
    }

    ._for-pc {
      display: none;
      @media (min-width: 768px) {
        display: block;
        position: absolute;
        inset: 0;
      }
    }
  }
}

.footer {
  color: #979b9d;
  width: 345px;
  margin: 0 auto;
  padding-top: 50px;
  padding-bottom: 20px;

  @media (min-width: 1024px) {
    width: 950px;
    margin: 0 auto;
    padding-top: 80px;
    padding-bottom: 20px;
  }

  .company-info {
    font-size: 13px;
    line-height: 1.5;

    padding-top: 30px;
    padding-bottom: 20px;
  }
  .company-info__title {
    font-size: 16px;
  }
  .company-info__address {
    margin-top: 10px;
    display: grid;
    gap: 12px;

    font-style: normal;

    @media (min-width: 768px) {
      display: flex;
      gap: 20px;
    }
  }
  .contact-address {
    .contact-address__item {
      display: flex;
      gap: 8px;
    }
    .contact-address__label {
      width: 23px;
      display: inline-flex;
      justify-content: center;
    }
    ._img {
      margin-top: 2px;
    }
    ._br {
      @media (min-width: 1024px) {
        display: none;
      }
    }
  }
  .description {
    margin-top: 28px;
    font-size: 10px;
    line-height: 1.4;

    ._br {
      display: none;
      @media (min-width: 1024px) {
        display: block;
      }
    }
  }
  .copyright {
    font-size: 10px;
    margin-top: 32px;
    text-align: center;
  }
}

.btn-to-top {
  position: fixed;
  right: 16px;
  bottom: 24px;
  z-index: 1;

  @media (min-width: 1024px) {
    display: none;
  }
}
