@import "section-bg.generated.css";

/* ========================================
   Base / Variables
   ======================================== */
:root {
  --base-font-size: 16px;
  --sp-font-size: 14px;
  --ink: #231816;
  --ink-soft: #57534e;
  --muted: #78716c;
  --main-color: #ea5504;
  --sub-color: #43b232;
  --pink: #ee777b;
  --red: #d92017;
  --green: #369528;
  --green-bright: #43b232;
  --orange: #f59b0f;
  --gold: #e58b00;
  --cyan: #0a98ab;
  --bg: #fff8f1;
  --paper: #ffffff;
  --cream: #fff8ec;
  --faq-bg: #fdece5;
  --line: #e6e6e6;
  --breakpoint: 798px;
  --max-width-container: 2000px;
  --max-width-inner: 1152px;
  --gap-section: 90px;
  --gap: 24px;
  --font: "Zen Maru Gothic", "Hiragino Maru Gothic ProN", sans-serif;
  --font-note: "Noto Sans JP", sans-serif;
  --radius-card: 20px;
  --shadow-card: 0 4px 12px rgba(35, 24, 22, 0.08);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  font-size: var(--base-font-size);
  scroll-behavior: smooth;
}

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

/* 固定ヘッダー分、アンカー位置をずらす */
:target,
section[id] {
  scroll-margin-top: 120px;
}

body {
  margin: 0;
  color: var(--ink);
  background: var(--bg);
  font-family: var(--font);
  font-weight: 500;
  line-height: 1.7;
}

img {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}

a {
  color: inherit;
  text-decoration: none;
}

button,
summary {
  font-family: inherit;
}

p,
h1,
h2,
h3 {
  margin: 0;
}

ul,
ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

.wrapper {
  max-width: var(--max-width-container);
  margin: 0 auto;
  padding-top: 102px;
  background: var(--bg);
  overflow: clip;
}

.wrap {
  width: min(100% - 40px, var(--max-width-inner));
  margin: 0 auto;
}

/* ========================================
   Common components
   ======================================== */
.btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 18px 24px;
  border-radius: 16px;
  color: var(--paper);
  font-weight: 700;
  line-height: 1.3;
  text-align: center;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  border: 2px solid var(--paper);
  overflow: hidden;
  isolation: isolate;
  transition: filter 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.btn--orange,
.fixed_cta {
  background: linear-gradient(180deg, #f59b0f 0%, #ea5504 100%);
}

.btn--pink {
  background: linear-gradient(180deg, #ee777b 0%, #f71e1e 100%);
}

.btn--green {
  background: var(--green-bright);
}

/* CVボタン キラーン（常時） */
.btn::after,
.fixed_cta::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  width: 45%;
  height: 100%;
  background: linear-gradient(
    105deg,
    rgba(255, 255, 255, 0) 0%,
    rgba(255, 255, 255, 0.55) 50%,
    rgba(255, 255, 255, 0) 100%
  );
  transform: translateX(-160%) skewX(-18deg);
  animation: btn_kira 2.8s ease-in-out infinite;
  pointer-events: none;
}

/* テキストボタン: 文字の下に光／画像CTA: 画像の上に光 */
.btn > * {
  position: relative;
  z-index: 2;
}

.fixed_cta::after {
  z-index: 3;
}

@keyframes btn_kira {
  0%,
  55% {
    transform: translateX(-160%) skewX(-18deg);
  }
  100% {
    transform: translateX(320%) skewX(-18deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .btn::after,
  .fixed_cta::after {
    animation: none;
    content: none;
  }
}

.btn_icon {
  width: 28px;
  height: 28px;
  border: 2px solid currentColor;
  border-radius: 50%;
  position: relative;
  flex: 0 0 auto;
}

.btn_icon::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 46%;
  width: 8px;
  height: 8px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: translate(-50%, -50%) rotate(45deg);
}

.section_title {
  font-size: 40px;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.35;
  text-align: center;
  -webkit-text-stroke: 10px #fff;
  paint-order: stroke fill;
}

.section_title span,
.fv_title span {
  -webkit-text-stroke: 10px #fff;
  paint-order: stroke fill;
}

.section_lead {
  margin-top: 12px;
  font-size: 21px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-align: center;
  line-height: 1.6;
}

/* 480px以下だけ改行（例: <br class="br_sp480">） */
.br_sp480 {
  display: none;
}

@media (max-width: 480px) {
  .br_sp480 {
    display: inline;
  }
}

/* Hover（マウス等のみ。タッチでは付けない） */
@media (hover: hover) and (pointer: fine) {
  .header_logo:hover {
    opacity: 0.7;
  }

  .btn:hover {
    filter: brightness(1.06);
    transform: translateY(1px);
    box-shadow: 0 1px 6px rgba(0, 0, 0, 0.22);
  }

  .btn:active {
    filter: brightness(0.98);
    transform: translateY(2px);
  }

  /* FAQ 内の + ボタンは CTA ホバーを打ち消す */
  #faq .faq_dl .btn:hover,
  #faq .faq_dl .btn:active {
    filter: none;
    transform: none;
    box-shadow: none;
  }

  .fv_nav:hover {
    background: rgba(45, 45, 45, 0.92);
  }

  .promise_more:hover {
    filter: brightness(1.06);
    transform: translateY(1px);
  }

  .promise_more:active {
    filter: brightness(0.98);
    transform: translateY(2px);
  }

  .modal_close:hover {
    background: #cfcfcf;
  }

  #faq .faq_dl .inner:hover {
    background: #fff8f3;
  }

  .fixed_cta:hover {
    filter: brightness(1.05);
    transform: translateX(-50%) translateY(1px);
  }

  .conv_coupon:hover {
    opacity: 0.8;
  }
}

/* ========================================
   Header
   ======================================== */
.header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 30;
  background: var(--paper);
  border-bottom: 2px solid var(--line);
  padding: 16px 0;
}

.header_inner {
  width: min(100% - 80px, 1500px);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

.header_catch {
  margin: 0 0 4px;
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
}

.header_brand h1 {
  line-height: 0;
}

.header_logo {
  display: inline-block;
  line-height: 0;
  transition: opacity 0.2s ease;
}

.header_brand img {
  width: min(260px, 42vw);
  height: auto;
}

.header_cta {
  font-size: 18px;
  padding: 14px 22px;
  border-radius: 16px;
  white-space: nowrap;
}

/* ========================================
   FV
   ======================================== */
.fv {
  position: relative;
  padding: 60px 0 30px;
  background: var(--paper);
  overflow: hidden;
}

.fv_wrap {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 40px;
  width: min(100% - 40px, 1240px);
  container-type: inline-size;
}

.fv_blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(40px);
  z-index: 0;
}

.fv_blob--green {
  width: 477px;
  height: 477px;
  top: -120px;
  right: -152px;
  background: #43b232;
  box-shadow: 0 0 0 35px #43b232;
  opacity: 0.11;
}

