@charset "UTF-8";

/* ==========================================================================
   Pattern A - 標準LP / SP-first base styles
   デザイン方向性: 楽天レッド #BF0000 / マゼンタ #E40585 / オフホワイト #F8F8F8
   ========================================================================== */

.lp-mobile {
  --rk-red: #BF0000;
  --rk-pink: #E40585;
  --rk-offwhite: #F8F8F8;
  --rk-white: #FFFFFF;
  --rk-charcoal: #2D2D2D;
  --rk-gray: #888888;
  --rk-black: #333333;
  --rk-gray-dark: #4D4D4D;
  --rk-border-gray: #BFBFBF;
  --rk-fv-gray-bg: #F6F6F9;
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
  color: var(--rk-charcoal);
  background: var(--rk-white);
  line-height: 1.6;
  overflow-x: hidden;
  /* padding-bottom: 130px; */
  cursor: default;
}

html {
  scroll-behavior: smooth;
}

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

.lp-mobile * {
  box-sizing: border-box;
}

.lp-mobile section#fv img {
  max-width: 100%;
  display: block;
}

/* ---------- 共通: リンクホバーは opacity 0.8（親要素セレクタでスコープ） ---------- */
.ecm-breadcrumb-item > a,
.ecm-floating-navi > a,
.fv-cta-row > a,
.fv-note > a,
.ecm-alcor > a,
.ecm-alcor-body > a,
.join-card-body > a,
.join-btn-row > a,
.sticky-cta-row > a,
.sticky-cta-btnwrap > a,
.final-cta-btnwrap > a,
.lp-mobile .device-card {
  transition: opacity 0.2s ease;
}

.ecm-breadcrumb-item > a:hover,
.ecm-floating-navi > a:hover,
.fv-cta-row > a:hover,
.fv-note > a:hover,
.ecm-alcor > a:hover,
.ecm-alcor-body > a:hover,
.join-card-body > a:hover,
.join-btn-row > a:hover,
.sticky-cta-row > a:hover,
.sticky-cta-btnwrap > a:hover,
.final-cta-btnwrap > a:hover,
.lp-mobile .device-card:hover,
.join-btn-row a.join-btn-primary:hover {
  opacity: 0.8;
}

/* ---------- 共通: 見出し ---------- */
.section-head {
  padding: 40px 20px 20px;
  text-align: center;
}

.section-index {
  display: none;
}

.section-title {
  margin: 0;
  font-size: 24px;
  font-weight: 900;
  letter-spacing: 0.02em;
  color: var(--rk-charcoal);
}

.section-desc {
  margin: 12px 0 0;
  font-size: 14px;
  color: var(--rk-gray);
}

/* ---------- ECM Breadcrumb (PC Only) ---------- */
.ecm-breadcrumb {
  display: none;
}

@media (min-width: 768px) {
  .ecm-breadcrumb {
    display: flex;
    padding-top: 0px;
    padding-bottom: 0px;
  }
}

/* ---------- Section 01: FV ---------- */
.fv {
  background: #FF0C8C;
  color: var(--rk-white);
  padding: 28px 20px 0; /* Changed bottom padding to 0 */
  text-align: center;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  height: 380px;
}


.fv-container {
  max-width: 960px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 20px;
}

.fv-inner {
  position: relative;
  z-index: 1;
  flex: 1 1 400px;
  text-align: left;
  transform: translateY(-20px);
  padding-bottom: 34px; /* Ensure content above image respects original spacing */
}

.fv-bg-pc {
  /* position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%; */
  z-index: 3;
  pointer-events: none;
}

.fv-coins-image {
  position: absolute;
　bottom: 0px;
  max-width: 100%;
  height: auto;
  pointer-events: none;
  z-index: -1; 
}

/* ヒーローに浮かぶポイントコイン装飾 */
.fv-coins {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 1000px;
  z-index: 0;
  pointer-events: none;
}

.fv-coin {
  position: absolute;
  display: inline-block;
}

.fv-coin > img {
  display: block;
  width: 100%;
  height: auto;
  filter: drop-shadow(0 3px 5px rgba(0, 0, 0, 0.18));
}

/* コインの軌道: 中央から各コインへ伸びる光の線 */
.fv-coin::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  height: 10px;
  /* デバイス幅が狭いとき線が画面端まで伸びないよう最大値を制限 */
  width: min(var(--trail-len, 120px), 40vw);
  margin-top: -5px;
  border-radius: 10px;
  z-index: -1;
  transform-origin: 0 50%;
  transform: rotate(var(--trail-angle, 0deg));
  /* コイン側（近端）が濃く、中央側へフェード */
  background: linear-gradient(to right, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0));
}

/* ヒーロー全周にコインを散らす（中央は空ける）
   --trail-angle / --trail-len はヒーロー中央（約878x375）へ厳密に向くよう算出 */
