/* ==========================================================================
   top.css
   トップページ（index.html）の各セクション
   ========================================================================== */


/* --------------------------------------------------------------------------
   ヒーロー（メインビジュアル）
   Figma：SP 247:1499 / PC 247:1490

   写真・図形・文字を重ねた1枚の絵として、画面幅に合わせて全体を拡大縮小する。
   --u は「Figma上の1px」。SPは幅390、PCは幅1440（上限）のデザインを基準にし、
   各パーツの位置（--x / --y）・サイズ（--w / --h）は Figma の px 値をそのまま書く。
   -------------------------------------------------------------------------- */
.hero {
  container-type: inline-size;
  overflow: hidden;
  --u: calc(100cqw / 390);
}

@media (min-width: 768px) {
  .hero {
    --u: calc(100cqw / 1440);
  }
}

/* 絵の土台（SP 390×766 / PC 1440×899） */
.hero__stage {
  position: relative;
  width: calc(390 * var(--u));
  height: calc(766 * var(--u));
  margin-inline: auto;
}

@media (min-width: 768px) {
  .hero__stage {
    width: calc(1440 * var(--u));
    height: calc(899 * var(--u));
  }
}

/* 位置を持つパーツ共通 */
.hero__visual,
.hero__photo,
.hero__shape,
.hero__slash,
.hero__catch,
.hero__band,
.hero__title-label,
.hero__title-main,
.hero__badge,
.hero__price-label,
.hero__price-amount,
.hero__price-note {
  position: absolute;
  left: calc(var(--x, 0) * var(--u));
  top: calc(var(--y, 0) * var(--u));
}

.hero__shape,
.hero__slash,
.hero__catch,
.hero__band,
.hero__title-label,
.hero__title-main {
  width: calc(var(--w) * var(--u));
  height: calc(var(--h) * var(--u));
}

/* 重ねる層（中のパーツは土台の左上を基準に配置） */
.hero__layer {
  position: absolute;
  inset: 0;
}

/* 写真（下辺が右下がりの形に切り抜く） */
.hero__visual {
  width: 100%;
  height: 100%;
  overflow: hidden;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 92.714%);
}

.hero__photo {
  --x: -414;
  --y: -84;
  width: calc(1073 * var(--u));
  max-width: none;
}

@media (min-width: 768px) {
  .hero__photo {
    --x: -49;
    --y: -479;
    width: calc(1761 * var(--u));
  }
}

/* 装飾の図形 */
.hero__shape--white {
  --w: 276;
  --h: 297;
  background-color: var(--color-bg-white);
  clip-path: polygon(0 0, 100% 0, 0 100%);
}

.hero__shape--blue {
  --x: 288;
  --y: 557.5;
  --w: 102;
  --h: 208.5;
  background-color: var(--color-main);
  clip-path: polygon(99.66% 0, 100% 100%, 0 93.38%);
}

.hero__shape--gray {
  --y: 543;
  --w: 28;
  --h: 196;
  background-color: var(--color-shape-gray);
  clip-path: polygon(0 0, 100% 87.63%, 0 100%);
}

@media (min-width: 768px) {
  .hero__shape--white {
    --w: 520;
    --h: 471;
  }

  .hero__shape--blue {
    --x: 1217.5;
    --y: 380.9;
    --w: 223;
    --h: 544.1;
  }

  .hero__shape--gray {
    --y: 430;
    --w: 96;
    --h: 465;
  }
}

/* 「長期利用がお得!」と左右の斜線 */
.hero__catch {
  --x: 38.4;
  --y: 93;
  --w: 117;
  --h: 23;
  font-size: calc(15.744 * var(--u));
  font-weight: var(--font-weight-black);
  line-height: var(--line-height-tight);
  color: var(--color-accent);
  white-space: nowrap;
  rotate: -3.99deg;
}

.hero__slash {
  --w: 14.62;
  --h: 20.24;
}

.hero__slash--left {
  --x: 22.27;
  --y: 101.53;
  rotate: 5.86deg;
}

.hero__slash--right {
  --x: 159.41;
  --y: 91.34;
  rotate: 170.86deg;
  scale: 1 -1;
}

@media (min-width: 768px) {
  .hero__catch {
    --x: 107.6;
    --y: 195.4;
    --w: 214;
    --h: 42;
    font-size: calc(28.927 * var(--u));
  }

  .hero__slash {
    --w: 26.86;
    --h: 37.19;
  }

  .hero__slash--left {
    --x: 76.16;
    --y: 210.94;
  }

  .hero__slash--right {
    --x: 328.11;
    --y: 192.23;
  }
}

/* 見出し「事業用 ハイエースレンタカー」と背景の帯 */
.hero__band {
  background-color: var(--color-main);
  rotate: -5.13deg;
}

.hero__band--top {
  --x: -57.33;
  --y: 122.36;
  --w: 382.27;
  --h: 65.86;
}

.hero__band--bottom {
  --x: 32.41;
  --y: 188.65;
  --w: 296.81;
  --h: 66.73;
}

.hero__title {
  color: var(--color-text-white);
  font-weight: var(--font-weight-black);
}

.hero__title-label {
  --x: 23.25;
  --y: 137.68;
  --w: 16;
  --h: 51;
  font-size: calc(15.353 * var(--u));
  line-height: 1.12;
  word-break: break-all;
  rotate: -5.52deg;
}

.hero__title-main {
  --x: 45.33;
  --y: 112.61;
  --w: 276;
  --h: 140;
  font-size: calc(59.365 * var(--u));
  line-height: 1.18;
  letter-spacing: -0.09em;
  white-space: nowrap;
  rotate: -5.13deg;
}

@media (min-width: 768px) {
  .hero__band--top {
    --x: -70.11;
    --y: 249.23;
    --w: 702.33;
    --h: 121;
  }

  .hero__band--bottom {
    --x: 94.79;
    --y: 371.01;
    --w: 545.32;
    --h: 122.6;
  }

  .hero__title-label {
    --x: 78.06;
    --y: 277.39;
    --w: 29;
    --h: 96;
    font-size: calc(28.208 * var(--u));
  }

  .hero__title-main {
    --x: 118.55;
    --y: 231.32;
    --w: 507;
    --h: 258;
    font-size: calc(109.069 * var(--u));
  }
}

/* 特長バッジ（保証人不要・車庫証明不要・即日利用可） */
.hero__badge {
  --size: 78;
  width: calc(var(--size) * var(--u));
  height: calc(var(--size) * var(--u));
  background: url("../images/hero-badge-bg.svg") no-repeat center / contain;
}

.hero__badge--guarantor {
  --x: 23;
  --y: 285.96;
}

.hero__badge--garage {
  --x: 106.01;
  --y: 277.75;
}

.hero__badge--same-day {
  --x: 189.01;
  --y: 270;
}

.hero__badge-icon {
  position: absolute;
  height: auto;
}

.hero__badge--guarantor .hero__badge-icon {
  left: 26.32%;
  top: 22.81%;
  width: 47.37%;
}

.hero__badge--garage .hero__badge-icon {
  left: 25.73%;
  top: 23.39%;
  width: 49.12%;
}

.hero__badge--same-day .hero__badge-icon {
  left: 14.62%;
  top: 25.73%;
  width: 61.99%;
}

.hero__badge-text {
  position: absolute;
  top: 70.76%;
  left: 0;
  width: 100%;
  font-size: calc(var(--size) * var(--u) * 18 / 171);
  font-weight: var(--font-weight-black);
  line-height: var(--line-height-tight);
  text-align: center;
  color: var(--color-text-white);
  white-space: nowrap;
}

@media (min-width: 768px) {
  .hero__badge {
    --size: 171;
  }

  .hero__badge--guarantor {
    --x: 99;
    --y: 553;
  }

  .hero__badge--garage {
    --x: 281;
    --y: 535;
  }

  .hero__badge--same-day {
    --x: 463;
    --y: 518;
  }

  .hero__badge-text {
    font-size: calc(var(--size) * var(--u) * 16 / 171);
  }
}