.fv_blob--pink {
  width: 424px;
  height: 424px;
  top: 53px;
  left: -153px;
  background: rgba(238, 119, 123, 0.15);
}

.fv_title {
  max-width: 100%;
  min-width: 0;
  font-size: 44px;
  font-weight: 700;
  letter-spacing: 0.1136em;
  line-height: 56.4px;
  text-align: center;
  -webkit-text-stroke: 5px #fff;
  paint-order: stroke fill;
}

.fv_title br {
  display: none;
}
.fv_title--pink {
  color: var(--pink);
}
.fv_title--green {
  color: var(--green);
}
.fv_title--gold {
  color: var(--gold);
}
@media (max-width: 1150px) {
  .fv_title br {
    display: initial;
  }
}

.fv_slider {
  width: min(100%, 1213px);
}

.fv_slider .swiper {
  position: relative;
  /* Figma: 中央が枠より上下にはみ出す分 */
  padding: 16px 0;
  overflow: hidden;
}

.fv_slider .swiper-wrapper {
  align-items: center;
}

/* Figma #10:25 … 中央 615.48 / 枠 1213.38 = 50.724% */
.fv_slide {
  z-index: 1;
  width: 50.724%;
  margin: 0;
  height: auto;
  aspect-ratio: 615.48 / 492.39;
}

.fv_slide.swiper-slide-active {
  z-index: 2;
}

/* rewind 端で「隣の隣」が同側に二重 peek するのを防ぐ */
.fv_slider .fv_slide:not(.swiper-slide-active):not(.swiper-slide-prev):not(.swiper-slide-next) {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* 左右カードは中央の 553.94/615.48 ≒ 0.9 倍（Figma） */
.fv_slide_inner {
  position: relative;
  width: 100%;
  height: 100%;
  transform: scale(0.9);
  transform-origin: center center;
  transition: transform 0.45s ease-out;
}

.fv_slide.swiper-slide-active .fv_slide_inner {
  transform: scale(1);
}

.fv_slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 13.85px;
  background: #f3f3f0;
  transition: border-radius 0.45s ease-out;
}

.fv_slide_inner::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 13.85px;
  background: rgba(255, 255, 255, 0.42);
  opacity: 1;
  pointer-events: none;
  transition: opacity 0.45s ease-out;
}

.fv_slide.swiper-slide-active .fv_slide_inner::after {
  opacity: 0;
}
.fv_slide.swiper-slide-active img {
  border-radius: 15.39px;
}
@media (prefers-reduced-motion: reduce) {
  .fv_slide_inner,
  .fv_slide_inner::after,
  .fv_slide img {
    transition: none;
  }
}

.fv_nav {
  position: absolute;
  top: 50%;
  z-index: 3;
  width: 46px;
  height: 46px;
  border: 0;
  border-radius: 50%;
  background: rgba(45, 45, 45, 0.72);
  transform: translateY(-50%);
  cursor: pointer;
  transition: background-color 0.2s ease;
}

/* Figma: ボタンはスライダー左/右から 174px */
.fv_nav--prev {
  left: calc(174 / 1213 * 100%);
}
.fv_nav--next {
  right: calc(174 / 1213 * 100%);
}
.fv_nav::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 10px;
  height: 10px;
  border-top: 2px solid #fff;
  border-right: 2px solid #fff;
}

.fv_nav--prev::before {
  transform: translate(-30%, -50%) rotate(-135deg);
}
.fv_nav--next::before {
  transform: translate(-70%, -50%) rotate(45deg);
}
.fv_dots.swiper-pagination {
  position: relative;
  inset: auto;
  display: flex;
  justify-content: center;
  gap: 20px;
  width: auto;
  margin-top: 30px;
  transform: none;
}

.fv_dots .swiper-pagination-bullet {
  width: 13px;
  height: 13px;
  margin: 0 !important;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(208, 200, 184, 0.9);
  opacity: 1;
  cursor: pointer;
}

.fv_dots .swiper-pagination-bullet-active {
  background: var(--ink);
}

.fv_award {
  width: min(830px, 100%);
}

.benefit {
  display: flex;
  align-items: center;
  gap: 18px;
  width: 825px;
  background: #fffdf6;
  border-radius: 25px;
  overflow: hidden;
  zoom: min(1, calc(100cqi / 825px));
}

.benefit_label {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  align-self: stretch;
  width: 117px;
  padding: 13px 0;
  background: var(--pink);
  color: var(--paper);
  font-size: 36px;
  font-weight: 500;
  line-height: 35px;
  letter-spacing: -0.016em;
}

.benefit_label img {
  width: 58px;
}

.benefit_body {
  display: flex;
  flex-direction: column;
  gap: 12.5px;
  padding: 0 31px;
}

.benefit_kicker {
  color: #397250;
  font-size: 25px;
  font-weight: 700;
  letter-spacing: -0.0235em;
}

.benefit_offer {
  display: flex;
  flex-direction: column;
}

.benefit_lead {
  font-size: 23px;
  font-weight: 700;
  letter-spacing: 0.0265em;
}

.benefit_num,
.benefit_zero {
  font-family: Arimo, sans-serif;
  font-weight: 700;
}

.benefit_num {
  font-size: 29px;
  letter-spacing: 0;
}

.benefit_price {
  display: flex;
  align-items: center;
  margin-top: -15px;
  font-size: 58px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.0094em;
}

.benefit_zero {
  color: var(--orange);
  font-size: 105px;
  letter-spacing: -0.0052em;
}

.benefit_yen {
  color: var(--orange);
  font-size: 58px;
}

.benefit_illust {
  width: 322px;
  height: 252px;
  object-fit: cover;
  margin-left: auto;
}

/* ========================================
   Worry
   ======================================== */
.worry {
  position: relative;
  padding: 30px 0 60px;
  background: var(--paper);
  overflow: hidden;
}

.worry_deco {
  position: absolute;
  height: auto;
  pointer-events: none;
}

.worry_deco--left {
  width: 420px;
  top: 24px;
  left: -350px;
}

.worry_deco--right {
  width: 500px;
  top: 8px;
  right: -500px;
}

@media (max-width: 1100px) {
  .worry_deco {
    display: none;
  }
}

.worry .wrap {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 28px;
}

.worry .section_title {
  letter-spacing: 5px;
}
.worry .section_title span {
  color: var(--red);
}
.worry .section_title br {
  display: none;
}
.worry_panel {
  position: relative;
  width: min(100%, 1080px);
  padding: 40px 28px 36px;
  background: var(--cream);
  border-radius: 30px;
}

.worry_heading {
  font-size: 32px;
  font-weight: 700;
  letter-spacing: 5px;
  text-align: center;
  line-height: 1.45;
}

.worry_heading span {
  position: relative;
  display: inline-block;
  z-index: 0;
}

.worry_heading span::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -3px;
  z-index: -1;
  width: 100%;
  height: 11px;
  background: rgba(255, 247, 26, 0.45);
  border-radius: 10px;
}

.worry_list {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-top: 30px;
}