/* 四隅 */
.fv-c1 { top: 2%;    left: 1%;   width: 82px; z-index: 4; --trail-angle: 21deg;   --trail-len: 150px; }
.fv-c2 { top: 3%;    right: 1%;  width: 34px; z-index: 2; --trail-angle: 160deg;  --trail-len: 150px; }
.fv-c3 { bottom: 2%; left: 1%;   width: 52px; z-index: 3; --trail-angle: -21deg;  --trail-len: 150px; }
.fv-c4 { bottom: 2%; right: 1%;  width: 76px; z-index: 4; --trail-angle: 201deg;  --trail-len: 150px; }
/* 上辺 */
.fv-c5 { top: -3%;   left: 12%;  width: 46px; z-index: 3; --trail-angle: 42deg;   --trail-len: 110px; }
.fv-c6 { top: -3%;   right: 12%; width: 26px; z-index: 2; --trail-angle: 137deg;  --trail-len: 110px; }
/* 左辺 */
.fv-c7 { top: 24%;   left: 3%;   width: 28px; z-index: 2; --trail-angle: 12deg;   --trail-len: 120px; }
.fv-c8 { top: 46%;   left: 0%;   width: 68px; z-index: 3; --trail-angle: -1deg;   --trail-len: 120px; }
.fv-c9 { top: 68%;   left: 3%;   width: 40px; z-index: 2; --trail-angle: -12deg;  --trail-len: 120px; }
/* 右辺 */
.fv-c10 { top: 26%;  right: 4%;  width: 26px; z-index: 2; --trail-angle: 169deg;  --trail-len: 120px; }
.fv-c11 { top: 48%;  right: 0%;  width: 64px; z-index: 3; --trail-angle: 182deg;  --trail-len: 120px; }
.fv-c12 { top: 70%;  right: 3%;  width: 44px; z-index: 2; --trail-angle: 193deg;  --trail-len: 120px; }

/* 中央から飛び出すアニメーション（--sx/--sy は各コインから中央へ向かうベクトル） */
@keyframes coinBurst {
  0% {
    transform: translate(var(--sx, 0), var(--sy, 0)) scale(0.15);
    opacity: 0;
  }
  55% {
    opacity: 1;
  }
  100% {
    transform: translate(0, 0) scale(1);
    opacity: 1;
  }
}

.fv-coin {
  animation: coinBurst 0.9s cubic-bezier(0.2, 0.7, 0.3, 1) both;
}

.fv-c1  { --sx: 150px;  --sy: 120px;  animation-delay: 1.02s; }
.fv-c2  { --sx: -150px; --sy: 120px;  animation-delay: 1.06s; }
.fv-c3  { --sx: 150px;  --sy: -120px; animation-delay: 1.10s; }
.fv-c4  { --sx: -150px; --sy: -120px; animation-delay: 1.14s; }
.fv-c5  { --sx: 60px;   --sy: 140px;  animation-delay: 1.08s; }
.fv-c6  { --sx: -60px;  --sy: 140px;  animation-delay: 1.12s; }
.fv-c7  { --sx: 160px;  --sy: 80px;   animation-delay: 1.16s; }
.fv-c8  { --sx: 170px;  --sy: 0;      animation-delay: 1.20s; }
.fv-c9  { --sx: 160px;  --sy: -80px;  animation-delay: 1.24s; }
.fv-c10 { --sx: -160px; --sy: 80px;   animation-delay: 1.18s; }
.fv-c11 { --sx: -170px; --sy: 0;      animation-delay: 1.22s; }
.fv-c12 { --sx: -160px; --sy: -80px;  animation-delay: 1.26s; }

@media (prefers-reduced-motion: reduce) {
  .fv-coin {
    animation: none;
  }
}

.fv-float {
  opacity: 0.95;
}

.fv-lead {
  display: inline-block;
  margin: 0 0 4px !important;
  padding: 5px 48px !important;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.2;
  border: 2px solid rgba(255, 255, 255, 0.7);
  border-radius: 6px;
}

@media (max-width: 767px) {
  .fv-lead {
    padding: 6px 25px !important;
  }

  .fv-inner {
    text-align: center;
    padding-bottom: 0 !important;
    transform: translateY(0) !important;
  }

  .fv-catch-row {
    justify-content: center;
    flex-wrap: nowrap;
  }

  .fv-unit-col {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 0 !important;
    line-height: 1 !important;
  }
}

.fv-lead-hl {
  font-size: 1em; /* Override default 1.5em to make text sizes the same */
  margin: 0;
}

.fv-lead .fv-lead-hl:nth-of-type(1) {
  color: #FFFFFF;
}

.fv-lead .fv-lead-hl:nth-of-type(2) {
  color: #FFFFFF;
  font-size: 1em; /* Override previous 20px size */
}

.fv-catch-container {
  margin: 0;
}

.fv-catch-row {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  margin: 0;
}

.fv-unit-col {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  line-height: 13.6px;
}

.fv-unit-prefix {
  font-size: 22px !important;
  font-weight: 600 !important;
  color: var(--rk-white) !important;
  line-height: 1 !important;
  margin-bottom: 0 !important;
}

