/* =================================================================
 * onepage-form.css - 1ページ型予約フォーム専用スタイル（v2-slim）
 * Air Takumi v2.1 - スリム版（料金・信頼セクション削除）
 * 既存style.cssには一切手を加えず、このファイルで完結する
 * ================================================================= */

/* =================================
   入力フィールド: inset影を除去してモダンに
   ================================= */
.form .form-text,
.form .form-textarea,
.form .form-select,
.form .form-date {
  box-shadow: none;
  border: 1px solid #ccc;
}
.form .form-text:focus,
.form .form-textarea:focus,
.form .form-select:focus {
  border-color: #004831;
  box-shadow: 0 0 0 2px rgba(0, 72, 49, 0.12);
  outline: none;
}

/* =================================
   姓名横並び
   ================================= */
.onepage-name-row {
  display: flex;
  gap: 12px;
}
.onepage-name-row .form_item {
  flex: 1;
  min-width: 0;
  flex-direction: column;
  align-items: stretch;
}
.onepage-name-row .form_item:not(:first-child) {
  margin-top: 0 !important;
}
.onepage-name-row .form_item .form_title {
  width: auto !important;
  margin-bottom: 6px;
}
.onepage-name-row .form_item .wpcf7-form-control-wrap {
  flex: none;
  width: 100%;
  margin-top: 0;
}
@media screen and (max-width: 400px) {
  .onepage-name-row {
    flex-direction: column;
    gap: 0;
  }
}

/* =================================
   セクション区切り
   ================================= */
.onepage-section {
  margin-bottom: 40px;
  padding-bottom: 32px;
  border-bottom: 1px solid #e8e8e8;
}
.onepage-section:last-child {
  border-bottom: none;
  margin-bottom: 0;
}

/* =================================
   セクション見出し
   ================================= */
.onepage-heading {
  font-size: 1.15rem;
  font-weight: 700;
  color: #004831;
  margin-bottom: 20px;
  padding-bottom: 10px;
  border-bottom: 2px solid #004831;
  display: flex;
  align-items: center;
  gap: 8px;
}
.onepage-heading__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: #004831;
  color: #fff;
  border-radius: 50%;
  font-size: 0.8rem;
  font-weight: 700;
  flex-shrink: 0;
}

/* =================================
   説明テキスト
   ================================= */
.onepage-desc {
  margin-bottom: 12px;
  line-height: 1.7;
}

/* =================================
   カレンダー横並び
   ================================= */
#step-calendar-area .wpsbc-calendars {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: nowrap;
}
#step-calendar-area .wpsbc-calendar {
  flex: 1;
  min-width: 280px;
  max-width: 380px;
}
@media screen and (max-width: 639px) {
  #step-calendar-area .wpsbc-calendars {
    flex-direction: column;
    align-items: center;
  }
  #step-calendar-area .wpsbc-calendar {
    max-width: 100%;
  }
}

/* カレンダー凡例を下に配置 */
#step-calendar-area .wpsbc-calendars-wrapper.wpsbc-legend-position-side {
  flex-direction: column !important;
}
#step-calendar-area .wpsbc-legend {
  display: flex !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  gap: 8px 16px !important;
  margin-top: 12px !important;
  order: 2 !important;
  width: 100% !important;
  max-width: 100% !important;
}
#step-calendar-area .wpsbc-calendars {
  order: 1 !important;
  width: 100% !important;
}

/* スマホ: 2つ目のカレンダー非表示 */
@media screen and (max-width: 639px) {
  #step-calendar-area .wpsbc-calendar:nth-child(2) {
    display: none !important;
  }
}

/* カレンダーとの間隔 */
#step-calendar-area {
  margin-top: 20px;
}
/* 時間帯説明と入力欄の間隔 */
#step-calendar-area .schedule-details {
  margin-bottom: 0;
}

/* スマホ: 凡例をコンパクトに */
@media screen and (max-width: 639px) {
  #step-calendar-area .wpsbc-legend {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 2px 10px !important;
    padding: 8px 4px !important;
  }
  #step-calendar-area .wpsbc-legend .wpsbc-legend-item {
    margin: 0 !important;
    padding: 2px 0 !important;
    font-size: 12px !important;
    white-space: nowrap !important;
  }
  #step-calendar-area .wpsbc-legend .wpsbc-legend-item .wpsbc-legend-item-icon {
    width: 14px !important;
    height: 14px !important;
  }
  #step-calendar-area .wpsbc-calendars {
    flex-direction: column;
    gap: 0 !important;
  }
}

