.img-reveal {
  position: relative;
  overflow: hidden;
}

.img-reveal::after {
  content: "";
  position: absolute;
  inset: 0;
  background: 
  transform-origin: right;
  transform: scaleX(1);
  transition: transform 0.75s cubic-bezier(0.77, 0, 0.175, 1);
}

.img-reveal img {
  transition: transform 1s ease;
}

.img-reveal.is-visible::after {
  transform: scaleX(0);
}

/* ============================================================
   Loading Screen
============================================================ */
.header-logo-img {
  animation: blink 0.8s ease-in-out infinite alternate;
}
@keyframes blink {
  0% {
    opacity: 0.3;
  }
  100% {
    opacity: 1;
  }
}
#loading-wrapper {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 10002;
  transform: translateY(0);
  transition: transform 0.75s cubic-bezier(0.76, 0, 0.24, 1);
}
#loading-wrapper.is-loaded {
  transform: translateY(-100%);
}
#loading-wrapper #loading-back {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 10002;
  background-color: #f7f7f7;
}
#loading-wrapper #loading-logo {
  position: fixed;
  left: 50%;
  top: 50%;
  width: 103.5px;
  margin-left: -51.75px;
  margin-top: -49.5px;
  z-index: 10003;
}
#loading-wrapper #loading-logo img {
  width: 100%;
  height: auto;
}

/* PC用（768px以上でロゴサイズ変更したい場合） */
@media screen and (min-width: 768px) {
  #loading-wrapper #loading-logo {
    width: 150px;
  }
}

/* ============================================================
   Image Cover Reveal
   使い方: 画像ラッパー要素に .img-reveal を付与するだけ
============================================================ */
.img-reveal {
  position: relative;
  overflow: hidden;
}
.img-reveal::after {
  content: "";
  position: absolute;
  inset: 0;
  background: #003288;
  transform-origin: right;
  transform: scaleX(1);
  transition: transform 0.75s cubic-bezier(0.77, 0, 0.175, 1);
}
.img-reveal img {
  transition: transform 1s ease;
}
.img-reveal.is-visible::after {
  transform: scaleX(0);
}

.js-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity 0.6s ease,
    transform 0.6s ease;
}

.js-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}