@charset "utf-8";

/* GSAPアニメーション開始前のちらつき防止 */
#mv .bgLeft,
#mv .bgRight,
#mv h1,
#mv .description,
#mv .secondary {
  opacity: 0;
}

#mv .halo {
  transform: scale(0);
}

/* ---------------------------------------------------- */
body {
  background: #fff;
}

#mv {
  margin: 0 auto;
  width: 100%;
  position: relative;

  @media (max-width: 1023px) {
    padding-top: 72px;
    height: auto;
  }

  .bgLeft {
    height: 100%;
    width: 50%;
    height: 100%;
    position: absolute;
    left: 0;
    background: url(../../images/common/mv_bg_left.svg) 0 50% no-repeat;
    background-size: 26vw auto;
    z-index: 10;
    pointer-events: none;

    @media (max-width: 1023px) {
      background-position: 0 0;
      background-size: 160px auto;
    }
  }

  .bgRight {
    height: 100%;
    width: 50%;
    height: 100%;
    position: absolute;
    right: 0;
    background: url(../../images/common/mv_bg_right.svg) 100% 50% no-repeat;
    background-size: 28vw auto;
    z-index: 10;
    pointer-events: none;

    @media (max-width: 1023px) {
      background-position: 100% 0;
      background-size: 168px auto;
    }
  }

  .catch {
    padding-top: 160px;
    height: 100%;
    display: flex;
    flex-direction: column;
    position: relative;
    z-index: 5;

    @media (max-width: 1023px) {
      z-index: 11;
    }

    .heading {
      padding: 72px 0 56px;
      position: relative;

      h1 {
        font-size: 32px;
        font-weight: bold;
        line-height: 1.6em;
        text-align: center;
        letter-spacing: 0.25em;

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

        span {
          display: block;
          font-size: 48px;
          text-align: center;

          @media (max-width: 1023px) {
            font-size: 38px;
          }
        }
      }

      .halo {
        width: 160px;
        height: 240px;
        background: url(../../images/company/mv_halo.svg) 50% 50% no-repeat;
        background-size: contain;
        position: absolute;
        z-index: -1;
        top: calc(50% - 120px);
        left: calc(50% - 80px);
      }

      .codeLeft {
        width: 0;
        height: 4px;
        background: #d0eaff;
        position: absolute;
        z-index: -1;
        top: calc(50% - 3px);
        left: 0;
      }

      .codeRight {
        width: 0;
        height: 4px;
        background: #fff07a;
        position: absolute;
        z-index: -1;
        top: calc(50% - 3px);
        right: 0;
      }

      .outletLeft {
        width: 0;
        height: 104px;
        background: url(../../images/company/mv_outletLeft.svg) 50% 50%
          no-repeat;
        background-size: contain;
        position: absolute;
        z-index: -1;
        top: calc(50% - 52px);
        left: calc(50% - 124px);
      }

      .outletRight {
        width: 0;
        height: 104px;
        background: url(../../images/company/mv_outletRight.svg) 50% 50%
          no-repeat;
        background-size: contain;
        position: absolute;
        z-index: -1;
        top: calc(50% - 52px);
        left: calc(50% - 36px);
      }
    }

    p.button {
      margin-top: 56px;
      display: flex;
      justify-content: center;

      @media (max-width: 1023px) {
        margin: 0;
        padding: 0 16px;
      }

      a {
        padding: 0 32px 0 48px;
        display: block;
        line-height: calc(80px - 8px);
        font-weight: bold;
        font-size: 26px;
        color: #222;
        border-radius: 40px;
        text-align: center;
        text-decoration: none;
        background: #fce952;
        border: 4px solid #ffdc00;

        span {
          margin: 0 -0.5em;
          font-size: 0.8em;
        }

        i {
          margin-left: 0.5em;
          font-size: 0.9em;
          animation: bounce-down 1s ease-in-out infinite;
        }

        @media (max-width: 1023px) {
          padding: 0 0 0 8px;
          width: 100%;
          font-size: 20px;
          line-height: calc(64px - 8px);
          border-radius: 32px;
        }

        @media (hover: hover) {
          &:hover {
            color: #fff;
            background: #4aa3d5;
            border: 4px solid #0284c7;

            span {
              color: #fff;
            }
          }
        }
      }
    }

    p.description {
      margin-top: 32px;
      padding: 0 16px;
      text-align: center;
    }

    p.secondary {
      margin: 32px auto 64px;
      display: flex;

      a.btn-secondary {
        padding: 0 32px 0 48px;
        height: 64px;
        gap: 16px;

        i {
          margin-left: 0.5em;
          font-size: 0.9em;
        }
      }
    }
  }
}