/* 料金「レンタル料金 10万円/月〜 + 保険料」（白文字に赤い縁取り） */
.hero__price {
  color: var(--color-text-white);
  font-weight: var(--font-weight-black);
  white-space: nowrap;
}

.hero__price-label {
  --x: 202;
  --y: 585.82;
  z-index: 1;
  padding: calc(1.128 * var(--u)) calc(11.279 * var(--u));
  border-radius: var(--radius-pill);
  background-color: var(--color-emphasis);
  font-size: calc(16.918 * var(--u));
  line-height: 1.45;
}

/* 「10万円/月〜」「+ 保険料」はSVGの文字として描く。
   理由：CSSの text-stroke は角が尖り、別要素（span）に分けると縁取りの
   継ぎ目に隙間ができる。SVGなら1つの文字のまとまりとして丸く縁取りでき、
   「10」と「万円/月〜」のようにフォントが違っても基準線が自然にそろう。
   viewBoxの数値はFigma（SP）の px 値そのもの。PCでも同じ形のまま
   width/heightだけ拡大する（Figmaの数値がSPのちょうど1.773倍のため）。 */
.hero__price-amount,
.hero__price-note {
  display: block;
  overflow: visible;
}

.hero__price-amount-text,
.hero__price-note-text {
  fill: var(--color-text-white);
  stroke: var(--color-emphasis);
  stroke-linejoin: round;
  stroke-linecap: round;
  paint-order: stroke fill;
  font-family: var(--font-family-base);
  font-weight: var(--font-weight-black);
}

.hero__price-amount {
  --x: 105;
  --y: 558;
  width: calc(257.414 * var(--u));
  height: calc(108.99 * var(--u));
}

.hero__price-amount-text {
  stroke-width: calc(12.508 * var(--u));
}

.hero__price-number {
  font-family: var(--font-family-number);
  font-size: calc(79.429 * var(--u));
  font-weight: var(--font-weight-medium);
}

.hero__price-unit {
  font-size: calc(38.776 * var(--u));
}

.hero__price-note {
  --x: 271.8;
  --y: 666.92;
  width: calc(87.127 * var(--u));
  height: calc(33.335 * var(--u));
}

.hero__price-note-text {
  font-size: calc(22.557 * var(--u));
  stroke-width: calc(16.918 * var(--u));
}

@media (min-width: 768px) {
  .hero__price-label {
    --x: 1046;
    --y: 568;
    padding: calc(2 * var(--u)) calc(20 * var(--u));
    font-size: calc(30 * var(--u));
  }

  /* 文字サイズ・線の太さはSPの数値のまま変えない。
     SVGは枠（width/height）をviewBoxに対して拡大すると中の文字も
     一緒に拡大されるため、ここで文字サイズまで変えると二重に拡大されてしまう */
  .hero__price-amount {
    --x: 874;
    --y: 518;
    width: calc(455.737 * var(--u));
    height: calc(193.753 * var(--u));
  }

  .hero__price-note {
    --x: 1169.78;
    --y: 711.82;
    width: calc(154.222 * var(--u));
    height: calc(58.593 * var(--u));
  }
}

/* ボタン（SPは縦並び、PCは横並び） */
.hero__buttons {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-20);
  margin-top: calc(23 * var(--u));
  padding-inline: calc(23 * var(--u));
}

@media (min-width: 768px) {
  .hero__buttons {
    flex-direction: row;
    justify-content: center;
    gap: calc(44 * var(--u));
    margin-top: calc(26 * var(--u));
  }
}


/* --------------------------------------------------------------------------
   選ばれる理由
   Figma：SP 247:1501 / PC 247:1491
   -------------------------------------------------------------------------- */
.reasons {
  padding-top: var(--space-60);
}

/* 見出し＋リード文＋スタッフ写真
   SPは写真がグレーの背景に少し重なる（写真が手前） */
.reasons__intro {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  padding-inline: var(--space-23);
}

.reasons__intro-text {
  position: relative;
  padding-left: var(--space-23);
}

/* 見出し左上の3本線の飾り */
.reasons__mark {
  position: absolute;
  top: -1.5625rem;
  left: -0.25rem;
  width: 2.3125rem;
  height: auto;
}

.reasons__heading {
  font-size: var(--font-size-26);
  font-weight: var(--font-weight-black);
  line-height: var(--line-height-heading);
}

.reasons__heading-accent {
  color: var(--color-main);
}

.reasons__lead {
  margin-top: var(--space-25);
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-loose);
}

.reasons__photo {
  overflow: hidden;
  /* 右端は画面の端まで届くため、左側だけ丸める */
  border-radius: 1.875rem 0 0 1.875rem;
  margin-right: calc(-1 * var(--space-23));
}

.reasons__photo img {
  display: block;
  width: 100%;
  height: 18.5625rem;
  object-fit: cover;
}

@media (min-width: 768px) {
  .reasons {
    padding-top: var(--space-110);
  }

  /* 写真は画面の右端に付ける。左側（文章）だけ、画面が1440pxより
     広くなっても中央寄りの位置を保つように、左の余白を広げる */
  .reasons__intro {
    flex-direction: row;
    align-items: center;
    gap: 4.9375rem;
    padding-left: max(var(--space-58), calc((100% - 90rem) / 2 + var(--space-58)));
  }

  .reasons__intro-text {
    flex: 1 1 33.5rem;
    max-width: 33.5rem;
    min-width: 16rem;
    padding-left: var(--space-20);
  }

  .reasons__mark {
    top: -2.375rem;
    left: -1rem;
    width: 3.4625rem;
  }

  .reasons__heading {
    font-size: var(--font-size-48);
  }

  .reasons__lead {
    margin-top: var(--space-30);
    font-size: var(--font-size-16);
  }

  .reasons__photo {
    flex: 1 3 20rem;
    min-width: 8rem;
    border-radius: 3.125rem 0 0 3.125rem;
  }

  /* 幅が縮んでも元のトリミング比率を保ったまま縮小する（高さを固定しない）。
     人物は写真の右寄りにいるため、object-positionで隠れないようにする */
  .reasons__photo img {
    height: auto;
    aspect-ratio: 767 / 641;
    object-position: right center;
  }
}

/* 画面幅が狭いタブレット域では、見出しが折り返しすぎないよう少し縮める */
@media (min-width: 768px) and (max-width: 1100px) {
  .reasons__heading {
    font-size: var(--font-size-40);
  }
}


/* 3つの特長カード
   背景（灰色／波形）とカード一覧を別要素にする。
   背景側（reasons__list-bg）は横幅の制限がないので、画面幅がどれだけ
   広くても自然に画面いっぱいまで広がる。カード自体は widthを制限して
   中央に並べる。 */
.reasons__list-bg {
  margin-top: -2.625rem;
  padding: 5.1875rem 0 4.375rem;
  background-color: var(--color-bg-gray);
  border-radius: 3.125rem 0 3.125rem 0;
}

.reasons__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  padding-inline: var(--space-23);
}

.reasons__item {
  display: flex;
  align-items: flex-end;
  gap: var(--space-20);
}

.reasons__item--reverse {
  flex-direction: row-reverse;
  align-items: center;
}

/* 3つ目だけ、イラストを上寄せにする */
.reasons__item--top {
  align-items: flex-start;
}

/* 画像は画面の端まで届く（左右の余白ぶんはみ出す） */
.reasons__item-image {
  flex-shrink: 0;
  width: 12.1875rem;
  height: auto;
  margin-left: calc(-1 * var(--space-23));
}

.reasons__item--reverse .reasons__item-image {
  margin-left: 0;
  margin-right: calc(-1 * var(--space-23));
}

.reasons__item-content {
  flex: 1 1 0%;
  min-width: 0;
}

.reasons__item-title {
  font-size: var(--font-size-18);
  font-weight: var(--font-weight-black);
  line-height: var(--line-height-heading);
}

.reasons__item-title-accent {
  color: var(--color-main);
}

