/* ============================================
   Base & Reset
   ============================================ */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-size: 16px;
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

body {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 1rem;
  line-height: 1.7;
  color: #333;
  font-feature-settings: "palt";
}

img {
  display: block;
  max-width: 100%;
  width: 100%;
  height: auto;
}


/* ============================================
   Page Wrapper（背景パターン）
   ============================================ */
.page-wrapper {
  position: relative;
  width: 100%;
  min-height: 100vh;
  background-image: url('../images/bg_pattern.svg');
  background-repeat: repeat;
  background-position: center top;
}


/* ============================================
   中央コンテンツ（440px固定幅）
   ============================================ */
.center-content {
  width: 440px;
  min-height: 100vh;
  margin: 0 auto;
  background-color: #fff;
  position: relative;
  z-index: 1;
}

.main-inner {
  padding: 0 1rem;
}


/* ============================================
   MV（メインビジュアル）h1
   ============================================ */
.mv {
  width: 100%;
  line-height: 0;
  font-size: 0;
}

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


/* ============================================
   左固定サイドバー：info_quiz
   Figma配置: x=31, y=174, w=331
   left: calc(50% - 220px - 58px - 331px) = calc(50% - 609px)
   ============================================ */
.sidebar-left {
  position: fixed;
  top: 174px;
  left: calc(50% - 609px);
  width: 381px;
  z-index: 10;
  pointer-events: none;
}

.info-quiz-img {
  width: 100%;
  height: auto;
}


/* ============================================
   右固定サイドバー：right_character
   Figma配置: x=909, y=221, w=315
   left: calc(50% + 220px + 49px) = calc(50% + 269px)
   ============================================ */
.sidebar-right {
  position: fixed;
  top: 221px;
  left: calc(50% + 269px);
  width: 315px;
  z-index: 10;
  pointer-events: none;
}

.right-character-img {
  width: 100%;
  height: auto;
}


/* ============================================
   リード文セクション
   ============================================ */
.lead-section {
  width: 100%;
}

.lead-text-wrap {
  padding: 1.25rem 16px;
}

.lead-heading {
  font-size: 1.5rem;
  font-weight: 700;
  color: #f43f15;
  text-align: center;
  line-height: 1.24;
  margin-bottom: 0.875rem;
}

.lead-body {
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.75;
  color: #000;
}

.lead-image-wrap {
  width: 100%;
  line-height: 0;
}

.lead-image {
  width: 100%;
  height: auto;
  display: block;
}


/* ============================================
   スポットリストセクション
   ============================================ */
.spot-list-section {
  width: 100%;
  background-image: url('../images/img_spot-list_bg.png');
  background-repeat: repeat;
}

/* タイトル画像 */
.spot-list-heading {
  margin: 0;
  font-size: 0;
  line-height: 0;
}

.spot-list-heading img {
  display: block;
  width: 100%;
  height: auto;
}

/* グリッドエリア */
.spot-list-content {
  padding: 1.5rem 1rem;
}

/* カード外枠（鹿の絶対配置の基点） */
.spot-list-card {
  position: relative;
  background: #fff;
  border: 2px solid #9c2428;
  border-radius: 8px;
  padding: 1rem;
  overflow: visible;
}

.spot-list-grid {
  list-style: none;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem;
}

/* アンカーリンクボタン */
.spot-list-grid li {
  position: relative;
  z-index: 1;
  display: flex;
}

.spot-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 4px;
  padding: 8px;
  border-radius: 999px;
  border: 1px solid #4c3c3b;
  background: #fff;
  text-decoration: none;
  color: #4c3c3b;
  width: 100%;
  height: 100%;
  min-height: 47px;
  cursor: pointer;
  transition: opacity 0.15s;
}

.spot-btn:hover { opacity: 0.75; }

/* 番号バッジ */
.spot-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.9375rem;
  height: 1.9375rem;
  border-radius: 50%;
  background-color: #4c3c3b;
  color: #fff;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1;
  flex-shrink: 0;
}

/* スポット名（ふりがな＋名称） */
.spot-name {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  min-width: 0;
  font-weight: 700;
  line-height: 1.25;
  color: #4c3c3b;
}

.spot-yomi {
  font-size: 0.4375rem; /* 7px */
  font-weight: 700;
  line-height: 1.25;
  white-space: nowrap;
}

