@charset "UTF-8";
/* ==========================================================================
   page — 下層ページ共通パーツ + 各下層ページ固有セクション
   値はすべて Figma 実測値（PC / TAB 768 / SP 390）
   共通ヘッダー(Component 1) / CTA(0:705相当) / footer は
   トップページの実装パーツ（.p-cta / .l-footer）を流用する
   ========================================================================== */

/* --------------------------------------------------------------------------
   下層ページ本体（ヘッダーは静的配置のため上余白なし）
   -------------------------------------------------------------------------- */
.l-page--sub {
  padding-top: 0;
}

@media (max-width: 767px) {
  .l-page--sub { padding-top: 0; }
}

/* --------------------------------------------------------------------------
   下層共通ヘッダー（Component 1）— 静的な白バー
   PC: h84 / ナビの左右に均等な余白を配分
   ナビ・LINE・ハンバーガー・ドロワーはトップの子クラスを流用
   -------------------------------------------------------------------------- */
.l-header--sub {
  position: relative;
  z-index: 10;
  display: flex;
  align-items: center;
  width: 100%;
  height: 84px;
  padding: 0 122px 0 116px;
  background-color: #fff;
}

.l-header--sub .l-header__logo {
  flex-shrink: 0;
  width: auto;
}

/* 流動域（〜1439px）: 外側の余白を詰めつつ5項目の均等幅を維持する */
@media (max-width: 1439px) {
  .l-header--sub {
    padding-inline: 40px;
  }

  .l-header--sub .l-header__logo {
    width: auto;
    margin-right: 0;
  }
}

/* TAB（0:1515）: 静的白バー h70 + border-bottom / ナビはドロワーへ */
@media (max-width: 1023px) {
  .l-header--sub {
    justify-content: space-between;
    height: 71px;
    padding-left: 40px;
    padding-right: 0; /* LINE + ハンバーガーは右端に密着（0:1517 右端 768） */
    border-bottom: 1px solid #e5e5e5;
  }

  .l-header--sub .l-header__logo {
    width: auto;
    margin-right: 0;
    font-size: 20px;
    font-weight: 700;
    color: var(--color-heading-sub);
  }

  .l-header--sub .l-header__nav {
    display: none;
  }
}

/* SP（0:2179）: 静的白バー h60 / LINE 42px 角アイコン */
@media (max-width: 767px) {
  .l-header--sub {
    height: 60px;
    padding-left: 20px;
    border-bottom: 0;
  }

  .l-header--sub .l-header__logo {
    font-size: 22px;
    font-weight: 400;
    color: #000;
  }
}

/* --------------------------------------------------------------------------
   ページヘッダー（Component 1 下部）— ヒーロー画像 + 英字見出し + パンくず
   PC: ヘッダーバー h84 の直下・高さ 436px（写真 h417）
   -------------------------------------------------------------------------- */
.p-pagehead {
  position: relative;
  height: 436px;
  overflow: hidden;
  background-color: #fff;
}

.p-pagehead__inner {
  position: relative;
  width: min(100%, 1440px);
  height: 100%;
  margin-inline: auto;
}

/* 写真は右側に配置し右端へ 29px はみ出す（left198 / w1271） */
.p-pagehead__photo {
  position: absolute;
  top: 0;
  left: 198px;
  right: -29px;
  height: 417px;
  overflow: hidden;
  pointer-events: none;
}

.p-pagehead__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.p-pagehead__title {
  position: absolute;
  top: 173px;
  left: 120px;
  display: flex;
  flex-direction: column;
  gap: 17px;
  align-items: flex-start;
}

.p-pagehead__title .c-section-title__en {
  line-height: 54px;
  letter-spacing: 5.12px;
  white-space: nowrap;
}

/* パンくず */
.c-breadcrumb {
  position: absolute;
  top: 417px;
  left: 120px;
  display: flex;
  gap: 8px;
  align-items: center;
  font-family: var(--font-body);
  white-space: nowrap;
}

.c-breadcrumb a,
.c-breadcrumb__sep {
  font-size: 12px;
  line-height: normal;
  color: #b2aba6;
}