.worry_list li {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  text-align: center;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.5;
}

.worry_list img {
  width: 150px;
  height: 150px;
  object-fit: cover;
  border-radius: 50%;
  border: 4px solid #fff;
  box-shadow: 0 8px 24px rgba(35, 24, 22, 0.12);
}

.worry_note {
  position: relative;
  z-index: 2;
  /* wrap gap 28px を相殺しつつ、パネル下端に約 10px 被せる（Figma gap: -10px） */
  margin-top: -38px;
  width: min(100%, 867px);
  padding: 20px 10px;
  border: 3px solid var(--red);
  background: var(--paper);
  color: var(--red);
  font-size: 29px;
  font-weight: 700;
  line-height: 32px;
  text-align: center;
  box-shadow: 4px 4px 2px rgba(0, 0, 0, 0.25);
}

/* ========================================
   Feature
   ======================================== */
.feature {
  position: relative;
  padding: 96px 0;
  background-color: #fff8f1;
  background-image:
    radial-gradient(circle at 8% 20%, rgba(252, 255, 234, 0.9) 0%, rgba(252, 255, 234, 0) 30%),
    radial-gradient(circle at 92% 10%, rgba(234, 248, 232, 0.9) 0%, rgba(234, 248, 232, 0) 28%);
}

.feature::before,
.support::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("../img/pattern_grid.webp");
  background-size: 72px;
  opacity: 0.05;
  pointer-events: none;
  z-index: 0;
}

.feature_deco {
  position: absolute;
  top: 45px;
  left: 50%;
  width: 532px;
  transform: translateX(-50%);
  pointer-events: none;
}

.feature .wrap {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
}

.feature .section_title {
  font-size: 45px;
  letter-spacing: 5px;
  line-height: 1.45;
  text-shadow: 0 2px 4px rgba(255, 255, 255, 0.3);
}

.feature .section_title .is-red {
  color: var(--red);
}
.feature .section_title .bracket--open {
  letter-spacing: 5px;
}
.feature .section_title .bracket--close {
  letter-spacing: -5px;
}
.feature .section_lead {
  margin-top: 12px;
  font-size: 21px;
  line-height: 29px;
  letter-spacing: 0.0476em;
}

.feature_list {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  margin-top: 120px;
}

.feature_item,
.feature_item--reverse {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  margin-bottom: 5%;
}

.feature_item--reverse {
  flex-direction: row-reverse;
}
.feature_visual {
  position: relative;
  flex: 0 1 600px;
  width: min(600px, 54%);
  aspect-ratio: 600 / 470;
}

.feature_photo {
  position: absolute;
  top: 1.63%;
  left: 0.06%;
  width: 83.33%;
  height: 85.11%;
  object-fit: cover;
  border-radius: 20px;
  border: 1px solid rgba(47, 41, 36, 0.1);
}

.feature_item--reverse .feature_photo {
  left: 16.78%;
}
.feature_inset {
  position: absolute;
  top: 57.38%;
  left: 60.89%;
  width: 33.71%;
  height: 36.17%;
  object-fit: cover;
  border: 5px solid #fff;
  border-radius: 0;
  box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.24);
  transform: rotate(4deg);
}

.feature_item--reverse .feature_inset {
  top: 50.67%;
  left: 4.95%;
  width: 37.3%;
  height: 37.74%;
  transform: rotate(-4deg);
}

.feature_tape {
  position: absolute;
  top: -3.23%;
  left: -2.11%;
  width: 16.2%;
}

.feature_tape--right {
  top: -2.52%;
  left: 86.61%;
  width: 16.2%;
}

.feature_item:last-child .feature_tape {
  top: -3.56%;
  left: -2.45%;
  width: 16.2%;
}

.feature_tags {
  position: absolute;
  top: 75.46%;
  left: 2.67%;
  display: flex;
  gap: 11px;
}

.feature_item--reverse .feature_tags {
  left: 41.61%;
  right: auto;
}

.feature_tags li {
  padding: 8px 16px;
  border-radius: 999px;
  background: var(--red);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  line-height: 22px;
  letter-spacing: 0.0769em;
}

.feature_tags li:last-child {
  background: #fff;
  color: var(--red);
  border: 1px solid var(--red);
}

.feature_tags--green li {
  background: var(--green-bright);
}
.feature_tags--green li:last-child {
  color: var(--green);
  border-color: var(--green-bright);
}
.feature_tags--cyan li {
  background: #08bbd3;
}
.feature_tags--cyan li:last-child {
  color: #08bbd3;
  border-color: #08bbd3;
}

.feature_copy {
  flex: 1 1 0;
  min-width: 0;
}
.feature_copy--red {
  color: var(--red);
}
.feature_copy--green {
  color: var(--green);
}
.feature_copy--cyan {
  color: var(--cyan);
}
.feature_copy h3 {
  font-size: 42px;
  line-height: 62px;
  letter-spacing: 0.119em;
  -webkit-text-stroke: 10px #fff;
  paint-order: stroke fill;
  filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.19));
}

.feature_copy > p {
  margin-top: 14px;
  font-size: 20px;
  font-weight: 700;
}

.feature_voice {
  display: flex;
  align-items: center;
  gap: 22px;
  margin-top: 23px;
  padding: 18px;
  background: var(--paper);
  border-radius: 18px;
  font-size: 20px;
  font-weight: 700;
}

.feature_voice img {
  width: 120px;
  height: 120px;
  flex-shrink: 0;
  object-fit: cover;
}

@media (max-width: 1000px) {
  .feature_list {
    gap: 40px;
    margin-top: 40px;
  }

  .feature_item,
  .feature_item--reverse {
    flex-direction: column;
    align-items: center;
    gap: 0;
    container-type: inline-size;
  }

  .feature_visual {
    flex: none;
    width: 600px;
    aspect-ratio: 600 / 420;
    zoom: min(1, calc(100cqi / 600px));
  }

  .feature_copy {
    flex: none;
    width: 100%;
  }
}

/* ========================================
   Convenience
   ======================================== */
.convenience {
  padding: 100px 0 80px;
  background-color: #fff;
  background-image: url("../img/convenience_bg.webp");
  background-repeat: repeat;
}

.convenience .section_title {
  position: relative;
}
.convenience .section_title::before {
  content: "";
  position: absolute;
  top: -70px;
  left: 50%;
  width: 90px;
  aspect-ratio: 235 / 225;
  transform: translateX(-50%);
  background: url("../img/convenience_heart.webp") center / contain no-repeat;
}
.convenience_em {
  color: var(--pink);
}
.convenience_num {
  color: var(--red);
  font-size: 72px;
  line-height: 0.8;
}

.convenience_list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 56px;
}

@media (max-width: 1000px) {
  .convenience_list {
    grid-template-columns: 1fr;
    gap: 55px;
    margin-top: 53px;
  }

  .conv_card {
    width: min(100%, 546px);
    margin-inline: auto;
  }
}