.fv-num {
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif !important;
  font-weight: 800 !important;
  font-size: 70px !important;
  line-height: 1 !important;
  letter-spacing: -0.02em !important;
  color: var(--rk-white) !important;
  display: block !important;
  width: auto !important;
  align-self: baseline !important;
}

.fv-unit {
  font-size: 26px !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
  color: var(--rk-white);
  width: auto;
  align-self: baseline;
}

.fv-sub {
  margin: 16px 0 20px;
  font-size: 15px;
  font-weight: 500;
}

/* 端末イメージ section: ヒーロー直下・淡いピンク背景 */
.fv-devices {
  display: block;
  background: #FF0C8C;
  margin-top: -12px;
  padding: 20px 0 32px;
  position: relative;
  z-index: 1;
}

.fv-device-group {
  flex: 0 0 310px;
  width: 310px;
  position: relative;
  display: flex;
  justify-content: flex-start;
  align-items: stretch;
}

.fv-device-img-family {
  position: relative;
  left: 160px;
  right: auto;
  top: 110px;
  bottom: -149px;
  height: auto;
  width: 250px;
  max-width: 100%;
  max-height: none;
  object-fit: contain;
  transform: scale(1.5);
  transform-origin: center right;
}

.fv-device-logos {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 16px;
  position: absolute;
  left: 118px;
  top: -21px;
  width: 200px;
  z-index: 2;
}

.fv-device-group .fv-device-logo {
  height: 32px;
  width: auto;
  max-width: none;
  object-fit: contain;
  object-position: left center;
}

.fv-device-group .fv-device-logo-apple {
  width: 160px;
  height: auto;
}

.fv-badges {
  list-style: none;
  margin: 0 0 24px;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}

.fv-badge {
  background: rgba(255, 255, 255, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-radius: 9999px;
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 700;
}


.fv-campaign-code {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  max-width: 340px;
  margin: 0 auto 20px;
  padding: 12px 16px;
  background: rgba(255, 255, 255, 0.95);
  border-radius: 12px;
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
}

.fv-code-label {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--rk-gray);
}

.fv-code-value {
  font-size: 22px;
  font-weight: 900;
  letter-spacing: 0.06em;
  color: var(--rk-red);
}

.fv-cta-row .fv-cta-step,
.fv-cta-row .fv-cta-step-wrap,
.fv-cta-row .final-cta-btnwrap {
  flex: 1 1 0;
}

.fv-cta-step-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
}

.fv-cta-step-wrap .fv-cta-step {
  width: auto;
  flex: 1 1 auto;
}

.fv-cta-step .ecm-icon-chevron-up {
  font-weight: 700 !important;
}

.fv-cta-row .fv-cta-plus {
  flex: 0 0 auto;
}

#apply-inline .fv-cta-row {
  margin-bottom: 20px;
}

.fv-cta-step {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: 16px;
  font-weight: 900;
  color: var(--rk-red);
  background: var(--rk-white);
  border: 2px solid var(--rk-red);
  border-radius: 9999px;
  padding: 12px 28px;
  text-decoration: none;
  box-sizing: border-box;
  width: 100%;
}


/* entry セクションに移動した CTA（白背景でも視認できるよう配色を反転） */
.entry-info .fv-cta,
.join-btn-row a.join-btn-primary {
  background: #FF0C8C;
  color: var(--rk-white);
  box-shadow: none;
}

/* 最終CTAのボタンは追従CTAのデザインに合わせる */
.final-cta-row .fv-cta {
  background: #FF0C8C;
  color: var(--rk-white);
  box-shadow: none;
}

.final-cta-btnwrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  width: 100%;
}

.final-cta-btnwrap .fv-cta {
  font-size: 16px;
  padding: 12px 28px;
  box-sizing: border-box;
  width: 100%;
  text-align: center;
}

.fv-note {
  margin: 20px 0 0;
  font-size: 11px;
  font-weight: 400;
  line-height: 1.5;
  opacity: 0.85;
}

.fv-note-link {
  color: var(--rk-pink);
  font-weight: 700;
  text-decoration: underline;
}

/* ---------- Section 02: 看板サブキャッチ帯 ---------- */
.ribbon {
  background: transparent;
  padding: 72px 20px 28px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  position: relative;
  z-index: 0;
}

/* ---------- Section 02: バナー ---------- */
.promo-banner {
  display: none;
  margin: 28px 16px;
}

.promo-banner-link {
  display: block;
}

.promo-banner-img {
  width: 100%;
  height: auto;
  border-radius: 12px;
}

.ribbon-item {
  position: relative;
  z-index: 1;
  background: var(--rk-white);
  border: 1px solid #eee;
  border-radius: 12px;
  padding: 16px;
  display: flex;
  align-items: center;
  gap: 14px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}

.ribbon-icon {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: rgba(228, 5, 133, 0.08);
  color: var(--rk-pink);
  display: flex;
  align-items: center;
  justify-content: center;
}

.ribbon-text {
  margin: 0;
  font-size: 15px;
  font-weight: 500;
}

