@charset "UTF-8";

/* リセットcss*/
*,
*::before,
*::after {
  box-sizing: border-box;
}
* {
  margin: 0;
  padding: 0;
}
ul,
ol {
  list-style: none;
}
img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}
a,
address {
  text-decoration: none;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
input,
button,
textarea,
select {
  appearance: none;
  -webkit-appearance: none;
  border-radius: 0;
  font: inherit;
  color: inherit;
}
a,
button {
  position: relative;
  display: inline-block;
}
:focus {
  outline: none;
}
:focus-visible {
  box-shadow:
    0 0 0 2px #fff,
    0 0 0 4px #0071ff;
  border-radius: 4px;
}
p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: anywhere;
}
button {
  cursor: pointer;
  background: transparent;
  border: none;
}
@media (prefers-reduced-motion: reduce) {
  * {
    animation: none;
    transition: none;
  }
}

/* フォントサイズ計算 */
html {
  font-size: 62.5%; /* 16px * 62.5% = 10px */
  overflow-x: hidden;
  /* scroll-behavior: smooth; */
}

/* ベース */
body {
  color: #333333;
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic Pro", "Meiryo", sans-serif;
  font-size: 1.6rem;
  line-height: 1.5;
  font-weight: 400;
  overflow-x: hidden;
  font-feature-settings: "palt";
}
a {
  transition: 0.4s ease;
  transition: background-position 0.4s ease;
}

/*フォント*/
.noto-light {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: 300;
  font-style: normal;
}
.noto-regular {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: 400;
  font-style: normal;
}
.noto-Medium {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: 500;
  font-style: normal;
}
.noto-SemiBold {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: 600;
  font-style: normal;
}
.noto-Bold {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: 700;
  font-style: normal;
}
.noto-extraBold {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: 800;
  font-style: normal;
}
.noto-Black {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: 900;
  font-style: normal;
}
.barlow-semi-condensed-medium {
  font-family: "Barlow Semi Condensed", sans-serif;
  font-weight: 500;
  font-style: normal;
}
.barlow-semi-condensed-black {
  font-family: "Barlow Semi Condensed", sans-serif;
  font-weight: 900;
  font-style: normal;
}
.barlow-semi-condensed-extrabold-italic {
  font-family: "Barlow Semi Condensed", sans-serif;
  font-weight: 800;
  font-style: italic;
}
/* サイトメンテナンス用（クラスの外し忘れ注意） */
.no-click {
  pointer-events: none;
}

/*大文字*/
.uppercase {
  text-transform: uppercase;
}
/* フォント色 */
.font-blue {
  color: #57e6ff;
}
/*header*/
header {
  z-index: 9999;
  position: fixed;
  background-color: #ffffff;
  width: 100vw;
  box-shadow:
    0 0 5px rgba(180, 180, 180, 0.3),
    0 0 8px rgba(180, 180, 180, 0.15);
}