.c-breadcrumb__current {
  font-size: 13px;
  line-height: normal;
  color: var(--color-muted);
}

/* ページヘッダー — TAB（0:1528）: h360 / 画像右 w619 / 見出し 48px
   パンくずはヒーロー下端に独立配置（区切り線 y430 + パンくず y431〜） */
@media (max-width: 1023px) {
  .p-pagehead {
    height: 403px; /* ヒーロー 360 + パンくず帯 43 */
  }

  .p-pagehead__photo {
    top: 0;
    left: 149px;
    right: 0;
    height: 360px;
  }

  .p-pagehead__title {
    top: 138px;
    left: 48px;
    gap: 12px;
  }

  .p-pagehead__title .c-section-title__en {
    font-size: 48px;
    line-height: 1.1;
    letter-spacing: 3.84px;
  }

  .c-breadcrumb {
    top: 360px;
    left: 0;
    right: 0;
    height: auto;
    padding: 12px 0 12px 40px;
    border-top: 1px solid var(--color-card-border);
  }
}

/* ページヘッダー — SP（0:2173）: h300 / 画像右 w319 / 見出し 24px */
@media (max-width: 767px) {
  .p-pagehead {
    height: 343px; /* ヒーロー 300 + パンくず帯 43 */
  }

  .p-pagehead__photo {
    top: -3px;
    left: 71px;
    right: 0;
    height: 300px;
  }

  .p-pagehead__title {
    top: 121px;
    left: 20px;
    gap: 12px;
  }

  .p-pagehead__title .c-section-title__en {
    font-size: 24px;
    letter-spacing: 1.92px;
  }

  .c-breadcrumb {
    top: 300px;
    padding: 12px 0 12px 24px;
    border-top: 0;
  }
}

/* ==========================================================================
   ① サービス内容 詳細（0:683 / 0:1539 / 0:2147）
   ========================================================================== */
.p-service-detail {
  display: flex;
  flex-direction: column;
  gap: 72px;
  align-items: center;
  padding-block: 96px;
}

.p-service-detail__row {
  display: flex;
  gap: 64px;
  align-items: center;
  width: min(100% - 80px, 1208px);
}

.p-service-detail__text {
  display: flex;
  flex-direction: column;
  gap: 14px;
  flex-shrink: 0;
  width: 320px;
}

/* 写真が右にくる行（1・3行目）はテキストに左パディング */
.p-service-detail__row:not(.p-service-detail__row--reverse) .p-service-detail__text {
  padding-left: 24px;
}

.p-service-detail__title {
  font-family: var(--font-display);
  font-size: 40px;
  font-weight: 700;
  line-height: normal;
  color: var(--color-point-title);
  white-space: nowrap;
}

.p-service-detail__desc {
  font-family: var(--font-gothic);
  font-size: 16px;
  font-weight: 400;
  line-height: 34px;
  color: var(--color-point-body);
}

/* 写真は残り幅を埋める（1440px で ≈820px、1024〜1440 は流動的に伸縮） */
.p-service-detail__photo {
  flex: 1 1 auto;
  min-width: 0;
  height: 380px;
  overflow: hidden;
  border-radius: 16px;
}

.p-service-detail__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 3行目 + 注記の複合ブロック（行と注記の間は 27px） */
.p-service-detail__group {
  display: flex;
  flex-direction: column;
  gap: 27px;
  width: min(100% - 80px, 1208px);
}

.p-service-detail__group .p-service-detail__row {
  width: 100%;
}

/* 注記（Figma は Inter だが日本語グリフを持たないため本文書体で実装・確認事項#24） */
.p-service-detail__note {
  margin-left: 179px;
  width: 818px;
  max-width: calc(100% - 179px);
  font-family: var(--font-body);
  font-size: 20px;
  line-height: normal;
  color: #e25c5c;
}

