@charset "UTF-8";
/* =====================
  Custom properties
===================== */
:root {
  --header-H: 120rem;

  /* ==== レイアウト ==== */
  --section-both: 120rem;
  --section-both02: 80rem;
  --section-top: 104rem;
  --section-bottom: 120rem;

  --box-both: 120rem;
  --box-topBottom: 88rem;
  --box-both02: 80rem;
  --box-top02: 64rem;
  --box-bottom02: 72rem;

  --img-round: 16rem;
  --img-round02: 8rem;
}
html {
  font-size: clamp(calc(1 / var(--width) * 100 / var(--min)), calc(1 / var(--width) * 100 * 1vw), calc(1 / var(--width) * 100 / var(--max)));
}
body {
  font-size: 16rem;
}

/* =====================
  main
===================== */
/* button */
.button {
  margin-top: 80rem;
  .button-capsule {
    background-color: var(--color-primary);
    color: var(--color-white);
    padding: 16rem 16rem 16rem 32rem;
    border-radius: calc(1px / 0);
    &:hover {
      background-color: var(--color-primary-pale);
    }
  }
  .button-text {
    min-width: 128rem;
    display: inline-block;
  }
}
.button-capsule {
  font-weight: var(--bold);
  display: inline-flex;
  align-items: center;
  column-gap: 16rem;
  transition: var(--motion-default);
  &:hover {
    .button-circle {
      &::before {
        display: none;
      }
      &::after {
        opacity: 1;
        display: inline-block;
        transform: scale(1, 1);
      }
    }
    .button-icon {
      .icon {
        opacity: 0;
      }
      &::after {
        opacity: 1;
        transition-delay: 0.05s;
        transform: translate(-50%, -50%) scale(1, 1);
      }
    }
  }
}
.button-text {
  transition: var(--motion-default);
}
.button-circle {
  width: 28rem;
  height: 28rem;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 0;
  &::before,
  &::after {
    content: '';
    position: absolute;
    background-color: var(--color-white);
    border-radius: 50%;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    transition: var(--motion-default);
  }
  &::after {
    opacity: 0;
    transform: scale(0, 0);
    z-index: -1;
  }
}
.button-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 0;
  &::after {
    content: '';
    position: absolute;
    background-color: var(--color-primary-pale);
    border-radius: 50%;
    width: 8rem;
    height: 8rem;
    display: inline-block;
    top: 50%;
    left: 50%;
    transition-duration: var(--motion-default);
    transform: translate(-50%, -50%) scale(0, 0);
    opacity: 0;
    z-index: 10;
  }
  .icon {
    width: 20rem;
    height: 20rem;
    transition-duration: var(--motion-default);
    opacity: 1;
  }
}
.b-center {
  width: fit-content;
  margin-inline: auto;
}
.b-right {
  width: fit-content;
  margin-inline: auto 0;
}

.button-more {
  margin-top: 32rem;
  &:hover {
    .button-text {
      color: var(--color-primary-pale);
    }
  }
  .button-text {
    color: var(--color-primary);
    font-size: 14rem;
  }
  .button-circle {
    &::before,
    &::after {
      background-color: var(--color-primary);
    }
  }
  .button-icon {
    &::after {
      background-color: var(--color-white);
    }
  }
}

/* title */
.section-title {
  margin-bottom: 64rem;
  .en {
    font-size: 48rem;
    margin-bottom: 8rem;
  }
  .clip-text {
    color: transparent;
    background-color: var(--color-primary);
    background-image: radial-gradient(circle, rgb(20, 216, 230) 0%, rgb(20 216 230 / 0) 75%);
    background-repeat: no-repeat;
    background-position: 16rem -5rem;
    background-size: 55rem;
    -webkit-background-clip: text;
    background-clip: text;
  }
  .ja {
    font-size: 20rem;
    line-height: 1.7;
    color: var(--color-primary);
  }
  &.white {
    .clip-text {
      background-color: var(--color-white);
    }
    .ja {
      color: var(--color-white);
    }
  }
}
.section-title02 {
  margin-bottom: 56rem;
  color: var(--color-primary);
  .en {
    display: inline-block;
    background-color: rgb(170 194 213 / 0.2);
    padding: 6rem 8rem;
    border-radius: 8rem;
    margin-bottom: 8rem;
  }
  &.white {
    color: var(--color-white);
  }
  &.white,
  &.white02 {
    .en {
      background-color: rgb(255 255 255 / 0.5);
    }
  }
  h2 {
    font-size: 40rem;
    line-height: 1.7;
  }
}
.section-title03 {
  margin-bottom: 40rem;
  font-size: 32rem;
  line-height: 1.7;
  color: var(--color-primary);
  padding-bottom: 40rem;
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: 12rem;
  border-bottom: var(--border) var(--border-gray);
  position: relative;
  &::before,
  &::after {
    content: '';
  }
  &::before {
    --size: 18rem;
    display: inline-block;
    width: var(--size);
    height: var(--size);
    border-radius: 50%;
    border: 3rem solid var(--color-primary);
    margin-top: calc((1lh - var(--size)) / 2);
  }
  &::after {
    position: absolute;
    background-color: var(--color-primary);
    width: 32rem;
    height: 2rem;
    left: 0;
    bottom: -1rem;
  }
}