#header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  height: 75px;
  padding: 0 2%;
}
.header__rogo {
  width: clamp(175px, 22vw, 308px);
}
.nav ul {
  display: flex;
  font-size: 1.5rem;
}
.nav ul li {
  align-items: center;
  flex-shrink: 0;
  justify-content: center;
}
.nav ul li:not(:last-child) {
  margin-right: 1vw;
}
.nav ul li:first-child::before {
  content: "|";
  color: #333;
  margin-right: 1vw;
}
.nav ul li::after {
  content: "|";
  color: #333;
  margin-left: 1vw;
}
.nav ul li a {
  color: #333;
}
.nav ul li a:hover {
  opacity: 0.7;
}
#nav-toggle {
  display: none;
}
.hamburger__title {
  display: none;
}
.hamburger__bottom {
  display: none;
}
@media (max-width: 767px) {
  #header {
    height: 70px;
    padding: 0 5%;
  }

  /* ハンバーガーメニューボタン */
  #nav-toggle {
    display: block;
    z-index: 9999;
    position: relative;
    width: 39px;
    height: 30px;
    appearance: none;
    border: 0;
    background-color: #fff;
    cursor: pointer;
  }
  #nav-toggle span {
    position: absolute;
    width: 39px;
    height: auto;
    bottom: -5px;
    left: 50%;
    transform: translateX(-50%);
  }
  #nav-toggle span img {
    width: 100%;
    height: 100%;
  }
  #nav-toggle span::after,
  #nav-toggle span::before {
    position: absolute;
    display: block;
    content: "";
    width: 38px;
    height: 2.5px;
    border-radius: 1.25px;
    background-color: #333;
    left: 50%;
    transform: translateX(-50%);
  }
  #nav-toggle span,
  #nav-toggle span::before,
  #nav-toggle span::after {
    transition:
      transform 0.4s ease,
      top 0.4s ease,
      bottom 0.4s ease;
  }
  #nav-toggle span::after {
    top: -15px;
  }
  #nav-toggle span::before {
    top: -10px;
  }
  #nav-toggle.open span {
    bottom: -10px;
  }
  #nav-toggle.open span img {
    opacity: 0;
  }
  #nav-toggle.open span::before {
    top: -10px;
    transform: translateX(-50%) rotate(-45deg);
  }
  #nav-toggle.open span::after {
    top: -10px;
    transform: translateX(-50%) rotate(45deg);
  }
  /* メニュー画面 */
  .nav {
    z-index: 1;
    position: fixed;
    width: 100vw;
    height: calc(100dvh - 70px);
    top: 70px;
    right: -100vw;
    background-color: #333;
    padding: min(40px, 10vw) 0;
    opacity: 0;
    transition:
      right 0.5s ease,
      opacity 0.5s ease;
  }
  /* メニューリスト */
  .nav ul {
    flex-direction: column;
    align-items: center;
  }
  .nav ul li {
    width: 85vw;

    text-align: center;
    border-bottom: solid 1px #fff;
  }
  .nav ul li:first-child {
    border-top: solid 1px #fff;
  }
  .nav ul li a {
    font-size: 1.2rem;
    color: #fff;
    text-decoration: none;
    font-weight: 900;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: min(13px, 3.3vw) 0;
    text-align: left;
    letter-spacing: 0.1em;
  }
  .nav ul li:not(:last-child) {
    margin-right: 0;
  }
  .nav ul li:first-child::before {
    display: none;
  }
  .nav ul li::after {
    display: none;
  }
  .nav ul li a::after {
    content: "";
    background: url(/assets/images/common/arrow-white.webp) center / contain
      no-repeat;
    display: block;
    width: 6px;
    height: 11px;
    margin-left: 0;
    margin-right: min(28px, 7.1vw);
  }
  .hamburger__title {
    display: block;
    font-size: 3.8rem;
    letter-spacing: 0;
    line-height: 1.1;
  }
  .hamburger__bottom {
    display: block;
    color: #fff;
    width: 85vw;
    margin-inline: auto;
    text-align: center;
  }
  /* 問い合わせボタン */
  .hamburger__bottom-btn {
    width: 156px;
    height: 39px;
    margin-inline: auto;
    margin-top: 29px;
    color: #fff;
    display: flex;
    gap: 17px;
    justify-content: center;
    align-items: center;
    position: relative;
    overflow: hidden;
    z-index: 0;
  }
  .hamburger__bottom-btn::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(35deg, #41adbf, #333 85%);
    opacity: 1;
    transition: opacity 0.4s ease;
    z-index: -1;
    /* Safari向け */
    will-change: opacity;
    backface-visibility: hidden;
    transform: translateZ(0);
  }
  .hamburger__bottom-btn::after {
    content: "";
    position: absolute;
    inset: 0;
    background: #41adbf;
    z-index: -2;
  }
  .hamburger__bottom-btn:hover::before {
    opacity: 0;
  }
  .hamburger__bottom-p {
    font-size: 1.2rem;
    letter-spacing: 0.1em;
    position: relative;
    z-index: 2;
  }

  .hamburger__bottom small {
    line-height: 1.4;
    font-size: 1.1rem;
    letter-spacing: 0.1em;
  }

  /* メニューが開いた時のスタイル */
  .nav.open {
    right: 0;
    opacity: 1;
  }
}