.spot-name-text {
  font-size: clamp(0.75rem, 3.3vw, 0.875rem);
  font-weight: 700;
  line-height: 1.35;
}

.spot-name-text small {
  display: block;
  font-size: 0.75rem;
  font-weight: 700;
}

.spot-name-text ruby {
  ruby-align: center;
  ruby-position: over;
}

.spot-name-text rt {
  font-size: 0.4375rem; /* 7px */
  font-weight: 700;
  line-height: 1;
}

/* 矢印（下向きシェブロン） */
.spot-arrow {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-right: 2px solid #4c3c3b;
  border-bottom: 2px solid #4c3c3b;
  transform: rotate(45deg);
  flex-shrink: 0;
  margin-bottom: 3px;
  margin-right: 2px;
}

/* 鹿イラスト：カード右下に絶対配置（ボタンの背面） */
.spot-deer-wrap {
  position: absolute;
  right: 42px;
  bottom: -20px;
  z-index: 0;
  pointer-events: none;
}

.spot-deer-img {
  max-width: 122px;
  height: auto;
  display: block;
}


/* ============================================
   スポットMAP
   ============================================ */
.spot-map-section {
  width: 100%;
  padding: 2.5rem 1rem 0.5rem;
}

.spot-map-wrap {
  position: relative;
  width: 100%;
}

.spot-map-label {
  position: absolute;
  top: -17px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1;
  margin: 0;
  padding: 0.5rem 1rem;
  background: #ab1b1e;
  border-radius: 12px;
  color: #fff;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}

.spot-map-img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 11px;
}

.spot-map-character {
  position: absolute;
  right: 105px;
  bottom: -33px;
  width: 142px;
  height: auto;
  pointer-events: none;
  z-index: 1;
}

.spot-map-note {
  margin: 2.5rem 0 0;
  color: #0e0e0e;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.5;
  text-align: center;
}

.cta-wrap {
  padding: 1rem 1rem 2rem;
  text-align: center;
}

.present-section + .cta-wrap {
  padding: 1.5rem 1rem 2rem;
}

.w-campaign-section + .cta-wrap {
  padding-top: 1.5rem;
}

.cta-wrap:has(+ .sumikko-banner-wrap) {
  padding-bottom: 0;
}

.sumikko-banner-wrap {
  padding: 2.5rem 1rem 2.5625rem;
  text-align: center;
}

.sumikko-banner {
  display: block;
  width: 100%;
  max-width: 408px;
  margin: 0 auto;
  text-decoration: none;
}

.sumikko-banner:hover {
  opacity: 0.85;
}

.sumikko-banner__img {
  display: block;
  width: 100%;
  height: auto;
}


/* ============================================
   リンク集
   ============================================ */
.link-section {
  position: relative;
  padding: 1.875rem 1rem 1.25rem;
  background: url("../images/link-section-bg.png") center / cover no-repeat;
  overflow: hidden;
}

.link-section::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(24, 81, 69, 0.8);
  pointer-events: none;
}

.link-section__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 406px;
  margin: 0 auto;
}

.link-section__heading {
  margin: 0 0 1.875rem;
  color: #fff;
  font-size: 2.5rem;
  font-weight: 700;
  line-height: 1;
  text-align: center;
}

.link-section__list {
  display: flex;
  flex-direction: column;
  gap: 1.0845625rem;
}

.link-section__item {
  display: block;
  width: 100%;
  aspect-ratio: 900 / 280;
  overflow: hidden;
  transition: opacity 0.2s ease;
}

.link-section__item:hover {
  opacity: 0.85;
}

.link-section__item img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}


/* ============================================
   主催
   ============================================ */
.organizer-section {
  padding: 2.5625rem 1rem 2.5rem;
  background: #fff;
}

.organizer-section__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.875rem;
  width: 100%;
  max-width: 406px;
  margin: 0 auto;
}

.organizer-section__logo {
  display: block;
  width: 63px;
  height: 78px;
}

.organizer-section__name {
  margin: 0;
  color: #000;
  font-size: 1.5rem;
  font-weight: 500;
  line-height: 1.5;
  text-align: center;
}

.organizer-section__contact {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  text-align: center;
}

.organizer-section__contact-label {
  margin: 0;
  padding: 0.25rem 0.625rem;
  background: #000;
  color: #fff;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.75;
}

.organizer-section__contact-link {
  color: #0e0e0e;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.75;
  text-decoration: none;
}

