/*===========================
 TOP 事業内容バナー アニメーション 
========================== */

.moveToLeftTrigger {
  transform: scale(0.7, 0.7) translateY(-40px) translateX(-40px);
  opacity: 0;
}

.moveToLeftTrigger.show {
  animation-name: moveToTop;
  animation-duration: 1s;
  animation-fill-mode: forwards;
  animation-timing-function: ease-out;
}

.top-service-list:nth-child(2).moveToLeftTrigger.show {
  animation-name: moveToTop;
  animation-delay: 0.3s;
  animation-duration: 1;
  animation-fill-mode: forwards;
  animation-timing-function: ease-out;
}

.top-service-list:nth-child(3).moveToLeftTrigger.show {
  animation-name: moveToTop;
  animation-delay: 0.6s;
  animation-duration: 1;
  animation-fill-mode: forwards;
  animation-timing-function: ease-out;
}

.top-service-list:nth-child(4).moveToLeftTrigger.show {
  animation-name: moveToTop;
  animation-delay: 0.9s;
  animation-duration: 1;
  animation-fill-mode: forwards;
  animation-timing-function: ease-out;
}

.top-service-list:nth-child(5).moveToLeftTrigger.show {
  animation-name: moveToTop;
  animation-delay: 1.2s;
  animation-duration: 1;
  animation-fill-mode: forwards;
  animation-timing-function: ease-out;
}

@keyframes moveToTop {
  0% {
    opacity: 0;
    transform: scale(0.8, 0.8) translateY(-40px);
  }

  60% {
    transform: scale(1.1, 1.1) translateY(-40px);
  }


  100% {
    opacity: 1;
    transform: scale(1, 1) translateY(0);
  }
}

/*===========================
 TOP MVフェードイン表示 
========================== */
.main-visual-area,
.large-bg-color-txt-lists {
  opacity: 0;
}
.main-visual-area.start,
.large-bg-color-txt-lists.start {
  animation-name: fadeUpAnime2;
  animation-duration: 2s;
  animation-delay: 1.5s;
  animation-fill-mode: forwards;
}

@keyframes fadeUpAnime2 {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

/*===========================
 TOP 事業内容バナー　ホバー 
========================== */
.top-service-img {
  width: 100%;
  height: 40rem;
  transition: 0.7s;
}

.top-service-img:hover {
  margin-top: -4rem;
}

.top-service-img:hover {
  height: 47.2rem;
}

.top-service-img img {
  height: 40rem;
  object-fit: cover;
  width: 19.2rem;
  transition: 0.7s;
}

.top-service-img:hover img {
  height: 47.2rem;
}

.top-service-img {
  position: relative;
  height: 40rem;
  margin: 0 auto;
  display: block;
  overflow: hidden;
  cursor: pointer;
}

.top-service-img img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  display: block;
  -webkit-transition: .4s ease-in-out;
  transition: .4s ease-in-out;
}

.top-service-img img:nth-of-type(1) {
  width: calc(100% - 2px);
  text-align: center;
  margin: 0 auto;
}

.top-service-img:hover img:nth-of-type(2) {
  left: 100%;
  opacity: 0;
}
@media screen and (max-width: 768px) {
  .top-service-img:hover {
    height: auto;
  }
  .top-service-img:hover {
    margin-top: 0;
  }
  .top-service-img:hover img {
    height: auto;
  }
}
/*===========================
 TOP マスクアニメーション 
========================== */
.mv-center-txt-box {
  mask-image: linear-gradient(#000, #000);
  mask-size: 72.4rem 200px;
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  mask-position: top center;
}

.mv-center-txt-box.maskTop {
  animation: mask-animation 1.5s linear forwards;
}

@keyframes mask-animation {
  0% {
    mask-size: 72.4rem 200px;
    mask-position: top center;
  }

  100% {
    mask-size: 72.4rem 100%;
    mask-position: top center;
  }
}

/*===========================
 TOP 文字横スライド
========================== */

.top-photo-gallerys-wrapper {
  animation: scroll-left 20s infinite linear .5s both;
  display: flex;
  /* スライド3枚を横並び */
}

.top-photo-gallerys-wrapper-02 {
  /* margin-left: -31.3rem; */
  animation: scroll-right 30s infinite linear .5s both;
  display: flex;
}

.top-photo-gallerys-wrapper-03 {
  animation: scroll-left2 25s infinite linear .5s both;
  display: flex;
}

/* 横スライドアニメーション */
@keyframes scroll-left {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-100%);
  }
}