/*共通コンバージョン*/
/* 改行 */
.br__1023-not {
  display: none;
}
.br__767-not {
  display: none;
}
.br__767 {
  display: block;
}
@media (max-width: 1023px) {
  .br__1023-not {
    display: block;
  }
}
@media (max-width: 767px) {
  .br__767-not {
    display: block;
  }
  .br__767 {
    display: none;
  }
}
/* FV（top） */
.top__fv {
  position: relative;
  height: 100dvh;
  /* height: calc(100dvh - 75px); */
  overflow: hidden;
}
.top__fv video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -1;
}
.top__fv h2 {
  position: absolute;
  bottom: 4%;
  left: 0;
  color: #fff;
  letter-spacing: 0.2em;
  font-size: max(2rem, 2.43vw);
  line-height: 1;
  margin: 0 7%;
}
.top__fv h2 span {
  font-size: max(6rem, 10.12vw);
  letter-spacing: 0;
  white-space: nowrap;
}
@media (max-width: 767px) {
  .top__fv {
    /* height: calc(100dvh - 75px); */
    height: 100dvh;
  }
  .top__fv h2 span {
    font-size: 6rem;
  }
  .top__fv h2 {
    bottom: 3%;
    font-size: 1.6rem;
    line-height: 1.4;
  }
  .top__fv-h2-span {
    line-height: 1;
  }
}
/* FV（下層ページ） */
.inner__fv {
  position: relative;
  height: 100dvh;
  /* height: calc(100dvh - 75px); */
  overflow: hidden;
}
.inner__fv picture {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
}
.inner__fv picture img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.inner__fv-h1 {
  position: absolute;
  bottom: 7%;
  left: 7%;
  color: #fff;
  line-height: 1;
}
.inner__fv-h1-en {
  font-size: clamp(6.4rem, 10vw, 14.2rem);
  letter-spacing: 0;
  line-height: 1.1;
  white-space: nowrap;
}
.inner__fv-h1-sub {
  position: relative;
  font-size: clamp(1.4rem, 2.2vw, 3.1rem);
  padding-left: 68px;
  letter-spacing: 0.15em;
}
.inner__fv-h1-sub::before {
  position: absolute;
  content: "";
  left: 0;
  top: 50%;
  width: 57px;
  height: 3px;
  background: #fff;
  transform: translateY(-50%);
}
/* company */
.inner__fv-h1::before {
  z-index: -1;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -60%);
  content: "";
  width: min(50vw, 710px);
  aspect-ratio: 502 / 242;
  background: url(/assets/images/common/company__fv-textbg-1.webp) no-repeat
    center/contain;
}
/* works */
.inner__fv-h1-works::before {
  background: url(/assets/images/common/works__fv-textbg-1.webp) no-repeat
    center/contain;
}
/* about */
.inner__fv-h1-about::before {
  background: url(/assets/images/common/about__fv-textbg-1.webp) no-repeat
    center/contain !important;
}
/* recruit */
.inner__fv-h1-recruit::before {
  background: url(/assets/images/common/recruit__fv-textbg-1.webp) no-repeat
    center/contain;
}
/* contact */
.inner__fv-h1-contact::before {
  background: url(/assets/images/common/contact__fv-textbg-1.webp) no-repeat
    center/contain;
}
/* プライバシーポリシー */
.inner__fv-h1-contact-privacy::before {
  background: url(/assets/images/common/contact__fv-textbg-1.webp) no-repeat
    center/contain;
  left: 27%;
}
@media (max-width: 767px) {
  .inner__fv {
    /* height: calc(100dvh - 70px); */
    height: 100dvh;
  }
  .inner__fv-h1 {
    bottom: 6%;
    line-height: 0.2;
  }
  .inner__fv-h1::before {
    transform: translate(-50%, -50%);
    width: 58vw;
  }
  .inner__fv-h1-sub::before {
    width: 26px;
    height: 2px;
  }
  .inner__fv-h1-sub {
    padding-left: 33px;
  }
  .inner__fv-h1-contact-privacy::before {
    left: 50%;
  }
}
/* swiper */
.swiper {
  width: 100%;
  overflow: hidden;
}

@media (max-width: 767px) {
  .swiper {
    margin: 0;
  }
}