.organizer-section__contact-link:hover {
  opacity: 0.85;
}

.organizer-section__contact-mail {
  text-decoration: underline;
  text-underline-position: from-font;
}


/* ============================================
   Responsive：750px以下でサイドバーを非表示
   ============================================ */
@media (max-width: 750px) {
  .sidebar-left,
  .sidebar-right {
    display: none;
  }
}

@media (max-width: 440px) {
  .center-content {
    width: 100%;
  }
}


/* ============================================
   プレゼント
   ============================================ */
.present-section {
  position: relative;
  width: 100%;
}

.present-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url('../images/img_present_bg.png');
  background-repeat: repeat-y;
  background-size: 100% auto;
  background-position: center top;
  pointer-events: none;
  z-index: 0;
}

.present-heading {
  position: relative;
  margin: 0;
  font-size: 0;
  line-height: 0;
  z-index: 1;
}

.present-heading img {
  display: block;
  width: 100%;
  height: auto;
}

.present-body {
  position: relative;
  z-index: 1;
  padding: 1.5rem 1rem 2rem;
}

.present-card {
  background: #fff;
  border: 2px solid #9c2428;
  border-radius: 8px;
  padding: 1.25rem; /* 20px */
  overflow: hidden;
}

/* 各賞区分け */
.present-tier {
  padding: 1.5rem 1rem; /* 24px 16px */
}

.present-tier + .present-tier {
  border-top: 1px dashed #000;
}

.present-tier--stay {
  background: #fff0f0;
}

.present-tier--meal {
  background: #fff9ea;
}

.present-tier--souvenir {
  background: #f2eeee;
  padding: 1.5rem 0.5rem; /* 24px 8px */
  text-align: center;
}

.present-tier--entry {
  padding: 1.5rem 0 0;
}

.present-tier-head {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
}

.present-stamp-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.675rem;
  padding: 0.575rem;
  border-top: 2px solid #4c3c3b;
  border-bottom: 2px solid #4c3c3b;
}

.present-stamp-label {
  font-size: 1.375rem;
  font-weight: 700;
  color: #4c3c3b;
  line-height: 1;
}

.present-stamp-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.575rem;
  background: #4c3c3b;
  border: 2px solid #fff;
  border-radius: 0.675rem;
  color: #fff;
  font-size: 1.375rem;
  font-weight: 700;
  line-height: 1;
}

.present-stamp-badge-inner {
  display: inline-flex;
  align-items: baseline;
}

.present-stamp-badge__sub {
  font-size: 1.25rem;
}

.present-prize-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.575rem;
  padding: 0.5rem;
}

.present-prize-type {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.5rem;
  background: #ea5532;
  border: 1.5px solid #fff;
  border-radius: 0.575rem;
  color: #fff;
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1;
}

.present-prize-count {
  display: inline-flex;
  align-items: baseline;
  color: #ea5532;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1;
}

.present-prize-count__num {
  font-size: 1.675rem;
}

.present-items {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.present-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
  margin: 0;
}

.present-item-img {
  width: 100%;
  height: auto;
  border-radius: 8px;
  object-fit: cover;
}

.present-item-name {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0.425rem 0.85rem;
  background: #fff;
  border: 1.7px solid #333;
  border-radius: 999px;
  color: #333;
  font-size: 1.275rem;
  font-weight: 700;
  line-height: 1;
  text-align: center;
}

/* コンパクト賞（10個以上・5個以上） */
.present-tier-compact {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  margin-bottom: 1rem;
}

.present-stamp-box {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  width: 268px;
  max-width: 75%;
  padding: 0.5rem;
  border-top: 1px solid #4c3c3b;
  border-bottom: 1px solid #4c3c3b;
}

.present-stamp-box--entry {
  width: 100%;
  max-width: 228px;
}

.present-stamp-label--compact {
  font-size: 1rem;
  font-weight: 700;
  color: #4c3c3b;
  line-height: 1;
}

.present-stamp-badge--compact {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.5rem;
  background: #4c3c3b;
  border: 1px solid #fff;
  border-radius: 0.35rem;
  color: #fff;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1;
}

.present-winners {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 48px;
  background: #ea5532;
  border: 1px solid #fff;
  border-radius: 0.35rem;
  color: #fff;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1;
  flex-shrink: 0;
}

.present-winners-inner {
  display: inline-flex;
  align-items: baseline;
}