/* =================================
   カレンダー日付クリック連動
   ================================= */
#step-calendar-area div.wpsbc-date.wpsbc-clickable {
  cursor: pointer;
}
#step-calendar-area div.wpsbc-date.wpsbc-clickable:hover {
  opacity: 0.75;
  transition: opacity 0.15s ease;
}
#step-calendar-area div.wpsbc-date.wpsbc-unavailable {
  cursor: not-allowed;
}

/* =================================
   日付入力フィールド
   ================================= */
input.form-date {
  cursor: pointer;
  max-width: 220px;
}
input.form-date[readonly] {
  background-color: #fff;
  color: #333;
  opacity: 1;
  cursor: pointer;
}
input.form-date[readonly]::placeholder {
  color: #999;
  font-size: 0.9rem;
}

/* 選択中の希望日欄 */
.form_item.onepage-date-active input.form-date {
  border: 2px solid #E33E3B;
  background-color: #fff5f5;
}
.form_item.onepage-date-active .form_title {
  color: #E33E3B;
}

/* 日付入力後のパルスアニメーション */
.onepage-date-filled {
  animation: onepageDatePulse 0.6s ease;
}
@keyframes onepageDatePulse {
  0%   { box-shadow: 0 0 0 0 rgba(255, 138, 0, 0.5); }
  50%  { box-shadow: 0 0 0 6px rgba(255, 138, 0, 0.2); }
  100% { box-shadow: 0 0 0 0 rgba(255, 138, 0, 0); }
}

/* =================================
   ラジオボタン カスタム描画 + タップ領域拡大
   ================================= */