/* フッター直前の下部リンク */
.bottom__link {
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr 1fr;
  height: 265px;
}
.bottom__link strong {
  line-height: 1.1;
}
.bottom__link-head {
  font-size: clamp(7.1rem, 7vw, 9.9rem);
}
.bottom__link-h3sub {
  position: relative;
  font-size: clamp(1.6rem, 1.6vw, 2.3rem);
  padding-left: 50px;
  letter-spacing: 0.15em;
}
.bottom__link-h3sub::before {
  position: absolute;
  content: "";
  left: 0;
  top: 50%;
  width: 42px;
  height: 2px;
  background: #fff;
  transform: translateY(-50%);
}
/* 左（会社案内） */
.bottom__link-left {
  color: #fff;
  display: flex;
  justify-content: end;
  align-items: center;
  background: url(/assets/images/common/top__bg-3.webp) center / cover no-repeat;
}
.bottom__link-left-text {
  margin-right: 14vw;
}
.bottom__link-left-bg {
  position: relative;
  z-index: 0;
  margin-inline: auto;
}
.bottom__link-left-bg::before {
  z-index: -1;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-60%, -45%);
  content: "";
  width: min(29vw, 412px);
  aspect-ratio: 597 / 334;
  background: url(/assets/images/common/company__fv-textbg-1.webp) no-repeat
    center/contain;
}

/* ボタン */
.bottom__link-left-span {
  width: 156px;
  height: 39px;
  color: #fff;
  display: flex;
  gap: 20px;
  justify-content: center;
  align-items: center;
  position: relative;
  overflow: hidden;
  z-index: 0;
  margin-top: 36px;
}
.bottom__link-left-span::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(35deg, #6134c1, #333 85%);
  opacity: 1;
  transition: opacity 0.4s ease;
  z-index: -1;
  /* Safari向け */
  will-change: opacity;
  backface-visibility: hidden;
  transform: translateZ(0);
}
.bottom__link-left-span::after {
  content: "";
  position: absolute;
  inset: 0;
  background: #6134c1;
  z-index: -2;
}
.bottom__link-left:hover .bottom__link-left-span::before {
  opacity: 0;
}

.bottom__link-left-span-p {
  font-size: 2rem;
  line-height: 1.6;
  position: relative;
  z-index: 1;
}
.bottom__link-left-span img {
  width: 6px;
  height: auto;
}
/* 左（採用情報） */
.bottom__link-left-recruit {
  color: #fff;
  display: flex;
  justify-content: end;
  align-items: center;
  background: url(/assets/images/common/company__bg-1.webp) center / cover
    no-repeat;
}
.bottom__link-left-bg-recruit {
  position: relative;
  z-index: 0;
  margin-inline: auto;
}
.bottom__link-left-bg-recruit::before {
  z-index: -1;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-60%, -45%);
  content: "";
  width: min(29vw, 412px);
  aspect-ratio: 450 / 261;
  background: url(/assets/images/common/company__bottom-textbg-2.webp) no-repeat
    center/contain;
}
/* ボタン */
.bottom__link-left-span-recruit {
  width: 156px;
  height: 39px;
  color: #fff;
  display: flex;
  gap: 20px;
  justify-content: center;
  align-items: center;
  position: relative;
  overflow: hidden;
  z-index: 0;
  margin-top: 36px;
}
.bottom__link-left-span-recruit::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(35deg, #002e67, #0071ff 99%);
  opacity: 1;
  transition: opacity 0.4s ease;
  z-index: -1;
}
.bottom__link-left-span-recruit::after {
  content: "";
  position: absolute;
  inset: 0;
  background: #0071ff;
  z-index: -2;
}
.bottom__link-left-recruit:hover .bottom__link-left-span-recruit::before {
  opacity: 0;
}
/* 右（お問い合わせ） */
.bottom__link-right {
  color: #fff;
  display: flex;
  justify-content: left;
  align-items: center;
  background: url(/assets/images/common/top__bg-4.webp) center / cover no-repeat;
}
.bottom__link-right-text {
  margin-left: 9vw;
}
.bottom__link-right-bg {
  position: relative;
  z-index: 0;
  margin-inline: auto;
}
.bottom__link-right-bg::before {
  z-index: -1;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-60%, -45%);
  content: "";
  width: min(29vw, 412px);
  aspect-ratio: 450 / 261;
  background: url(/assets/images/common/contact__fv-textbg-1.webp) no-repeat
    center/contain;
}