.present-winners__unit {
  font-size: 0.75rem;
}

.present-product-desc {
  margin: 0;
  color: #000;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
}

/* 参加賞 */
.present-entry-title {
  margin: 0 0 0.5rem;
  padding: 0.5rem;
  background: #da310a;
  color: #fff;
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
}

.present-entry-body {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0 0.5rem 1rem;
}

.present-entry-text {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  min-width: 0;
}

.present-entry-desc {
  margin: 0;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.25;
  color: #000;
}

.present-entry-visual {
  position: relative;
  flex-shrink: 0;
  width: 125px;
  height: 112px;
}

.present-entry-img {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 1;
  display: block;
  width: 73px;
  height: 112px;
}

.present-entry-badge {
  position: absolute;
  left: 58px;
  top: 25px;
  z-index: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 67px;
  height: 67px;
  border-radius: 50%;
  background: #ffede9;
  color: #da310a;
  font-size: 0.6875rem;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
}

/* 応募期間 */
.present-period {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  padding: 1rem 1rem 1rem;
  margin-top: 0.5rem;
}

.present-period-label {
  margin: 0;
  padding: 0.25rem 0.625rem;
  background: #000;
  color: #fff;
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.75;
}

.present-period-text {
  margin: 0;
  color: #0e0e0e;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.75;
  text-align: center;
}


/* ============================================
   参加ボタン（CTA）
   ============================================ */
.cta-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  max-width: min(408px, 100%);
  padding: 0.667em 3.333em 0.667em 1.333em;
  background: #2659b0;
  border: 2px solid #fff;
  border-radius: 999px;
  box-shadow: 0.083em 0.083em 0 #144497;
  font-size: clamp(0.875rem, 4.27vw, 1.5rem);
  text-decoration: none;
  overflow: visible;
  transition: opacity 0.2s ease;
}

.cta-btn:hover {
  opacity: 0.85;
}

.cta-btn__text {
  color: #fff;
  font-size: 1em;
  font-weight: 700;
  line-height: 1.25;
  white-space: nowrap;
}

.cta-btn__phone {
  position: absolute;
  right: 1.167em;
  bottom: -0.792em;
  width: 2.917em;
  height: auto;
  pointer-events: none;
}

/* ============================================
   スポット紹介
   ============================================ */
.spot-intro-section {
  width: 100%;
  background-image: url('../images/img_spot-list_bg.png');
  background-repeat: repeat;
  background-position: center top;
}

.spot-intro-heading {
  margin: 0;
  font-size: 0;
  line-height: 0;
}

.spot-intro-heading img {
  display: block;
  width: 100%;
  height: auto;
}

.spot-intro-notes {
  padding: 1rem 1rem 0;
  color: #0e0e0e;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.5;
}

.spot-intro-notes p {
  margin: 0;
}

.spot-intro-body {
  display: flex;
  flex-direction: column;
  gap: 1.55rem;
  padding: 1rem 1rem 2.5rem;
}

.spot-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.95rem;
  padding: 1rem;
  background: #fff;
  border: 2px solid #4c3c3b;
  border-radius: 9px;
  box-shadow: 4px 4px 0 #4c3c3b;
  scroll-margin-top: 1rem;
}

.spot-card-num {
  position: absolute;
  top: -9px;
  left: -7px;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 0;
  background: #ea5532;
  color: #fff;
  font-size: 1.294rem;
  font-weight: 800;
  line-height: 1;
}

.spot-card-main {
  display: flex;
  flex-direction: column;
  gap: 0.95rem;
}

/* 横並びレイアウト（大納言塚など） */
.spot-card-side {
  display: flex;
  gap: 0.95rem;
  align-items: flex-start;
  width: 100%;
}

.spot-card-side-img {
  width: 120px;
  height: 192px;
  object-fit: cover;
  border-radius: 8px;
  flex-shrink: 0;
}

.spot-card-side-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  min-width: 0;
}

.spot-card-side-body .spot-card-access-label {
  width: 100%;
}

.spot-card-img {
  width: 100%;
  height: auto;
  aspect-ratio: 373 / 210;
  object-fit: cover;
  border-radius: 8px;
}