/* サービス詳細 — TAB（0:1539）: 写真 416×320 が画面端へはみ出す */
@media (max-width: 1023px) {
  .p-service-detail {
    gap: 64px;
    align-items: flex-end;
    padding-block: 0 96px;
    overflow: hidden;
  }

  .p-service-detail__row,
  .p-service-detail__group {
    width: 100%;
  }

  .p-service-detail__row {
    gap: 32px;
    align-items: center;
    justify-content: flex-start;
  }

  .p-service-detail__text {
    width: 320px;
  }

  .p-service-detail__title {
    font-size: 32px;
  }

  .p-service-detail__desc {
    line-height: 25.6px;
  }

  .p-service-detail__photo,
  .p-service-detail__row--reverse .p-service-detail__photo {
    flex: 0 0 416px;
    width: 416px;
    height: 320px;
    border-radius: 16px;
  }

  /* 1行目: text(左40) → 右端へはみ出す写真（左寄せ・写真は overflow で切れる） */
  .p-service-detail__row--01 {
    width: 100%;
    padding-left: 16px;
    justify-content: flex-start;
  }

  /* 2行目: 写真が左端へはみ出す（left0）→ text280 は右 */
  .p-service-detail__row--reverse {
    padding-left: 0;
  }

  .p-service-detail__row--reverse .p-service-detail__text {
    width: 280px;
  }

  /* 3行目 + 注記 */
  .p-service-detail__group {
    gap: 0;
    position: relative;
  }

  .p-service-detail__row--03 {
    width: 100%;
    padding-left: 16px;
    gap: 64px;
    justify-content: flex-start;
  }

  .p-service-detail__row--03 .p-service-detail__text {
    width: 280px;
  }

  .p-service-detail__note {
    margin: 16px auto 0;
    width: 636px;
    font-size: 16px;
    text-align: left;
  }
}

/* サービス詳細 — SP（0:2147）: 写真上・中央揃え見出しの縦積み */
@media (max-width: 767px) {
  .p-service-detail {
    gap: 0;
    align-items: center;
    padding: 0 0 96px;
    overflow: hidden;
  }

  .p-service-detail__row,
  .p-service-detail__group,
  .p-service-detail__row--01,
  .p-service-detail__row--03 {
    position: relative;
    /* カンプは全行「写真 上・見出し 下」。DOM が text→photo の行（1・3）は
       column-reverse で写真を上へ、photo→text の 2 行目は column */
    flex-direction: column-reverse;
    gap: 12px;
    align-items: center;
    width: 100%;
    max-width: none;
    padding-left: 0;
    margin-inline: 0;
  }

  .p-service-detail__row--reverse {
    flex-direction: column;
  }

  /* 1・3行目: 写真は右端に接し左側だけ角丸（367×222） */
  .p-service-detail__photo {
    flex: 0 0 auto;
    align-self: flex-end;
    width: 367px;
    max-width: 100%;
    height: 222px;
    border-radius: 16px 0 0 16px;
  }

  /* 2行目: 写真は左端に接し右側だけ角丸（372×224） */
  .p-service-detail__row--reverse .p-service-detail__photo {
    flex: 0 0 auto;
    align-self: flex-start;
    width: 372px;
    height: 224px;
    border-radius: 0 16px 16px 0;
  }

  .p-service-detail__text,
  .p-service-detail__row--reverse .p-service-detail__text,
  .p-service-detail__row--03 .p-service-detail__text {
    gap: 14px;
    align-items: center;
    width: min(350px, 100%);
    padding-left: 0;
    text-align: center;
  }

  .p-service-detail__title {
    font-size: 24px;
  }

  .p-service-detail__desc {
    width: 100%;
    line-height: 25.6px;
  }

  /* 各行の縦間隔（写真ブロック間はカンプ実測で約 96px） */
  .p-service-detail__row,
  .p-service-detail__group {
    margin-top: 65px;
  }

  .p-service-detail__row--01 {
    margin-top: 24px; /* パンくず下端からの間隔 */
  }

  /* SP はカンプに注記なし（確認事項#24） */
  .p-service-detail__note {
    display: none;
  }
}

/* ==========================================================================
   ② 料金・メニュー（0:744 / 0:1428 / 0:1561）
   「基本メニュー」「オプション」2つの価格カード。背景 #f0f7fa
   ========================================================================== */
.p-menu {
  display: flex;
  flex-direction: column;
  gap: 54px;
  align-items: center;
  padding-block: 178px;
  background-color: var(--color-bg-price);
}