/* ボタン */
.bottom__link-right-span {
  width: 156px;
  height: 39px;
  color: #fff;
  display: flex;
  gap: 20px;
  justify-content: center;
  align-items: center;
  position: relative;
  overflow: hidden;
  z-index: 0;
  margin-top: 36px;
}
.bottom__link-right-span::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(35deg, #009089, #333 85%);
  opacity: 1;
  transition: opacity 0.4s ease;
  z-index: -1;
  /* Safari向け */
  will-change: opacity;
  backface-visibility: hidden;
  transform: translateZ(0);
}
.bottom__link-right-span::after {
  content: "";
  position: absolute;
  inset: 0;
  background: #009089;
  z-index: -2;
}
.bottom__link-right:hover .bottom__link-right-span::before {
  opacity: 0;
}

.bottom__link-right-span-p {
  font-size: 2rem;
  line-height: 1.6;
  position: relative;
  z-index: 1;
}
.bottom__link-right-span img {
  width: 6px;
  height: auto;
}
@media (max-width: 1023px) {
  .bottom__link-left {
    justify-content: left;
  }
  .bottom__link-left-recruit {
    justify-content: left;
  }
  .bottom__link-left-text {
    margin-left: 9vw;
    margin-right: 0;
  }
}
@media (max-width: 767px) {
  .bottom__link {
    grid-template-columns: 1fr;
    height: auto;
  }
  /* 上（会社案内） */
  .bottom__link-left-text {
    height: 115px;
    margin-left: 0;
    margin-right: 0;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    transform: translateY(-5px);
  }
  .bottom__link-left {
    height: 148px;
    justify-content: center;
    align-items: center;
  }
  .bottom__link-left-span {
    align-self: flex-end;
    width: 127px;
    height: 32px;
    gap: 16px;
    margin-top: 0;
    transform: translateX(-48px);
  }
  .bottom__link-left-bg {
    transform: translateX(48px);
  }
  .bottom__link-left-bg::before {
    width: min(305px, 80vw);
  }
  /* 上（採用情報） */
  .bottom__link-left-recruit {
    height: 148px;
    justify-content: center;
    align-items: center;
  }
  .bottom__link-left-span-recruit {
    align-self: flex-end;
    width: 127px;
    height: 32px;
    gap: 16px;
    margin-top: 0;
    transform: translateX(-29px);
  }
  .bottom__link-left-bg-recruit {
    transform: translateX(29px);
  }
  .bottom__link-left-bg-recruit::before {
    width: min(305px, 80vw);
  }
  /* 下（お問い合わせ） */
  .bottom__link-right {
    height: 148px;
    justify-content: center;
    align-items: center;
  }
  .bottom__link-right-text {
    height: 115px;
    margin-left: 0;
    margin-right: 0;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    transform: translateY(-5px);
  }
  .bottom__link-right-span {
    align-self: flex-end;
    width: 127px;
    height: 32px;
    gap: 16px;
    margin-top: 0;
    transform: translateX(-40px);
  }
  .bottom__link-right-bg {
    transform: translateX(40px);
  }
  .bottom__link-right-bg::before {
    width: min(305px, 80vw);
    transform: translate(-55%, -45%);
  }
}

/*footer*/
.footer {
  padding: 57px 0 46px;
  width: min(71.4vw, 1000px);
  margin-inline: auto;
  height: 185px;
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.footer-left {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.footer__rogo {
  width: clamp(235px, 22vw, 308px);
}
.footer__p {
  font-size: 1.4rem;
  line-height: 1.4;
  letter-spacing: 0.1em;
}
small {
  align-self: end;
  justify-self: end;
  font-size: clamp(1rem, 0.8vw, 1.2rem);
  letter-spacing: 0.1em;
  margin-inline: min(-7%, 100px);
  white-space: inherit;
}
@media (max-width: 1023px) {
  .footer {
    width: 85vw;
  }
}
@media (max-width: 767px) {
  .footer {
    padding: 49px 0;
    margin-inline: auto;
    height: 242px;
    grid-template-columns: 1fr;
  }
  .footer-left {
    height: 78px;
  }
  small::before {
    content: "";
    display: block;
    width: 85vw;
    height: 1px;
    background-color: #333;
    margin-bottom: 20px;
  }
  small {
    text-align: center;
    margin-inline: 0;
    letter-spacing: 0.05em;
  }
}

/* アニメーション */
.animation__inline-block {
  display: inline-block;
}
