html {
  scroll-padding-top: 80px;
}
/* 20周年専用。既存の共通CSSは変更しない。 */
.cp20 {
  position: relative;
  color: #474747;
  background: #fff;
  font-size: 18px;
  line-height: 2;
  overflow-wrap: anywhere;
  margin: -20px auto 0;
  font-family:
    Inter,
    YuGothic,
    Yu Gothic,
    Hiragino Kaku Gothic ProN,
    ヒラギノ角ゴ ProN W3,
    sans-serif !important;
}

.cp20 *,
.cp20 *::before,
.cp20 *::after {
  box-sizing: border-box;
}
.cp20 p,
.cp20 h2,
.cp20 h3 {
  margin: 0;
  padding: 0;
}
.cp20 img {
  display: block;
  max-width: 100%;
  height: auto;
}
.cp20__opening {
  position: relative;
  isolation: isolate;
}
.cp20__opening::before {
  content: "";
  position: absolute;
  top: 0;
  left: 50%;
  width: 100vw;
  height: 607px;
  transform: translateX(-50%);

  background:
    linear-gradient(
      to bottom,
      transparent 70%,
      #fff 100%
    ),
    url("../images/20th/cp-mv-bg_pc.webp")
      center top / 100% auto no-repeat;

  opacity: 0;
  z-index: -1;
  animation: cp20-bg-fade 1s ease-out forwards;
}
@media screen and (max-width: 1100px) {
  .cp20__opening::before {
    left: 0;
    width: 1100px;
    transform: none;
  }
}

@keyframes cp20-bg-fade {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}
.cp20__mv {
  text-align: center;
}
.cp20 .cp20__logo {
  margin: 0 auto;
  animation: cp20-clear 1.1s 0.55s both;
}
.cp20 .cp20__headline {
  margin: 0 !important;
  padding: 0 !important;
  line-height: 0;
}
.cp20 .cp20__copy {
  margin: 0 auto;
  animation: cp20-rise 0.9s 1.05s both;
}
.cp20__intro {
  text-align: center;
  animation: cp20-fade 0.8s 1.85s both;
}
.cp20__movies {
  margin: 0 auto;
}
.cp20__movie {
  text-align: center;
}
.cp20__video {
  position: relative;
  width: 100%;
  aspect-ratio: 16/9;
  background: #bcbcbc;
}
.cp20__video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.cp20 .cp20__movie h3 {
  font-size: 20px;
  line-height: 1.5;
  font-weight: 700;
  padding-top: 16px;
}
.cp20__movie > p {
  font-size: 20px;
  line-height: 1.5;
  font-weight: 700;
}
.cp20__gift {
  margin: 0 auto;
}
.cp20 .cp20__gift-title {
  color: #996A1A;
  text-align: center;
  font-weight: 700;
  line-height: 1.6;
  margin: 0 0 24px;
  padding: 0;
}
.cp20 .cp20__gift-image {
  width: 100%;
}
.cp20__gift-body {
  margin-top: 24px;
}
.cp20 .cp20__benefit {
  margin-top: 24px;
}
.cp20__notes {
  margin-top: 24px;
  line-height: 1.6;
}

.cp20__cta-wrap {
  text-align: center;
}
/* JSは監視登録できた要素だけを非表示にする。JS無効時はすべて表示。 */
.cp20-reveal.is-pending {
  opacity: 0;
  transform: translateY(18px);
}
.cp20-reveal {
  transition:
    opacity 0.75s ease,
    transform 0.75s ease;
}
@keyframes cp20-fade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes cp20-clear {
  from {
    opacity: 0;
    filter: blur(8px);
  }
  to {
    opacity: 1;
    filter: blur(0);
  }
}
@keyframes cp20-rise {
  from {
    opacity: 0;
    transform: translateY(15px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .cp20 *,
  .cp20 *::before,
  .cp20 *::after {
    animation: none !important;
    transition: none !important;
  }
  .cp20-reveal.is-pending {
    opacity: 1;
    transform: none;
  }
}

.cp20--pc {
  width: 1100px;
}
.cp20--pc .cp20__mv {
  padding: 0 0 40px;
}
.cp20--pc .cp20__logo {
  max-width: 464px;
  margin-bottom: 16px;
}
.cp20--pc .cp20__copy {
  max-width: 1008px;
}
.cp20--pc .cp20__intro {
  width: 900px;
  margin: 0 auto;
}
.cp20--pc .cp20__paragraph {
  margin-bottom: 40px;
  letter-spacing: 0.06em;
}
.cp20--pc .cp20__movies {
  width: 544px;
  padding-top: 40px;
}
.cp20--pc .cp20__movie {
  margin-bottom: 40px;
}
.cp20--pc .cp20__gift {
  width: 900px;
  padding-top: 80px;
}
.cp20--pc .cp20__gift-title {
  font-size: 32px;
}
.cp20--pc .cp20__notes {
  font-size: 14px;
}
.cp20--pc .cp20__cta-wrap {
  padding: 0 0 80px;
}

/* リニューアルトップCSSからCTAボタンCSS転載使用　*/
.cp20 .arrow-circle {
  fill: currentColor;
}
.cp20 .arrow-path {
  stroke: #fff;
  fill: none;
}
.cp20 .more-button {
  margin: 80px auto 0;
  display: grid;
  place-items: center;
  height: 80px;
  font-weight: 700;
  font-size: 21px;
  padding-inline: 2em 3.5em;
  width: 40%;
  /* max-width: fit-content;*/
  text-align: center;
  background-color: #fff;
  border: 2px solid #f54851;
  color: #f54851;
  border-radius: 2em;
  position: relative;
  line-height: 1.2;
  text-decoration: none;
}
.cp20 .more-button svg {
  width: 1.5em;
  height: 1.5em;
  position: absolute;
  top: 50%;
  right: 1em;
  transform: translateY(-50%);
}
.cp20 .more-button.reverse {
  background-color: #f54851;
  border: 2px solid #fff;
  color: #fff;
}
.cp20 .more-button.reverse .arrow-path {
  stroke: #f54851;
}
@media (hover: hover) {
  .cp20 .more-button:hover {
    background-color: #f54851;
    color: #fff;
  }
  .cp20 .more-button:hover .arrow-path {
    stroke: #f54851;
  }
  .cp20 .more-button.reverse:hover {
    background-color: #fff;
    border: 2px solid #f54851;
    color: #f54851;
  }
  .cp20 .more-button.reverse:hover .arrow-path {
    stroke: #fff;
  }
}