/* inner */
.inner {
  padding: var(--section-top) var(--section-both) var(--section-bottom);
}
.inner-both {
  padding-inline: var(--section-both);
}
.inner-both02 {
  padding-inline: var(--section-both02);
}
.inner-noTop {
  padding-inline: var(--section-both);
  padding-block-end: var(--section-bottom);
}
.inner,
.inner-both,
.inner-both02,
.inner-noTop,
.inner-noMargin {
  max-width: 1440rem;
  margin-inline: auto;
}
.contents-box {
  padding: var(--box-topBottom) var(--box-both);
}
.contents-box02 {
  padding: var(--box-top02) var(--box-both02) var(--box-bottom02);
  border-radius: 16rem;
  border: var(--border) var(--border-gray);
  margin-top: 80rem;
}

/* list */
.list {
  padding-inline: 80rem;
  dl {
    padding-block: 24rem;
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 24rem;
    border-bottom: var(--border) var(--list-border-gray);
  }
  dt {
    width: 208rem;
  }
  .lump {
    margin-top: 16rem;
  }
}

/* text */
.text_headline {
  font-weight: var(--bold);
  font-size: 40rem;
  line-height: 1.7;
  margin-bottom: 40rem;
}

/* video */
.video {
  margin: 80rem auto 0;
  width: 656rem;
  height: 400rem;
  padding-block: 32rem;
  background-color: #161a1d;
  border-radius: var(--img-round02);
  /* a {
    display: inline-block;
    padding-block: 32rem;
    background-color: #161a1d;
    border-radius: var(--img-round02);
    position: relative;
    &::after {
      --size: 72rem;
      content: '';
      background: url(/assets/img/common/video-icon.svg) no-repeat center / contain;
      position: absolute;
      width: var(--size);
      height: var(--size);
      top: calc(50% - var(--size) / 2);
      left: calc(50% - var(--size) / 2);
      z-index: 1;
      transition: transform 0.3s ease;
    }
    &:hover {
      &::after {
        transform: scale(1.1);
      }
    }
  }
  img {
    width: 100%;
    height: 312rem;
    object-fit: cover;
    aspect-ratio: 656 / 312;
  } */

  iframe {
    width: 100%;
    height: 100%;
    aspect-ratio: 16 / 9;
  }
}

/* =====================
  animation
===================== */
.enable-javascript {
  .js__fade-in {
    opacity: 0;
    transition: opacity 1.3s ease-out;
    &.show {
      opacity: 1;
    }
  }
  .js__fade-up {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
    &.show {
      opacity: 1;
      transform: translateY(0);
    }
  }
}