.ribbon-text strong {
  color: var(--rk-red);
  font-weight: 900;
}

/* ---------- Section 03: 対象端末一覧 ---------- */
.devices {
  background: var(--rk-white);
  padding-bottom: 100px;
}

.device-subhead {
  margin: 24px 16px 16px;
  font-size: 20px;
  font-weight: 900;
  color: var(--rk-charcoal);
  line-height: 1.2;
  text-align: center;
}

.device-subhead ~ .device-subhead {
  margin-top: 58px;
}

.device-subhead::after {
  content: "";
  display: block;
  width: 48px;
  height: 3px;
  margin: 8px auto 0;
  background: #BF080E;
  border-radius: 3px;
}

.device-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
  padding: 0 16px;
}

.device-card {
  background: var(--rk-white);
  border: 1px solid #eee;
  border-radius: 12px;
  overflow: hidden;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}


.device-thumb {
  aspect-ratio: 1 / 1;
  background: var(--rk-white);
  position: relative;
}

.device-thumb::after {
  content: "";
  position: absolute;
  inset: 22% 34%;
  border-radius: 12px;
  background: rgba(45, 45, 45, 0.12);
}

.device-thumb:has(.device-img)::after {
  display: none;
}

.device-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 10px;
}

.device-thumb-a { background: linear-gradient(135deg, #efe6f2, #d9c3e0); }
.device-thumb-b { background: linear-gradient(135deg, #e6eef2, #c3d5e0); }
.device-thumb-c { background: linear-gradient(135deg, #f2ece6, #e0d2c3); }
.device-thumb-d { background: linear-gradient(135deg, #ece6f2, #cec3e0); }

.device-body {
  padding: 12px;
}

.device-name {
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.device-price {
  margin: 0 0 6px;
  font-size: 13px;
  font-weight: 700;
  color: var(--rk-red);
}

.device-price .num {
  font-size: 22px;
  font-weight: 900;
}

.device-price .tax {
  font-size: 11px;
  color: var(--rk-gray);
  font-weight: 400;
}

.device-review {
  margin: 0 0 6px;
  font-size: 11px;
}

.device-review .stars {
  color: #f5a623;
  letter-spacing: 0.05em;
}

.device-review .rev-count {
  color: var(--rk-gray);
  margin-left: 4px;
}

.device-shop {
  margin: 0;
  font-size: 11px;
  color: var(--rk-gray);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.text-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: fit-content;
  max-width: 360px;
  margin: 28px auto 0;
  padding: 14px 32px;
  color: #BF080E;
  background: var(--rk-white);
  border: 2px solid #BF080E;
  border-radius: 9999px;
  font-size: 15px;
  font-weight: 700;
  text-decoration: none;
  transition: opacity 0.2s;
}

.text-link::after {
  content: "";
  width: 8px;
  height: 8px;
  border-right: 2px solid #BF080E;
  border-bottom: 2px solid #BF080E;
  transform: translateX(-2px) rotate(-45deg);
}

.text-link:link,
.text-link:visited,
.text-link:hover,
.text-link:active,
.text-link:focus,
.join-btn-outline:link,
.join-btn-outline:visited,
.join-btn-outline:hover,
.join-btn-outline:active,
.join-btn-outline:focus {
  color: #BF080E;
  text-decoration: none;
}

.text-link:hover,join-btn-outline:hover {
  opacity: 0.8;
}

/* ---------- Section 04: キャンペーン参加方法 ---------- */
.steps {
  background: #EDEDED;
  margin-top: -8px;
  padding: 56px 16px 56px;
  position: relative;
  z-index: 1;
}



.join-steps {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.join-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

.join-step-num {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}

.join-step-label {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--rk-gray);
}

.join-step-value {
  font-size: 28px;
  font-weight: 900;
  line-height: 1;
  color: var(--rk-black);
}

.join-card {
  width: 100%;
  background: var(--rk-white);
  border: 2px solid var(--rk-border-gray);
  border-radius: 16px;
  overflow: hidden;
}

.join-card-media {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: #FFF2F9;
}

.join-card-media img {
  width: 110px;
  height: 132px;
  object-fit: cover;
  border-radius: 4px;
}

.join-card-body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  padding: 20px;
}

.join-card-title {
  margin: 0;
  color: var(--rk-black);
  font-family: "Rakuten Sans JP", "Noto Sans JP", sans-serif;
  font-size: 19px;
  font-weight: 600;
  line-height: 1.4;
}

.join-text {
  margin: 0;
  color: var(--rk-black);
  font-size: 14px;
  line-height: 1.6;
}

.join-text-sm {
  font-size: 12px;
  line-height: 1.4;
}

.join-text-warn {
  color: #DF0101;
}

.join-code {
  font-weight: 700;
}

.join-btn-row {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
}

.join-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 14px 20px;
  border-radius: 9999px;
  font-size: 15px;
  font-weight: 700;
  text-decoration: none;
  box-shadow: 0 4px 0 0 rgba(0, 0, 0, 0.1);
}

.join-btn-outline {
  color: #BF080E;
  background: var(--rk-white);
  border: 1px solid #BF080E;
}

.join-btn-outline.join-btn-muted {
  color: #FF0C8C;
  border-color: #FF0C8C;
}

.join-btn-highlight {
  color: #FF0C8C;
  border-color: #FF0C8C;
}

.join-btn-primary {
  color: var(--rk-white);
  background: #FF0C8C;
  border: none;
}

.join-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--rk-pink);
  font-size: 14px;
  text-decoration: underline;
}

.join-arrow {
  display: flex;
  justify-content: center;
  margin: 32px 0 24px;
}

.join-arrow svg {
  width: 48px;
  height: auto;
}

.join-point-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
}

.join-point-icon {
  width: 48px;
  height: 48px;
  flex-shrink: 0;
}

.join-point-text {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.join-point-num {
  margin: 0;
  color: #BF080E;
  line-height: 1.2;
}

.join-point-num-prefix {
  font-size: 18px;
  font-weight: 700;
}

.join-point-num-value {
  font-size: 40px;
  font-weight: 700;
  margin-left: 4px;
}

.join-point-unit {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--rk-black);
}

.join-point-desc {
  margin: 20px 0 0;
  color: var(--rk-black);
  text-align: center;
  font-size: 14px;
  line-height: 1.6;
}

.join-point-note {
  margin: 16px 0 0;
  color: var(--rk-black);
  text-align: center;
  font-size: 11px;
  line-height: 1.5;
}

/* ---------- Section 05: 最終CTA ---------- */

.final-cta-btn {
  display: block;
  max-width: 340px;
  margin: 0 auto 14px;
  background: var(--rk-white);
  color: var(--rk-red);
  font-weight: 900;
  font-size: 18px;
  text-decoration: none;
  padding: 18px;
  border-radius: 9999px;
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.25);
  transition: opacity 0.2s ease;
}


.final-cta-sub {
  display: inline-block;
  color: var(--rk-white);
  font-size: 14px;
  text-decoration: underline;
}

/* ---------- Section 06: FAQ ---------- */
.faq {
  background: var(--rk-offwhite);
  padding-bottom: 40px;
}

@media (max-width: 767px) {
  .faq {
    padding-left: 16px;
    padding-right: 16px;
  }
}

.faq-list {
  /* padding: 0 16px; */
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.faq-item {
  border: 1px solid #eee;
  border-radius: 12px;
  overflow: hidden;
  background: var(--rk-white);
}

.faq-q {
  list-style: none;
  cursor: pointer;
  padding: 16px 44px 16px 16px;
  font-size: 15px;
  font-weight: 700;
  position: relative;
}

.faq-q::-webkit-details-marker {
  display: none;
}

.faq-q::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 18px;
  width: 10px;
  height: 10px;
  border-right: 2px solid var(--rk-pink);
  border-bottom: 2px solid var(--rk-pink);
  transform: translateY(-70%) rotate(45deg);
  transition: transform 0.3s ease;
}

.faq-item[open] .faq-q::after {
  transform: translateY(-30%) rotate(-135deg);
}

.faq-a {
  padding: 0 16px 16px;
  font-size: 14px;
  color: #555;
}

.faq-a-link {
  color: #1A73E8;
  text-decoration: underline;
}

/* ---------- Section: お申し込み期間・注意事項 ---------- */
.entry-info {
  background: var(--rk-white);
  padding: 32px 16px 0px;
  text-align: center;
}

#entry {
  margin-bottom: 100px;
}

/* 申し込みCTAセクション上部 */
#apply {
  position: relative;
  z-index: 1;
  padding-bottom: 60px;
}

/* ヒーロー直下のCTAは上部を水平に区切る */
#apply.entry-info {
  margin-top: 0;
}

