body.campaign-ended .Top_back_wrap,body.campaign-ended .section-wrapper {
  position: relative;
}
body.campaign-ended .Top_back_wrap::after,body.campaign-ended .section-wrapper::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.7);
  z-index: 20;
}

.campaign-modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.7);
  display: flex;
  justify-content: center;
  align-items: flex-start;
  padding-top: 15vh;
  z-index: 20;
}

.campaign-modal.is-active {
  opacity: 1;
  visibility: visible;
}

.campaign-modal__content {
  width: min(500px, 100%);
  max-height: calc(100vh - 40px);
  padding: 40px 30px;
  color: #fdf918;
  background: rgba(255,255,255,.5);
  border-radius: 12px;
  text-align: center;
  position: relative;
  transition: opacity .3s ease;
  overflow-y: auto;
}


.campaign-modal__content.is-hidden {
  opacity: 0;
  pointer-events: none;
}

.campaign-modal__content h2 {
  margin-bottom: 20px;
  font-size: 28px;
  text-shadow: 2px  2px 5px #00000080,
    -2px  2px 5px #00000080,
    2px -2px 5px #00000080,
    -2px -2px 5px #00000080;
}

.campaign-modal__content p {
  line-height: 1.8;
  margin-bottom: 30px;
  text-shadow: 2px  2px 5px #000000a2,
    -2px  2px 5px #000000a2,
    2px -2px 5px #000000a2,
    -2px -2px 5px #000000a2;
}

.campaign-modal__btn {
  display: inline-block;
  padding: 12px 30px;
  background: #333;
  color: #fff !important;
  text-decoration: none;
  border-radius: 999px;
}

.campaign-modal__close {
  position: absolute;
  top: 15px;
  right: 15px;
  border: none;
  background: none;
  font-size: 24px;
  cursor: pointer;
}

.campaign-modal__btn:hover {  
  background-color: #555;
  transition: background-color .3s ease;
}
.campaign-modal__btn:active {
    transform: scale(0.95);
    transition: transform 0.1s ease;
}


/*** 戻るボタン ***/

.section-body-end {
  position: relative;
  width: 100%;
  height: auto;
  display: grid;
  place-content: center;
  justify-content: center;
  align-items: center;
  text-align: center;
  z-index: 30;
  overflow: hidden;
}

.line-btn {
  position: relative;
  width: 300px;
  margin: 5em auto 5em auto;
  padding: 14px 36px;
  font-size: 16px;
  border-radius: 12px;
  cursor: pointer;
  color: white;
  background: rgba(0, 255, 191, 0.3);
  font-weight: 600;
  border: 1px solid rgba(255, 255, 255, 0.3);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
  overflow: hidden;
  z-index: 30;
}

.line-btn a {
  text-decoration: none;
  color: #fff;
}

.line-btn:hover {
  background: rgba(0, 255, 191, 0.7);
  transition: background-color .3s ease;
}
.line-btn:active {
    transform: scale(0.95);
    transition: transform 0.1s ease;
}

/* 共通 */
.line-btn span {
  position: absolute;
  background: white;
  transition: 0.4s ease;
}

/* 上線（左→右に光る） */
.line-btn .line-top {
  top: 0;
  left: 0;
  height: 2px;
  width: 0;
  background: linear-gradient(90deg, rgba(255,255,255,0) 0%, white 50%, rgba(255,255,255,0) 100%);
  transition-delay: 0s;
}

/* 右線（上→下に光る） */
.line-btn .line-right {
  top: 0;
  right: 0;
  width: 2px;
  height: 0;
  background: linear-gradient(180deg, rgba(255,255,255,0) 0%, white 50%, rgba(255,255,255,0) 100%);
  transition-delay: 0.1s;
}

/* 下線（右→左に光る） */
.line-btn .line-bottom {
  bottom: 0;
  right: 0;
  height: 2px;
  width: 0;
  background: linear-gradient(270deg, rgba(255,255,255,0) 0%, white 50%, rgba(255,255,255,0) 100%);
  transition-delay: 0.2s;
}

/* 左線（下→上に光る） */
.line-btn .line-left {
  bottom: 0;
  left: 0;
  width: 2px;
  height: 0;
  background: linear-gradient(0deg, rgba(255,255,255,0) 0%, white 50%, rgba(255,255,255,0) 100%);
  transition-delay: 0.3s;
}

/* ホバーで伸びる */
.line-btn:hover .line-top,
.line-btn:hover .line-bottom {
  width: 100%;
}

.line-btn:hover .line-right,
.line-btn:hover .line-left {
  height: 100%;
}