@keyframes bounce-down {
  0%,
  100% {
    transform: translateY(-3px);
  }

  50% {
    transform: translateY(3px);
  }
}

#highvoltageClients {
  padding: 72px 16px 128px;
  background:
    url(../../images/company/highvoltage_clients_bg2.svg) 50% 100% no-repeat,
    #fce952;
  background-size:
    auto 320px,
    auto;

  @media (max-width: 1023px) {
    padding: 40px 16px 80px;
    background-size:
      auto 140px,
      auto;
  }

  .inner {
    margin: 0 auto;
    padding: 48px;
    width: 100%;
    max-width: 920px;
    border-radius: 32px;
    background: #fff;

    @media (max-width: 1023px) {
      padding: 24px;
    }

    h2 {
      text-align: center;
      font-size: 29px;
      font-weight: bold;
      letter-spacing: 0.2em;

      @media (max-width: 1023px) {
        font-size: 22px;
      }
    }

    h3 {
      margin-top: 40px;
      padding: 16px 64px;
      text-align: center;
      font-size: 24px;
      font-weight: bold;
      background: #d0eaff;
      position: relative;

      @media (max-width: 1023px) {
        padding: 16px 0;
        font-size: 21px;
      }

      span {
        margin: 0 -0.33em;
        padding: 16px 0;
        font-size: 20px;

        @media (max-width: 1023px) {
          font-size: 16px;
        }
      }

      &::before {
        content: "";
        display: block;
        height: 72px;
        width: 44px;
        background: url(../../images/company/highvoltage_clients_icon.svg) 50%
          50% no-repeat;
        background-size: contain;
        position: absolute;
        top: -20px;
        left: calc(50% - 13.75em);
        animation: swing 1.5s linear infinite;

        @media (max-width: 1367px) {
          left: calc(50% - 14em);
        }

        @media (max-width: 1023px) {
          top: -8px;
          left: calc(50% - 10.5em);
        }

        @media (max-width: 480px) {
          content: none;
        }
      }

      & + p {
        margin-top: 32px;
        font-size: 18px;
        text-align: center;

        b {
          font-size: 20px;
        }

        @media (max-width: 1023px) {
          text-align: justify;
        }
      }
    }

    .visual {
      margin: 32px 0 16px;
      padding-top: 42.58%;
      width: 100%;
      background: url(../../images/company/highvoltage_clients_image.svg) 0 50%
        no-repeat;
      background-size: contain;

      @media (max-width: 1023px) {
        padding-top: 134.44%;
        background: url(../../images/company/highvoltage_clients_image_sp.svg) 0
          50% no-repeat;
      }
    }

    p.caution {
      margin-top: 8px;
      padding-left: 1em;
      text-indent: -1em;
      font-size: 13px;
      line-height: 1.5em;
    }
  }
}

@keyframes swing {
  0% {
    transform: rotate(0deg);
  }

  25% {
    transform: rotate(10deg);
  }

  75% {
    transform: rotate(-10deg);
  }

  100% {
    transform: rotate(0deg);
  }
}

