/* コンポーネント alias */
.btn-primary, .btn-main { /* alias 予約 */ }

.faq-item:has(dt) {
  padding: 1rem;
}

/* STEP2 日時: JS 連携メッセージ（重複日付など） */
.res-datetime-hint[hidden] {
  display: none;
}

.res-datetime-hint:not([hidden]) {
  display: block;
}

#res-datetime-section aside ul li + li {
  margin-top: 0.35rem;
}

/* ------------------------------------------------------------------
 * フォーム：2列（日付＋時間帯）
 * ------------------------------------------------------------------ */
.form-row-2col {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.75rem;
  align-items: stretch;
}

.form-row-2col .input-custom,
.form-row-2col .select-custom,
.form-row-2col .flatpickr-input.input-custom {
  height: 48px;
  min-height: 48px;
}

@media (min-width: 640px) {
  .form-row-2col {
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
  }
}

/* ------------------------------------------------------------------
 * フォーム操作ボタン（nav > ul > li > button。直置き禁止）
 * STEP2 対策: fieldset 内は padding で余白（margin 相殺しない）
 * ------------------------------------------------------------------ */
.form-actions {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* 白枠（fieldset）の内側：入力欄とボタンの間 */
.form-actions.form-actions--in-fieldset {
  margin-top: 0;
  padding-top: 3rem;
  padding-bottom: 0.5rem;
  border-top: 1px solid #e2ded8;
}

form > fieldset.border.rounded-md {
  padding-bottom: 0.5rem;
}

/* fieldset の外（STEP3 など）— 余白は footer に集約 */
.form-step-footer {
  margin-top: 0;
  padding-top: 3rem;
  padding-bottom: 1.25rem;
  border-top: 1px solid #e2ded8;
}

.form-step-footer > .form-actions {
  margin: 0;
  padding: 0;
  border: 0;
}

.form-actions--single.form-actions--in-fieldset {
  padding-top: 2.5rem;
}

.form-actions--confirm {
  margin-top: 4rem;
  padding-top: 2.5rem;
}

.form-actions__inner {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
}

.form-actions__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: block;
  width: 100%;
}

.form-actions__item {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0.75rem 0;
  box-sizing: border-box;
}

.form-actions__item:first-child {
  padding-top: 0.5rem;
}

.form-actions__item:last-child {
  padding-bottom: 0.25rem;
}

.form-actions__item .btn-custom,
.form-actions__item a.btn-custom {
  display: flex;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

/* 確認画面：スマホは送信を上に */
@media (max-width: 639px) {
  .form-actions__list--confirm {
    display: flex;
    flex-direction: column-reverse;
  }
}

@media (min-width: 640px) {
  .form-actions__list--dual {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 1rem;
    width: 100%;
  }

  .form-actions__list--dual .form-actions__item {
    width: auto;
    padding: 0.5rem 0;
  }

  .form-actions__list--dual .form-actions__item .btn-custom,
  .form-actions__list--dual .form-actions__item a.btn-custom {
    width: auto;
    min-width: 11rem;
  }

  .form-actions--single .form-actions__list {
    display: flex;
    justify-content: center;
  }

  .form-actions--single .form-actions__item {
    width: auto;
    padding: 0.5rem 0;
  }

  .form-actions--single .form-actions__item .btn-custom {
    width: auto;
    min-width: 14rem;
    max-width: 22rem;
  }
}

/* flatpickr */
.flatpickr-input.input-custom,
.flatpickr-input.input-custom:focus,
input.flatpickr-input {
  width: 100%;
}

.flatpickr-calendar {
  font-family: 'Yu Gothic', 'Hiragino Sans', 'Meiryo', sans-serif;
}

@media (max-width: 639px) {
  form fieldset.border.rounded-md {
    padding: 1.25rem;
  }

  .form-actions.form-actions--in-fieldset {
    padding-top: 2.5rem;
  }

  .form-step-footer {
    padding-top: 2.5rem;
  }
}
