.top {
  position: relative;
  width: 100%;
  max-width: 1100px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 4.5fr 5.5fr;
  align-items: center;
  z-index: 10;
}

.top-left {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.top-right {
  position: relative;
  width: 100%;
}

.top-visual {
  display: block;
  width: 100%;
  line-height: 0;
  position: relative;
  /* 追加 */
  overflow: hidden;
  /* 念のため */
}

.top-visual img {
  display: block;
  width: 100%;
  height: auto;
}

.top-right .top1,
.top-right .top2 {
  position: absolute;
  inset: 0;
  transition: opacity 0.4s ease;
}

.top-right .top1 {
  position: relative;
  opacity: 1;
  z-index: 1;
}

.top-right .top2 {
  opacity: 0;
  z-index: 2;
}

.top-logo {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.top-logo-switch {
  width: 94%;
  margin: 0 auto;
  position: relative;
  display: block;
}

.top-logo-switch img {
  position: relative;
  display: block;
  line-height: 0;
  vertical-align: bottom;
}

.top-logo-switch .logo1,
.top-logo-switch .logo2 {
  display: block;
  width: 100%;
  transition: opacity 0.4s ease;
}

.top-logo-switch .logo1 {
  position: relative;
  opacity: 1;
  z-index: 1;
}

.top-logo-switch .logo2 {
  position: absolute;
  inset: 0;
  opacity: 0;
  z-index: 2;
}

.top-text {
  position: relative;
  width: 100%;
  text-align: center;
}

.top-text img {
  width: 60% !important;
}

/* 1枚目だけ通常フローに残す */
.top-text .logo1 {
  position: relative;
  opacity: 1;
}

.top-text .logo2 {
  position: absolute;
  top: -1rem;
  left: 20%;
  width: 100%;
  opacity: 0;
}

@media screen and (min-width: 1px) and (max-width: 743px) {
  .top {
    position: relative;
    grid-template-columns: repeat(1, 1fr);
  }

  .top-left {
    width: 100%;
    z-index: 2;
    display: block;
  }

  .top-logo {
    position: absolute;
    bottom: 6%;
    left: 0;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .top-logo-switch {
    width: 85%;
    margin: 0 auto;
    position: relative;
    display: block;
  }

  .top-right {
    position: relative;
    z-index: 1;
  }

  /* グラデーション */
  .top-visual::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 50%;
    /* 下30% */
    pointer-events: none;
    mix-blend-mode: multiply;
    background: linear-gradient(to top,
        rgba(0, 0, 0, 0.9) 0%,
        rgba(0, 0, 0, 0) 100%);
  }

}

@media screen and (min-width: 744px) and (max-width: 1024px) {
  .top-logo {
    width: 90%;
    margin: 0 auto;
  }

  .top-logo img {
    width: 100%;
  }

  .top-logo img {
    margin: 0 0 1rem;
  }

  .top-text {
    display: inline-block;
    margin: 0;
    padding: 0.2em 0.5em 0.4em;
    font-size: 1.6vw;
  }
}

@media screen and (min-width: 1025px) {

  .mask-fade-side {
    -webkit-mask-image:
      linear-gradient(to right,
        transparent 0%,
        #000 10%,
        #000 90%,
        transparent 100%),
      linear-gradient(to top,
        transparent 0%,
        #000 10%,
        #000 100%);
    -webkit-mask-repeat: no-repeat, no-repeat;
    -webkit-mask-size: 100% 100%, 100% 100%;
    -webkit-mask-composite: source-in;

    mask-image:
      linear-gradient(to right,
        transparent 0%,
        #000 10%,
        #000 90%,
        transparent 100%),
      linear-gradient(to top,
        transparent 0%,
        #000 10%,
        #000 100%);
    mask-repeat: no-repeat, no-repeat;
    mask-size: 100% 100%, 100% 100%;
  }
}