/* SPだけ、指定の位置で改行する（PCでは1行にする） */
.reasons__item-break {
  display: block;
}

/* PCだけ、指定の位置で改行する（SPでは自然に折り返す） */
.reasons__item-break--pc {
  display: none;
}

.reasons__item-text {
  margin-top: var(--space-10);
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-body);
}

@media (min-width: 768px) {
  .reasons__list-bg {
    margin-top: 2.375rem;
    padding: 4.5625rem var(--space-58);
    background: url("../images/reasons-wave-bg.svg") no-repeat center / 100% 100%;
    border-radius: 0;
  }

  .reasons__list {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-50);
    max-width: 90rem;
    margin-inline: auto;
  }

  /* カードは3枚で均等に幅を分け合い、タブレット幅まで折り返さずに縮む。
     25remは上限（これより広い画面では広がらない） */
  .reasons__item,
  .reasons__item--reverse {
    flex: 1 1 0;
    flex-direction: column;
    align-items: center;
    gap: var(--space-25);
    max-width: 25rem;
    min-width: 0;
    text-align: center;
  }

  .reasons__item-image,
  .reasons__item--reverse .reasons__item-image {
    width: 100%;
    max-width: 21.875rem;
    margin-left: 0;
    margin-right: 0;
  }

  /* 説明文はサムネイル画像の幅を上限に折り返す（カード自体の幅には合わせない） */
  .reasons__item-content {
    width: 100%;
    max-width: 21.875rem;
  }

  .reasons__item-title {
    font-size: var(--font-size-24);
  }

  .reasons__item-break {
    display: none;
  }

  /* 3つ目だけ、タイトルの改行はPCでも表示する */
  .reasons__item--top .reasons__item-break {
    display: block;
  }

  .reasons__item-break--pc {
    display: block;
  }

  .reasons__item-text {
    margin-top: var(--space-20);
    text-align: center;
  }
}


/* --------------------------------------------------------------------------
   レンタル料金
   Figma：SP 247:1478 / PC 247:1456
   -------------------------------------------------------------------------- */
.price__inner {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: var(--space-60) var(--space-23);
}

.price__car {
  margin-top: var(--space-20);
}

.price__car {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-15);
  width: 100%;
}

.price__car-photo {
  width: 16.875rem;
  height: auto;
}

.price__car-info {
  display: flex;
  flex-direction: column;
  gap: var(--space-20);
  width: 100%;
}

.price__car-text {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.price__car-name {
  font-size: var(--font-size-16);
  font-weight: var(--font-weight-bold);
}

.price__car-color {
  font-size: var(--font-size-11);
  font-weight: var(--font-weight-bold);
}

/* 料金表 */
/* border-collapseだと角丸が効かないブラウザがあるため、separateにして
   隣り合うセルの線が二重にならないよう、上と左だけをそれぞれが持つ
   （外周の右端・下端は最後の列・行にだけ足す） */
.price-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border-radius: var(--radius-medium);
  overflow: hidden;
  font-weight: var(--font-weight-bold);
}

.price-table th,
.price-table td {
  border-top: var(--border-width-medium) solid var(--color-border-light);
  border-left: var(--border-width-medium) solid var(--color-border-light);
  padding: var(--space-15) var(--space-10);
  line-height: 1.2;
  text-align: center;
}

.price-table th:last-child,
.price-table td:last-child {
  border-right: var(--border-width-medium) solid var(--color-border-light);
}

.price-table tbody tr:last-child th,
.price-table tbody tr:last-child td {
  border-bottom: var(--border-width-medium) solid var(--color-border-light);
}

.price-table thead th {
  background-color: var(--color-main);
  border-top-color: var(--color-main);
  color: var(--color-text-white);
  font-size: var(--font-size-12);
}

/* ヘッダーの真ん中の線はグレーのまま、左右の外側だけ青にする */
.price-table thead th:first-child {
  border-left-color: var(--color-main);
}

.price-table thead th:last-child {
  border-right-color: var(--color-main);
}

/* 表の四隅は、外側の overflow:hidden だけだと線が丸くカーブせず
   途切れて見えるため、角のセル自体にも角丸を付ける */
.price-table thead th:first-child {
  border-top-left-radius: var(--radius-medium);
}

.price-table thead th:last-child {
  border-top-right-radius: var(--radius-medium);
}

.price-table tbody tr:last-child th:first-child {
  border-bottom-left-radius: var(--radius-medium);
}

.price-table tbody tr:last-child td:last-child {
  border-bottom-right-radius: var(--radius-medium);
}

.price-table tbody th {
  background-color: var(--color-bg-white);
  color: var(--color-text);
  font-size: var(--font-size-16);
  font-weight: var(--font-weight-bold);
}

.price-table tbody td {
  color: var(--color-text);
}

.price-table__note {
  display: block;
  margin-top: var(--space-5);
  font-size: var(--font-size-10);
  font-weight: var(--font-weight-medium);
}

.price-table__amount {
  font-family: var(--font-family-number);
  font-size: var(--font-size-20);
  font-weight: var(--font-weight-medium);
}

.price-table__unit {
  margin-left: 0.1875rem;
  font-size: var(--font-size-12);
}

.price > .price__inner > .button {
  align-self: center;
  margin-top: var(--space-30);
}

.price__note {
  display: flex;
  margin-top: var(--space-30);
  gap: var(--space-5);
  font-size: var(--font-size-12);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-body);
}

.price__note-mark {
  flex-shrink: 0;
}

@media (min-width: 768px) {
  .price__inner {
    gap: 0;
    max-width: 90rem;
    margin-inline: auto;
    padding: 3rem var(--space-58) var(--space-110);
  }

  .price > .price__inner > .button {
    margin-top: var(--space-50);
  }

  .price__note {
    margin-top: var(--space-50);
  }

  .price__car {
    margin-top: 2rem;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 3.8125rem;
  }

  .price__car-photo {
    flex: 0 3 40.5rem;
    min-width: 8rem;
  }

  .price__car-info {
    flex: 1 1 33.9375rem;
    gap: var(--space-20);
    max-width: 33.9375rem;
    min-width: 16rem;
  }

  .price__car-text {
    gap: var(--space-15);
  }

  .price__car-name {
    font-size: var(--font-size-24);
  }

  .price__car-color {
    font-size: var(--font-size-16);
  }

  .price-table th,
  .price-table td {
    padding: 1.125rem var(--space-15);
  }

  .price-table thead th {
    font-size: var(--font-size-16);
  }

  .price-table tbody th {
    font-size: var(--font-size-18);
  }

  .price-table__note {
    display: inline;
    margin-top: 0;
    margin-left: var(--space-5);
    font-size: var(--font-size-16);
  }

  .price-table__amount {
    font-size: var(--font-size-30);
  }

  .price-table__unit {
    font-size: var(--font-size-18);
  }

  .price__note {
    gap: var(--space-10);
    font-size: var(--font-size-14);
  }
}

/* 画面幅が狭いタブレット域では、料金表の文字がさらに詰まりすぎないよう少し縮める */
@media (min-width: 768px) and (max-width: 1100px) {
  .price__car-name {
    font-size: var(--font-size-18);
  }

  .price-table thead th {
    font-size: var(--font-size-13);
  }

  .price-table tbody th {
    font-size: var(--font-size-16);
  }

  .price-table__amount {
    font-size: var(--font-size-24);
  }
}


/* --------------------------------------------------------------------------
   ご利用シーン（カルーセル）
   Figma：SP 247:1503 / PC 247:1492
   - 1枚を中央に、左右のカードが少しだけ見える（Swiperの centeredSlides）
   - 選択中以外のカードは半透明
   - 自動再生なし。端まで行ったら最初に戻る（loop）
   -------------------------------------------------------------------------- */
.scenes {
  background-color: var(--color-bg-gray);
}

.scenes__intro {
  padding: var(--space-60) var(--space-23) 0;
}

.scenes__lead {
  margin-top: var(--space-25);
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-loose);
}