.spot-card-info {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.spot-card-title {
  margin: 0;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid #4c3c3b;
  color: #4c3c3b;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1;
}

.spot-card-yomi {
  font-size: 0.8125rem;
  font-weight: 700;
}

.spot-card-desc {
  margin: 0;
  color: #4c3c3b;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.25;
}

.spot-card-sub {
  display: flex;
  gap: 0.95rem;
  align-items: flex-start;
}

.spot-card-sub-img {
  width: 48%;
  max-width: 181px;
  height: auto;
  aspect-ratio: 181 / 112;
  object-fit: cover;
  border-radius: 4px;
  flex-shrink: 0;
}

.spot-card-sub-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  min-width: 0;
}

.spot-card-sub-title {
  margin: 0;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid #4c3c3b;
  color: #4c3c3b;
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1;
}

.spot-card-sub-desc {
  margin: 0;
  color: #4c3c3b;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.25;
}

.spot-card-access {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.spot-card-access-label {
  margin: 0;
  padding: 0.25rem;
  background: #4c3c3b;
  color: #fff;
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1;
  text-align: center;
}

.spot-card-access-text {
  color: #4c3c3b;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.35;
}

.spot-card-access-text p {
  margin: 0;
}

.spot-card-map {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  padding: 0.5rem 1rem;
  background: #fff;
  border: 1px solid #3186ff;
  border-radius: 24px;
  color: #3186ff;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  transition: opacity 0.15s;
}

.spot-card-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  align-self: flex-start;
}

.spot-card-web {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.5rem 1rem;
  background: #fff;
  border: 1px solid #4c3c3b;
  border-radius: 24px;
  color: #4c3c3b;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  transition: opacity 0.15s;
}

.spot-card-web:hover {
  opacity: 0.75;
}

.spot-card-map:hover {
  opacity: 0.75;
}

.spot-card-map-icon {
  display: block;
  flex-shrink: 0;
}

.spot-card-note {
  margin: 0;
  color: #4c3c3b;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.35;
}

.spot-intro-footnote {
  margin: -1rem 0 0;
  color: #0e0e0e;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.5;
}


/* ============================================
   プレゼントキャンペーン（Wチャンス）
   ============================================ */