/* 横スライドアニメーション */
@keyframes scroll-right {
  from {
    transform: translateX(-100%);
  }

  to {
    transform: translateX(0);
  }
}

/* 横スライドアニメーション */
@keyframes scroll-left2 {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-100%);
  }
}

/*===========================
 TOP 水色背景横から表示
========================== */
.top-message-contents {
  mask-image: linear-gradient(#000, #000);
  mask-size: 200px 100%;
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  mask-position: top right;
}

.top-message-contents.show {
  animation: bg-right-mask 1.5s linear forwards;
}

@keyframes bg-right-mask {
  0% {
    mask-size: 200px 100%;
    mask-position: top right;
  }

  100% {
    mask-size: 100% 100%;
    mask-position: top right;
  }
}


/*===========================
 TOP ピンク背景横から表示
========================== */
.recruit-area-bg.show {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 100%;
  background-color: #ED848C;
  z-index: 2;
  animation: bg-left-move 1s linear forwards;
}

@keyframes bg-left-move {
  0% {
    width: 0;
  }

  100% {
    width: 110.9rem;
  }
}

/*===========================
 TOP 左へ移動して表示
========================== */

.recruit-link-lists-box {
  transform: translateX(100px);
}

.recruit-link-lists-box.show {
  animation: rightMove 1s ease-in-out forwards;
}

@keyframes rightMove {

  /* 開始地点 */
  0% {
    transform: translateX(200px);
  }

  /* 終了地点 */
  100% {
    transform: translateX(0);
  }
}


/*===========================
 TOP 文字回転
========================== */

.animate-rotate-4 {
  animation: rotateIcon .5s ease-in-out infinite alternate;
  transform-origin: 50% 50%;
}

@keyframes rotateIcon {
  0% {
    transform: rotateZ(0deg);
  }

  to {
    transform: rotateZ(45deg);
  }
}

.animate-rotate-1 {
  animation: purupuru_anim 1.5s infinite linear;
}

@keyframes purupuru_anim {
  0% {
    transform: translate(0, 0);
  }

  5% {
    transform: translate(-5px, -0);
  }

  10% {
    transform: translate(5px, 0);
  }

  15% {
    transform: translate(-5px, -0);
  }

  20% {
    transform: translate(5px, 0);
  }

  25% {
    transform: translate(-5px, -0);
  }

  30% {
    transform: translate(0, 0);
  }

  100% {
    transform: translate(0, 0);
  }
}

.animate-rotate-2 {
  animation: 3s linear infinite rotation1;
}

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

  to {
    transform: rotate(90deg);
  }
}

.animate-rotate-3 {
  animation-name: rotateX;
  /* アニメーションの名前を指定 */
  animation-duration: 3s;
  /* アニメーションの再生時間を指定 */
  animation-timing-function: linear;
  /* アニメーションの再生速度を指定 */
  animation-iteration-count: infinite;
  /* アニメーションの再生回数を指定 */
}

@keyframes rotateX {
  0% {
    transform: rotateX(0);
    /* X軸を中心に0°回転 */
  }

  25% {
    transform: rotateX(90deg);
    /* X軸を中心に45°回転 */
  }

  50% {
    transform: rotateX(180deg);
    /* X軸を中心に90°回転 */
  }

  75% {
    transform: rotateX(270deg);
    /* X軸を中心に135°回転（裏） */
  }

  100% {
    transform: rotateX(360deg);
    /* X軸を中心に180°回転（裏） */
  }
}




/*==================================================
ふわっ
===================================*/

/* fadeUp */

.fadeUp {
  animation-name: fadeUpAnime;
  animation-duration: 0.8s;
  animation-fill-mode: forwards;
  opacity: 0;
}

.fadeUp2 {
  animation-name: fadeUpAnime;
  animation-duration: 0.8s;
  animation-delay: 0.4s;
  animation-fill-mode: forwards;
  opacity: 0;
}