.scenes__carousel-bg {
  padding-block: var(--space-40);
}

.scenes__carousel {
  position: relative;
}

/* カード一覧。max-widthを付けないことで、画面がどれだけ広くても
   端（前後のカードが見える範囲）が途中で切れない */
.scenes__swiper {
  width: 100%;
  /* 前後のカードが少し見えるよう、両端に余白を残す */
  padding-inline: 2.6875rem;
}

.scenes__slide {
  width: 19rem;
  height: auto;
  background-color: var(--color-bg-white);
  border-radius: var(--radius-large);
  overflow: hidden;
  transition: opacity 0.3s ease;
}

/* 選択中以外は半透明 */
.scenes__slide:not(.swiper-slide-active) {
  opacity: 0.5;
}

/* 写真は角丸四角ではなく、大きな楕円でふわっと切り抜く
   （Figmaの背景円と同じ形をカードの大きさに合わせて再現） */
.scenes__slide-photo {
  position: relative;
  height: 13.3125rem;
  background-color: var(--color-main-light);
  mask-image: url("../images/scenes-photo-mask-sp.svg");
  mask-repeat: no-repeat;
  mask-size: 100% 100%;
  -webkit-mask-image: url("../images/scenes-photo-mask-sp.svg");
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%;
}

.scenes__slide-photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 15%;
}

.scenes__slide-body {
  padding: 0 var(--space-25) var(--space-30);
}

.scenes__slide-title {
  font-size: var(--font-size-18);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  text-align: left;
}

/* 破線は border ではなく、丸い点（直径2px・6pxピッチ）をグラデーションで再現 */
.scenes__slide-divider {
  margin: var(--space-10) 0;
  height: 2px;
  border: none;
  background-image: radial-gradient(circle, var(--color-border) 1px, transparent 1px);
  background-size: 6px 2px;
  background-repeat: repeat-x;
  background-position: center;
}

.scenes__slide-text {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-loose);
  text-align: left;
}

/* 送りボタンを横に並べる行（SP：カードの下） */
.scenes__nav-row {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-15);
  margin-top: var(--space-25);
}

.scenes__nav {
  position: relative;
  flex-shrink: 0;
  width: 4.0625rem;
  height: 4.0625rem;
  border-radius: 50%;
  background-color: var(--color-bg-white);
}

.scenes__nav::after {
  content: "";
  position: absolute;
  inset: 0;
  mask-image: url("../images/scenes-arrow.svg");
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: 100% 100%;
  -webkit-mask-image: url("../images/scenes-arrow.svg");
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: center;
  -webkit-mask-size: 100% 100%;
  background-color: var(--color-text);
  transition: background-color 0.3s ease;
}

/* hoverで矢印が青くなる */
.scenes__nav:hover::after {
  background-color: var(--color-main);
}

.scenes__nav--next::after {
  transform: scaleX(-1);
}

@media (min-width: 768px) {
  .scenes__intro {
    max-width: 90rem;
    margin-inline: auto;
    padding: var(--space-110) var(--space-58) 0;
  }

  .scenes__lead {
    margin-top: var(--space-30);
    font-size: var(--font-size-16);
  }

  .scenes__carousel-bg {
    padding-block: 5rem;
  }

  /* max-widthを付けない（付けると画面が1440pxより広いとき、前後の
     カードが見える範囲が画面の端で途切れて見えてしまう） */
  .scenes__swiper {
    padding-inline: 8.5rem;
  }

  .scenes__slide {
    width: 42.875rem;
  }

  /* 写真はカードの左側いっぱい（角丸の四隅ぶんも含む）を大きな円で
     ふわっと切り抜く */
  .scenes__slide-photo {
    float: left;
    width: 21.3125rem;
    height: 100%;
    mask-image: url("../images/scenes-photo-mask-pc.svg");
    -webkit-mask-image: url("../images/scenes-photo-mask-pc.svg");
  }

  .scenes__slide-body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-left: 21.3125rem;
    height: 14.8125rem;
    padding: 0 var(--space-40) 0 0;
  }

  .scenes__slide-title,
  .scenes__slide-text {
    text-align: left;
  }

  .scenes__slide-title {
    font-size: var(--font-size-24);
  }

  .scenes__slide-text {
    font-size: var(--font-size-16);
  }

  /* PCは、送りボタンの行としてのレイアウトを使わず、
     ボタンをそれぞれ絶対配置で前後のカードに重ねる */
  .scenes__nav-row {
    display: contents;
  }

  .scenes__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 6.25rem;
    height: 6.25rem;
    z-index: 1;
  }

  /* 次のカードの左端・ひとつ前のカードの右端に中心を合わせる
     （カード幅の半分 + カード間の余白ぶん、中央からずらす）。
     画面が狭いときは、ボタンが画面端からはみ出さないよう
     左右の端から最低 space-23 ぶんは離す */
  .scenes__nav--prev {
    left: max(var(--space-23), calc(50% - 27.75rem - 3.125rem));
  }

  .scenes__nav--next {
    right: max(var(--space-23), calc(50% - 27.75rem - 3.125rem));
  }
}


/* --------------------------------------------------------------------------
   ご利用の流れ
   Figma：SP 247:1481 / PC 247:1461
   - スクロールで下から20%ほど見えたら、左から順にフェードイン
   -------------------------------------------------------------------------- */
.flow {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
  padding: var(--space-60) var(--space-23);
}

.flow__list {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-10);
  width: 100%;
}

/* SP：写真＋（番号・タイトル）を横並び、説明文をその下いっぱいに配置
   PC：番号→写真→タイトル→説明文の順で縦に並べ替える（grid-template-areasで再配置） */
.flow__step {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-areas:
    "icon number"
    "icon title"
    "text text";
  column-gap: var(--space-25);
  row-gap: var(--space-10);
  align-items: center;
  width: 100%;
}

/* 写真とその奥に見える水色の円 */
.flow__icon {
  grid-area: icon;
  position: relative;
  flex-shrink: 0;
  width: 9.6875rem;
  height: 6.453125rem;
}

.flow__icon-circle {
  position: absolute;
  width: 5.3rem;
  height: 5.3rem;
  border-radius: 50%;
  background-color: var(--color-main-light);
}

.flow__icon-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.flow__step:nth-child(1) .flow__icon-circle {
  top: 0.7rem;
  left: 0.9rem;
}

.flow__step:nth-child(3) .flow__icon-circle {
  top: 0;
  left: 0.46rem;
}

.flow__step:nth-child(5) .flow__icon-circle {
  top: 0.7rem;
  left: 0.46rem;
}

.flow__step-number {
  grid-area: number;
  align-self: end;
  font-family: var(--font-family-number);
  font-size: var(--font-size-20);
  color: var(--color-text);
}

.flow__step-title {
  grid-area: title;
  /* 番号とタイトルの間隔をrow-gapの10pxから5pxに詰める */
  align-self: start;
  margin-top: -0.3125rem;
  font-size: var(--font-size-18);
  font-weight: var(--font-weight-black);
  color: var(--color-main);
}

.flow__step-text {
  grid-area: text;
  width: 100%;
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-loose);
}

.flow__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
}

.flow__arrow img {
  width: 3.735rem;
  transform: rotate(180deg);
}