.conv_card {
  position: relative;
  aspect-ratio: 546 / 710;
  border-radius: 8px;
  color: #fff;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

.conv_card--order {
  background-image: url("../img/convenience_order.webp");
}
.conv_card--absence {
  background-image: url("../img/convenience_absence.webp");
}
.conv_card--shop {
  background-image: url("../img/convenience_shop.webp");
}
.conv_pill {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 310px;
  padding: 8px 18px;
  border: 2px solid #fff;
  border-radius: 999px;
  background: var(--red);
  font-size: 18px;
  font-weight: 700;
}

.conv_pill::after {
  content: "";
  position: absolute;
  top: calc(100% - 1px);
  left: 50%;
  width: 23px;
  height: 22px;
  transform: translateX(-50%);
  background: url("../img/conv_card_fukidashi.webp") center / contain no-repeat;
}

.conv_pill span {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: #fff;
  color: var(--red);
  line-height: 1;
  padding-bottom: 3px;
}

.conv_body {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 72px 18px 18px;
  border-radius: 0 0 8px 8px;
  background: linear-gradient(180deg, rgba(33, 14, 0, 0) 0%, rgba(33, 14, 0, 0.82) 46%, #210e00 100%);
}

.conv_body h3 {
  font-size: 22px;
  line-height: 1.35;
  text-shadow: 0 0 12px rgba(0, 0, 0, 0.45);
}

.conv_body p {
  font-size: 13px;
  font-weight: 700;
  line-height: 1.6;
}

.conv_coupon {
  display: block;
  margin: 0;
  color: inherit;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.6;
  text-align: right;
  text-decoration: underline;
}

/* ========================================
   Flow
   ======================================== */
.flow {
  position: relative;
  padding: 80px 0;
  overflow: hidden;
  background-color: #fff4e7;
  background-image:
    linear-gradient(90deg, #fff4e7 11.1%, rgba(255, 243, 224, 0.5) 68.3%, rgba(255, 244, 231, 0.7) 100%),
    url("../img/flow_driver.webp");
  background-repeat: no-repeat;
  background-size: auto, cover;
  background-position: top center;
}

.flow .wrap {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 40px;
}

.flow_head {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.flow_title {
  font-size: 45px;
  font-weight: 700;
  letter-spacing: 0.1111em;
  line-height: 1.35;
  -webkit-text-stroke: 10px #fff;
  paint-order: stroke fill;
}

.flow_title .flow_kicker {
  display: block;
  color: #D92017;
  font-size: 34px;
  letter-spacing: 0;
  -webkit-text-stroke: 7px #fff;
  paint-order: stroke fill;
}

.flow_title span {
  color: var(--orange);
}
.flow_note {
  font-size: 18px;
  font-weight: 500;
  line-height: 39.67px;
}

.flow_steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 30px;
}

@media (max-width: 1000px) {
  .flow_steps {
    grid-template-columns: repeat(2, 1fr);
  }
}

.flow_steps li {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  min-width: 0;
  padding: 8px 15px 24px;
  background: #fff;
  border-radius: 15px;
  box-shadow: 3px 4px 4px rgba(0, 0, 0, 0.25);
  text-align: center;
}

.flow_step_visual {
  position: relative;
  container-type: inline-size;
  width: 100%;
  max-width: 230px;
  aspect-ratio: 230 / 190;
}

.flow_step_visual::before {
  content: "";
  position: absolute;
  top: 9.47%;
  left: 15.22%;
  width: 69.57%;
  height: 84.21%;
  border-radius: 50%;
  background: #fff1e8;
}

.flow_steps li:nth-child(2) .flow_step_visual::before {
  background: #eff8eb;
}
.flow_step_visual img {
  position: absolute;
  top: 11.58%;
  left: 17.39%;
  width: 65.22%;
  height: 78.95%;
  object-fit: contain;
}

.flow_step_label {
  /* Figma STEP帯 162.33×52.31 / 写真領域 230×190 */
  position: absolute;
  top: calc(-35.15 / 190 * 100%);
  left: calc(-14 / 230 * 100%);
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: calc(4 / 230 * 100cqi);
  width: calc(162.33 / 230 * 100%);
  height: calc(52.31 / 190 * 100%);
  /* 矢印先端ぶん右・台形の見え方に合わせて下を少し */
  padding: 0 calc(20 / 230 * 100cqi) calc(3 / 230 * 100cqi) calc(6 / 230 * 100cqi);
  margin: 0;
  background: url("../img/flow_step_ribbon.webp") center / 100% 100% no-repeat;
  color: #fff;
  font-family: "Noto Sans JP", sans-serif;
  font-size: calc(18.47 / 230 * 100cqi);
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1;
}

.flow_step_label span:last-child {
  font-size: calc(33.24 / 230 * 100cqi);
  letter-spacing: 0;
  line-height: 1;
}

.flow_steps h3 {
  color: var(--orange);
  font-size: 29px;
}

.flow_steps p:last-child {
  max-width: 100%;
  font-size: 15px;
  font-weight: 700;
  line-height: 17.88px;
}

/* ========================================
   Support
   ======================================== */
.support {
  position: relative;
  padding: 90px 0;
  background-color: #fff;
}

.support .wrap {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 92px;
}

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

.support .section_title {
  position: relative;
  width: fit-content;
  max-width: 100%;
  letter-spacing: 0.125em;
  -webkit-text-stroke: 0;
}

.support .section_title span {
  -webkit-text-stroke: 0;
}

.support_daily {
  position: relative;
  display: inline-block;
}

.support_dots {
  position: absolute;
  top: -2px;
  left: 50%;
  display: flex;
  gap: 36px;
  transform: translateX(-50%);
  pointer-events: none;
}

.support_dots::before,
.support_dots::after {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.support_dots::before {
  background: #d92017;
}
.support_dots::after {
  background: var(--pink);
}
.support .section_lead {
  width: min(576px, 100%);
  margin-top: 0;
  color: var(--ink-soft);
  font-size: 22px;
  line-height: 20px;
  letter-spacing: 0;
}

.support_em {
  color: var(--green-bright);
}
.support_em--gold {
  color: var(--orange);
}
.support_list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 50px;
  width: 100%;
}

.support_card {
  position: relative;
  background: #fff;
  border: 4px solid var(--pink);
  border-radius: 15px;
}

.support_card img {
  width: 100%;
  height: auto;
  aspect-ratio: 551 / 308;
  border-radius: 11px 11px 0 0;
}

.support_card .support_stamp {
  position: absolute;
  top: -50px;
  left: -40px;
  z-index: 1;
  width: 163px;
  height: 164px;
  border-radius: 0;
}

.support_body {
  display: flex;
  flex-direction: column;
  gap: 13px;
  padding: 24px;
}

.support_tag {
  align-self: flex-start;
  padding: 10px 20px;
  border-radius: 999px;
  color: #fff;
  font-size: 20px;
  font-weight: 700;
  line-height: 16.5px;
}

.support_tag--green {
  background: var(--green-bright);
}
.support_tag--gold {
  background: var(--orange);
}
.support_body h3 {
  padding-top: 4px;
  font-size: 22px;
  line-height: 27.5px;
}

.support_body p {
  font-size: 16px;
  font-weight: 700;
}

/* ========================================
   Voice
   ======================================== */
.voice {
  padding: 90px 0;
  background-color: #fff;
  background-image:
    radial-gradient(circle at 8% 20%, rgba(255, 236, 199, 0.9) 0%, rgba(255, 236, 199, 0) 30%),
    radial-gradient(circle at 92% 10%, rgba(234, 248, 232, 0.9) 0%, rgba(234, 248, 232, 0) 28%);
}

.voice .wrap {
  display: flex;
  flex-direction: column;
  gap: 40px;
}

.voice_title {
  width: min(870px, 100%);
  margin: 0 auto;
}

.voice_title img {
  width: 100%;
  height: auto;
}

.voice .section_lead {
  font-size: 24px;
  font-weight: 500;
  letter-spacing: 0.125em;
}

.voice_list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.voice_card {
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding: 20px;
  background: #fff;
  border-radius: 20px;
  box-shadow: 0 4px 7px rgba(106, 65, 0, 0.3);
}

.voice_card--gold {
  border: 3px solid var(--orange);
}
.voice_card--green {
  border: 3px solid var(--green-bright);
}
.voice_card .voice_card_head {
  display: flex;
  align-items: center;
}

.voice_card .voice_card_head img {
  position: relative;
  z-index: 1;
  width: 108px;
  height: 108px;
  object-fit: cover;
  border-radius: 50%;
  border: 3px solid var(--orange);
  background: #fff;
}

.voice_card--green .voice_card_head img {
  border-color: var(--green-bright);
}
.voice_card .voice_card_head p {
  flex: 1;
  margin-left: -35px;
  padding: 19px 20px 19px 30px;
  border-radius: 0 999px 999px 0;
  background: var(--orange);
  color: #fff;
  font-size: 21px;
  font-weight: 700;
  line-height: 1.5;
  text-align: center;
}

.voice_card--green .voice_card_head p {
  background: var(--green-bright);
  font-size: 19px;
}

.voice_card blockquote {
  margin: 0;
  font-size: 19px;
  font-weight: 500;
  letter-spacing: 0.0526em;
}

.voice_meta {
  padding: 6px 0;
  border-top: 1px solid rgba(168, 162, 158, 0.3);
  color: var(--muted);
  font-size: 15px;
  font-weight: 500;
  line-height: 16px;
  text-align: right;
}

.stats {
  position: relative;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 10px;
}

.stats_illust {
  position: absolute;
  right: calc(100% - 50px);
  bottom: -70px;
  width: min(338px, calc((100vw - min(100vw - 48px, var(--max-width-inner))) / 2 + 34px));
  height: auto;
}

@media (max-width: 1400px) {
  .stats_illust {
    display: none;
  }
}

.stats_cards {
  display: flex;
  align-items: flex-end;
  gap: 12px;
  flex: 1;
  min-width: 0;
}

.stats_cards img {
  width: calc((100% - 24px) / 3);
  height: auto;
}

.stats_list {
  display: flex;
  align-items: stretch;
  gap: 12px;
  margin: 0;
}

.stats_list > div {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-width: 180px;
  padding: 16px 14px;
  background: #fff3d6;
  border-radius: 12px;
  text-align: center;
}

.stats_list > div.stats_rank {
  background: linear-gradient(180deg, #ffed5e 0%, #ffe81a 100%);
  transform: translateY(-8px);
}

.stats_list dt {
  font-size: 15px;
  font-weight: 700;
}

.stats_value {
  margin: 0;
  color: var(--red);
  font-size: 28px;
  font-weight: 700;
  line-height: 1;
  -webkit-text-stroke: 3px #fff;
  paint-order: stroke fill;
}

.stats_value span {
  font-size: 52px;
}

.stats_prefix {
  font-size: 28px;
}
.stats_place {
  margin: 0;
  color: var(--red);
  font-size: 22px;
  font-weight: 700;
}

.stats_sub {
  margin: 0;
  font-size: 11px;
}

.stats_note {
  padding-top: 16px;
  color: var(--ink);
  font-family: var(--font-note);
  font-size: 11px;
  font-weight: 400;
  line-height: 17.88px;
}

/* ========================================
   FAQ
   ======================================== */
.faq {
  padding: 70px 0;
  background: var(--faq-bg);
}

.faq .wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
}

.faq_title {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  font-size: 42px;
  font-weight: 700;
  letter-spacing: 0.05em;
  -webkit-text-stroke: 5px #fff;
  paint-order: stroke fill;
}

.faq_title_text span {
  color: var(--red);
}
.faq_title img {
  width: 48px;
}
.faq .section_lead {
  margin-top: 0;
  font-weight: 400;
}

#faq .faq_dl {
  display: flex;
  flex-direction: column;
  gap: 18px;
  width: min(100%, 920px);
  margin: 0;
}

#faq .faq_dl .inner {
  display: flex;
  flex-direction: column;
  padding: 22px 24px;
  background: #fff;
  border-radius: 14px;
  box-shadow: 5px 5px 2px rgba(0, 0, 0, 0.18);
  transition: background-color 0.2s ease;
}

#faq .faq_dl dt {
  display: flex;
  align-items: center;
  flex: none;
  gap: 14px;
  position: relative;
  font-size: 17px;
  font-weight: 700;
  cursor: pointer;
}