#service {
  margin-top: 64px;
  user-select: none;

  @media (max-width: 1023px) {
    margin-top: 0;
  }

  h2 {
    display: flex;
    gap: 40px;
    justify-content: center;
    align-items: center;
    font-size: 40px;
    font-weight: bold;
    letter-spacing: 0.5em;

    @media (max-width: 1023px) {
      font-size: 28px;
      gap: 32px;
    }

    .halo {
      @media (max-width: 1023px) {
        height: 100px;
      }

      img {
        height: 100%;
        width: auto;
      }
    }

    & + p {
      margin-top: 40px;
      margin-bottom: 120px;
      line-height: 32px;
      text-align: center;

      @media (max-width: 1023px) {
        margin-top: 32px;
        margin-bottom: 80px;
        padding: 0 16px;
        text-align: justify;
      }
    }
  }

  .serviceList {
    position: relative;

    &::before {
      content: "";
      display: block;
      width: 100vw;
      height: 1152px;
      background: #f5f5f5;
      position: absolute;
      left: 0;
      bottom: 0;
      z-index: -1;
    }

    section {
      padding-bottom: 120px;
      display: flex;
      flex-direction: column;

      .heading {
        margin: 0 auto;
        width: 80vw;

        @media (max-width: 1023px) {
          width: calc(100vw - 48px);
        }

        h3 {
          font-size: 29px;
          font-weight: bold;
          letter-spacing: 0.25em;

          @media (max-width: 1023px) {
            font-size: 22px;
            letter-spacing: 0.125em;
          }

          span {
            margin-bottom: 16px;
            display: block;
            font-size: 16px;
            color: #4aa3d5;
            letter-spacing: 0.2em;

            @media (max-width: 1023px) {
              margin-bottom: 8px;
            }
          }

          & + p {
            margin-top: 32px;

            @media (max-width: 1023px) {
              margin-top: 16px;
            }
          }
        }
      }

      .subtext {
        margin-top: 64px;
        display: flex;
        min-height: 480px;
        position: relative;

        @media (max-width: 1023px) {
          margin-top: 0;
          flex-direction: column;
        }

        .imageBlock {
          width: 40vw;
          height: 480px;
          background-size: cover;
          left: 0;
          position: absolute;
          overflow: hidden;
          border-radius: 0 32px 32px 0;

          @media (max-width: 1023px) {
            margin-top: 48px;
            order: 2;
            position: static;
            width: 90vw;
            height: 320px;
          }
        }

        .textBlock {
          position: absolute;
          width: calc(50vw - 48px);
          left: calc(40vw + 48px);

          h4 {
            margin-top: 56px;
            padding-left: 28px;
            font-size: 20px;
            font-weight: bold;
            background: url(../../images/common/icon_thunder.svg) 0 50%
              no-repeat;
            background-size: 16px auto;

            @media (max-width: 1023px) {
              margin-top: 48px;
              font-size: 18px;
            }

            & + p {
              margin-top: 16px;
            }
          }

          @media (max-width: 1023px) {
            padding: 0 24px;
            width: 100%;
            position: static;
            order: 1;
          }
        }
      }

      &:nth-of-type(1) {
        background: url(../../images/company/service_obj01.svg)
          calc(50% + 560px) 100% no-repeat;

        @media (max-width: 1023px) {
          padding-bottom: 224px;
          background-position: 70% calc(100% - 64px);
          background-size: auto 120px;
        }

        .subtext {
          .imageBlock {
            background-image: url(../../images/company/service_bg01.jpg);
          }
        }
      }

      &:nth-of-type(2) {
        @media (max-width: 1023px) {
          padding-bottom: 64px;
        }

        .subtext {
          .imageBlock {
            left: auto;
            right: 0;
            background-image: url(../../images/company/service_bg02.jpg);
            border-radius: 32px 0 0 32px;

            @media (max-width: 1023px) {
              margin-left: 10vw;
            }
          }

          .textBlock {
            left: 10vw;
            width: calc(50vw - 64px);

            @media (max-width: 1023px) {
              width: 100%;
            }
          }
        }
      }

      &:nth-of-type(3) {
        padding-bottom: 240px;
        background: url(../../images/company/service_obj02.svg)
          calc(50% + 560px) calc(100% - 56px) no-repeat;

        @media (max-width: 1023px) {
          background-position: 80% calc(100% - 56px);
          background-size: auto 160px;
        }

        .subtext {
          .imageBlock {
            background-image: url(../../images/company/service_bg03.jpg);
          }
        }
      }
    }
  }
}