/* =====================
  header
===================== */
.header {
  width: 100%;
  height: var(--header-H);
  background-color: var(--color-white);
  padding-inline: 40rem;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  column-gap: 80rem;
  transition: opacity 0.3s ease, transform 0.3s ease;
  z-index: 99;
  pointer-events: auto;
  &.fixed {
    position: fixed;
    top: 0;
    left: 0;
  }
  &.hide {
    opacity: 0;
    pointer-events: none;
    transform: translateY(-100%);
  }
}
.gnav {
  > ul {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    column-gap: 32rem;
    font-weight: var(--bold);
    > li:not(.gnav-item__contact) {
      & a {
        padding-block: 16rem;
        display: inline-block;
        &:hover {
          color: var(--color-primary);
        }
      }
    }
    & a {
      transition: var(--motion-default);
    }
  }
}
.gnav-item__contact {
  margin-left: 8rem;
  > a {
    background-color: var(--color-primary);
    color: var(--color-white);
    display: flex;
    align-items: center;
    column-gap: 16rem;
    padding: 16rem 24rem;
    border-radius: calc(1px / 0);
    &:hover {
      background-color: var(--color-primary-pale);
    }
    &::after {
      content: '';
      display: inline-block;
      background: url(/assets/img/common/icon-contact.svg) no-repeat center / contain;
      width: 22rem;
      height: 22rem;
    }
  }
}
.header-logo {
  & img {
    width: 165rem;
    aspect-ratio: 165 / 58;
  }
}

/* =====================
  contact
===================== */
.contact {
  background-color: var(--color-primary);
  color: var(--color-white);
  .inner-both {
    padding-block-start: var(--section-top);
    padding-block-end: 72rem;
  }
}
.contact_wrap {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: rgb(255 255 255 / 0.4) var(--border);
}
.contact_item {
  + .contact_item {
    border-left: rgb(255 255 255 / 0.4) var(--border);
  }
  > a {
    padding: 64rem 48rem;
    display: grid;
    grid-template-rows: repeat(2, auto);
    justify-content: center;
    row-gap: 32rem;
    background-color: var(--color-white);
    position: relative;
    z-index: 0;
    &::before {
      content: '';
      position: absolute;
      background-color: var(--color-primary);
      width: 100%;
      height: 100%;
      inset: 0;
      z-index: -1;
      transition: background-color 0.5s ease;
    }
    &::after {
      content: '';
      display: inline-block;
      background-repeat: no-repeat;
      background-size: contain;
      background-position: center;
      width: 88rem;
      height: 88rem;
      margin-inline: auto;
      transition: transform 0.4s ease-in-out;
    }
    &.mail {
      &::after {
        background-image: url(/assets/img/common/contact-mail.svg);
      }
    }
    &.catalog {
      &::after {
        background-image: url(/assets/img/common/contact-catalog.svg);
      }
    }
    &.qa {
      &::after {
        background-image: url(/assets/img/common/contact-qa.svg);
      }
    }
    &:hover {
      &::before {
        background-color: var(--color-primary-pale);
      }
      &::after {
        transform: scale(1.2);
      }
    }
  }
  h3 {
    + .ja {
      font-size: 24rem;
      margin-top: 4rem;
    }
  }
}

/* =====================
  footer
===================== */
.footer {
  > .inner-both {
    padding-block-start: 80rem;
    padding-block-end: 48rem;
  }
}
.footer-nav {
  display: flex;
  justify-content: center;
  column-gap: 88rem;
  .has-vertical {
    li {
      + li {
        margin-top: 56rem;
      }
    }
  }
  a {
    &:hover {
      opacity: var(--hover-opacity-default);
    }
  }
}
.footer-nav_item {
  .en {
    display: block;
    color: #9ccdf6;
    font-size: 12rem;
    padding-bottom: 8rem;
  }
}
.footer-subnav {
  margin-top: 16rem;
  > li + li {
    margin-top: 8rem;
  }
}
.footer-subnav_item {
  font-size: 13rem;
  color: rgb(15 20 25 / 0.7);
  display: flex;
  column-gap: 8rem;
  &::before {
    content: '';
    display: inline-block;
    background-color: rgb(15 20 25 / 0.7);
    width: 8rem;
    height: 1rem;
    margin-top: calc((1lh - 1rem) / 2);
  }
}
.footer-banner_wrap {
  margin-top: 64rem;
  display: grid;
  grid-template-columns: repeat(4, auto);
  column-gap: 16rem;
  a {
    &:hover {
      opacity: var(--hover-opacity-default);
    }
  }
  img {
    height: 100rem;
    width: auto;
  }
}
.footer-logo_wrap {
  margin-top: 40rem;
  text-align: center;
}
.footer-logo {
  width: 461rem;
  aspect-ratio: 461 / 49;
}
.footer-address {
  margin-top: 16rem;
  font-size: 12rem;
  display: flex;
  justify-content: center;
  align-items: center;
  column-gap: 8rem;
}
.footer-access {
  display: grid;
  place-items: center;
  width: 24rem;
  height: 24rem;
  border-radius: 50%;
  border: var(--border) var(--color-primary);
  &:hover {
    opacity: var(--hover-opacity-default);
  }
}
.footer-access_icon {
  width: 14rem;
  height: 14rem;
}
.footer-lower {
  border-top: var(--border) #6c6f72;
  .inner-both {
    padding-block-start: 40rem;
    padding-block-end: 48rem;
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: center;
    column-gap: 56rem;
  }
  .copyright {
    color: #868788;
    font-size: 10rem;
  }
}
.footer-lower_nav {
  font-size: 12rem;
  color: rgb(15 20 25 / 0.5);
  display: flex;
  align-items: center;
  justify-content: flex-end;
  column-gap: 24rem;
  a {
    &:hover {
      opacity: var(--hover-opacity-default);
    }
  }
}

