@charset "UTF-8";

:root {
  --color: #193a5f;
  --color-sub: #d9d9d9;
  --header-height: 4rem;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  list-style: none;
}

html {
  text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
  text-rendering: optimizeLegibility;
  word-break: auto-phrase;
  overflow-wrap: anywhere;
  /* Value: 16px to 24px Viewport: min 320px max 1920px */
  font-size: clamp(1rem, 0.9rem + 0.5vw, 1.5rem);
  line-height: 1.5;

  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  scroll-padding-top: var(--header-height);
}
body {
  background: #fff;
  width: 100%;
  height: 100%;
  overflow-x: hidden;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 700;
  font-style: normal;
  font-optical-sizing: auto;
  text-underline-position: from-font;
  text-decoration-skip-ink: none;
  text-spacing-trim: trim-auto;
  font-feature-settings: "palt";
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
}
body:has(#gnav-checkbox:checked) {
  overflow: hidden;
}
body:has([popover]:popover-open) {
  pointer-events: none;
  overflow: hidden;
}

a {
  text-decoration: none;
  color: inherit;
  transition: all 0.3s;
  &:hover {
    opacity: 0.8;
  }
}

img,
video {
  vertical-align: middle;
  width: inherit;
  height: auto;
  max-width: 100%;
}

* img {
  width: 100%;
}

.disc {
  padding-left: 1em;
  li {
    text-indent: -1em;
    &::before {
      content: "・";
      font-family: monospace;
    }
  }
}

.sec {
  position: relative;
  &::before {
    content: "";
    background: linear-gradient(to bottom, var(--color-sub), transparent);
    display: block;
    width: 100%;
    height: 8rem;
    position: absolute;
    z-index: -1;
    @media (768px < width) {
      height: 17.25rem;
    }
  }
}
.sec-inner {
  margin: 0 auto;
  padding: 7rem 1rem 3.33rem;
  max-width: 1440px;
  @media (768px < width) {
    padding: 14rem 1rem 6.66rem;
  }
}
.sec-title {
  margin-bottom: 2rem;
  font-size: 1.8rem;
  font-weight: 700;
  color: var(--color);
  text-align: center;
  padding: 0 1rem;
  position: relative;
  @media (768px < width) {
    margin-bottom: 4.75rem;
    font-size: 2rem;
  }
  &::before {
    content: "";
    height: 1rem;
    width: 100px;
    display: block;
    position: absolute;
    color: #000;
  }
}

#header {
  padding: 0 1rem;
  background-color: var(--color-sub);
  z-index: 1000;
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: fixed;
  width: 100%;
  height: var(--header-height);
  #site-title {
    margin: -0.25rem 1rem 0 0;
    height: 3rem;
    img {
      height: 100%;
      width: auto;
    }
  }
}
.navigation {
  display: flex;
  gap: 1rem;
  font-size: 1.2rem;
  text-transform: uppercase;
  white-space: nowrap;

  @media (768px < width) {
    font-size: 0.8rem;
  }
}

#gnav {
  /* ハンバーガーメニュークローズ */
  display: none;
  /* ハンバーガーメニューオープン */
  position: fixed;

  top: var(--header-height);
  left: 0;
  z-index: 1000;
  width: 100vw;
  height: calc(100dvh - var(--header-height));

  background: rgba(25, 58, 95, 0.8);
  backdrop-filter: blur(10px);

  color: #fff;
  @media (768px < width) {
    color: var(--color);
    display: flex;
    position: unset;
    width: unset;
    height: unset;
    background: none;
    color: inherit;
  }
}
#gnav-checkbox:checked ~ #gnav {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
}

#gnav-toggle {
  width: 56px;
  height: 56px;
  display: block;
  cursor: pointer;
  position: relative;
  div {
    background: var(--color);
    border-radius: 2px;
    width: 24px;
    height: 2px;
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    translate: -50% -50%;
    transform-origin: center center;
    transition: all 0.3s;
    &:nth-of-type(1) {
      translate: -50% calc((50% + 8px) * -1);
    }
    &:nth-of-type(3) {
      width: 16px;
      translate: calc((50% + 4px) * -1) calc((50% + 6px));
    }
  }
}
#gnav-checkbox {
  display: none;
  &:checked ~ #gnav-toggle {
    background: none;
    div {
      &:nth-of-type(1) {
        width: 24px;
        translate: -50% -50%;
        rotate: 45deg;
      }
      &:nth-of-type(2) {
        background: none;
        border-radius: 50%;
        width: 32px;
        height: 32px;
      }
      &:nth-of-type(3) {
        width: 24px;
        translate: -50% -50%;
        rotate: -45deg;
      }
    }
  }
}
@media (768px < width) {
  #gnav-toggle,
  #gnav-checkbox {
    display: none;
  }
}