.p-menu__group {
  display: flex;
  flex-direction: column;
  gap: 24px;
  align-items: center;
  width: min(100% - 80px, 900px);
}

/* 見出し（両脇に 271px の罫線） */
.p-menu__header {
  display: flex;
  gap: 28px;
  align-items: center;
  justify-content: center;
}

.p-menu__line {
  width: 271px;
  height: 0;
  border-top: 1px solid var(--color-rule);
}

.p-menu__title {
  font-family: var(--font-body);
  font-size: 40px;
  font-weight: 400;
  line-height: normal;
  color: #000;
  white-space: nowrap;
}

.p-menu__card {
  width: 100%;
  padding: 40px;
  background-color: #fff;
  border-radius: 16px;
  filter: var(--shadow-price);
}

.p-menu__list {
  display: flex;
  flex-direction: column;
  gap: 21px;
  width: 802px;
  max-width: 100%;
  margin-inline: auto;
  padding-block: 40px;
}

.p-menu__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 24px;
  line-height: normal;
  color: var(--color-text);
  white-space: nowrap;
}

.p-menu__item {
  font-family: var(--font-body);
  font-weight: 400;
}

.p-menu__price {
  flex-shrink: 0;
  padding-left: 16px;
  font-family: var(--font-body);
  font-weight: 500;
}

/* カンプの罫線は高さ 0（線はボックス外）。gap で上下に振り分ける */
.p-menu__rule {
  height: 0;
  border-top: 1px solid var(--color-rule);
}

.p-menu__tax {
  align-self: flex-end;
  font-size: 16px;
  line-height: 22px;
  color: var(--color-body);
  white-space: nowrap;
}

.p-menu__note {
  font-size: 20px;
  line-height: 30px;
  color: var(--color-body);
}

/* 料金 — TAB（0:1430）: 見出し 32px #4d4d4d・線160・カード内 624・行 20px */
@media (max-width: 1023px) {
  .p-menu {
    gap: 40px;
    padding-block: 98px;
  }

  .p-menu__group {
    width: min(100% - 80px, 688px);
  }

  .p-menu__line {
    width: 160px;
  }

  .p-menu__title {
    font-size: 32px;
    color: var(--color-heading-sub);
  }

  .p-menu__card {
    padding: 32px;
  }

  .p-menu__list {
    gap: 16px;
    width: 624px;
    padding-block: 32px;
  }

  .p-menu__row {
    font-size: 20px;
  }

  .p-menu__tax {
    font-size: 14px;
    line-height: 20px;
  }

  .p-menu__note {
    font-size: 16px;
    line-height: 26px;
  }
}

/* 料金 — SP（0:1561）: 見出し 24px・線は伸縮 max60・行 16px・カード p20 */
@media (max-width: 767px) {
  .p-menu {
    gap: 60px;
    padding-block: 60px;
  }

  .p-menu__group {
    gap: 32px;
    width: min(100% - 40px, 350px);
  }

  .p-menu__header {
    gap: 12px;
    align-self: stretch;
  }

  .p-menu__line {
    flex: 1 0 0;
    width: auto;
    max-width: 60px;
    min-width: 1px;
  }

  .p-menu__title {
    font-size: 24px;
  }

  .p-menu__card {
    padding: 20px;
  }

  .p-menu__list {
    gap: 16px;
    width: 100%;
    padding-block: 0;
  }

  .p-menu__row {
    font-size: 16px;
  }

  .p-menu__tax {
    font-size: 12px;
    line-height: normal;
  }

  .p-menu__note {
    font-size: 13px;
    line-height: 1.6;
  }
}

/* ==========================================================================
   ③ 利用の流れ（0:814 / 0:1650 / 0:1868）
   ========================================================================== */

/* --- ステップ（5 枚の横カード + 中央の縦コネクタ）---------------------- */
.p-flowsteps {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 57px;
  align-items: center;
  padding-top: 120px;
}

/* 中央の縦コネクタ（カードの隙間に見える。カード背後 z-index 0） */
.p-flowsteps__connector {
  position: absolute;
  top: 187px;
  bottom: 163px;
  left: 50%;
  z-index: 0;
  width: 0;
  border-left: 1.5px dashed #333;
}