/* =====================
  2nd
===================== */
body.company-page .gnav a[href='/company/'],
body.product-page .gnav a[href='/product/'],
body.business-page .gnav a[href='/business/'],
body.sdgs-page .gnav a[href='/sdgs/'],
body.recruit-page .gnav a[href='/recruit/'],
body.news-page .gnav a[href='/news/'] {
  color: var(--color-primary);
  position: relative;
  &::after {
    --size: 8rem;
    content: '';
    position: absolute;
    width: var(--size);
    height: var(--size);
    background-color: var(--color-primary);
    border-radius: 50%;
    left: calc(50% - var(--size) / 2);
    bottom: -5.5rem;
  }
}

.page-title {
  & h1 {
    font-size: 24rem;
    line-height: 1.7;
    color: var(--color-primary);
    + .en {
      display: inline-block;
      font-size: 104rem;
      color: transparent;
      background-color: var(--color-primary);
      background-image: radial-gradient(circle, rgb(20, 216, 230) 0%, rgb(20 216 230 / 0) 75%);
      background-repeat: no-repeat;
      background-position: -35rem 0;
      background-size: 75%;
      -webkit-background-clip: text;
      background-clip: text;
    }
  }
}
.page-title_inner {
  padding: 112rem var(--section-both) 0;
}
.bread {
  padding-block: 32rem;
  font-size: 12rem;
  letter-spacing: 0.03em;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  column-gap: 12rem;
  > li {
    &:not(:has(a)) {
      text-decoration: underline;
      text-underline-offset: 5rem;
    }
    &:not(:last-child) {
      &::after {
        content: '';
        display: inline-block;
        background: url(/assets/img/common/bread-arrow.svg) no-repeat center / contain;
        width: 8rem;
        height: 6rem;
        margin-left: 12rem;
        vertical-align: middle;
      }
    }
  }
  a:hover {
    opacity: var(--hover-opacity-default);
  }
}
.page-title_img {
  img {
    width: 100%;
    height: 562rem;
    object-fit: cover;
  }
}

/* =====================
  entry-link
===================== */
.requirements {
  + .entry-link {
    .inner {
      padding-block-start: 0;
    }
  }
}
.entry-button {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  column-gap: 24rem;
  padding: 116rem 80rem;
  border-radius: var(--img-round);
  background: url(/assets/img/recruit/entry-btn-bg.png) no-repeat center / cover;
  color: var(--color-white);
  &:hover {
    opacity: 0.9;
    .entry-button_text {
      opacity: var(--hover-opacity-default);
    }
    .button-circle {
      &::before {
        display: none;
      }
      &::after {
        opacity: 1;
        display: inline-block;
        transform: scale(1, 1);
      }
    }
    .button-icon {
      .icon {
        opacity: 0;
      }
      &::after {
        opacity: 1;
        transition-delay: 0.05s;
        transform: translate(-50%, -50%) scale(1.3);
      }
    }
  }
  .button-circle {
    width: 56rem;
    height: 56rem;
    &::before {
      background-color: transparent;
      border: 1rem solid var(--color-white);
    }
  }
  .button-icon {
    .icon {
      width: 24rem;
      height: 24rem;
    }
  }
}
.entry-button_text {
  transition: var(--motion-default);
  > span {
    display: block;
  }
  .en {
    font-size: 64rem;
    text-transform: uppercase;
  }
  .ja {
    font-size: 24rem;
    line-height: 1.7;
  }
}