#faq .faq_dl dt::before {
  content: "Q";
  display: grid;
  place-items: center;
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--green-bright);
  color: #fff;
  font-weight: 900;
}

#faq .faq_dl .btn {
  display: block;
  margin-left: auto;
  flex: 0 0 32px;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  background: none;
  box-shadow: none;
  overflow: visible;
  isolation: auto;
}

#faq .faq_dl .btn::after {
  content: none;
  animation: none;
}

#faq .faq_dl .btn span {
  position: relative;
  display: block;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--pink);
}

#faq .faq_dl .btn span::before,
#faq .faq_dl .btn span::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  background: #fff;
  border-radius: 1px;
  transform: translate(-50%, -50%);
  transition: height 0.22s ease-out, width 0.22s ease-out;
}

#faq .faq_dl .btn span::before {
  width: 14px;
  height: 2px;
}

#faq .faq_dl .btn span::after {
  width: 2px;
  height: 14px;
}

#faq .faq_dl dt.highlight .btn span::after {
  height: 0;
}

#faq .faq_dl dd {
  display: grid;
  grid-template-rows: 0fr;
  min-height: 0;
  margin: 0;
  overflow: hidden;
  transition: grid-template-rows 0.22s ease-out, margin-top 0.22s ease-out;
}

#faq .faq_dl dt.highlight + dd {
  grid-template-rows: 1fr;
  margin-top: 12px;
}