.w-campaign-section {
  position: relative;
  padding: 2.5rem 1rem 0;
  background:
    radial-gradient(ellipse at center, #fff 0%, #ffeded 100%);
  overflow: hidden;
}

.w-campaign-badge {
  position: absolute;
  z-index: 0;
  width: 111px;
  pointer-events: none;
  opacity: 0.5;
}

.w-campaign-badge img {
  display: block;
  width: 100%;
  height: auto;
}

.w-campaign-badge--left {
  top: 1.25rem;
  left: 0.5rem;
}

.w-campaign-badge--right {
  top: 5.5rem;
  right: 0.5rem;
}

.w-campaign-heading {
  position: relative;
  z-index: 2;
  margin: 0 auto;
  width: calc(100% - 1rem);
  max-width: 412px;
}

.w-campaign-heading img {
  display: block;
  width: 100%;
  height: auto;
}

.w-campaign-card {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  width: 100%;
  max-width: 407px;
  margin: -1.3125rem auto 0;
  padding: 2.75rem 1rem 1.5rem;
  background: #fff;
  border: 1px solid #a70028;
}

.w-campaign-pop {
  position: relative;
  width: 100%;
  max-width: 373px;
  min-height: 105px;
}

.w-campaign-pop-bubble {
  position: relative;
  width: 100%;
  max-width: 373px;
}

.w-campaign-pop-bubble-bg {
  display: block;
  width: 100%;
  height: auto;
}

.w-campaign-pop-text {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0.75rem 1rem 0.75rem 0.5rem;
  color: #000;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}

.w-campaign-pop-img {
  position: absolute;
  right: -0.25rem;
  top: 0.85rem;
  width: 106px;
  height: auto;
  pointer-events: none;
}

.w-campaign-step {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  max-width: 375px;
}

.w-campaign-step-num {
  position: absolute;
  left: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border: 2px solid #4c3c3b;
  background: #4c3c3b;
  box-shadow: inset 0 0 0 1.5px #fff;
  transform: rotate(45deg);
  flex-shrink: 0;
}

.w-campaign-step-num span {
  color: #fff;
  font-size: 1.25rem;
  font-weight: 900;
  line-height: 1;
  transform: rotate(-45deg);
}

.w-campaign-step-ribbon {
  position: relative;
  flex: 1;
  display: flex;
  align-items: center;
  width: 100%;
  min-height: 2.875rem;
  padding: 0.4rem 2.25rem 0.4rem 3.5rem;
}

.w-campaign-step-ribbon-frame {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: fill;
  pointer-events: none;
}

.w-campaign-step-title {
  position: relative;
  z-index: 1;
  margin: 0;
  color: #4c3c3b;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
  white-space: nowrap;
}

.w-campaign-prize {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  max-width: 375px;
}

.w-campaign-prize-lead {
  margin: 0;
  color: #000;
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 1.5;
}

.w-campaign-prize-em {
  color: #a70028;
  font-weight: 700;
}

.w-campaign-prize-visual {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
}

.w-campaign-prize-img {
  display: block;
  width: 260px;
  max-width: 100%;
  height: auto;
  aspect-ratio: 1;
  object-fit: cover;
}

.w-campaign-prize-img--towel {
  width: 257px;
  aspect-ratio: 257 / 258;
  object-fit: cover;
  object-position: center 40%;
}

.w-campaign-prize-limit {
  margin: 0;
  padding: 0.425rem 0.85rem;
  background: #fff;
  border: 1.7px solid #ea5532;
  border-radius: 40.8px;
  color: #ea5532;
  font-size: 1.275rem;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
}

.w-campaign-prize-notes {
  width: 100%;
  color: #000;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.5;
}

.w-campaign-prize-notes p {
  margin: 0;
}

.w-campaign-notice {
  width: 100%;
  max-width: 376px;
  padding: 1rem 0.75rem;
  background: #ecf4d9;
  color: #231815;
  text-align: center;
}

.w-campaign-notice p {
  margin: 0;
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.85;
}

.w-campaign-notice-nums {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin-right: 0.2rem;
  vertical-align: middle;
}

.w-campaign-notice-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  border: 1px solid #4c3c3b;
  background: #4c3c3b;
  box-shadow: inset 0 0 0 1px #fff;
  transform: rotate(45deg);
}

.w-campaign-notice-num span {
  color: #fff;
  font-size: 0.8125rem;
  font-weight: 900;
  line-height: 1;
  transform: rotate(-45deg);
}

.w-campaign-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(0.25rem, 1.5vw, 0.5rem);
  width: 100%;
  max-width: min(375px, 100%);
  padding: clamp(0.625rem, 2.67vw, 1rem) clamp(1rem, 5.33vw, 2rem);
  background: #a70028;
  border: 2px solid #fff;
  border-radius: 999px;
  box-shadow: 2px 2px 0 #a70028;
  color: #fff;
  font-size: clamp(0.875rem, 4.27vw, 1.5rem);
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
  transition: opacity 0.15s;
}

.w-campaign-cta:hover {
  opacity: 0.85;
}

.w-campaign-cta-icon {
  display: block;
  width: clamp(0.875rem, 3.5vw, 1.125rem);
  height: auto;
  flex-shrink: 0;
}

.w-campaign-footer {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.5rem;
  padding: 1.5rem 1rem 2.5rem;
}

.w-campaign-footer-link {
  margin: 0;
  width: 100%;
  max-width: 407px;
  color: #000;
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 1.5;
}

.w-campaign-footer-link a {
  color: #2659b0;
  text-decoration: underline;
  text-underline-position: from-font;
}

.w-campaign-contact {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
  max-width: 406px;
  text-align: center;
}

.w-campaign-contact-label {
  margin: 0;
  padding: 0.25rem 0.625rem;
  background: #000;
  color: #fff;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.75;
}

.w-campaign-contact-name {
  margin: 0;
  color: #0e0e0e;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.75;
}

.w-campaign-contact-mail {
  color: #0e0e0e;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.75;
  text-decoration: underline;
  text-underline-position: from-font;
}

.w-campaign-chars {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: clamp(0.25rem, 1.5vw, 0.375rem);
  width: min(17.3125rem, 74vw);
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
  pointer-events: none;
}

.w-campaign-char {
  display: block;
  width: auto;
  height: auto;
}

.w-campaign-char--l {
  width: 44%;
  margin-top: clamp(0.25rem, 2vw, 0.5rem);
}

.w-campaign-char--r {
  width: 54%;
}


/* ============================================
   Typography（remベース）
   ============================================ */
h2 {
  font-size: 1.5rem;
  font-weight: 700;
}

h3 {
  font-size: 1.125rem;
  font-weight: 700;
}

p {
  font-size: 0.875rem;
}

small {
  font-size: 0.75rem;
}
