.fixed-banner {
  opacity: 0;
  position: fixed;
  transform: translateY(max(2rem, 1px));
  transition:
    opacity 0.5s var(--ease-power1-out),
    transform 0.5s var(--ease-power1-out),
    visibility 0.5s var(--ease-power1-out),
    width 0.3s var(--ease-power1-out);
  visibility: hidden;
  z-index: var(--zindex-front);
}
@media screen and (min-width: 768px) {
  .fixed-banner {
    bottom: max(2rem, 1px);
    right: max(2rem, 1px);
    width: max(19.2rem, 1px);
  }
}
@media screen and (max-width: 767px) {
  /* SP は下部固定ナビ（.l-navi 約6rem）の上に配置する */
  .fixed-banner {
    bottom: max(7rem, 1px);
    right: max(1.2rem, 1px);
    width: max(13.2rem, 1px);
  }
  /* SP は MV を過ぎたら約80%に縮小する */
  .fixed-banner.is-small {
    width: max(10.6rem, 1px);
  }
}
.fixed-banner.is-shown {
  opacity: 1;
  transform: translateY(0);
  visibility: visible;
}
.fixed-banner.is-hidden {
  opacity: 0;
  pointer-events: none;
  transform: translateY(max(2rem, 1px));
  visibility: hidden;
}
.fixed-banner-link {
  display: block;
  transform-origin: right bottom;
  transition: transform 0.3s var(--ease-power1-out);
}
@media screen and (hover: hover) and (min-width: 768px) {
  .fixed-banner-link:hover {
    transform: scale(1.06);
  }
}
.fixed-banner-img {
  margin: 0;
  position: relative;
}
.fixed-banner-img img {
  height: auto;
  width: 100%;
}
/* シャイン（バナー画像でマスクし、透過部分には光らせない） */
.fixed-banner-img::after {
  animation: fixed-banner-shine 4.5s linear infinite;
  background-image: linear-gradient(
    115deg,
    transparent 35%,
    rgb(255 255 255 / 75%) 50%,
    transparent 65%
  );
  background-position: 200% 0;
  background-repeat: no-repeat;
  background-size: 300% 100%;
  content: "";
  inset: 0;
  -webkit-mask-image: var(--fixed-banner-mask);
  mask-image: var(--fixed-banner-mask);
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  pointer-events: none;
  position: absolute;
}
@keyframes fixed-banner-shine {
  0% {
    background-position: 200% 0;
  }
  20% {
    background-position: -100% 0;
  }
  100% {
    background-position: -100% 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .fixed-banner {
    transition: none;
  }
  .fixed-banner-img::after {
    animation: none;
    content: none;
  }
}