.entry-head {
  max-width: 960px;
  margin: 0 auto 20px;
  padding: 10px 16px;
  background: #f0f0f0;
  border-radius: 4px;
  font-size: 16px;
  font-weight: 700;
  color: var(--rk-charcoal);
}

.entry-period {
  max-width: 960px;
  margin: 0 auto;
}

.entry-period p {
  margin: 4px 0;
  font-size: 15px;
  font-weight: 500;
}

.entry-notes {
  max-width: 960px;
  margin: 20px auto 0;
  text-align: left;
}

.entry-note {
  max-width: 960px;
  margin: 0 auto 10px;
  font-size: 12px;
  line-height: 1.6;
  color: var(--rk-gray);
}

.device-stock-note {
  margin: 0 0 16px;
  font-size: 12px;
  line-height: 1.6;
  color: var(--rk-gray);
  text-align: center;
  padding: 0 16px;
}

.entry-note-alert {
  color: var(--rk-red);
}

.entry-note-highlight {
  /* color: #FF0C8C; */
}

.entry-alert-box {
  max-width: 960px;
  margin: 16px auto 16px;
  padding: 16px 20px;
  background: #FDF1E0;
  border: 1px solid #E8C989;
  border-radius: 8px;
  text-align: left;
}

.entry-alert-title {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  margin: 0 0 8px;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.5;
  color: var(--rk-charcoal);
}