#faq .faq_dl dd > span {
  display: block;
  min-height: 0;
  overflow: hidden;
  visibility: hidden;
  transition: visibility 0s linear 0.22s;
}

#faq .faq_dl dt.highlight + dd > span {
  visibility: visible;
  transition: visibility 0s linear 0s;
}

#faq .faq_dl dd > span > span {
  display: flex;
  gap: 12px;
  padding: 12px 16px;
  border-radius: 10px;
  background: rgba(227, 227, 227, 0.3);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.7;
}

#faq .faq_dl dd > span > span::before {
  content: "A";
  align-self: flex-start;
  line-height: 1;
  color: var(--pink);
  font-size: 18px;
  font-weight: 900;
}

/* ========================================
   Promise
   ======================================== */
.promise {
  padding: 96px 0;
  background: #fff;
  border-top: 1px solid #f5f5f4;
}

.promise .wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

.promise .section_title {
  font-size: 45px;
  letter-spacing: 0.1111em;
  line-height: 1;
}

.promise .section_title br {
  display: none;
}
.promise .section_title span:not(.promise_title_mark) {
  color: var(--red);
}
@media (max-width: 1000px) {
  .promise_title_mark {
    display: none;
  }
  .promise .section_title br {
    display: initial;
  }
}

.promise .section_lead {
  margin-top: 4px;
  font-size: 24px;
  font-weight: 500;
  letter-spacing: 0.1667em;
}

.promise_family {
  width: min(320px, 70%);
  margin-top: 16px;
}

.promise_acc {
  width: 100%;
  margin-top: -16px;
  background: var(--orange);
  border: 6px solid var(--orange);
  border-radius: 28px;
  overflow: hidden;
  interpolate-size: allow-keywords;
}

.promise_acc::details-content {
  height: 0;
  overflow: hidden;
  transition: height 0.22s ease-out, content-visibility 0.22s ease-out allow-discrete;
}

.promise_acc[open]::details-content {
  height: auto;
}

.promise_acc summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 28px;
  color: #fff;
  cursor: pointer;
  list-style: none;
}

.promise_acc summary::-webkit-details-marker {
  display: none;
}
.promise_acc_title {
  display: block;
  font-size: 36px;
  font-weight: 700;
}

.promise_acc_sub {
  display: block;
  margin-top: 7px;
  font-size: 14px;
  font-weight: 500;
}

.promise_acc_btn {
  display: inline-grid;
  grid-template-columns: auto auto;
  align-items: center;
  justify-content: center;
  column-gap: 8px;
  flex: 0 0 auto;
  width: 176px;
  padding: 14px 0;
  border-radius: 999px;
  background: #fff;
  color: var(--orange);
  font-size: 24px;
  font-weight: 700;
  line-height: 20px;
  text-align: center;
}

.promise_acc_open,
.promise_acc_close {
  grid-column: 1;
  grid-row: 1;
}

.promise_acc_arrow {
  grid-column: 2;
  grid-row: 1;
  width: 16px;
  height: 16px;
  transform: rotate(180deg);
  transition: transform 0.22s ease-out;
}

.promise_acc[open] .promise_acc_arrow {
  transform: rotate(0deg);
}

.promise_acc_close {
  visibility: hidden;
}
.promise_acc[open] .promise_acc_open {
  visibility: hidden;
}
.promise_acc[open] .promise_acc_close {
  visibility: visible;
}
@media (max-width: 1050px) {
  .promise_acc summary {
    flex-direction: column;
    align-items: center;
    padding: 20px;
  }
}

.promise_grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 30px;
  padding: 30px;
  background: #fff9f2;
}

.promise_card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  padding: 0 0 20px;
  background: #fff;
  border: 1px solid #eedfd7;
  border-radius: 22px;
  box-shadow: var(--shadow-card);
  text-align: center;
}

.promise_card img {
  width: 100%;
  height: auto;
  object-fit: cover;
  border-radius: 22px 22px 0 0;
}

.promise_label {
  padding: 6px 12px;
  border-radius: 16px;
  font-size: 19px;
  font-weight: 700;
}

.promise_label--pink {
  color: var(--pink);
  background: #fff0f2;
}
.promise_label--gold {
  color: var(--orange);
  background: #fff6e2;
}
.promise_label--cyan {
  color: #0eb5b9;
  background: #ebffff;
}
.promise_label--green {
  color: var(--green-bright);
  background: #eef8ee;
}

.promise_card h3 {
  padding: 0 20px;
  font-size: 23px;
  line-height: 32px;
  letter-spacing: 0.05em;
}

.promise_card > p {
  padding: 0 20px;
  font-size: 17px;
  font-weight: 500;
  letter-spacing: 0.01em;
  text-align: left;
}

.promise_more {
  width: calc(100% - 40px);
  height: 48px;
  border: 0;
  border-radius: 24px;
  background: var(--pink);
  color: #fff;
  font-size: 18px;
  font-weight: 700;
  cursor: pointer;
  transition: filter 0.2s ease, transform 0.2s ease;
}

/* ========================================
   Start
   ======================================== */
.start {
  padding: 96px 0;
}

.start_wrap {
  display: grid;
  grid-template-columns: minmax(280px, 1fr) minmax(0, 2.4fr);
  column-gap: 20px;
  row-gap: 50px;
  align-items: center;
  width: min(100% - 40px, 1527px);
}

.start_intro {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-bottom: 100px;
}

.start_intro img {
  width: 309px;
  height: auto;
}

.start_intro h2 {
  margin: 0;
  font-size: 31px;
  font-weight: 700;
  letter-spacing: 0.12em;
  line-height: 1.2;
  color: var(--ink);
  -webkit-text-stroke: 6px #fff;
  paint-order: stroke fill;
}

.start_intro h2 span {
  color: var(--red);
}
.start_intro p {
  margin: 12px 0 0;
  font-size: 24px;
  font-weight: 500;
  letter-spacing: 0.1em;
}

.start_cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  align-items: stretch;
}

.start_card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 15px;
  background: #fff;
  border-radius: 19px;
  border: 1.5px solid var(--red);
}

.start_card--green {
  border-color: var(--green-bright);
}
.start_card--orange {
  border-color: var(--main-color);
}
.start_reco {
  position: absolute;
  top: -24px;
  left: 50%;
  width: max-content;
  margin: 0;
  color: var(--red);
  font-size: 24px;
  font-weight: 700;
  line-height: 23px;
  text-align: center;
  transform: translateX(-50%);
}

.start_chip {
  align-self: stretch;
  width: 100%;
  margin: 0;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
}

.start_card--pink .start_chip {
  color: var(--red);
  background: #ffe7e5;
}
.start_card--green .start_chip {
  color: var(--green-bright);
  background: #e5ffe7;
}
.start_card--orange .start_chip {
  color: var(--main-color);
  background: #fff6e5;
}

.start_card h3 {
  margin: 0;
  font-size: 30px;
  line-height: 1.2;
  text-align: center;
}