.form .wpcf7-radio {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  margin-left: -10px;
  margin-top: -8px;
}
.form .wpcf7-radio input[type="radio"] {
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  border: 0;
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
}
.form .wpcf7-radio .wpcf7-list-item {
  display: inline-block;
  margin-left: 10px;
  margin-top: 8px;
}
.form .wpcf7-radio .wpcf7-list-item-label {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  font-size: 1rem;
  line-height: 1;
  padding: 8px 6px 8px 28px;
  position: relative;
  min-height: 44px;
  box-sizing: border-box;
}
.form .wpcf7-radio .wpcf7-list-item-label::before {
  background-color: #fff;
  border: 2px solid #004831;
  border-radius: 50%;
  box-sizing: border-box;
  content: "";
  display: block;
  height: 20px;
  width: 20px;
  left: 0;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
.form .wpcf7-radio input[type="radio"]:checked + .wpcf7-list-item-label::before {
  background: #004831;
  box-shadow: inset 0 0 0 3px #fff;
}

/* =================================
   時間帯ラジオ制御
   ================================= */
.onepage-radio-disabled {
  opacity: 0.35;
  pointer-events: none;
  cursor: not-allowed;
}
.onepage-radio-disabled .wpcf7-list-item-label {
  text-decoration: line-through;
}
.onepage-time-restriction-msg {
  color: #666;
  font-size: 0.8rem;
  margin-top: 6px;
  padding: 0;
  background: none;
  border: none;
  letter-spacing: 0.02em;
}
.onepage-time-restriction-msg::before {
  content: "※";
}

/* =================================
   ペット割引バッジ
   ================================= */
.onepage-discount-badge {
  display: none;
  margin-top: 8px;
  margin-bottom: 8px;
  padding: 8px 14px;
  background: linear-gradient(135deg, #fff3e0, #ffe0b2);
  border: 1px solid #ffb74d;
  border-radius: 6px;
  text-align: center;
  font-weight: 700;
  font-size: 0.9rem;
  color: #e65100;
  animation: badgePop 0.4s ease;
}
.onepage-discount-badge.visible {
  display: block;
}
@keyframes badgePop {
  0%   { transform: scale(0.8); opacity: 0; }
  60%  { transform: scale(1.05); }
  100% { transform: scale(1); opacity: 1; }
}

/* =================================
   フィールドOKマーク（ラベル横にinline表示）
   ================================= */
.onepage-ok-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #28a745;
  color: #fff;
  font-size: 0.65rem;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 10px;
  letter-spacing: 0.5px;
  line-height: 1;
  margin-left: 6px;
  vertical-align: middle;
  animation: okFadeIn 0.3s ease;
}
@keyframes okFadeIn {
  from { opacity: 0; transform: scale(0.7); }
  to   { opacity: 1; transform: scale(1); }
}

/* OKマーク表示中は赤枠を解除 */
.form_item.onepage-field-ok input.form-date {
  border: 1px solid #ccc;
  background-color: #fff;
}
.form_item.onepage-field-ok .form_title {
  color: inherit;
}

/* =================================
   バリデーションエラー
   ================================= */
/* CF7のデフォルトエラーチップを非表示（独自バリデーションで統一） */
.wpcf7-not-valid-tip {
  display: none !important;
}
/* select矢印がエラー追加でずれるのを防止（top:50%→固定値に上書き） */
.form .form_item--select .wpcf7-form-control-wrap::after {
  top: 25px !important;
  transform: translateY(-50%) rotate(45deg) !important;
}
/* エラー表示時に入力欄が縮むのを防止 */
.request_form .form_item {
  flex-wrap: wrap;
}
.onepage-field-error {
  display: block;
  width: 100%;
  color: #E33E3B;
  font-size: 0.95rem;
  margin-top: 6px;
  padding: 4px 0;
  font-weight: 600;
  line-height: 1.4;
}
/* 郵便番号自動入力後の住所追記ヒント */
.zip-autofill-hint {
  color: #E33E3B;
  font-size: 0.85rem;
  font-weight: 600;
  margin-top: 6px;
  padding: 0;
}

.onepage-invalid {
  border: 2px solid #E33E3B !important;
  background-color: #fff5f5 !important;
}

/* =================================
   クーポンセクション
   ================================= */
.coupon-section {
  margin-top: 16px;
}
.coupon-items {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.coupon-item {
  background: #f8f9fa;
  border: 1px solid #e0e0e0;
  border-radius: 8px;
  padding: 16px;
}
.coupon-item-label {
  font-size: 0.9rem;
  font-weight: 700;
  color: #004831;
  margin-bottom: 8px;
}
.coupon-code-input {
  width: 100% !important;
  box-sizing: border-box;
  padding: 12px 14px !important;
  font-size: 1rem !important;
  min-height: 48px;
}
.coupon-code-note {
  font-size: 0.8rem;
  color: #888;
  margin: 6px 0 0;
}
.coupon-code-signup {
  font-size: 0.8rem;
  color: #333;
  margin: 8px 0 0;
}
.coupon-code-signup__amount {
  color: #E33E3B;
  font-weight: 700;
}
.coupon-code-signup a {
  color: #007bff;
  font-weight: 600;
  text-decoration: underline;
}
.coupon-timed-status {
  font-size: 0.8rem;
  margin-top: 6px;
  font-weight: 600;
}
.coupon-timed-status.is-pending {
  color: #888;
}
.coupon-timed-status.is-applied {
  color: #28a745;
}

/* =================================
   送信ボタン
   ================================= */
.onepage-submit-wrap {
  margin-top: 24px;
  text-align: center;
}
.onepage-submit-note {
  font-size: 0.85rem;
  color: #004831;
  font-weight: 500;
  margin-bottom: 12px;
}
.onepage-submit {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #E33E3B;
  color: #fff !important;
  border: none;
  border-radius: 40px;
  padding: 16px 48px;
  font-size: 1.1rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
  min-height: 56px;
  box-shadow: 0 3px 10px rgba(227, 62, 59, 0.25);
  width: 100%;
  max-width: 400px;
  margin-left: auto;
  margin-right: auto;
}
.onepage-submit:hover {
  background: #c73532 !important;
  color: #fff !important;
  transform: translateY(-1px);
  box-shadow: 0 5px 15px rgba(227, 62, 59, 0.35);
}
.onepage-submit:focus,
.onepage-submit:focus-visible {
  background: #E33E3B !important;
  color: #fff !important;
  outline: 3px solid rgba(227, 62, 59, 0.4);
  outline-offset: 2px;
}
.onepage-submit:active {
  background: #b8302d !important;
  color: #fff !important;
  transform: translateY(0);
}
/* CF7プラグインのデフォルトスタイルを上書き */
.wpcf7 .wpcf7-submit.onepage-submit,
.wpcf7 .wpcf7-submit.onepage-submit:hover,
.wpcf7 .wpcf7-submit.onepage-submit:focus,
.wpcf7 .wpcf7-submit.onepage-submit:active {
  background: #E33E3B !important;
  color: #fff !important;
}
.wpcf7 .wpcf7-submit.onepage-submit:hover {
  background: #c73532 !important;
}
.onepage-submit-sub {
  font-size: 0.8rem;
  color: #888;
  margin-top: 10px;
}

/* =================================
   レスポンシブ
   ================================= */
@media screen and (max-width: 767px) {
  .onepage-section {
    margin-bottom: 28px;
    padding-bottom: 24px;
  }
  .onepage-heading {
    font-size: 1.05rem;
  }
  .onepage-submit {
    padding: 15px 24px;
    font-size: 1.05rem;
    max-width: 100%;
  }
}


/* =================================================================
 * ヒーロー（コンパクト版）
 * ================================================================= */
.op-hero {
  background: linear-gradient(135deg, #003325 0%, #004831 50%, #005a3d 100%);
  color: #fff;
  padding: 32px 20px 28px;
  text-align: center;
}
.op-hero__container {
  max-width: 600px;
  margin: 0 auto;
}
.op-hero__title {
  font-size: 1.3rem;
  font-weight: 700;
  line-height: 1.5;
  margin-bottom: 10px;
  letter-spacing: 0.05em;
}
.op-hero__subtitle {
  font-size: 0.9rem;
  line-height: 1.8;
  color: rgba(255, 255, 255, 0.85);
  margin-bottom: 16px;
}
/* 信頼バッジ（1行にまとめ） */
.op-hero__badges {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-bottom: 20px;
}
.op-hero__badge {
  font-size: 0.8rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.95);
  white-space: nowrap;
}
.op-hero__cta {
  display: inline-block;
  background: #E33E3B;
  color: #fff;
  text-decoration: none;
  padding: 12px 36px;
  border-radius: 40px;
  font-size: 1rem;
  font-weight: 700;
  transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
  box-shadow: 0 3px 10px rgba(227, 62, 59, 0.3);
}
.op-hero__cta:hover {
  background: #c73532;
  transform: translateY(-1px);
  box-shadow: 0 5px 15px rgba(227, 62, 59, 0.4);
  color: #fff;
}
/* 料金リンク */
.op-hero__price-link {
  margin-top: 14px;
  font-size: 0.8rem;
  color: rgba(255, 255, 255, 0.7);
}
.op-hero__price-link a {
  color: #fff;
  text-decoration: underline;
}
.op-hero__price-link a:hover {
  opacity: 0.8;
}
.op-hero__br--sp {
  display: inline;
}
@media screen and (min-width: 768px) {
  .op-hero {
    padding: 40px 40px 36px;
  }
  .op-hero__title {
    font-size: 1.6rem;
  }
  .op-hero__br--sp {
    display: none;
  }
}

/* =================================================================
 * エリア案内バナー（フォーム上部）
 * ================================================================= */
.op-area-banner {
  text-align: center;
  padding: 14px 16px;
  margin-bottom: 20px;
  background: #fff;
  border: 2px solid #E33E3B;
  border-radius: 8px;
}
.op-area-banner__text {
  font-size: 0.95rem;
  color: #333;
  margin: 0;
}
.op-area-banner__name {
  color: #E33E3B;
  font-size: 1.15rem;
}
.op-area-banner__link {
  margin: 6px 0 0;
  font-size: 0.75rem;
  color: #888;
}
.op-area-banner__link a {
  color: #004831;
  text-decoration: underline;
}

/* =================================================================
 * 優先予約案内カード
 * ================================================================= */
.pra-notice {
  margin-bottom: 24px;
  padding: 20px 24px;
  background: #fef9f0;
  border-left: 4px solid #E33E3B;
  border-radius: 0 8px 8px 0;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.pra-notice__heading {
  font-size: 1.05rem;
  font-weight: 700;
  color: #E33E3B;
  margin-bottom: 8px;
}
.pra-notice__text {
  font-size: 0.9rem;
  line-height: 1.8;
  color: #333;
  margin: 0 0 16px;
}
.pra-notice__btn-wrap {
  text-align: center;
  margin-bottom: 12px;
}
.pra-notice__btn {
  display: inline-block;
  padding: 12px 28px;
  background: #007bff;
  color: #fff !important;
  font-size: 1rem;
  font-weight: 700;
  text-decoration: none;
  border-radius: 40px;
  transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
  box-shadow: 0 3px 10px rgba(0, 123, 255, 0.25);
}
.pra-notice__btn:hover {
  background: #0056b3;
  transform: translateY(-1px);
  box-shadow: 0 5px 15px rgba(0, 123, 255, 0.35);
  color: #fff !important;
}
.pra-notice__sub {
  font-size: 0.8rem;
  color: #888;
  text-align: center;
  margin: 0;
}
@media screen and (max-width: 767px) {
  .pra-notice {
    padding: 16px 18px;
  }
  .pra-notice__btn {
    display: block;
    width: 100%;
    box-sizing: border-box;
    text-align: center;
  }
}

/* =================================================================
 * 料金モーダル
 * ================================================================= */
.op-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  align-items: center;
  justify-content: center;
}
.op-modal.is-open {
  display: flex;
}
.op-modal__overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
}
.op-modal__box {
  position: relative;
  background: #fff;
  border-radius: 8px;
  padding: 28px 24px;
  max-width: 440px;
  width: calc(100% - 32px);
  max-height: 85vh;
  overflow-y: auto;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.2);
  animation: opModalIn 0.25s ease;
}
@keyframes opModalIn {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
.op-modal__close {
  position: absolute;
  top: 12px;
  right: 12px;
  background: none;
  border: none;
  font-size: 1.6rem;
  color: #888;
  cursor: pointer;
  line-height: 1;
  padding: 4px 8px;
}
.op-modal__close:hover {
  color: #333;
}
.op-modal__title {
  font-size: 1.1rem;
  font-weight: 700;
  color: #004831;
  margin-bottom: 16px;
  text-align: center;
}
/* 料金テーブル */
.op-modal__table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 16px;
}
.op-modal__table td {
  padding: 10px 0;
  border-bottom: 1px solid #eee;
  vertical-align: baseline;
}
.op-modal__table tr:last-child td {
  border-bottom: none;
}
.op-modal__label {
  font-size: 0.9rem;
  color: #333;
  line-height: 1.5;
}
.op-modal__label small {
  display: block;
  font-size: 0.75rem;
  color: #888;
}
.op-modal__price {
  font-size: 1.1rem;
  font-weight: 700;
  color: #004831;
  text-align: right;
  white-space: nowrap;
}
.op-modal__price small {
  font-size: 0.75rem;
  font-weight: 400;
  color: #888;
}
.op-modal__tr--sub .op-modal__label {
  font-size: 0.85rem;
  color: #666;
}
.op-modal__tr--sub .op-modal__price {
  font-size: 0.95rem;
  color: #666;
}
/* 割引 */
.op-modal__discounts {
  background: #fff8f0;
  border-left: 3px solid #E33E3B;
  border-radius: 0 4px 4px 0;
  padding: 10px 14px;
  margin-bottom: 14px;
}
.op-modal__discount {
  font-size: 0.85rem;
  color: #333;
  line-height: 1.6;
}
.op-modal__discount strong {
  color: #E33E3B;
}
/* 注記 */
.op-modal__note {
  font-size: 0.75rem;
  color: #999;
  line-height: 1.6;
  text-align: center;
}
.op-modal__note a {
  color: #004831;
  text-decoration: underline;
}