.entry-alert-icon {
  flex: 0 0 auto;
  color: #E8A33D;
  font-size: 16px;
  line-height: 1.4;
}

.entry-alert-body {
  margin: 0;
  font-size: 12px;
  line-height: 1.7;
  color: var(--rk-gray);
}

.entry-alert-link {
  color: #1A73E8;
  text-decoration: underline;
  white-space: nowrap;
}

.entry-alert-code {
  margin: 12px 0 0;
  font-size: 13px;
  font-weight: 700;
  color: var(--rk-charcoal);
  text-align: center;
}

.entry-alert-code-value {
  color: #FF0C8C;
  letter-spacing: 0.02em;
}

.entry-accordion {
  max-width: 960px;
  margin: 16px auto 0;
  text-align: left;
  border: 1px solid #eee;
  border-radius: 12px;
  overflow: hidden;
  background: var(--rk-white);
}

.entry-accordion-summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  list-style: none;
  cursor: pointer;
  padding: 16px;
  font-size: 15px;
  font-weight: 700;
  color: var(--rk-charcoal);
  text-align: center;
}

.entry-accordion-summary::-webkit-details-marker {
  display: none;
}

.entry-accordion-summary::after {
  content: "";
  flex: 0 0 auto;
  width: 10px;
  height: 10px;
  border-right: 2px solid var(--rk-pink);
  border-bottom: 2px solid var(--rk-pink);
  transform: rotate(45deg);
  transition: transform 0.3s ease;
}

.entry-accordion[open] .entry-accordion-summary::after {
  transform: rotate(-135deg);
}

.entry-accordion-body {
  padding: 0 16px 16px;
}

.entry-code {
  margin: 20px 0 0;
  font-size: 16px;
  font-weight: 900;
}

.entry-code span {
  color: var(--rk-red);
}

/* ---------- Section 07: キャンペーン詳細ルール ---------- */
.rules {
  background: var(--rk-white);
  padding: 24px 16px 56px;
}

/* ---------- 追従UI: 固定CTA (画面中央に表示。ECM floating module が表示トリガーを担当) ---------- */
.sticky-cta-bar {
  box-sizing: border-box;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 16px;
  z-index: 100;
  display: none; /* 初回ロード時のチラつき防止。表示条件を満たした時のみ .is-visible を付与 */
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-align: center;
  width: 100%;
  max-width: 100%;
  height: auto;
  margin: 0 auto;
  padding: 10px 16px calc(10px + env(safe-area-inset-bottom));
  background: var(--rk-white);
  border-top: 1px solid #E5E5E5;
  box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.12);
}

.sticky-cta-bar * {
  box-sizing: border-box;
}

.sticky-cta-bar.is-visible {
  display: none;
}

.sticky-cta-close {
  position: absolute;
  top: 8px;
  right: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  background: none;
  border: none;
  cursor: pointer;
  color: #999;
  font-size: 18px;
  line-height: 1;
}

.sticky-cta-close-icon::before {
  content: "\00d7"; /* × */
}

.sticky-cta-caption {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.3;
  color: #333;
}

.sticky-cta-point {
  color: #FF008C;
}

.sticky-cta-row {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
}

.sticky-cta-row .fv-cta-step::after {
  display: none;
}

.sticky-cta-btnwrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}

.sticky-cta-code {
  margin: 0;
  font-size: 11px;
  font-weight: 700;
  color: #333;
}

.sticky-cta-code-value {
  color: #FF0C8C;
  letter-spacing: 0.02em;
}

.sticky-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 40px;
  background: #FF0C8C;
  border-radius: 9999px;
  box-shadow: 0 4px 12px rgba(255, 12, 140, 0.25);
  text-decoration: none;
}

.sticky-cta:hover,
.sticky-cta:hover .sticky-cta-action {
  text-decoration: none;
}

.sticky-cta-action {
  font-size: 20px;
  font-weight: 900;
  line-height: 1.2;
  color: var(--rk-white);
}




/* devices 見出し */
.section-head-line {
  position: relative;
  z-index: 0;
  margin-top: 24px;
}

.product-search .section-head-line {
  padding-top: 0;
}

.product-search .section-title,
.devices .section-title {
  padding-top: 0;
}

.devices .section-head-line {
  margin-top: 18px;
  padding-top: 0;
}

.devices {
  margin-top: 60px;
  /* margin-bottom: 70px; */
}

/* ==========================================================================
   商品検索フィルター (search filter)
   ========================================================================== */

/* 商品検索＆バナー セクション（グレー背景・斜め区切り） */
.product-search {
  position: relative;
  z-index: 1;
  margin-top: -8px;
  padding: 44px 0 60px;
  background: #EDEDED;
}

.hero-subcatch {
  margin: 8px 0 0;
  font-size: 22px;
  font-weight: 900;
  color: #FF0C8C;
  text-align: center;
  line-height: 1.4;
  letter-spacing: 0.04em;
}