@media (min-width: 768px) {
  .flow {
    max-width: 90rem;
    margin-inline: auto;
    gap: var(--space-40);
    padding: var(--space-110);
  }

  .flow__list {
    flex-direction: row;
    /* 高さの違うステップが縮んだときに上下にズレないよう、上揃えにする */
    align-items: flex-start;
    justify-content: space-between;
    gap: 0;
  }

  /* 上揃えにした分、矢印は写真の高さに合わせて位置を調整する */
  .flow__arrow {
    margin-top: 10.2rem;
  }

  /* PCは 番号 → 写真 → タイトル → 説明文 の順に縦積み
     3つのステップで幅を均等に分け合い、ウィンドウ幅に応じて縮む
     （20.375remは上限。これより広い画面では広がらない） */
  .flow__step {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "number"
      "icon"
      "title"
      "text";
    column-gap: 0;
    row-gap: 0;
    justify-items: center;
    flex: 1 1 0;
    max-width: 20.375rem;
    min-width: 0;
  }

  .flow__step-number {
    justify-self: stretch;
    align-self: auto;
    margin-bottom: -0.625rem;
    font-size: var(--font-size-55);
    color: var(--color-text-number);
    text-align: left;
  }

  .flow__step-title {
    justify-self: stretch;
    align-self: auto;
    margin-top: 0;
    margin-bottom: var(--space-20);
    font-size: var(--font-size-24);
    text-align: left;
  }

  .flow__step-text {
    justify-self: stretch;
    text-align: left;
  }

  .flow__icon {
    /* 写真の実寸(360px)がGrid列の幅を押し広げてテキストの326px上限が
       効かなくならないよう、列サイズの計算に含めない */
    min-width: 0;
    width: 100%;
    max-width: 22.5rem;
    height: auto;
    aspect-ratio: 3 / 2;
    margin-bottom: var(--space-35);
  }

  /* 円・写真の位置とサイズは .flow__icon の幅に対する割合にして、
     アイコン自体が縮んでも比率を保ったまま一緒に縮むようにする */
  .flow__icon-circle {
    width: 54.7%;
    height: 82.08%;
  }

  .flow__step:nth-child(1) .flow__icon-circle {
    top: 10.83%;
    left: 9.24%;
  }

  .flow__step:nth-child(3) .flow__icon-circle {
    top: 0;
    left: 4.72%;
  }

  .flow__step:nth-child(5) .flow__icon-circle {
    top: 10.83%;
    left: 4.72%;
  }

  .flow__arrow img {
    width: 4.3125rem;
    transform: rotate(90deg);
  }
}


/* --------------------------------------------------------------------------
   免責補助制度（保険料）
   Figma：SP 247:1504 / PC 247:1493
   -------------------------------------------------------------------------- */
.disclaimer {
  background-color: var(--color-bg-gray);
}

.disclaimer__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-38);
  padding: var(--space-60) var(--space-23) var(--space-62);
}

.disclaimer__intro {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
}

.disclaimer__lead {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-loose);
}

.disclaimer__diagram {
  width: 100%;
  max-width: 56.25rem;
  height: auto;
  margin-inline: auto;
}

.disclaimer__notes {
  display: flex;
  flex-direction: column;
  font-size: var(--font-size-12);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-body);
}

.disclaimer__note {
  display: flex;
  align-items: flex-start;
  gap: var(--space-5);
}

.disclaimer__note span:last-child {
  flex: 1;
}

/* 保険料テーブル：border-collapseだと角丸が効かないブラウザがあるため、
   separateにして上と左だけをそれぞれが持つ（外周の右端・下端は最後の列・行にだけ足す） */
.disclaimer-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border-radius: 0.4375rem;
  overflow: hidden;
}

.disclaimer-table th,
.disclaimer-table td {
  border-top: var(--border-width-medium) solid var(--color-border-light);
  border-left: var(--border-width-medium) solid var(--color-border-light);
  padding: var(--space-15) var(--space-10);
  line-height: 1.2;
  text-align: center;
}

.disclaimer-table th:last-child,
.disclaimer-table td:last-child {
  border-right: var(--border-width-medium) solid var(--color-border-light);
}

.disclaimer-table tr:last-child th,
.disclaimer-table tr:last-child td {
  border-bottom: var(--border-width-medium) solid var(--color-border-light);
}

.disclaimer-table th.disclaimer-table__label,
.disclaimer-table th.disclaimer-table__head {
  background-color: var(--color-main);
  border-top-color: var(--color-main);
  color: var(--color-text-white);
  font-size: var(--font-size-12);
}

/* 表の外周（左端）だけ背景色に馴染ませる。内側の列区切り線はグレーのまま残す */
.disclaimer-table th.disclaimer-table__label {
  border-left-color: var(--color-main);
  border-top-left-radius: 0.4375rem;
  border-bottom-left-radius: 0.4375rem;
}

.disclaimer-table th.disclaimer-table__head:last-child {
  border-right-color: var(--color-main);
  border-top-right-radius: 0.4375rem;
}

.disclaimer-table tr:last-child td.disclaimer-table__amount:last-child {
  border-bottom-right-radius: 0.4375rem;
}

.disclaimer-table__amount {
  background-color: var(--color-bg-white);
  font-family: var(--font-family-number);
  font-size: var(--font-size-20);
  color: var(--color-text);
}

.disclaimer-table__unit {
  margin-left: 0.1875rem;
  font-family: var(--font-family-base);
  font-size: var(--font-size-12);
  font-weight: var(--font-weight-bold);
  color: var(--color-text);
}

.disclaimer-table__tax {
  font-size: var(--font-size-9);
}

@media (min-width: 768px) {
  .disclaimer__inner {
    gap: var(--space-40);
    max-width: 90rem;
    margin-inline: auto;
    padding: var(--space-110);
  }

  .disclaimer__lead {
    font-size: var(--font-size-16);
  }

  .disclaimer__notes {
    gap: 0;
    font-size: var(--font-size-14);
  }

  .disclaimer__note {
    gap: var(--space-10);
  }

  .disclaimer-table__label-break {
    display: none;
  }

  .disclaimer-table th,
  .disclaimer-table td {
    padding: 1.125rem var(--space-15);
  }

  .disclaimer-table th.disclaimer-table__label,
  .disclaimer-table th.disclaimer-table__head {
    font-size: var(--font-size-24);
  }

  .disclaimer-table th.disclaimer-table__label {
    border-top-left-radius: var(--radius-medium);
    border-bottom-left-radius: var(--radius-medium);
  }

  .disclaimer-table th.disclaimer-table__head:last-child {
    border-top-right-radius: var(--radius-medium);
  }

  /* Figmaのデザイン通り、右下だけひと回り大きい角丸 */
  .disclaimer-table tr:last-child td.disclaimer-table__amount:last-child {
    border-bottom-right-radius: var(--radius-large);
  }

  .disclaimer-table__amount {
    font-size: var(--font-size-30);
  }

  .disclaimer-table__unit {
    font-size: var(--font-size-18);
  }

  .disclaimer-table__tax {
    font-size: var(--font-size-12);
  }
}


/* --------------------------------------------------------------------------
   配送料
   Figma：SP 247:1484 / PC 247:1468
   - 都道府県を選ぶと市区町村の選択欄が有効になる（main.js）
   - 配送料の計算・表示、市区町村データは実装者の担当
   -------------------------------------------------------------------------- */
.delivery {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  padding: var(--space-60) var(--space-23);
}

.delivery__group {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
  width: 100%;
}

.delivery__label {
  display: flex;
  align-items: center;
  gap: var(--space-10);
  font-size: var(--font-size-18);
  font-weight: var(--font-weight-black);
  color: var(--color-main);
}

.delivery__label-bar {
  flex-shrink: 0;
  width: 5px;
  height: 1.375rem;
  background-color: var(--color-main);
}

/* SPは1つの白いカードの中に「選択欄→料金」の順で並ぶ */
.delivery__deliver-row {
  display: flex;
  flex-direction: column;
  width: 100%;
  background-color: var(--color-bg-white);
  border: var(--border-width-thick) solid var(--color-border-light);
  border-radius: var(--radius-medium);
}

.delivery__price-box {
  order: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-15);
  padding: var(--space-15);
}

.delivery__select-box {
  order: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
  padding: var(--space-15);
}

.delivery__badge {
  display: inline-flex;
  align-items: center;
  padding: 0.1875rem var(--space-15);
  border-radius: var(--radius-pill);
  background-color: var(--color-main);
  color: var(--color-text-white);
  font-size: var(--font-size-16);
  font-weight: var(--font-weight-bold);
  white-space: nowrap;
}

.delivery__badge-note {
  font-size: var(--font-size-14);
}

.delivery__price {
  display: flex;
  align-items: flex-end;
  gap: var(--space-5);
}