#kv {
  padding-top: var(--header-height);
  position: relative;
  .video {
    width: 100%;
    height: calc(50vh - var(--header-height));
    object-fit: cover;
    @media (1024px < width) {
      height: calc(100vh - var(--header-height));
    }
  }
  .kv-inner {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: calc(100% - 2rem);
    .kv-text {
      margin-top: calc(var(--header-height) / 2);
      opacity: 0;
      position: absolute;
      top: 50%;
      left: 0;
      transform: translate(0, -50%);
      @media (480px < width) {
        width: 60%;
      }
    }
  }
}

#about {
  background: image-set(url(../img/about-bg.jpg) 1x, url(../img/about-bg@2x.jpg) 2x) center top 2rem no-repeat;
  background-size: 110% auto;
  @media (768px < width) {
    background-size: auto auto;
  }
  &.sec {
    &::before {
      content: none;
    }
  }
  p {
    text-align: center;
    color: var(--color);
    line-height: 2.5;
    font-weight: 700;
    @media (768px < width) {
      font-size: 1.33rem;
    }
  }
}
#service {
  background: image-set(url(../img/service-bg.png) 1x, url(../img/service-bg@2x.png) 2x) center top 2rem no-repeat;
  background-size: 110% auto;
  @media (768px < width) {
    background-size: auto auto;
  }
  .service {
    background: var(--color);
    color: #fff;
    @media (768px < width) {
      display: flex;
    }
    .img {
      position: relative;
      @media (768px < width) {
        top: -0.5rem;
        left: -0.5rem;
        width: 48%;
      }
    }
    .text {
      padding: 2.66rem;
      @media (768px < width) {
        width: 52%;
      }

      .header {
        margin-bottom: 1rem;
        position: relative;
        .title {
          font-size: 1.66rem;
          font-weight: 700;
          z-index: 1;
        }
        .en {
          font-size: 2.66rem;
          font-weight: 700;
          opacity: 0.1;
          color: var(--color-sub);
          position: absolute;
          top: 0;
          font-family: "Roboto", sans-serif;
        }
      }
      .btn {
        margin-top: 2rem;
        text-align: right;
        font-size: 0.833rem;
        a {
          padding: 0.125rem 2rem;
          border: 1px solid #fff;
          border-radius: 1rem;
          text-box-trim: trim-both;
          &:hover {
            background: #fff;
            color: var(--color);
          }
        }
      }
    }
    & + .service {
      margin-top: 2rem;
      @media (768px < width) {
        margin-top: 4.66rem;
      }
    }
  }
}

#member {
  background: image-set(url(../img/member-bg.png) 1x, url(../img/member-bg@2x.png) 2x) center top 2rem no-repeat;
  background-size: 110% auto;
  @media (768px < width) {
    background-size: auto auto;
  }
  .member-list {
    display: flex;
    gap: 2rem;
    flex-wrap: wrap;
    flex-direction: column;
    @media (768px < width) {
      flex-direction: row;
      gap: 2.66rem;
    }
    .member {
      align-items: center;
      display: flex;
      gap: 1rem;
      flex-direction: row;
      width: 100%;
      @media (768px < width) {
        flex-direction: column;
        text-align: center;
        width: calc((100% - (2.66rem * 2)) / 3);
      }
      .img {
        width: 40%;
        @media (768px < width) {
          width: 100%;
        }
      }
      .text {
        width: 60%;
        text-align: center;
        @media (768px < width) {
          width: 100%;
        }
        .name {
          margin: 0.5rem 0 0.25rem;
          font-size: 1.33rem;
        }
        .role {
          font-size: 0.66rem;
        }
      }
    }
  }
}