.p-flowsteps__item {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
  width: 792px;
  max-width: min(100% - 80px, 792px);
  min-height: 187px;
  padding: 24px 40px 24px 197px;
  background-color: var(--color-bg-price);
  border-radius: 16px;
}

.p-flowsteps__num {
  position: absolute;
  z-index: 2;
  top: 3px;
  left: 31px;
  font-family: var(--font-en);
  font-size: 72px;
  font-weight: 300;
  line-height: normal;
  color: var(--color-flow-num);
  transform: scale(0.7);
  transform-origin: center;
}

.p-flowsteps__circle {
  position: absolute;
  z-index: 1;
  top: 24px;
  left: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 139px;
  height: 139px;
  background-color: #fff;
  border-radius: 50%;
}

.p-flowsteps__circle img {
  display: block;
}

/* 番号・円の位置は維持し、アイコンの表示サイズだけを調整して重なりを防ぐ */
.p-flowsteps__item--01 .p-flowsteps__circle img { width: 53px; height: 39px; }
.p-flowsteps__item--02 .p-flowsteps__circle img { width: 50px; height: 49px; }
.p-flowsteps__item--03 .p-flowsteps__circle img { width: 52px; height: 42px; }
.p-flowsteps__item--04 .p-flowsteps__circle img { width: 44px; height: 47px; }
.p-flowsteps__item--05 .p-flowsteps__circle img { width: 48px; height: 56px; }

/* PC はタイトル・本文とも Zen Old Mincho Bold 20px（TAB/SP で分岐） */
.p-flowsteps__title,
.p-flowsteps__text {
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 700;
  line-height: normal;
  color: var(--color-flow-label);
}

/* --- 注意事項セクション（見出し + クリーム色カード + 箇条書き）---------- */
.p-notes {
  display: flex;
  flex-direction: column;
  gap: 64px;
  align-items: center;
  padding-block: 157px 120px;
}

.p-notes__group {
  display: flex;
  flex-direction: column;
  gap: 20px;
  align-items: center;
  width: min(100% - 80px, 924px);
}

/* 見出し（両脇 230px の罫線） */
.p-notes__header {
  display: flex;
  gap: 24px;
  align-items: center;
  justify-content: center;
}

.p-notes__line {
  width: 230px;
  height: 0;
  border-top: 1px solid var(--color-rule);
}

.p-notes__title {
  font-family: var(--font-display);
  font-size: 40px;
  font-weight: 400;
  line-height: normal;
  color: #000;
  white-space: nowrap;
}

.p-notes__card {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 32px;
  width: 100%;
  min-height: 611px;
  padding: 64px;
  background-color: #fbf5ea;
  border-radius: 0;
  box-shadow: 0 4px 19px 0 rgba(179, 190, 223, 0.25);
}

.p-notes__item {
  display: flex;
  flex: 1 1 0;
  gap: 20px;
  align-items: center;
}

.p-notes__item::before {
  flex-shrink: 0;
  width: 17px;
  height: 17px;
  background-color: var(--color-rule);
  border-radius: 50%;
  content: "";
}

.p-notes__item p {
  font-family: var(--font-gothic);
  font-size: 16px;
  line-height: normal;
  color: #000;
}

/* 利用の流れ — TAB（0:1652 / 0:1768）
   ステップは #f0f7fa カード維持（680×180・番号64px・タイトル24px明朝・本文16pxゴシック）。
   注意事項カードは cream・自然高さ（PC の固定 611・均等配置を解除）。
   ※安全のための注意点はカンプ TAB/SP で 6 項目（PC は 8 項目・確認事項#26） */