.delivery__price-amount {
  width: 9.75rem;
  padding-bottom: var(--space-8);
  border-bottom: var(--border-width-thin) solid var(--color-text);
  font-family: var(--font-family-number);
  font-size: var(--font-size-42);
  line-height: 1;
  color: var(--color-text);
  text-align: right;
}

.delivery__price-unit {
  font-size: var(--font-size-16);
  font-weight: var(--font-weight-bold);
}

.delivery__price-tax {
  font-size: var(--font-size-11);
}

.delivery__note {
  display: flex;
  align-items: flex-start;
  gap: var(--space-5);
  font-size: var(--font-size-12);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-body);
}

.delivery__note span:last-child {
  flex: 1;
}

.delivery__select-heading {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
}

.delivery__fields {
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
  list-style: decimal;
  padding-left: 1.3125rem;
}

.delivery__fields li::marker {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
  color: var(--color-text);
}

.delivery__field-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.delivery__field-label {
  display: block;
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
}

.delivery__select {
  width: 100%;
  max-width: 19.25rem;
  height: 3rem;
}

.delivery__pickup-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-15);
  width: 100%;
  padding: var(--space-15);
  background-color: var(--color-bg-white);
  border: var(--border-width-thick) solid var(--color-border-light);
  border-radius: var(--radius-medium);
}

.delivery__pickup-price {
  display: flex;
  align-items: flex-end;
  gap: var(--space-5);
}

.delivery__pickup-amount {
  font-family: var(--font-family-number);
  font-size: var(--font-size-42);
  line-height: 1;
}

.delivery__pickup-unit {
  font-size: var(--font-size-16);
  font-weight: var(--font-weight-bold);
}

.delivery__pickup-text {
  width: 100%;
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-body);
  text-align: left;
}

@media (min-width: 768px) {
  .delivery {
    gap: var(--space-60);
    max-width: 90rem;
    margin-inline: auto;
    padding: var(--space-110);
  }

  .delivery__group {
    gap: var(--space-14);
  }

  .delivery__label {
    gap: var(--space-15);
    font-size: var(--font-size-24);
  }

  .delivery__label-bar {
    height: 2rem;
  }

  .delivery__pickup-box {
    gap: var(--space-25);
    padding: var(--space-35) var(--space-50);
    border-width: var(--border-width-heaviest);
    border-radius: var(--radius-medium);
  }

  .delivery__pickup-amount {
    font-size: var(--font-size-60);
  }

  .delivery__pickup-unit {
    font-size: var(--font-size-24);
  }

  .delivery__pickup-text {
    max-width: 47.125rem;
    font-size: var(--font-size-16);
    text-align: center;
  }
}

/* 料金ボックス（左）と選択ボックス（右）に分ける横並びレイアウトは、
   タブレット幅（768〜1023px）では2列とも縮みすぎて読めなくなるため、
   1024px以上になるまではSPのレイアウト（縦並び）のまま表示する */
@media (min-width: 1024px) {
  .delivery__deliver-row {
    flex-direction: row;
    align-items: stretch;
    background-color: transparent;
    border: none;
    border-radius: 0;
  }

  .delivery__price-box {
    order: 1;
    justify-content: center;
    gap: var(--space-25);
    width: 38.125rem;
    padding: var(--space-35) 3.125rem var(--space-45);
    background-color: var(--color-bg-white);
    border: var(--border-width-heaviest) solid var(--color-border-light);
    border-top-left-radius: var(--radius-medium);
    border-bottom-left-radius: var(--radius-medium);
    border-top-right-radius: 0;
  }

  .delivery__select-box {
    order: 2;
    justify-content: center;
    gap: var(--space-25);
    width: 38.125rem;
    padding: var(--space-35) 3.75rem var(--space-45) 3.125rem;
    background-color: var(--color-bg-white);
    border: var(--border-width-heaviest) solid var(--color-border-light);
    border-left: none;
    border-top-right-radius: var(--radius-medium);
    border-bottom-right-radius: var(--radius-medium);
  }

  .delivery__badge {
    padding: var(--space-5) 1.8125rem;
    font-size: var(--font-size-24);
  }

  .delivery__badge-note {
    font-size: var(--font-size-20);
  }

  .delivery__price {
    gap: var(--space-10);
  }

  .delivery__price-amount {
    width: 15.625rem;
    font-size: var(--font-size-60);
  }

  .delivery__price-unit {
    font-size: var(--font-size-24);
  }

  .delivery__price-tax {
    font-size: var(--font-size-14);
  }

  .delivery__note {
    gap: var(--space-10);
    font-size: var(--font-size-14);
  }

  .delivery__select-heading {
    font-size: var(--font-size-16);
  }

  .delivery__fields {
    gap: var(--space-20);
    padding-left: 1.5rem;
  }

  .delivery__field-label {
    font-size: var(--font-size-16);
  }

  .delivery__select {
    max-width: 23.125rem;
    height: 3.75rem;
    font-size: var(--font-size-16);
  }
}


/* --------------------------------------------------------------------------
   よくある質問
   Figma：SP 247:1505 / PC 247:1494
   - アコーディオンにはせず、最初からすべて表示する
   -------------------------------------------------------------------------- */
.faq {
  background-color: var(--color-bg-gray);
}

.faq__inner {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--space-30);
  padding: var(--space-60) var(--space-23) var(--space-24);
}

/* 見出しは右寄せにせず全幅のまま。車のイラストだけ右に寄せる */
.faq__inner > .section-heading {
  width: 100%;
}

.faq__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-30);
  width: 100%;
}

/* 質問と質問の間の点線。Figmaの実アセットに合わせ、丸い点をグラデーションで再現 */
.faq__divider {
  height: 2px;
  background-image: radial-gradient(circle, var(--color-border) 1px, transparent 1px);
  background-size: 6px 2px;
  background-repeat: repeat-x;
  background-position: center;
}

.faq__item {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
  width: 100%;
}

.faq__q {
  display: flex;
  align-items: flex-start;
  gap: var(--space-15);
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-loose);
}

.faq__a {
  display: flex;
  align-items: flex-start;
  gap: var(--space-15);
}

.faq__a-text {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: var(--space-5);
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-loose);
}

.faq__q-text {
  flex: 1;
}

.faq__badge {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  width: 1.5625rem;
  height: 1.5625rem;
  margin-top: 0.1875rem;
  border-radius: var(--radius-small);
  font-family: var(--font-family-number);
  font-size: var(--font-size-14);
}

.faq__badge--q {
  background-color: var(--color-main);
  color: var(--color-text-white);
}

.faq__badge--a {
  background-color: var(--color-bg-white);
  border: var(--border-width-medium) solid var(--color-main);
  color: var(--color-main);
}

.faq__van {
  width: 9.75rem;
  height: auto;
  transform: rotate(-6.14deg);
}

@media (min-width: 768px) {
  /* PCは「見出し」を全幅、その下に「質問リスト」と「車のイラスト」を横並びで配置 */
  .faq__inner {
    display: grid;
    grid-template-columns: minmax(16rem, 1fr) minmax(12rem, 28.0625rem);
    grid-template-areas:
      "heading heading"
      "list    van";
    align-items: start;
    gap: var(--space-40) var(--space-20);
    max-width: 90rem;
    margin-inline: auto;
    padding: var(--space-110);
  }

  .faq__inner > .section-heading {
    grid-area: heading;
  }

  .faq__list {
    grid-area: list;
    max-width: 48.75rem;
  }

  .faq__q,
  .faq__a-text {
    font-size: var(--font-size-16);
  }

  .faq__van {
    grid-area: van;
    align-self: center;
    justify-self: end;
    width: 28.0625rem;
    margin-right: -1.875rem;
    transform: rotate(-6.72deg);
  }
}


/* --------------------------------------------------------------------------
   お支払い方法
   Figma：SP 247:1487 / PC 247:1471
   -------------------------------------------------------------------------- */
.payment {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  padding: var(--space-60) var(--space-23);
}

