@charset "UTF-8";

/* =========================================================
   1. Base & Reset
   ========================================================= */
* {
  margin: 0;
  padding: 0;
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
}
ul, ol, div {
  margin: 0;
  padding: 0;
}
ul {
  list-style-type: none;
}
a {
  color: inherit;
  text-decoration: none;
}
html {
  font-family: "Noto Sans JP", sans-serif;
  font-size: 10px;
  color: #171717;
  letter-spacing: 0.05em;
  scroll-behavior: smooth;
  background-color: #171717; 
}

/* =========================================================
   2. Utility & Common
   ========================================================= */
.container {
  width: 100%;
  padding: 0 4%;
  margin: 0 auto;
  max-width: calc(980px + 8%);
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
}
.image {
  width: 100%;
  height: auto;
  -o-object-fit: cover;
     object-fit: cover;
  -o-object-position: center;
     object-position: center;
}
.image--100 { height: 100%; }
.image--auto { width: auto; }
.image--contain {
  -o-object-fit: contain;
     object-fit: contain;
}

.overflow { overflow: hidden; }
.inline-block { display: inline-block; }
.bold { font-weight: 700; }
.pink { color: #cb0132; }

/* ---------------------------------------------------------
   表示切り替え用ユーティリティクラス
--------------------------------------------------------- */
@media screen and (max-width: 767px) {
  .pc { display: none !important; }
}
@media screen and (min-width: 768px) {
  .sp { display: none !important; }
}
.sm { display: none; }

/* 行間・フォントサイズのベース */
.desc { font-size: 1.8rem; line-height: 1.6em; }
.desc.fs16 { font-size: 1.6rem; }

/* =========================================================
   3. Buttons
   ========================================================= */
.button {
  width: 100%;
  max-width: 375px;
  height: 60px;
  background-color: #171717;
  border-radius: 30px;
  font-size: 2.3rem;
  font-weight: 700;
  color: #fff;
  text-align: center;
  margin: 20px auto 0;
  padding: 10px;
  position: relative;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-transition: 0.3s ease;
  transition: 0.3s ease;
}
.button:hover { opacity: 0.8; }
.button--pink { background-color: #cb0132; }
.button::before {
  content: "";
  width: 21px;
  height: 20px;
  background: url("./public/img/icons/external-link.svg") center/cover no-repeat;
  position: absolute;
  top: 50%;
  right: 20px;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
}

.button--entry {
  max-width: 100%;
  height: 86px; 
  padding: 10px 45px ; 
  background-color: #cb0132;
  border-radius: 43px; 
  -webkit-box-shadow: 0 6px 0 #600a0a;
          box-shadow: 0 6px 0 #600a0a;
  font-size: 2rem;
  line-height: 1.4em;
  position: relative;
  isolation: isolate;
  z-index: 1;
}
.button--entry::before { 
  width: 24px; 
  height: 23px; 
  right: 15px; 
}
.button--black { 
  background-color: #171717; 
  -webkit-box-shadow: 0 6px 0 #888888; 
          box-shadow: 0 6px 0 #888888; 
}

/* =========================================================
   4. Layouts (Wrapper, Section, Wrap)
   ========================================================= */
.mv { max-width: 1060px; margin: 0 auto; } 
.mv img, .mv__img { width: 100%; height: auto; display: block; }

.wrapper { width: 100%; }
.wrapper--white { background: #fff url("./public/img/common/bg.png") top left/25% repeat; padding-block: 60px 40px; max-width: 1060px; margin: 0 auto; }
.wrapper--gray { background-color: #f8f9f9; padding-block: 60px 40px; max-width: 1060px; margin: 0 auto; }
.wrapper--pink { background: #cb0132 url("./public/img/common/bg-pink.svg") top left/25% repeat; padding-block: 60px 40px; }

.section:not(:last-child) { margin-bottom: 80px; }
.section__head { width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; display: block; margin: 0 auto 40px; position: relative; }
.section__head::before {
  content: ""; width: 133px; height: 51px; background-color: #cb0132;
  -webkit-mask: url("./public/img/head-deco.svg") center/cover no-repeat;
          mask: url("./public/img/head-deco.svg") center/cover no-repeat;
  position: absolute; top: -59px; left: 50%;
  -webkit-transform: translateX(-50%); transform: translateX(-50%);
}
.section__head > span { font-size: 6rem; font-weight: 900; color: #cb0132; letter-spacing: 0.05em; text-align: center; display: block; position: relative; }
.section__head > span::after {
  content: ""; width: 381px; height: 5px; background-color: #cb0132;
  -webkit-mask: url("./public/img/dotted-border.svg") center/cover no-repeat;
          mask: url("./public/img/dotted-border.svg") center/cover no-repeat;
  position: absolute; left: 50%; bottom: -20px;
  -webkit-transform: translateX(-50%); transform: translateX(-50%);
}
.section__head > span:not(:last-child) { margin-bottom: 36px; }
.section__head--black { margin-bottom: 60px; }
.section__head--black::before, .section__head--black > span::after { background-color: #171717; }
.section__head--black > span { color: #171717; }
.section__head--black > span::after { width: 161px; }
.section__head--white::before, .section__head--white > span::after { background-color: #fff; }
.section__head--white > span { color: #fff; }
.section__head--white > span::after { width: 381px; }

.section__desc { font-size: 2.3rem; font-weight: 500; line-height: 1.6em; }
.section__desc--deco { width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; text-align: center; padding-inline: 60px; margin: 0 auto 30px; position: relative; }
.section__desc--deco::before, .section__desc--deco::after { content: ""; width: 47px; height: 78px; position: absolute; top: 12px; }
.section__desc--deco::before { background: url("./public/img/line-deco-l.svg") center/cover no-repeat; left: 0; }
.section__desc--deco::after { background: url("./public/img/line-deco-r.svg") center/cover no-repeat; right: 0; }
.section__desc--mb30 { margin-bottom: 30px; }

.section__banner, .section__banner-wrap { border-top: 1px solid #171717; border-bottom: 1px solid #171717; }
.section__banner { width: 100%; background-color: #ffff00; margin-block: 30px 60px; padding-block: 5px; }
.section__banner-wrap { min-height: 78px; border-width: 2px; text-align: center; padding: 3px 10px; }
.section__banner-text { font-size: 2.5rem; font-weight: 700; }

.wrap { width: 100%; background-color: #fff; border-radius: 30px; padding: 45px 30px 30px; position: relative; border: 3px solid #171717; box-shadow: none; }
.wrap.pt100 { padding-top: 60px; }
.wrap.no-border { border: none; padding-block: 40px; box-shadow: none; }
.wrap:not(:last-child) { margin-bottom: 60px; }
.wrap.mb120 { margin-bottom: 80px; }
.wrap.mt85 { margin-top: 60px; }
.wrap__head { width: -webkit-max-content; width: -moz-max-content; width: max-content; position: absolute; top: -40px; left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); text-align: center; }
.wrap__head::before { content: ""; width: 100%; height: 5px; background-color: #fff; position: absolute; left: 0; bottom: 18px; }
.wrap__head--big { top: -46px; }
.wrap__head--big::before { bottom: 57px; }
.wrap__head--big .wrap__title { font-size: 4rem; padding-inline: 65px; }
.wrap__head--big .wrap__title::before, .wrap__head--big .wrap__title::after { height: 88px; top: 65%; }
.wrap__head--big .wrap__title::before { left: 28px; }
.wrap__head--big .wrap__title::after { right: 28px; }

.wrap__title { font-size: 4.5rem; color: #171717; line-height: 1.3em; position: relative; padding-inline: 15px; }
.wrap__title--fs40 { font-size: 4rem; }
.wrap__title::before, .wrap__title::after { display: none; }
.wrap__title::first-letter { color: #cb0132; }

/* =========================================================
   5. Components (Campaign, Conditions, Info Blocks)
   ========================================================= */
.campaign__img { width: 100%; max-width: 980px; height: auto; }

.condition__list { display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; gap: 20px; margin-block: 20px; align-items: stretch; }

.condition__item { 
  width: 100%; 
  height: 100%; 
  background-color: #f2f2f2; 
  border-radius: 20px; 
  padding: 75px 20px 20px; 
  position: relative; 
  display: flex; 
  flex-direction: column; 
  align-items: center; 
}
.condition__item > *:last-child {
  margin-bottom: 0 !important;
}
.condition__item--half { width: calc(50% - 10px); max-width: calc(50% - 10px); }

/* バッジスタイル */
.condition__num { 
  width: 64px; 
  height: 64px; 
  background-color: #cb0132; 
  color: #fff; 
  font-size: 2.2rem; 
  box-shadow: 0 4px 10px rgba(203, 1, 50, 0.3);
  position: absolute;
  top: -8px;  
  left: -8px; 
  border-radius: 8px; 
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  white-space: nowrap; 
  z-index: 2;
}
.condition__num::before { display: none; }
.condition__num--text { font-size: 1.4rem; line-height: 1.3em; white-space: normal; text-align: center; }

.highlight-badge {
  display: inline-block;
  background-color: #d11111;
  color: #fff;
  padding: 10px 16px;
  border-radius: 15px;
  font-size: 2rem;
  font-weight: 700;
  margin-bottom: 8px;
}

.condition__icon { display: block; margin: 0 auto; object-fit: contain; }

/* ★ アイコンごとのサイズとバランスの最適化 */
.condition__icon--01 { 
  height: 80px; /* 55pxから拡大 */
  margin-bottom: 20px; 
}
.condition__icon--02 { 
  height: 60px; /* 横長なので高さは抑える */
  margin-top: 20px; /* ★チケットアイコンと中心を揃えるために上から少し押し下げる */
  margin-bottom: 20px; 
}
.condition__icon--03 { 
  height: 150px; /* 90pxからさらに拡大して文字を読みやすく */
  margin-bottom: 25px; 
}
.condition__item .condition__icon--prize {
  height: auto;
  width: 100%;
  max-width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border-radius: 10px;
  margin: 0 auto 15px;
}

.condition__icon + .condition__desc {
  flex-grow: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 20px;
}

.condition__desc { font-weight: 500; line-height: 1.6em; text-align: center; margin-bottom: 15px; width: 100%; }
.condition__note-list { margin-bottom: 30px; width: 100%; }
.condition__note { display: block; padding-left: 25px; position: relative; }
.condition__note::before { content: "※"; position: absolute; top: 0; left: 0; }

.condition__btn-wrap { width: 100%; max-width: 660px; position: relative; margin: auto auto 0; }
.condition__btn-wrap::before { content: ""; width: 29px; height: 29px; background: url("./public/img/icons/sparkle01.svg") center/cover no-repeat; position: absolute; left: -29px; bottom: -15px; }
.condition__btn-wrap::after { content: ""; width: 50px; height: 41px; background: url("./public/img/icons/sparkle02.svg") center/cover no-repeat; position: absolute; top: -20px; right: -25px; }

.condition__btn-wrap + .condition__desc {
  margin: 15px 0 0;
  width: 100%;
}

/* エントリー条件エリアのみにダミー余白を適用し、景品エリアには干渉させない */
#zone-conditions .condition__item--half:not(:has(.condition__btn-wrap + .condition__desc))::after {
  content: "";
  display: block;
  width: 100%;
  margin-top: 15px;
  min-height: 5.6em;
}

.bubble { width: 100%; min-height: 75px; background-color: #cb0132; border-radius: 20px; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; font-size: 2.6rem; font-weight: 500; color: #fff; letter-spacing: 0.05em; margin: 20px auto 34px; position: relative; }
.bubble::after { content: ""; width: 0; height: 0; border-left: 12px solid transparent; border-right: 12px solid transparent; border-top: 14px solid #cb0132; position: absolute; left: 50%; bottom: -14px; -webkit-transform: translateX(-50%); transform: translateX(-50%); }

.block:not(:last-child) { margin-bottom: 40px; }
.block--border { border-bottom: 2px solid #ddd; padding-bottom: 30px; margin-bottom: 30px !important; }
.block__banner { width: 100%; max-width: 900px; height: 79px; background: url("./public/img/banner.svg") center/cover no-repeat; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; font: 500 3rem "Noto Sans JP", sans-serif; letter-spacing: 0.05em; margin-bottom: 20px; }

.note { margin-top: 20px; }
.note__wrap { background-color: #ddd; border-radius: 3px; font-size: 2.3rem; font-weight: 500; line-height: 1.6em; text-align: center; padding: 20px; margin-bottom: 20px; }
.note__text { position: relative; padding-left: 20px; }
.note__text::before { content: "※"; position: absolute; top: 0; left: 0; }

.precaution__wrap { padding: 40px 37px; }
.precaution__wrap .desc { line-height: 1.5em; } 
.precaution__subhead { display: block; margin-block: 30px 20px; }
.precaution__subhead.fs16 { font-size: 16px; }
.precaution__subhead.mb5 { margin-block: 0 5px; }
.precaution__item:not(:last-child) { margin-bottom: 30px; }
.precaution__title { font-size: 1.8rem; font-weight: 700; display: block; margin-bottom: 15px; }
.precaution__inner-item { font-size: 1.6rem; line-height: 1.5em; position: relative; padding-left: 16px; } 
.precaution__inner-item::before { content: "・"; position: absolute; top: 0; left: 0; }
.precaution__inner-wrap:not(:last-child) { margin-bottom: 30px; }
.precaution__link { font-size: 1.6rem; color: #255cfc; text-decoration: underline; word-break: break-word; }

.about__subhead { width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; font-size: 3rem; font-weight: 700; display: block; margin: 0 auto 20px; text-align: center; position: relative; padding-inline: 35px; }
.about__block { width: 100%; background-color: #f2f2f2; border-radius: 20px; padding: 30px 15px; }
.about__block:not(:last-child) { margin-bottom: 40px; }
.about__contact-text { font-size: 1.8rem; display: block; text-align: center; }
.about__contact-text.fs23 { font-size: 2.3rem; font-weight: 700; margin-bottom: 11px; }
.about__contact-text.mb5 { margin-bottom: 5px; }
.about__contact-wrap { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-column-gap: 14px; -moz-column-gap: 14px; column-gap: 14px; }
.about__contact-wrap.mb10 { margin-bottom: 10px; }
.about__contact-wrap.mb20 { margin-bottom: 20px; }
.about__contact-icon { width: 50px; height: 50px; }
.about__contact-num { font: 700 6rem "Roboto", sans-serif; color: #cb0132; letter-spacing: 0.05em; }
.about__contact-mail { font-size: 2.3rem; font-weight: 500; letter-spacing: 0.05em; display: block; }
.about__title { width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; font-size: 3rem; font-weight: 700; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; margin: 0 auto 10px; position: relative; padding-left: 25px; }
.about__title--sm { font-size: 1.8rem; }
.about__title--sm::before { content: ""; width: 0; height: 0; border-left: 7.5px solid transparent; border-right: 7.5px solid transparent; border-top: 9px solid #171717; position: absolute; top: 55%; left: 0; -webkit-transform: translateY(-45%); transform: translateY(-45%); }
.about__logo { width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; margin-right: 6px; }
.about__logo.a-center { display: block; margin: 0 auto 15px; }
.about__row { display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 40px; }
.about__col { width: 50%; min-height: 191px; }
.about__col:not(:last-child) { border-right: 1px solid #ddd; }

/* =========================================================
   移植コンテンツ用スタイル & 全体のスタイリッシュ化
   ========================================================= */
.text-center { text-align: center; }
.mb-30 { margin-bottom: 30px; }
.fra-section { padding: 30px 0 50px; }

/* TOPICS (Features) */
.fra-features { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.fra-feature { background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 2px 12px rgba(0,0,0,.06); transition: transform 0.2s; }
.fra-feature:hover { transform: translateY(-4px); box-shadow: 0 8px 24px rgba(0,0,0,.12); }
.fra-feature__img { position: relative; aspect-ratio: 16/9; background: #eee; }
.fra-feature__img img { width: 100%; height: 100%; object-fit: cover; }

/* =========================================================
   テキストサイズの統一（PC）
   ========================================================= */
.fra-feature__text, .fra-match__info dd { font-size: 1.6rem; line-height: 1.6em; }
.fra-feature__note, .fra-match__info dt, .fra-flow__badge { font-size: 1.4rem; }
.fra-feature__title { font-size: 1.8rem; margin: 16px; color: #cb0132; line-height: 1.4; }
.fra-feature__note { position: absolute; bottom: 8px; right: 8px; color: #fff; background: rgba(0,0,0,.6); padding: 4px 8px; border-radius: 4px; }
.fra-feature__text { color: #555; margin: 0 16px 20px; }

/* 試合当日の流れ (Flow) */
.fra-flow { display: flex; justify-content: space-between; position: relative; width: 100%; margin: 0 auto; }
.fra-flow::before { content: ''; position: absolute; top: 75px; left: 10%; right: 10%; height: 4px; background: #1a2744; opacity: 0.15; z-index: 0; }
.fra-flow__step { flex: 1; display: flex; flex-direction: column; align-items: center; text-align: center; position: relative; z-index: 1; }
.fra-flow__img { width: 150px; height: 150px; border-radius: 50%; border: 4px solid #1a2744; overflow: hidden; background: #eee; }
.fra-flow__img img { width: 100%; height: 100%; object-fit: cover; }
.fra-flow__step:nth-child(2) .fra-flow__img { border-color: #ff7a2f; }
.fra-flow__step:nth-child(3) .fra-flow__img { border-color: #32b44e; }
.fra-flow__step:last-child   .fra-flow__img { border-color: #e60012; }
.fra-flow__badge { font-weight: 700; color: #1a2744; margin-top: 12px; }
.fra-flow__step:nth-child(2) .fra-flow__badge { color: #ff7a2f; }
.fra-flow__step:nth-child(3) .fra-flow__badge { color: #32b44e; }
.fra-flow__step:last-child   .fra-flow__badge { color: #e60012; }
.fra-flow__label { font-size: 1.6rem; font-weight: 700; margin-top: 4px; }

/* 試合情報 (Match) */
.fra-match { background: #fff; border-radius: 12px; padding: 30px; box-shadow: 0 2px 12px rgba(0,0,0,.06); width: 100%; margin: 0 auto 30px; border-left: 6px solid #1a2744; }
.fra-match__heading img { max-width: 280px; margin: 0 auto 20px; display: block; }
.fra-match__teams { display: flex; justify-content: center; align-items: center; gap: 20px; margin-bottom: 20px; font-size: 2rem; font-weight: 700; }
.fra-match__vs { font-size: 2.4rem; color: #cb0132; }
.fra-match__info > div { display: flex; border-top: 1px solid #eee; padding: 10px 0; }
.fra-match__info dt { background: #1a2744; color: #fff; padding: 4px 12px; border-radius: 4px; font-weight: bold; width: 80px; text-align: center; margin-right: 15px; }

/* アコーディオン */
.fra-accordion { width: 100%; margin: 0 auto; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 12px rgba(0,0,0,.06); }
.fra-accordion__trigger { background: #1a2744; color: #fff; padding: 16px 20px; font-size: 1.8rem; font-weight: bold; display: flex; justify-content: space-between; cursor: pointer; list-style: none; }
.fra-accordion__trigger::-webkit-details-marker { display: none; }
.fra-accordion__body { background: #fff; padding: 20px; }

/* =========================================================
   6. Media Queries
   ========================================================= */

@media screen and (min-width: 1025px) and (max-width: 1050px) {
  .sm { display: block; }
  .block__banner { height: 75px; font-size: 2.6rem; }
}

@media screen and (max-width: 1024px) {
  .about__row { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; }
  .about__col { width: 100%; }
  .about__col:not(:last-child) { border-right: 0; border-bottom: 1px solid #ddd; padding-bottom: 30px; margin-bottom: 30px; }
}

@media screen and (min-width: 768px) and (max-width: 1024px) {
  .section__head > span { font-size: 32px; }
  .section__banner-wrap { padding-block: 10px; }
  .section__banner-text { font-size: 18px; }
  .button { font-size: 18px; }
  .bubble { font-size: 18px; }
  .block__banner { font-size: 20px; height: 54px; }
}

/* スマホ特化（767px以下） */
@media screen and (max-width: 767px) {
  .container { max-width: 100%; padding: 0 15px; }
  .sp-center { text-align: center; }

  /* Sections */
  .section:not(:last-child) { margin-bottom: 60px; } 
  .section__head { margin-bottom: 25px; } 
  .section__head::before { -webkit-mask-image: url("./public/img/head-deco-sp.svg"); mask-image: url("./public/img/head-deco-sp.svg"); width: 66px; height: 24px; top: -35px; }
  .section__head > span { font-size: 25px; }
  .section__head > span::after { width: 120px; height: 3px; bottom: -10px; }
  .section__head > span:not(:last-child) { margin-bottom: 20px; }
  .section__head--black { margin-bottom: 40px; }
  .section__head--black > span::after { width: 81px; }
  .section__head--white > span::after { width: 120px; }
  
  .section__desc--deco { padding-inline: 15px; margin-bottom: 25px; }
  .section__desc--deco::before, .section__desc--deco::after { width: 48px; height: 139px; top: unset; bottom: 5px; }
  .section__desc--deco::before { background-image: url("./public/img/line-deco-l-sp.svg"); }
  .section__desc--deco::after { background-image: url("./public/img/line-deco-r-sp.svg"); }
  .section__desc--mb30 { margin-bottom: 20px; }
  
  .section__banner { padding-block: 3px; margin-block: 20px 30px; } 
  .section__banner-wrap { min-height: 52px; padding-block: 10px; }
  .section__banner-text { font-size: 18px; }

  /* Wrappers & Wrap */
  .wrapper--white { background-size: 187px; padding-block: 40px 30px; max-width: 1060px; margin: 0 auto; } 
  .wrapper--gray { padding-block: 40px 30px; max-width: 1060px; margin: 0 auto; }
  .wrapper--pink { background-size: 187px; padding-block: 40px 30px; } 

  .wrap { border-radius: 15px; border-width: 2px; padding: 35px 15px 25px; margin-bottom: 30px; }
  .wrap.pt100 { padding-top: 50px; }
  .wrap:not(:last-child) { margin-bottom: 30px; } 
  .wrap.mt85 { margin-top: 50px; }

  .wrap__head { top: -18px; }
  .wrap__head--big { top: -32px; } /* 2行になる見出し用 */
  .wrap__head::before { display: none !important; }
  .wrap__title { background-color: #fff; padding: 0 15px; border-radius: 10px; line-height: 1.5em; }
  .wrap__head--big .wrap__title { line-height: 1.5em; padding-inline: 15px; }
  
  .button { max-width: 285px; margin-top: 20px; }
  .button::before { width: 17px; height: 16px; }
  
  .button--entry { 
    max-width: 315px; 
    height: 70px; 
    padding: 10px 40px;
    border-radius: 35px; 
    -webkit-box-shadow: 0 4px 0 #600a0a;
            box-shadow: 0 4px 0 #600a0a;
  }
  .button--entry::before { width: 17px; height: 16px; right: 15px; }

  .campaign__img { max-width: 315px; display: block; margin: 0 auto; }
.bubble { 
    max-width: 90%; /* 画面が狭い端末でもはみ出さないように */
    width: 320px; 
    min-height: 80px; /* 132pxから縮小してスリムに */
    padding: 15px 10px; /* 文字がフチに当たらないように余白を追加 */
    border-radius: 40px; 
    font-size: 1.5rem !important; /* 文字サイズをスマホ向けに最適化 */
    line-height: 1.5em; 
    text-align: center; 
  }
  /* 吹き出しの「しっぽ」のサイズも微調整 */
  .bubble::after { 
    border-left: 12px solid transparent; 
    border-right: 12px solid transparent; 
    border-top: 14px solid #cb0132; 
    bottom: -12px;
  }

  .block:not(:last-child) { margin-bottom: 30px; }
  .block--border { padding-bottom: 20px; margin-bottom: 20px !important; }
  .block__banner { height: 87px; background-image: url("./public/img/banner-sp.svg"); line-height: 1.6em; text-align: center; margin-bottom: 15px; }
  
  .note__wrap { line-height: 1.6em; padding: 15px 10px; }
  .note__text { padding-left: 16px; }

  /* Conditions */
  .condition__list { margin-block: 15px; gap: 15px; }
  
  .condition__item { padding: 60px 15px 20px; }
  .condition__item--half { max-width: 100%; width: 100%; }
  
  /* スマホ版ダミー余白キャンセル */
  .condition__item--half::after { display: none !important; }
  .condition__btn-wrap { margin: 20px auto 0; }
  
  .condition__num { 
    width: 50px; 
    height: 50px; 
    top: -6px; 
    left: -6px; 
  }
  .highlight-badge { padding: 4px 16px; white-space: normal; }
  
.condition__icon { margin: 0 auto; }
  .condition__icon--01 { height: 80px; margin-bottom: 20px; }
  .condition__icon--02 { height: 60px; margin-top: 20px; margin-bottom: 20px; }
  .condition__icon--03 { height: 90px; margin-bottom: 20px; }
  
  .condition__note-list { margin-bottom: 30px; }
  .condition__note { padding-left: 26px; }
  .condition__btn-wrap::before { width: 23px; height: 23px; left: 0; bottom: -32px; }
  .condition__btn-wrap::after { width: 40px; height: 32px; top: -32px; right: -2px; }

  /* Precautions */
  .precaution__wrap { padding: 30px 15px; }
  .precaution__subhead { margin-block: 20px; }
  .precaution__inner-wrap:not(:last-child) { margin-bottom: 20px; }

  /* About */
  .about__wrap { padding: 30px 15px !important; }
  .about__block { border-radius: 15px; }
  .about__block:not(:last-child) { margin-bottom: 30px; }
  .about__contact-text--left { text-align: left; margin-top: 15px; }
  .about__contact-wrap { -webkit-column-gap: 7px; -moz-column-gap: 7px; column-gap: 7px; }
  .about__contact-icon { width: 30px; height: 30px; }
  .about__contact-num { font-size: 35px; letter-spacing: 0.02em; }
  
  .about__title { 
    display: block; 
    text-align: center; 
    line-height: 1.8em; 
    margin-bottom: 15px; 
    flex-wrap: wrap; 
    width: auto; 
    justify-content: center; 
  }
  .about__title-wrap,
  .about__title > span { 
    display: inline-block; 
    white-space: nowrap;
  }
  .about__logo--01 { display: inline-block; vertical-align: middle; margin: 0 4px 5px 0; width: 94px; height: 24px; }
  
  .about__title--sm { line-height: 1.8em; }
  .about__title--03::before { left: 20px !important; }
  .about__title--sm::before { top: 73%; -webkit-transform: translateY(-27%); transform: translateY(-27%); border-top: 8px solid #171717; }
  .about__logo--02 { width: 40px; height: 40px; }
  .about__logo--03 { width: 138px; height: 40px; }
  .about__btn { height: 70px; border-radius: 35px; }

  /* 移植コンテンツのスマホ調整 */
  .fra-features { grid-template-columns: 1fr; }
  .fra-flow { flex-direction: column; gap: 20px; }
  .fra-flow::before { display: none; }

  .fra-flow__step {
    display: grid;
    grid-template-columns: 100px 1fr;
    column-gap: 20px;
    row-gap: 4px;
    align-items: center;
    text-align: left;
  }
  .fra-flow__img   { width: 100px; height: 100px; grid-row: 1 / 3; align-self: center; }
  .fra-flow__badge { grid-column: 2; grid-row: 1; align-self: end;   margin: 0; }
  .fra-flow__label { grid-column: 2; grid-row: 2; align-self: start; margin: 0; }

  .fra-match { padding: 20px 15px; }
  .fra-match__info { flex-direction: column; }
  .fra-match__info > div { flex-direction: column; gap: 5px; }
  .fra-match__info dt { width: auto; display: inline-block; }
  .fra-section { padding: 20px 0 40px; }

  /* =========================================================
     スマホ版：フォントサイズの一括統一ルール
     ========================================================= */
  /* 【中】基本の本文テキスト：すべて 1.5rem (15px) に統一 */
  .desc, 
  .section__desc, 
  .note__wrap, 
  .precaution__inner-item, 
  .about__contact-text, 
  .fra-feature__text, 
  .fra-match__info dd, 
  .fra-flow__label {
    font-size: 1.5rem !important;
    line-height: 1.6em;
  }

  /* 【小】注釈・リンク・ラベル：すべて 1.3rem (13px) に統一 */
  .condition__num--text, 
  .precaution__link, 
  .about__title--sm, 
  .fra-flow__badge, 
  .fra-match__info dt,
  .button {
    font-size: 1.3rem !important;
  }
  
  /* ボタン内の文字は少しだけ大きく設定 */
  .button--entry {
    font-size: 1.6rem !important;
  }

  /* 【大】セクション内の見出し：2.0rem〜2.4rem に統一 */
  .wrap__title { font-size: 2.4rem !important; }
  .about__subhead, .about__title { font-size: 2.0rem !important; }
  .fra-feature__title { font-size: 1.8rem !important; }
  .precaution__title, .precaution__subhead.fs16 { font-size: 1.6rem !important; }

}