@media (max-width: 1023px) {
  .p-flowsteps {
    gap: 64px;
    padding-top: 80px;
  }

  .p-flowsteps__connector {
    top: 180px;
    bottom: 180px;
  }

  .p-flowsteps__item {
    width: 680px;
    max-width: min(100% - 88px, 680px);
    min-height: 180px;
    padding: 32px 32px 32px 196px;
  }

  .p-flowsteps__num {
    top: -16px;
    left: 24px;
    font-size: 64px;
    transform: scale(0.8);
  }

  .p-flowsteps__circle {
    top: 20px;
    left: 29px;
  }

  .p-flowsteps__title {
    font-size: 24px;
  }

  .p-flowsteps__text {
    font-family: var(--font-gothic);
    font-size: 16px;
    font-weight: 400;
  }

  .p-notes {
    gap: 56px;
    padding-block: 56px 96px;
  }

  .p-notes__group {
    width: min(100% - 88px, 680px);
  }

  .p-notes__line {
    flex: 1 0 0;
    width: auto;
    min-width: 1px;
  }

  .p-notes__title {
    font-size: 32px;
  }

  .p-notes__card {
    justify-content: flex-start;
    gap: 24px;
    min-height: 0;
    padding: 48px;
    border-radius: 12px;
    box-shadow: 0 4px 9.5px rgba(179, 190, 223, 0.25);
  }

  .p-notes__item {
    flex: 0 0 auto;
    gap: 16px;
    align-items: flex-start;
  }

  .p-notes__item::before {
    width: 12px;
    height: 12px;
    margin-top: 5px;
  }

  .p-notes__item p {
    font-size: 15px;
    color: var(--color-flow-label);
  }
}

/* 利用の流れ — SP（0:1872 / 0:2019）
   ステップは #f0f7fa カードで縦中央揃え（円96px 上・番号40px・タイトル20px明朝中央・本文16pxゴシック中央）。
   注意事項カードは cream・見出し 20px */
@media (max-width: 767px) {
  .p-flowsteps {
    gap: 59px;
    padding-top: 64px;
  }

  .p-flowsteps__connector {
    top: 212px;
    bottom: 272px;
  }

  .p-flowsteps__item {
    display: block;
    width: 300px;
    max-width: 100%;
    min-height: 305px;
    padding: 0;
    text-align: center;
  }

  .p-flowsteps__num {
    top: 38px;
    left: 50%;
    margin-left: -49px;
    font-size: 40px;
    line-height: 40px;
    transform: scale(0.8);
  }

  .p-flowsteps__circle {
    top: 49px;
    left: 50%;
    margin-left: -48px;
    width: 96px;
    height: 96px;
  }

  .p-flowsteps__item--01 .p-flowsteps__circle img { width: 38px; height: 29px; }
  .p-flowsteps__item--02 .p-flowsteps__circle img { width: 42px; height: 41px; }
  .p-flowsteps__item--03 .p-flowsteps__circle img { width: 47px; height: 37px; }
  .p-flowsteps__item--04 .p-flowsteps__circle img { width: 37px; height: 40px; }
  .p-flowsteps__item--05 .p-flowsteps__circle img { width: 34px; height: 39px; }

  .p-flowsteps__title {
    position: absolute;
    top: 165px;
    left: 0;
    right: 0;
    font-size: 20px;
    text-align: center;
  }

  .p-flowsteps__text {
    position: absolute;
    top: 205px;
    left: 50%;
    width: 242px;
    max-width: calc(100% - 58px);
    font-family: var(--font-gothic);
    font-size: 16px;
    font-weight: 400;
    text-align: center;
    transform: translateX(-50%);
  }

  .p-notes {
    gap: 44px;
    padding-block: 44px 80px;
  }

  .p-notes__group {
    width: min(100% - 40px, 350px);
  }

  .p-notes__title {
    font-size: 20px;
  }

  .p-notes__card {
    gap: 24px;
    padding: 24px 15px;
  }

  .p-notes__item {
    gap: 8px;
  }
}

/* ==========================================================================
   ④ お問い合わせ（0:1039 / 0:2093 / 0:2511）
   Contact Form 7 想定のフォーム。書体は Gothic A1（日本語グリフを持たない）
   のため本文ゴシック（Zen Kaku Gothic New）で実装（確認事項#27）
   フォーム項目は PC カンプ 0:1041 の 4 項目を採用（TAB/SP は別項目・確認事項#28）
   ========================================================================== */
.p-contact {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 44px;
  padding: 66px 20px 120px;
}