.payment__text {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-loose);
}

.payment__note {
  font-size: var(--font-size-12);
}

@media (min-width: 768px) {
  .payment {
    max-width: 90rem;
    margin-inline: auto;
    padding: var(--space-110);
  }

  .payment__text {
    font-size: var(--font-size-16);
  }
}


/* --------------------------------------------------------------------------
   レンタル申込みフォーム
   Figma：SP 247:1506 / PC 247:1495
   - 見た目と構造のみ。送信処理・入力チェックは実装者の担当
   - 「お支払い方法」「配車住所」の表示切り替え、確認画面・完了画面への
     切り替え、同意事項ポップアップの制御はすべて main.js で行う
   -------------------------------------------------------------------------- */
.reserve {
  background-color: var(--color-bg-gray);
}

.reserve__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  padding: var(--space-60) var(--space-23) 3.8125rem;
}

.reserve__form,
.reserve__confirm,
.reserve__complete {
  display: flex;
  flex-direction: column;
  gap: var(--space-20);
  width: 100%;
}

.reserve__form[hidden],
.reserve__confirm[hidden],
.reserve__complete[hidden] {
  display: none;
}

/* 項目と項目の間の点線。Figmaの実アセットに合わせ、丸い点をグラデーションで再現 */
.reserve__divider {
  width: 100%;
  height: 2px;
  margin: 0;
  border: none;
  background-image: radial-gradient(circle, var(--color-border) 1px, transparent 1px);
  background-size: 6px 2px;
  background-repeat: repeat-x;
  background-position: center;
}

/* 郵便番号・都道府県・市区町村・番地をまとめたグループ */
.reserve__address-group {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
  width: 100%;
}

.reserve__field-col {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
}

.reserve__postal-row {
  display: flex;
  align-items: center;
  gap: var(--space-5);
}

.reserve__postal-input {
  width: 4.25rem;
  flex: none;
  text-align: center;
}

.reserve__postal-hyphen {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
}

.reserve__select--prefecture {
  width: 13.4375rem;
}

.reserve__phone-row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--space-10);
}

.reserve__phone-input {
  width: 14rem;
  flex: none;
}

.reserve__phone-note {
  display: flex;
  gap: 0.1875rem;
  font-size: var(--font-size-12);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-loose);
  white-space: nowrap;
}

.reserve__static-text {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
}

.reserve__count-row {
  display: flex;
  align-items: center;
  gap: var(--space-7);
}

.reserve__select--count {
  width: 6.125rem;
  flex: none;
}

.reserve__count-unit {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
}

.reserve__period-row {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--space-10);
  width: 100%;
}

/* 「〜」+ gap の分だけ右の期間セレクトより横幅が広くなってしまうため、
   同じ横幅になるよう右端を基準に縮める（.reserve__period-row が
   align-items: flex-end のため、右端は揃ったまま左側が狭まる） */
.reserve__date-field {
  position: relative;
  width: 100%;
  max-width: calc(100% - 1.5rem);
  min-width: 0;
  overflow: hidden;
  border-radius: var(--radius-medium);
}

.reserve__date-icon {
  position: absolute;
  top: 50%;
  left: var(--space-15);
  width: 1.5625rem;
  height: auto;
  transform: translateY(-50%);
  pointer-events: none;
}

.reserve__date-input {
  display: flex;
  align-items: center;
  min-width: 0;
  padding-left: 2.8125rem;
  line-height: normal;
  /* Safari は type="date" をネイティブの見た目のまま使うと、幅の指定を
     無視して中身の分だけ広く描画してしまうことがあるため解除する。
     appearance: none にすると縦方向の中央揃えも崩れるため、
     display: flex; align-items: center; で入力値を中央に揃え直す */
  -webkit-appearance: none;
  appearance: none;
}

/* appearance: none にすると、Safariでは入力済みの日付が中央寄せ・
   上寄りで表示されてしまうため、左寄せ・垂直中央に調整する */
.reserve__date-input::-webkit-date-and-time-value {
  margin: 0;
  text-align: left;
}

.reserve__period-select-row {
  display: flex;
  align-items: center;
  gap: var(--space-10);
  width: 100%;
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
}

.reserve__select--period {
  flex: 1;
  min-width: 0;
}

/* 「配車住所」「お支払い方法」など、ラジオボタンの選択に応じて
   表示・非表示を切り替える範囲（main.js が hidden 属性を付け外しする） */
.reserve__conditional {
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
  width: 100%;
  margin-top: var(--space-15);
}

.reserve__conditional[hidden] {
  display: none;
}

.reserve__payment-web {
  padding: var(--space-25) 0;
  border: var(--border-width-thin) solid var(--color-text);
  border-radius: var(--radius-medium);
}

.reserve__payment-option {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-10) var(--space-15);
  padding: 0 var(--space-20);
}

.reserve__card-brands {
  height: 1.5rem;
  width: auto;
}

.reserve__divider--inset {
  margin: 0;
}

.reserve__card-fields {
  gap: var(--space-10);
  padding: 0 var(--space-20) 0 2.1875rem;
  margin-top: 0;
  min-width: 0;
}

.reserve__card-row {
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
  width: 100%;
  min-width: 0;
}

.reserve__field-col--narrow {
  max-width: 14.375rem;
}

.reserve__cvv-row {
  display: flex;
  align-items: center;
  gap: var(--space-20);
}

.reserve__cvv-input {
  max-width: 8.75rem;
}

.reserve__cvv-hint {
  height: 3rem;
  width: auto;
}

.reserve__total {
  display: flex;
  align-items: flex-end;
  gap: var(--space-5);
  color: var(--color-text);
}

.reserve__total-amount {
  font-family: var(--font-family-number);
  font-size: var(--font-size-28);
  line-height: 1;
}

.reserve__total-unit {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
}

.reserve__total-tax {
  font-size: var(--font-size-11);
}

.reserve__agreements {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-30);
  width: 100%;
}

.reserve__agreements-box {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
  width: 100%;
  padding: var(--space-25) var(--space-15);
  border: var(--border-width-thin) solid var(--color-text);
  border-radius: var(--radius-medium);
  background-color: var(--color-bg-white);
}

.reserve__popup-link {
  cursor: pointer;
}

.reserve__submit {
  max-width: none;
  width: 100%;
}

/* 確認画面 */
.reserve__confirm-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-20);
  width: 100%;
}

.reserve__confirm-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
  width: 100%;
}

.reserve__confirm-label {
  display: flex;
  align-items: center;
  gap: var(--space-8);
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
}

.reserve__confirm-value {
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-body);
  white-space: pre-line;
}

.reserve__confirm-actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-20);
  width: 100%;
}

/* 完了画面 */
.reserve__complete-box {
  padding: var(--space-35) var(--space-20);
  border: var(--border-width-thin) solid var(--color-text);
  border-radius: var(--radius-medium);
  background-color: var(--color-bg-white);
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-body);
}

/* 1行目（完了メッセージ）だけ太字のまま残す */
.reserve__complete-box > p:first-child {
  font-weight: var(--font-weight-bold);
}

.reserve__complete-phone {
  font-size: var(--font-size-20);
}