.start_card img {
  width: 100%;
  height: auto;
  aspect-ratio: 309 / 246;
  object-fit: cover;
  border-radius: 0;
}

.start_card > p {
  margin: 0;
  font-size: 17px;
}

.start_card > .start_fine {
  color: #5c5c5c;
  font-size: 11px;
  font-weight: 500;
  line-height: 1.5;
}

.start_card .btn {
  margin-top: auto;
  padding: 16px 10px;
  border-width: 1.5px;
  border-radius: 10px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);
  font-family: var(--font-note);
  font-size: 16px;
  white-space: nowrap;
}

.start_note {
  grid-column: 2;
  margin: 0;
  text-align: center;
  font-size: 20px;
  font-weight: 500;
}

@media (max-width: 1300px) {
  .start_wrap {
    grid-template-columns: 1fr;
    align-items: start;
    justify-items: start;
  }

  .start_intro {
    padding-bottom: 0;
    align-items: flex-start;
    text-align: left;
  }

  .start_cards {
    width: 100%;
    justify-self: stretch;
  }

  .start_note {
    grid-column: 1;
  }
}

@media (max-width: 1000px) {
  .start_cards {
    grid-template-columns: 1fr;
    gap: 40px;
  }

  .start_card {
    align-items: flex-start;
    text-align: left;
    border-radius: 7px;
  }

  .start_card h3 {
    align-self: center;
    text-align: center;
  }

  .start_card img {
    align-self: center;
    width: min(100%, 309px);
    margin-inline: auto;
  }

  .start_card > .start_chip,
  .start_card .btn {
    align-self: stretch;
  }

  .start_card--pink {
    margin-top: 24px;
  }
}

/* ========================================
   Footer / fixed CTA / modal
   ======================================== */
.footer {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 32px 16px;
  background: #fff;
  border-top: 1px solid #e7e5e4;
  text-align: center;
}

.footer p {
  font-size: 12px;
  font-family: var(--font-note);
}
.footer_copy {
  color: var(--muted);
  font-family: "M PLUS Rounded 1c", sans-serif;
}

.fixed_cta {
  display: none;
}

.modal {
  width: min(1020px, calc(100% - 32px));
  padding: 40px 48px 36px;
  border: 0;
  border-radius: 28px;
  color: var(--ink);
}

.modal::backdrop {
  background: rgba(35, 24, 22, 0.45);
}

.modal_close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 52px;
  height: 52px;
  border: 0;
  border-radius: 50%;
  background: #e0e0e0;
  font-size: 28px;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.modal h2 {
  padding-bottom: 10px;
  border-bottom: 2px solid var(--pink);
  font-size: 25px;
  line-height: 1.5;
}

.modal_body {
  display: flex;
  align-items: center;
  gap: 30px;
  margin-top: 18px;
  font-size: 18px;
}

.modal_mark {
  color: var(--pink);
  font-weight: 700;
}
.modal_asof {
  margin-top: 8px;
  color: var(--pink);
  font-size: 14px;
}

.modal_body img {
  width: min(367px, 42%);
}

.modal_note {
  display: flex;
  gap: 12px;
  margin-top: 16px;
  padding: 16px 18px;
  border-radius: 14px;
  background: #f4f7ef;
  color: var(--green);
  font-size: 16px;
}

.modal_note span {
  color: var(--green-bright);
  font-weight: 900;
}

/* ========================================
   SP
   ======================================== */