/* =================================================================
 * ヒーロー エリアラベル
 * ================================================================= */
.op-hero__area-label {
  display: inline-block;
  background: rgba(255, 255, 255, 0.15);
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-radius: 20px;
  padding: 4px 18px;
  font-size: 0.85rem;
  font-weight: 600;
  color: #fff;
  margin-bottom: 12px;
  letter-spacing: 0.08em;
}

/* =================================================================
 * 対象地域モーダル
 * ================================================================= */
.op-area-detail {
  text-align: left;
  margin-bottom: 20px;
}
.op-area-detail__group {
  margin-bottom: 12px;
}
.op-area-detail__pref {
  font-size: 0.85rem;
  font-weight: 700;
  color: #004831;
  margin-bottom: 4px;
}
.op-area-detail__cities {
  font-size: 0.8rem;
  line-height: 1.8;
  color: #555;
}
.op-area-detail__note {
  font-size: 0.75rem;
  color: #888;
  margin-top: 8px;
}
.op-area-detail__note a {
  color: #004831;
  text-decoration: underline;
}
/* エリア切り替えセクション */
.op-area-detail__switch {
  border-top: 1px solid #eee;
  padding-top: 16px;
  text-align: center;
}
.op-area-detail__switch-label {
  font-size: 0.8rem;
  color: #888;
  margin-bottom: 10px;
}
.op-area-detail__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
}
.op-area-detail__link {
  display: inline-block;
  padding: 8px 20px;
  border: 1px solid #004831;
  border-radius: 20px;
  font-size: 0.85rem;
  font-weight: 600;
  color: #004831;
  text-decoration: none;
  transition: background 0.2s, color 0.2s;
}
.op-area-detail__link:hover {
  background: #004831;
  color: #fff;
}

/* =================================================================
 * プライバシーポリシー
 * ================================================================= */
.op-privacy-note {
  margin-top: 12px;
  font-size: 0.75rem;
  color: #888;
  text-align: center;
}
.op-privacy-note a {
  color: #888;
  text-decoration: underline;
}