@media (min-width: 768px) {
  .reserve__inner {
    max-width: 90rem;
    margin-inline: auto;
    padding: var(--space-110);
  }

  .reserve__form,
  .reserve__confirm,
  .reserve__complete {
    gap: var(--space-30);
  }

  .reserve__address-group {
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--space-15);
    width: 100%;
    max-width: 38.125rem;
  }

  /* 横並び（flex-direction: row）の行の中でだけ使う指定。
     .reserve__card-fields 直下（名義人・セキュリティコードなど）は
     縦積みのままにしたいため、ここでは対象に含めない */
  .reserve__address-group .reserve__field-col,
  .reserve__card-row .reserve__field-col {
    flex: 1 1 21.5rem;
    max-width: 21.5rem;
    min-width: 0;
  }

  .reserve__postal-input {
    width: 4.25rem;
  }

  .reserve__postal-input + .reserve__postal-hyphen + .reserve__postal-input {
    width: 4.9375rem;
  }

  .reserve__select--prefecture {
    width: 13.4375rem;
  }

  .reserve__phone-input {
    width: 14rem;
  }

  .reserve__count-row {
    align-items: center;
  }

  .reserve__period-row {
    flex-direction: row;
    align-items: flex-start;
    width: 100%;
    max-width: 43.625rem;
  }

  .reserve__date-field {
    flex: 1 1 21.5rem;
    max-width: none;
    min-width: 0;
  }

  .reserve__period-select-row {
    flex: 1 1 18rem;
    min-width: 0;
  }

  .reserve__select--period {
    max-width: 20rem;
  }

  .reserve__payment-web {
    max-width: 63.125rem;
    min-width: 0;
    gap: var(--space-25);
  }

  .reserve__card-fields {
    padding-left: 2.1875rem;
  }

  .reserve__card-row {
    flex-direction: row;
    gap: var(--space-15);
  }

  /* 名義人欄はカード番号欄と同じ幅に揃える */
  .reserve__card-fields > .reserve__field-col:not(.reserve__field-col--narrow) {
    max-width: 21.5rem;
  }

  .reserve__agreements {
    gap: var(--space-45);
    width: 100%;
    max-width: 42.5rem;
  }

  .reserve__agreements-box {
    width: 100%;
    padding: var(--space-25) var(--space-20);
  }

  .reserve__submit {
    width: 100%;
    max-width: 33.75rem;
  }

  .reserve__confirm-item {
    flex-direction: row;
    align-items: flex-start;
    gap: var(--space-20);
  }

  .reserve__confirm-label {
    flex-shrink: 0;
    width: 11.875rem;
    font-size: var(--font-size-16);
  }

  .reserve__confirm-value {
    width: 38.125rem;
    font-size: var(--font-size-16);
  }

  .reserve__confirm-actions {
    /* HTMLの並び順はSP基準（申込むボタンが先）なので、
       PCでは逆順にして「戻る」を左、「申込む」を右にする */
    flex-direction: row-reverse;
    justify-content: center;
    gap: var(--space-44);
  }

  .reserve__complete-box {
    width: 63.125rem;
    margin-inline: auto;
    padding: var(--space-50);
    font-size: var(--font-size-16);
  }

  .reserve__complete-phone {
    font-size: var(--font-size-24);
  }

  .reserve__complete > .reserve__submit {
    margin-inline: auto;
  }
}


/* --------------------------------------------------------------------------
   会社概要
   Figma：SP 247:1489 / PC 247:1473
   -------------------------------------------------------------------------- */
.company {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);
  padding: var(--space-60) var(--space-23);
}

.company__content {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
  width: 100%;
}

.company__divider {
  width: 100%;
  height: 2px;
  margin: 0;
  border: none;
  background-image: radial-gradient(circle, var(--color-border) 1px, transparent 1px);
  background-size: 6px 2px;
  background-repeat: repeat-x;
  background-position: center;
}

.company__row {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-bold);
}

.company__label,
.company__value {
  line-height: var(--line-height-heading);
}

.company__value {
  font-weight: var(--font-weight-medium);
}

@media (min-width: 768px) {
  .company {
    max-width: 90rem;
    margin-inline: auto;
    padding: var(--space-110);
    gap: var(--space-77);
  }

  .company__content {
    gap: var(--space-30);
  }

  .company__row {
    flex-direction: row;
    align-items: flex-start;
    gap: var(--space-20);
    font-size: var(--font-size-16);
  }

  .company__label {
    flex-shrink: 0;
    width: 11.875rem;
  }

  .company__line-break {
    display: none;
  }
}


/* --------------------------------------------------------------------------
   同意事項ポップアップ（重要事項・貸渡約款・プライバシーポリシー）
   Figma：PC_popup_重要事項 257:5514 / SP_popup_重要事項 251:3542 ほか
   - 最後までスクロールすると「次へ進む」が押せるようになる（main.js）
   - ×ボタン・背景クリック・Escキーで閉じる。表示中は背景をスクロールさせない
   -------------------------------------------------------------------------- */
.popup {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-20);
}

.popup[hidden] {
  display: none;
}

.popup__overlay {
  position: absolute;
  inset: 0;
  background-color: var(--color-overlay);
}

.popup__dialog {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 40.625rem;
  max-height: 85vh;
  border-radius: var(--radius-medium);
  background-color: var(--color-bg-white);
  overflow: hidden;
}

.popup__header {
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  flex-shrink: 0;
  padding: var(--space-20) var(--space-40);
  border-bottom: var(--border-width-thin) solid var(--color-border-light);
}

.popup__title {
  font-size: var(--font-size-18);
  font-weight: var(--font-weight-bold);
  text-align: center;
}

.popup__close {
  position: absolute;
  top: 50%;
  right: var(--space-15);
  width: 1.875rem;
  height: 1.875rem;
  transform: translateY(-50%);
}

.popup__close::before,
.popup__close::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 70%;
  height: var(--border-width-medium);
  background-color: var(--color-text);
}

.popup__close::before {
  transform: translate(-50%, -50%) rotate(45deg);
}

.popup__close::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.popup__body {
  flex: 1;
  overflow-y: auto;
  padding: var(--space-25) var(--space-23);
  font-size: var(--font-size-14);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-body);
}

.popup__body h4 {
  margin-top: var(--space-25);
  font-size: var(--font-size-16);
  font-weight: var(--font-weight-bold);
}

.popup__body h4:first-child {
  margin-top: 0;
}

.popup__body p {
  margin-top: var(--space-10);
}

.popup__body ul {
  margin-top: var(--space-10);
  padding-left: 1.25rem;
  list-style: disc;
}

.popup__body ol {
  margin-top: var(--space-10);
  padding-left: 1.25rem;
  list-style: decimal;
}

.popup__body li + li {
  margin-top: var(--space-5);
}

.popup__body li > ol {
  margin-top: var(--space-5);
}

.popup__body ol.popup__list--alpha {
  list-style: lower-alpha;
}

.popup__body ol.popup__list--roman {
  list-style: lower-roman;
}

.popup__lead {
  font-weight: var(--font-weight-bold);
}

.popup__body p.popup__subhead {
  margin-top: var(--space-15);
  font-weight: var(--font-weight-bold);
}

.popup__note {
  display: flex;
  gap: var(--space-5);
  font-size: var(--font-size-12);
}

/* 重要事項ポップアップの見出しごとのイラスト。SPは画像の下にテキスト、
   PCは画像の右にテキストが並ぶ（イラストのない見出しには付けない） */
.popup__section {
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
  margin-top: var(--space-15);
}

.popup__illustration {
  width: 100%;
  height: auto;
  border-radius: var(--radius-medium);
}

.popup__section-text > p:first-child {
  margin-top: 0;
}

.popup__footer {
  flex-shrink: 0;
  display: flex;
  justify-content: center;
  padding: var(--space-15) var(--space-23);
  border-top: var(--border-width-thin) solid var(--color-border-light);
}

.popup__next {
  max-width: none;
  width: 100%;
}

.popup__next:disabled {
  cursor: not-allowed;
  opacity: 0.4;
}

@media (min-width: 768px) {
  .popup__dialog {
    max-width: 50rem;
  }

  .popup__header {
    padding: var(--space-25) var(--space-50);
  }

  .popup__title {
    font-size: var(--font-size-22);
  }

  .popup__body {
    padding: var(--space-40) var(--space-50);
    font-size: var(--font-size-16);
  }

  .popup__footer {
    padding: var(--space-20) var(--space-50);
  }

  .popup__next {
    width: 21.5rem;
  }

  .popup__section {
    flex-direction: row;
    align-items: flex-start;
    gap: var(--space-25);
  }

  .popup__illustration {
    width: 21.875rem;
    flex-shrink: 0;
  }

  .popup__section-text {
    flex: 1;
    min-width: 0;
  }
}