@media (max-width: 798px) {
  body {
    font-size: var(--sp-font-size);
    padding-bottom: 108px;
  }

  .wrap,
  .start_wrap,
  .header_inner,
  .fv_wrap {
    width: min(100% - 40px, var(--max-width-inner));
  }

  .wrapper {
    padding-top: 64px;
  }
  :target,
  section[id] {
    scroll-margin-top: 68px;
  }
  .header {
    padding: 12px 0;
  }
  .header_inner {
    width: min(100% - 40px, var(--max-width-inner));
    justify-content: flex-start;
  }
  .header_brand {
    text-align: left;
  }
  .header_catch {
    font-size: 11px;
    margin-bottom: 2px;
  }
  .header_brand img {
    width: 140px;
  }
  .header_cta {
    display: none;
  }
  .section_title,
  .fv_title,
  .flow_title,
  .faq_title,
  .voice_title,
  .start_intro h2 {
    font-size: 22px;
    -webkit-text-stroke-width: 5px;
  }

  .section_lead {
    font-size: 15px;
  }
  .fv {
    padding: 24px 0 20px;
  }
  .fv_wrap {
    gap: 24px;
  }
  .fv_title {
    font-size: 24px;
    letter-spacing: 0.12em;
    line-height: 1.43;
  }
  .fv_slider {
    width: calc(100% + 32px);
    max-width: none;
    margin-left: -16px;
  }
  .fv_slider .swiper {
    padding-top: 8px;
  }
  .fv_slide {
    width: 84%;
  }
  .fv_slide_inner {
    transform: scale(0.9);
  }
  .fv_slide.swiper-slide-active .fv_slide_inner {
    transform: scale(1);
  }
  .fv_nav {
    width: 36px;
    height: 36px;
  }
  .fv_nav--prev {
    left: 3%;
  }
  .fv_nav--next {
    right: 3%;
  }
  .fv_dots {
    gap: 10px;
    margin-top: 12px;
  }
  .fv_dots .swiper-pagination-bullet {
    width: 7px;
    height: 7px;
  }
  .fv_blob--green {
    width: 96px;
    height: 96px;
    top: 30px;
    right: -4px;
    left: auto;
    box-shadow: 0 0 0 71px #43b232;
  }
  .fv_blob--pink {
    width: 86px;
    height: 85px;
    top: 65px;
    left: -8px;
  }

  .worry,
  .feature,
  .flow,
  .support,
  .voice,
  .faq,
  .promise,
  .start {
    padding: 32px 0;
  }

  .feature {
    padding: 40px 0;
  }
  .convenience {
    padding: 90px 0 40px;
  }
  .worry_deco,
  .feature_deco {
    display: none;
  }
  .promise_grid{
    padding: 15px;
    gap: 15px;
  }
  .worry_list,
  .convenience_list,
  .flow_steps,
  .support_list,
  .voice_list,
  .promise_grid,
  .start_cards,
  .start_wrap,
  .stats,
  .modal_body {
    display: flex;
    flex-direction: column;
  }

  .worry .wrap {
    gap: 20px;
  }
  .worry_panel {
    padding: 20px 10px;
    border-radius: 20px;
  }
  .worry .section_title {
    font-size: 22px;
    letter-spacing: 5px;
    line-height: 1.35;
  }
  .worry .section_title br {
    display: initial;
  }
  .worry_heading {
    font-size: 15px;
    letter-spacing: 5px;
  }
  .worry_list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px 8px;
  }
  .worry_list img {
    width: 120px;
    height: 120px;
  }
  .worry_list li {
    font-size: 10px;
  }
  .worry_note {
    /* SP: wrap gap 20px → Figma どおりパネルとの間隔 10px（被せなし） */
    margin-top: -10px;
    font-size: 17px;
    line-height: 1.2;
  }

  /* Figma 47:1184 … 縦クロップの配送員写真 + 上からのクリームグラデ */
  .flow {
    padding: 50px 0;
    background-color: #fff4e7;
    background-image:
      linear-gradient(
        180deg,
        rgba(255, 243, 224, 0.5) 0%,
        rgba(255, 243, 224, 0.52) 2%,
        rgba(255, 244, 231, 1) 20%
      ),
      url("../img/flow_driver_sp.webp");
    background-repeat: no-repeat;
    background-size: auto, contain;
    background-position: top center, center top;
  }
  .flow_head {
    min-height: 0;
    text-align: center;
  }
  .flow_title {
    font-size: 27px;
    -webkit-text-stroke-width: 6px;
  }
  .flow_title .flow_kicker {
    font-size: 20px;
    -webkit-text-stroke-width: 4px;
  }
  .flow_note {
    font-size: 11px;
    line-height: 1.6;
  }
  .flow_steps li {
    width: min(100%, 266px);
    margin-inline: auto;
    padding: 6px 11px 18px;
    border-radius: 11px;
  }
  /* Figma SP 写真領域 168.98×139.59（比率は PC と同じ） */
  .flow_step_visual {
    max-width: 169px;
  }
  .flow_steps h3 {
    font-size: 21px;
  }
  .flow_steps p:last-child {
    font-size: 11px;
  }
  .support_dots {
    top: -4px;
    gap: 17px;
  }
  .support_dots::before,
  .support_dots::after {
    width: 5px;
    height: 5px;
  }
  .support .wrap {
    gap: 0;
  }
  .support .section_title {
    width: auto;
    font-size: 23px;
    letter-spacing: 0.06em;
  }
  .support .section_lead {
    font-size: 17px;
  }
  .support_body > .support_tag {
    font-size: 16px;
  }
  .support_body h3 {
    font-size: 20px;
  }
  .support_body > p:not(.support_tag) {
    font-size: 14px;
  }
  .support_card .support_stamp {
    top: -30px;
    left: -15px;
    width: 91px;
    height: 91px;
  }
  .feature_list {
    gap: 40px;
    margin-top: 40px;
  }
  .feature_copy > p {
    margin-top: 8px;
  }
  .feature_voice {
    margin-top: 14px;
    padding: 11px;
    gap: 13px;
  }
  .feature_voice img {
    width: 73px;
    height: 73px;
  }
  .voice .wrap{
    gap: 20px;
  }
  .voice_list,
  .promise_grid {
    gap: 30px;
  }
  .stats_cards {
    gap: 10px;
  }
  .flow_steps {
    gap: 57px;
    margin-top: 27px;
  }
  .support_list {
    gap: 40px;
    margin-top: 30px;
  }
  .feature .section_title {
    font-size: 22px;
    letter-spacing: 5px;
    line-height: 1.35;
  }
  .feature .section_lead {
    font-size: 15px;
    line-height: 1.6;
  }
  .feature_copy h3 {
    font-size: 22px;
    line-height: 1.35;
    letter-spacing: 0.08em;
  }
  .feature_copy > p,
  .feature_voice {
    font-size: 14px;
  }
  .feature_tags li {
    font-size: 11px;
  }
  .convenience .section_title {
    font-size: 22px;
  }
  .convenience_num {
    font-size: 36px;
  }
  .conv_pill {
    font-size: 16px;
    width: min(310px, 100%);
  }
  .conv_body h3 {
    font-size: 20px;
  }
  .conv_body p,
  .conv_coupon {
    font-size: 12px;
  }
  .stats_cards {
    flex-direction: column;
    align-items: center;
    width: 100%;
  }
  .stats_cards img:nth-child(2) {
    order: -1;
  }
  .stats_cards img {
    width: 100%;
  }
  .stats {
    align-items: center;
  }
  .stats_note {
    font-size: 9px;
  }
  .voice .section_lead {
    font-size: 15px;
  }
  .voice_card .voice_card_head p,
  .voice_card--green .voice_card_head p {
    font-size: 15px;
    line-height: 1.5;
    padding: 12px 16px 12px 38px;
  }
  .voice_card blockquote {
    font-size: 15px;
  }
  .voice_meta {
    font-size: 13px;
  }
  .stats_list {
    flex-direction: column;
    width: 100%;
  }
  .promise_acc_title {
    font-size: 22px;
  }
  .promise .section_title {
    font-size: 25px;
    letter-spacing: 0.06em;
    line-height: 1.35;
  }
  .promise .section_lead {
    font-size: 14px;
    letter-spacing: 0.06em;
  }
  .promise_acc_btn {
    width: 100%;
    padding: 12px 22px;
    font-size: 15px;
  }
  .promise_card h3 {
    font-size: 20px;
  }
  .promise_card > .promise_label {
    font-size: 19px;
  }
  .promise_card > p:not(.promise_label) {
    font-size: 14px;
  }
  .promise_more {
    font-size: 18px;
  }
  #faq .faq_dl dd > span > span {
    font-size: 14px;
  }
  .start_wrap {
    align-items: flex-start;
    gap: 20px;
  }
  .start_cards {
    width: 100%;
    align-self: stretch;
    gap: 20px;
  }
  .start_intro {
    padding-bottom: 0;
    align-items: flex-start;
    text-align: left;
  }
  .start_intro img {
    width: 194px;
  }
  .start_intro h2 {
    font-size: 25px;
    letter-spacing: 0.04em;
  }
  .start_intro p {
    font-size: 15px;
    letter-spacing: 0.04em;
  }
  .start_card > .start_reco {
    top: -24px;
    left: 50%;
    width: max-content;
    transform: translateX(-50%);
    font-size: 17px;
    line-height: 1.2;
    text-align: center;
  }
  .start_card--pink {
    margin-top: 18px;
  }
  .start_card > .start_chip {
    font-size: 15px;
  }
  .start_card h3 {
    align-self: center;
    font-size: 19px;
    text-align: center;
  }
  .start_card img {
    align-self: center;
    margin-inline: auto;
    max-width: 194px;
  }
  .start_card > p:not(.start_reco):not(.start_chip):not(.start_fine) {
    font-size: 12px;
  }
  .start_note {
    grid-column: 1;
    font-size: 12px;
  }
  .modal {
    padding: 56px 20px 24px;
  }
  .modal_body img {
    width: 100%;
  }
  .fixed_cta {
    display: block;
    position: fixed;
    z-index: 20;
    left: 50%;
    bottom: 16px;
    transform: translateX(-50%);
    width: min(416px, calc(100% - 24px));
    padding: 0;
    border: 0;
    border-radius: 12px;
    background: none;
    box-shadow: none;
    overflow: hidden;
    isolation: isolate;
    transition: filter 0.2s ease, transform 0.2s ease;
  }
  .fixed_cta img {
    display: block;
    width: 100%;
    height: auto;
  }
}