#company {
  margin-top: -40px;
  padding: 80px 0;
  background: #a4cced;
  border-radius: 40px;
  user-select: none;

  @media (max-width: 1023px) {
    padding: 40px 24px;
    border-radius: 0;
  }

  .inner {
    margin: 0 auto;
    padding: 64px;
    width: 1024px;
    background: #fff;
    border-radius: 16px;

    @media (max-width: 1023px) {
      padding: 24px;
      width: 100%;
    }

    h2 {
      font-size: 32px;
      font-weight: bold;
      letter-spacing: 0.25em;
      text-align: center;

      @media (max-width: 1023px) {
        font-size: 22px;
      }
    }

    dl {
      margin-top: 40px;
      display: flex;
      flex-wrap: wrap;
      border-bottom: 1px solid #ddd;

      @media (max-width: 1023px) {
        margin-top: 24px;
      }

      dt {
        padding: 16px 40px;
        width: 176px;
        font-weight: normal;
        color: #666;
        border-top: 1px solid #ddd;

        @media (max-width: 1023px) {
          padding: 16px 16px 8px;
          width: 100%;
        }
      }

      dd {
        padding: 16px 40px;
        width: calc(100% - 176px);
        border-top: 1px solid #ddd;

        @media (max-width: 1023px) {
          padding: 0 16px 16px;
          width: 100%;
          border-top: none;
        }

        &.ddCompany {
          display: flex;
          align-items: flex-start;

          p {
            flex: 1;
            text-align: left;
          }

          img {
            margin-left: 32px;
            width: 56px;
            height: auto;
          }
        }
      }
    }

    .map {
      margin-top: 16px;

      iframe {
        width: 100%;

        @media (max-width: 1023px) {
          height: calc(100vw - 96px);
        }
      }
    }
  }
}

#inquiry {
  margin: 120px auto 0;
  padding-bottom: 120px;
  width: 860px;
  position: relative;
  z-index: 2;

  @media (max-width: 1023px) {
    margin: 64px auto 0;
    padding-bottom: 120px;
    width: calc(100% - 32px);
  }

  h2 {
    padding-bottom: 24px;
    font-size: 40px;
    font-weight: bold;
    line-height: 1.4em;
    letter-spacing: 0.5em;
    text-align: center;

    @media (max-width: 1023px) {
      font-size: 22px;
    }
  }

  .frame {
    margin: 16px;
    padding: 48px;
    background: #f5f5f5;
    border-radius: 24px;
    position: relative;

    @media (max-width: 1023px) {
      padding: 24px;
      border-radius: 16px;
    }

    &::before {
      content: "";
      position: absolute;
      top: -16px;
      left: -16px;
      right: -16px;
      bottom: -16px;
      border-radius: 32px;
      background: linear-gradient(
        135deg,
        rgba(252, 233, 82, 1),
        rgba(74, 163, 213, 1)
      );
      z-index: -2;
    }

    &::after {
      content: "";
      position: absolute;
      top: -12px;
      left: -12px;
      right: -12px;
      bottom: -12px;
      border-radius: 30px;
      background: #fff;
      z-index: -1;
    }

    p {
      font-weight: bold;
      text-align: center;
      @media (max-width: 1023px) {
        font-weight: 500;
        text-align: justify;
      }
    }

    a {
      margin: 1.5em auto 0;
      display: block;
      max-width: 320px;
      line-height: calc(80px - 8px);
      font-weight: bold;
      font-size: 24px;
      color: #222;
      border-radius: 40px;
      text-align: center;
      text-decoration: none;
      background: #fce952;
      border: 4px solid #ffdc00;

      @media (max-width: 1023px) {
        margin-top: 16px;
        font-size: 20px;
        line-height: calc(64px - 8px);
        border-radius: 32px;
      }

      @media (hover: hover) {
        &:hover {
          color: #fff;
          background: #4aa3d5;
          border: 4px solid #0284c7;
        }
      }
    }

    .obj {
      width: 140px;
      height: 228px;
      position: absolute;
      bottom: -56px;
      right: -56px;
      background: url(../../images/company/inquiry_obj.svg) 50% 50% no-repeat;
      background-size: contain;
      z-index: 2;

      @media (max-width: 1023px) {
        width: 96px;
        height: 176px;
        bottom: -144px;
        right: -40px;
      }
    }
  }
}