.p-contact__intro {
  max-width: 538px;
  font-family: var(--font-gothic);
  font-size: 20px;
  line-height: 1.8;
  color: #4b5563;
  text-align: center;
}

.c-form {
  display: flex;
  flex-direction: column;
  gap: 48px;
  width: min(100%, 800px);
  padding: 40px 80px 120px;
  background-color: #fff;
  border: 1px solid #d1d5db;
  border-radius: 12px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
}

.c-form__fields {
  display: flex;
  flex-direction: column;
  gap: 32px;
}

.c-form__field {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.c-form__label {
  display: flex;
  gap: 8px;
  align-items: center;
}

.c-form__label-text {
  font-family: var(--font-gothic);
  font-size: 14px;
  font-weight: 700;
  line-height: normal;
  color: #111827;
}

.c-form__badge {
  flex-shrink: 0;
  padding: 2px 6px;
  background-color: #fee2e2;
  border-radius: 2px;
  font-family: var(--font-gothic);
  font-size: 11px;
  font-weight: 700;
  line-height: normal;
  color: #b91c1c;
  white-space: nowrap;
}

.c-form__badge--optional {
  background-color: #f3f4f6;
  color: #6b7280;
}

.c-form__input,
.c-form__textarea {
  width: 100%;
  padding: 14px;
  background-color: #fff;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-family: var(--font-gothic);
  font-size: 15px;
  line-height: 1.6;
  color: var(--color-text);
}

.c-form__input {
  height: 52px;
}

.c-form__textarea {
  height: 160px;
  resize: vertical;
}

.c-form__input::placeholder,
.c-form__textarea::placeholder {
  color: #9ca3af;
}

.c-form__input:focus-visible,
.c-form__textarea:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 1px;
  border-color: var(--color-accent);
}

.c-form__footer {
  display: flex;
  flex-direction: column;
  gap: 40px;
  align-items: center;
}

.c-form__consent {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  width: 100%;
}

.c-form__checkbox {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  margin: 0;
  appearance: none;
  -webkit-appearance: none;
  background-color: #fff;
  border: 2px solid #d1d5db;
  border-radius: 4px;
  cursor: pointer;
}

.c-form__checkbox:checked {
  background-color: var(--color-accent);
  border-color: var(--color-accent);
}

.c-form__checkbox:checked::after {
  display: block;
  width: 5px;
  height: 9px;
  margin: 1px auto 0;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
  content: "";
}

.c-form__checkbox:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 1px;
}

.c-form__consent-text {
  flex: 1 0 0;
  min-width: 0;
  font-family: var(--font-gothic);
  font-size: 15px;
  line-height: normal;
  color: #111827;
}

.c-form__consent-text a {
  color: #1d4ed8;
  text-decoration: underline;
}

.c-form__submit {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 320px;
  max-width: 100%;
  height: 60px;
  background-color: var(--color-accent);
  border-radius: 8px;
  box-shadow: 0 8px 8px rgba(29, 78, 216, 0.15);
  font-family: var(--font-gothic);
  font-size: 16px;
  font-weight: 700;
  line-height: normal;
  color: #fff;
  cursor: pointer;
}

.c-form__note {
  font-family: var(--font-gothic);
  font-size: 13px;
  line-height: normal;
  color: #4b5563;
}

/* お問い合わせ — TAB（0:2098）: フォームカード 688・padding 40 */
@media (max-width: 1023px) {
  .p-contact {
    gap: 56px;
    padding: 56px 40px 96px;
  }

  .p-contact__intro {
    max-width: 560px;
  }

  .c-form {
    width: min(100%, 688px);
    padding: 40px;
  }
}

/* お問い合わせ — SP（0:2511）: フォームカード 350・padding 24 */
@media (max-width: 767px) {
  .p-contact {
    gap: 40px;
    padding: 40px 20px 80px;
  }

  .p-contact__intro {
    max-width: 350px;
    font-size: 16px;
  }

  .c-form {
    width: min(100%, 350px);
    padding: 24px;
    gap: 40px;
  }

  .c-form__submit {
    align-self: center;
    width: 320px;
    max-width: calc(100vw - 48px);
    height: 64px;
  }
}