.search-filter-section {
  /* margin: 20px 16px 8px; */
  padding: 24px 20px;
  background: var(--rk-white);
  border-radius: 16px;
}

/* keep ecm-search form fully visible (ECM module may collapse it) */
.search-filter-section .ecm-search {
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
  position: relative !important;
  display: block !important;
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  background: transparent !important;
}

.search-filter-section .ecm-search * {
  visibility: visible !important;
}

.search-filter-section .ecm-search .search-filter-grid,
.search-filter-section .ecm-search .search-filter-actions {
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
}

.search-filter-section .ecm-search .search-filter-grid {
  display: grid !important;
}

.search-filter-title {
  margin: 0 0 20px;
  padding-bottom: 12px;
  font-size: 17px;
  font-weight: 700;
  color: var(--rk-charcoal);
  border-bottom: 2px solid #BF080E !important;
}

.search-filter-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
}

.filter-group {
  padding: 0;
}

.filter-group-keyword {
  grid-column: 1 / -1;
}

.filter-label {
  display: block;
  margin-bottom: 10px;
  font-size: 13px;
  font-weight: 700;
  color: var(--rk-gray);
  letter-spacing: 0.03em;
}

.keyword-input-wrap {
  position: relative;
}

.keyword-input {
  width: 100%;
  padding: 12px 16px;
  font-size: 14px;
  color: var(--rk-charcoal);
  background: var(--rk-white);
  border: 1px solid #E4C6D6;
  border-radius: 8px;
  box-sizing: border-box;
  transition: border-color 0.2s;
}

.keyword-input:focus {
  outline: none;
  border-color: #FF0C8C;
  box-shadow: 0 0 0 3px rgba(255, 12, 140, 0.12);
}

.keyword-input::placeholder {
  font-size: 13px;
  color: #B9A6B0;
}

.filter-options {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.filter-group-condition .filter-options {
  display: grid;
  grid-template-columns: 1fr 1fr;
}

.filter-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 16px;
  font-size: 14px;
  font-weight: 600;
  color: var(--rk-charcoal);
  background: #FBEEF5;
  border: 1px solid #E4C6D6;
  border-radius: 40px;
  cursor: default;
  white-space: nowrap;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}

.filter-chip-condition {
  cursor: pointer;
}

.filter-chip-condition input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.filter-chip-condition:has(input[type="radio"]:checked) {
  color: var(--rk-white);
  background: #FF0C8C;
  border-color: #FF0C8C;
}

.filter-price-selects {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: nowrap;
}

.filter-price-selects .ecm-search-select-container {
  flex: 1;
}

.filter-price-selects .ecm-search-select {
  width: 100%;
  padding: 10px 12px;
  font-size: 14px;
  color: var(--rk-charcoal);
  background: var(--rk-white);
  border: 1px solid #E4C6D6;
  border-radius: 8px;
  appearance: auto;
  cursor: pointer;
  transition: border-color 0.2s;
}

.filter-price-selects .ecm-search-select:focus {
  outline: none;
  border-color: #FF0C8C;
  box-shadow: 0 0 0 3px rgba(255, 12, 140, 0.12);
}

.price-separator {
  flex-shrink: 0;
  font-size: 14px;
  font-weight: 700;
  color: var(--rk-gray);
}

.search-filter-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid #E4C6D6;
}

.filter-reset-btn {
  padding: 12px 24px;
  font-size: 13px;
  font-weight: 700;
  color: var(--rk-gray);
  background: none;
  border: 1px solid #E4C6D6;
  border-radius: 40px;
  cursor: pointer;
  transition: background 0.2s, opacity 0.2s;
}

.filter-reset-btn:hover {
  opacity: 0.8;
  text-decoration: underline;
}

.filter-search-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 220px;
  padding: 14px 40px;
  font-size: 15px;
  font-weight: 700;
  color: var(--rk-white);
  background: #BF080E;
  border: none;
  border-radius: 40px;
  cursor: pointer;
  box-shadow: none;
  text-decoration: none;
  transition: box-shadow 0.2s, opacity 0.2s;
}

.filter-search-btn:hover {
  opacity: 0.9;
  background: #BF080E;
  color: var(--rk-white);
  text-decoration: underline;
}

.filter-search-btn,
.filter-search-btn:visited {
  color: var(--rk-white);
}