#agreement {
  margin: 120px auto 0;
  padding-bottom: 120px;
  width: 1024px;
  display: flex;
  background: url(../../images/company/agreement_obj.svg) 0 100% no-repeat;
  background-size: auto 192px;
  min-height: 320px;

  @media (max-width: 1023px) {
    margin: 64px auto 0;
    padding-bottom: 160px;
    width: calc(100% - 48px);
    flex-direction: column;
    background-position: 10% 100%;
    background-size: auto 128px;
    min-height: auto;
  }

  h2 {
    font-size: 29px;
    font-weight: bold;
    letter-spacing: 0.5em;
    width: 320px;

    @media (max-width: 1023px) {
      margin: 0;
      font-size: 22px;
      width: 100%;
    }

    span {
      margin-bottom: 16px;
      display: block;
      font-size: 16px;
      color: #4aa3d5;
      letter-spacing: 0.25em;

      @media (max-width: 1023px) {
        margin-bottom: 8px;
        letter-spacing: 0.2px;
      }
    }
  }

  .textBlock {
    flex-grow: 1;

    @media (max-width: 1023px) {
      margin-top: 40px;
    }

    h3 {
      padding-left: 40px;
      font-size: 20px;
      font-weight: bold;
      position: relative;

      @media (max-width: 1023px) {
        font-size: 18px;
      }

      &::before {
        content: "";
        display: block;
        width: 24px;
        height: 8px;
        border-radius: 4px;
        background: #ffdc00;
        position: absolute;
        left: 0;
        top: calc(50% - 4px);
      }

      & + p {
        margin-top: 24px;
        padding-left: 40px;

        @media (max-width: 1023px) {
          padding-left: 0;
        }
      }
    }

    hr {
      margin: 32px 0;
      width: 100%;
      border: 1px solid #ddd;
    }

    ul {
      margin-top: 24px;
      padding-left: 40px;
      display: flex;
      flex-direction: column;
      gap: 16px;

      @media (max-width: 1023px) {
        padding-left: 0;
      }

      li {
        padding-left: 32px;
        display: flex;
        gap: 8px;
        align-items: center;
        position: relative;
        flex-wrap: wrap;

        &::before {
          content: "";
          display: block;
          width: 20px;
          height: 20px;
          background: url(../../images/common/icon_arrow.svg) 50% 50% no-repeat;
          position: absolute;
          top: 8px;
          left: 0;
        }

        a {
          color: #222;

          @media (hover: hover) {
            &:hover {
              color: #0284c7;
            }
          }

          &[target="_blank"] {
            &:after {
              margin: 0 5px;
              font-family: "Font Awesome 6 Free";
              content: "\f1c1";
              font-weight: 300;
            }
          }

          &[download] {
            padding: 0 16px 0 40px;
            color: #666;
            text-decoration: none;
            line-height: 32px;
            box-sizing: border-box;
            border-radius: calc(16px + 2px);
            border: 2px solid #ffdc00;
            background: url(../../images/common/icon_download_gray.svg) 16px 50%
              no-repeat;

            @media (hover: hover) {
              &:hover {
                color: #fff;
                border: 2px solid #0284c7;
                background:
                  url(../../images/common/icon_download_white.svg) 16px 50%
                    no-repeat,
                  #4aa3d5;
              }
            }
          }
        }
      }
    }
  }
}