.fadeUp3 {
  animation-name: fadeUpAnime;
  animation-duration: 0.8s;
  animation-delay: 0.8s;
  animation-fill-mode: forwards;
  opacity: 0;
}

.fadeUp4 {
  animation-name: fadeUpAnime;
  animation-duration: 0.8s;
  animation-delay: 1.2s;
  animation-fill-mode: forwards;
  opacity: 0;
}

.fadeUp5 {
  animation-name: fadeUpAnime;
  animation-duration: 0.8s;
  animation-delay: 1.6s;
  animation-fill-mode: forwards;
  opacity: 0;
}

.fadeUp6 {
  animation-name: fadeUpAnime;
  animation-duration: 0.8s;
  animation-delay: 2s;
  animation-fill-mode: forwards;
  opacity: 0;
}

.fadeUp7 {
  animation-name: fadeUpAnime;
  animation-duration: 0.8s;
  animation-delay: 2.4s;
  animation-fill-mode: forwards;
  opacity: 0;
}

@keyframes fadeUpAnime {
  from {
    opacity: 0;
    transform: translateY(40px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* スクロールをしたら出現する要素にはじめに透過0を指定　*/

.fadeUpTrigger,
.fadeUpTrigger2,
.fadeUpTrigger3,
.fadeUpTrigger4,
.fadeUpTrigger5 {
  opacity: 0;
  will-change: opacity;
}

/* =================================
無限横スライドアニメーション上下に動く
================================= */

.top-photo-list_02 .irregular-hexagon,
.top-photo-list_04 .irregular-hexagon,
.top-photo-list_06 .irregular-hexagon {
  animation-name: upMove;
  /* アニメーションの１回分の長さ */
  animation-duration: 15s;
  /* アニメーションの回数 */
  /* アニメーションの進行具合 */
  animation-timing-function: ease-in-out;
  /* アニメーション再生の向き */
  animation-direction: alternate;
  animation-iteration-count: infinite;
}

.top-photo-list_01 .irregular-hexagon,
.top-photo-list_03 .irregular-hexagon,
.top-photo-list_05 .irregular-hexagon {
  animation-name: downMove;
  /* アニメーションの１回分の長さ */
  animation-duration: 15s;
  /* アニメーションの回数 */
  /* アニメーションの進行具合 */
  animation-timing-function: ease-in-out;
  /* アニメーション再生の向き */
  animation-direction: alternate;
  animation-iteration-count: infinite;
}

@keyframes upMove {

  /* 開始地点 */
  0% {
    /* Y軸0px */
    transform: translateY(100px);
  }

  /* 終了地点 */
  100% {
    /* Y軸50px */
    transform: translateY(0);
  }
}

@keyframes downMove {

  /* 開始地点 */
  0% {
    /* Y軸0px */
    transform: translateY(0);
  }

  /* 終了地点 */
  100% {
    /* Y軸50px */
    transform: translateY(100px);
  }
}

/* =================================
無限横スライドアニメーション（テキスト）
================================= */

.text-infinity-scroll {
  width: 100%;
  display: flex;
  overflow: hidden;
}

.infinity-first,
.infinity-second {
  flex-shrink: 0;
  width: auto;
  height: auto;
  text-wrap: nowrap;
  word-break: keep-all;
  display: inline;
}

.infinity-first {
  animation: anim--first 1000s infinite linear 0.1s both;
}

.infinity-second {
  animation: anim--second 1000s infinite linear 0.1s both;
}

@keyframes anim--first {
  from {
    transform: translateX(0%);
  }

  to {
    transform: translateX(-100%);
  }
}

@keyframes anim--second {
  from {
    transform: translateX(0%);
  }

  to {
    transform: translateX(-100%);
  }
}

/* =================================
カーテンのように動くアニメーション
================================= */
.js-scroll-curtain {
  background-color: #0A3577;
  color: white;
  text-align: center;
  margin: 0 auto;
  --duration: .7s;
  position: relative;
  transition: clip-path var(--duration);
}

/*
.blue.js-scroll-curtain {
  background-color: #0E4EB1;
}
*/
.js-scroll-curtain::before {
  content: "";
  position: absolute;
  inset: 0;
  background-color: #0E4EB1;
  transition: clip-path .7s var(--duration);
  clip-path: inset(0);
}

/*
.blue.js-scroll-curtain::before {
  background-color: #0A3577;
}
*/
.js-scroll-curtain[data-dir="LeftToRight"] {
  clip-path: inset(0 100% 0 0);
}

.js-scroll-curtain[data-dir="LeftToRight"].is-active::before {
  clip-path: inset(0 0 0 100%);
}

.js-scroll-curtain[data-dir="RightToLeft"] {
  clip-path: inset(0 0 0 100%);
}

.js-scroll-curtain[data-dir="RightToLeft"].is-active::before {
  clip-path: inset(0 100% 0 0);
}

.js-scroll-curtain[data-dir="TopToBottom"] {
  clip-path: inset(0 0 100% 0);
}

.js-scroll-curtain[data-dir="TopToBottom"].is-active::before {
  clip-path: inset(100% 0 0 0);
}

.js-scroll-curtain[data-dir="BottomToTop"] {
  clip-path: inset(100% 0 0 0);
}

.js-scroll-curtain[data-dir="BottomToTop"].is-active::before {
  clip-path: inset(0 0 100% 0);
}

.js-scroll-curtain.is-active {
  clip-path: inset(0);
}

/* =================================
マウスホバーで文字列を表示
================================= */
.mask-img-box {
  display: block;
  overflow: hidden;
  position: relative;
  /* 相対位置指定 */
}

.mask-img-box .caption {
  text-align: center;
  z-index: 1000;
  position: absolute;
  position: absolute;
  /* 絶対位置指定 */
  top: 50%;
  left: 50%;
  transform: translateX(-50%) translateY(-50%);
  color: #fff;
  opacity: 0;
  /* マスクを表示しない */
  display: block;
  width: 100%;
}

.mask-img-box:hover .caption {
  opacity: 1;
  /* マスクを表示する */
}

.mask-img-box .caption .en {
  font-family: "Inter", sans-serif;
  font-optical-sizing: auto;
  font-weight: 500;
  font-size: 1.8rem;
  letter-spacing: 0.05em;
}

.mask-img-box .caption .ja {
  font-size: 1.2rem;
  display: block;
  letter-spacing: 0.025em;
  font-weight: 500;
}

.mask-img-box .mask {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  position: absolute;
  /* 絶対位置指定 */
  top: 50%;
  left: 50%;
  transform: translateX(-50%) translateY(-50%);
  opacity: 0;
  /* マスクを表示しない */
  background-color: rgba(2, 47, 116, 0.7);
  /* マスクは半透明 */
  -webkit-transition: all 0.2s ease;
  mix-blend-mode: multiply;
  transition: all 0.2s ease;
}

.mask-img-box:hover .mask {
  opacity: 1;
  /* マスクを表示する */
}

.blue-arrow {
  position: absolute;
  top: 0;
  left: 0;
  max-width: 124.2rem;
  height: 55rem;
  margin-left: -4.3rem;
  z-index: -1;
  width: 100%;
  background-size: contain;
  transform: translateX(-100%);
  background-repeat: no-repeat;
  background-image: url('../images/page/what_we_do/service-category-bg.svg');
}

.blue-arrow.show {
  animation-name: arrowLeftMove;
  /* アニメーションの１回分の長さ */
  animation-duration: 1s;
  /* アニメーションの回数 */
  /* アニメーションの進行具合 */
  animation-timing-function: ease-in-out;
  /* アニメーション再生の向き */
  animation-direction: alternate;
  transform: translateX(0);
}

@keyframes arrowLeftMove {

  /* 開始地点 */
  0% {
    /* Y軸0px */
    transform: translateX(-100%);
  }

  /* 終了地点 */
  100% {
    /* Y軸50px */
    transform: translateX(0);
  }
}

/*
.blue-arrow::before {
  background: #ffffff;
  content: '';
  pointer-events: none;
  position: absolute;
  inset: 0;
  z-index: 1;
}
.blue-arrow.show::before {
  animation: displayImg 0.8s linear forwards;
}
*/