/* SP-only overrides (must be at the end to override global !important rules) */
@media (max-width: 767px) {
  .fv {
    background: #FF0C8C !important;
    padding-top: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    position: relative !important;
    overflow: hidden !important;
    margin-top: 0 !important;
    min-height: 545px !important;
  }

  .fv-coins-image {
    /* display: block !important;
    position: absolute !important;
    top: auto !important;
    bottom: -29px !important;
    left: 0 !important;
    width: 402px !important;
    height: auto !important;
    z-index: 3 !important;
    pointer-events: none !important; */
  }

  .fv-inner {
    background: var(--rk-fv-gray-bg) !important;
    padding: 34px 0px 33px 0px !important;
    border-radius: 0 !important;
    transform: none !important;
    width: 100% !important;
    position: relative !important;
    z-index: 2 !important;
    overflow: hidden !important;
    top: auto !important;
    bottom: -43px;
  }

  .fv-container {
    padding: 0 !important;
    gap: 0 !important;
    position: relative !important;
    z-index: 2 !important;
  }

  .fv-num,
  .fv-unit-col .fv-unit-prefix,
  .fv-unit-col .fv-unit {
    color: #FF0C8C !important;
  }

  .fv-lead,
  .fv-lead-hl {
    color: var(--rk-black) !important;
  }

  .fv-lead {
    border-color: #A1A1A1 !important;
  }

  .fv-num {
    font-size: 62px !important;
  }

  .fv-unit-col .fv-unit-prefix {
    font-size: 16px !important;
    line-height: 1.2 !important;
    margin-bottom: 0 !important;
  }

  .fv-unit-col .fv-unit {
    font-size: 22px !important;
    line-height: 1.2 !important;
  }

  .fv-device-group {
    justify-content: center !important;
    align-items: center !important;
    flex-direction: column !important;
    margin-top: 0 !important;
    width: 100% !important;
  }

  .fv-device-img-family {
    position: relative !important;
    right: auto !important;
    left: auto !important;
    top: auto !important;
    bottom: -130px !important;
    margin: 0 auto !important;
    width: 14em !important;
    transform: scale(1.6) translateY(12%) !important;
    transform-origin: center center !important;
    order: 1 !important;
  }

  .fv-device-logos {
    position: absolute !important;
    left: 50% !important;
    top: auto !important;
    bottom: 250px !important;
    transform: translateX(-50%) !important;
    margin: 0 !important;
    flex-direction: row !important;
    justify-content: center !important;
    align-items: center !important;
    flex-wrap: wrap !important;
    width: auto !important;
    gap: 12px !important;
    z-index: 2 !important;
    order: 2 !important;
  }

  .fv-device-group .fv-device-logo {
    height: 36px !important;
    width: auto !important;
  }

  .fv-device-group .fv-device-logo-apple {
    width: 146px !important;
    height: auto !important;
  }

  .fv-cta-row {
    flex-direction: column;
  }
}

.devices .ecm-alcor {
  background: var(--rk-white);
  border: 1px solid #eee;
  border-radius: 12px;
  overflow: hidden;
}

.devices .ecm-alcor-image-link {
  display: block;
  aspect-ratio: 1 / 1;
  background: var(--rk-white);
  padding: 10px;
}

.devices .ecm-alcor-image-link img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.devices .ecm-alcor-body {
  padding: 12px;
}

.devices .ecm-alcor-name {
  display: -webkit-box;
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.4;
  color: var(--rk-black);
  text-decoration: none;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.devices .ecm-alcor-price {
  display: block;
  margin: 0 0 6px;
  text-decoration: none;
}

.devices .ecm-alcor-price-num {
  font-size: 22px;
  font-weight: 900;
  color: var(--rk-red);
}

.devices .ecm-alcor-shop-link {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--rk-gray);
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
}

.devices .ecm-alcor-shop-link .clamp-1 {
  overflow: hidden;
  text-overflow: ellipsis;
}

.devices [data-module-name="ecm-alcor"] {
  padding: 0 16px;
}

/* ---------- フローティングナビ ---------- */
.js-iphone-campaign-floating-navi {
  max-width: 100vw;
}

.js-iphone-campaign-floating-navi .ecm-floating-navi {
  align-items: center;
  flex-wrap: nowrap;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.ecm-floating-navi-item {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
}

.js-iphone-campaign-floating-navi-item {
  padding: 0 12px;
}

.js-iphone-campaign-floating-navi .js-iphone-campaign-floating-navi-item.ecm-floating-navi-item.ecm-floating-navi-item-anchor[data-in-viewport="true"] {
  background: #FF0C8C !important;
  color: var(--rk-white) !important;
  font-weight: 700 !important;
  text-decoration-color: var(--rk-white) !important;
  border-color: #fff !important;
}

.js-iphone-campaign-floating-navi .js-iphone-campaign-floating-navi-item.ecm-floating-navi-item.ecm-floating-navi-item-anchor[data-in-viewport="true"] span {
  color: #fff !important;
  text-decoration-color: var(--rk-white) !important;
}

/* ---------- 共通: aタグホバー時は下線表示に統一 ---------- */
.lp-mobile a:hover,
.lp-mobile a:hover * {
  text-decoration: underline !important;
  text-decoration-color: currentColor !important;
}

.lp-mobile a:hover {
  opacity: 0.8;
}

.lp-mobile .fv-cta-step:hover .ecm-icon-chevron-up,
.lp-mobile .fv-cta-step:hover .ecm-icon-chevron-up::before {
  text-decoration: none !important;
}

/* ---------- キャンペーンルール内のリンクは青文字 ---------- */
.ecm-campaign-details a {
  color: #1A73E8;
}