#company {
  background: image-set(url(../img/company-bg.png) 1x, url(../img/company-bg@2x.png) 2x) center top 2rem no-repeat;
  background-size: 110% auto;
  @media (768px < width) {
    background-size: auto auto;
  }
  .company-info {
    @media (768px < width) {
      display: flex;
      gap: 4rem;
    }
    .table {
      order: 1;
      @media (768px < width) {
        font-size: 0.833rem;
        padding: 0 2.66rem;
        width: calc((100% - 4rem) * 0.6);
      }
      div {
        display: flex;
        & + div {
          margin-top: 1rem;
        }
        dt {
          font-weight: 700;
          width: 30%;
        }
        dd {
          font-weight: 500;
          width: 70%;
        }
        & div {
          flex-direction: column;
          @media (768px < width) {
            flex-direction: row;
          }
          dt {
            width: 100%;
            @media (768px < width) {
              width: 30%;
            }
          }
          dd {
            width: 100%;
            @media (768px < width) {
              width: 70%;
            }
          }
        }
      }
    }
    .map {
      margin-top: 2rem;
      @media (768px < width) {
        margin-top: 0;
        width: calc((100% - 4rem) * 0.4);
        position: relative;
        left: -1rem;
      }
      iframe {
        height: 100%;
        min-height: 320px;
      }
    }
  }
}

#contact {
  background: image-set(url(../img/contact-bg.png) 1x, url(../img/contact-bg@2x.png) 2x) center top 2rem no-repeat;
  background-size: 110% auto;
  @media (768px < width) {
    background-size: auto auto;
  }
  .contact-list {
    text-align: center;
    @media (768px < width) {
      display: flex;
      gap: 2rem;
    }
    .contact {
      &:first-of-type {
        margin-bottom: 4rem;
      }
      @media (768px < width) {
        &:first-of-type {
          margin-bottom: 0;
        }
        width: calc((100% - 2rem) / 2);
      }
      .title {
        font-size: 1.2rem;
        @media (768px < width) {
          font-size: 1.33rem;
        }
      }
      p {
        @media (768px < width) {
          font-size: 0.833rem;
        }
      }
      .tel {
        margin: 0.25rem 0;
        font-size: 2rem;
        @media (768px < width) {
          font-size: 2.5rem;
        }
      }
      .mail {
        margin: 1rem 0;
        font-size: 1.2rem;
        @media (768px < width) {
          font-size: 1.5rem;
        }
        a {
          padding: 0.25rem 2rem;
          background: var(--color);
          color: #fff;
          border-radius: 2rem;
        }
      }
    }
  }
}

#footer-info {
  background: image-set(url(../img/earth-bg.png) 1x, url(../img/earth-bg@2x.png) 2x) center top no-repeat var(--color);
  background-size: cover;
  color: #fff;
  .sec-inner {
    padding-block: 2.66rem;
    text-align: center;
    @media (768px < width) {
      text-align: left;
      display: grid;
      grid-template:
        "fnav bnr"
        "text bnr"
        / 1fr auto;
    }
  }
  .navigation {
    grid-area: fnav;
    display: none;
    @media (768px < width) {
      display: flex;
    }
  }
  .text {
    grid-area: text;
    @media (768px < width) {
      margin-top: 2.66rem;
    }
  }
  .bnr-list {
    grid-area: bnr;
    margin-top: 2rem;
    @media (768px < width) {
      margin-top: 0;
    }
    li + li {
      margin-top: 1rem;
    }
  }
  .title {
    font-size: 1.2rem;
    margin-bottom: 0.5rem;
    @media (768px < width) {
      font-size: 0.666rem;
      margin-bottom: 0;
    }
  }
  p {
    @media (768px < width) {
      font-size: 0.583rem;
    }
  }
  .privacy-policy {
    margin-top: 1rem;
    a {
      text-decoration: underline;
    }
  }
}
#footer {
  padding: 1rem;
  background: var(--color-sub);
  text-align: center;
  @media (768px < width) {
    text-align: left;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  #footer-logo {
    padding-top: 0.5rem;
  }
  #copyright {
    font-size: 0.75rem;
    margin-top: 1rem;
    @media (768px < width) {
      font-size: 0.583rem;
      margin-top: 0;
    }
  }
}

/* js */
.js-to-top {
  cursor: pointer;
}
