/* カンタンお見積り — eventos-catering-theme 上書き・追加 */

.est-dev-banner {
  margin: 0 0 1.6rem;
  padding: 0.9rem 1.4rem;
  font-size: 1.25rem;
  line-height: 1.5;
  color: #5c4a00;
  background: #fff8e1;
  border: 1px solid #e6d28a;
  border-radius: 0.4rem;
  text-align: center;
}

/* 全体の文字サイズ（標準の1.5倍・page-header帯は除く） */
html.est-page {
  --est-font-scale: 1.5;
  font-size: calc(100vw * 10 * var(--est-font-scale) / 1440);
}
/* スマホは情報密度優先でスケールを大きく下げる（390px基準で約9px）。
   文字・余白はこの1変数で一括縮小。タップ領域はrem追従させず、
   下部mediaでpx最小サイズを個別に確保する（小さい文字＋大きいボタン）。 */
@media screen and (max-width: 1000px) {
  html.est-page {
    --est-font-scale: 0.9;
    font-size: calc(100vw * 10 * var(--est-font-scale) / 390);
  }
}

/* Step1以降はヘッダー帯を隠して、見積り操作エリアを広く使う */
body.est-hide-page-header .page-header-estimate {
  display: none;
}

/* Page header — 文字サイズはサイト標準のまま（est-font-scale で打ち消し） */
html.est-page .page-header-estimate {
  padding: calc(8rem / var(--est-font-scale)) 0;
}
html.est-page .page-header-estimate .page-header-en {
  color: #fff;
  font-size: calc(7.2rem / var(--est-font-scale));
}
html.est-page .page-header-estimate .page-title {
  color: #fff;
  font-size: calc(2.9rem / var(--est-font-scale));
}
html.est-page .page-header-estimate .page-desc {
  color: #fff;
  font-size: calc(1.8rem / var(--est-font-scale));
  margin-top: calc(1.6rem / var(--est-font-scale));
}
@media screen and (max-width: 1000px) {
  html.est-page .page-header-estimate {
    padding: calc(6rem / var(--est-font-scale)) 0;
  }
  html.est-page .page-header-estimate .page-header-en {
    font-size: calc(6rem / var(--est-font-scale));
  }
  html.est-page .page-header-estimate .page-title {
    font-size: calc(2.2rem / var(--est-font-scale));
  }
  html.est-page .page-header-estimate .page-desc {
    font-size: calc(1.5rem / var(--est-font-scale));
  }
}

.est-wrap {
  width: 90%;
  max-width: 85rem;
  margin: 0 auto 8rem;
  padding-bottom: 2rem;
}

/* Progress */
.est-progress {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.9rem;
  margin-bottom: 4.9rem;
  scroll-margin-top: 12rem;
}
.est-progress-label {
  font-family: var(--font-eg-eb);
  font-size: 3rem;
  line-height: 1;
  letter-spacing: 0.12em;
  color: var(--primary-black);
}
.est-progress-list {
  display: flex;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
}
.est-progress-step {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.6rem;
  height: 3.6rem;
  margin: 0;
  border-radius: 50%;
  font-family: var(--font-eg-eb);
  font-size: 1.8rem;
  line-height: 1;
  color: var(--primary-gray);
  background: var(--tertiary-gray);
  transition: background 0.3s ease, color 0.3s ease;
}
.est-progress-step:not(:last-child) {
  margin-right: 2.8rem;
}
.est-progress-step:not(:last-child)::after {
  content: "";
  position: absolute;
  left: calc(100% + 0.6rem);
  top: 50%;
  width: 1.6rem;
  height: 1px;
  background: var(--secondary-gray);
  transform: translateY(-50%);
}
.est-progress-step.active,
.est-progress-step.done {
  color: var(--white);
  background: var(--primary-black);
}

/* Step text */
/* Context summary (previous steps) */
.est-context {
  margin-bottom:5.6rem;
  padding: 1.4rem 1.6rem;
  border: 1px solid var(--tertiary-gray);
  border-radius: 1rem;
  background: #f7f7f7;
}
.est-context-head {
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--secondary-black);
  margin-bottom: 1rem;
}
.est-context-items {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem 1.2rem;
}
.est-context-item {
  display: inline-flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.4rem 0.6rem;
  padding: 0.5rem 1rem;
  border-radius: 1rem;
  background: #fff;
  border: 1px solid var(--tertiary-gray);
  font-size: 1.3rem;
  line-height: 1.5;
  color: var(--secondary-black);
}
.est-context-label {
  white-space: nowrap;
}
.est-context-label::after {
  content: "：";
}

.est-step-title {
  font-family: var(--font-jp-zenold);
  font-size: 2.4rem;
  line-height: 1.5;
  letter-spacing: 0.04em;
  text-align: start;
  margin-bottom: 2rem;
}
.est-step-sub {
  font-size: 1.5rem;
  color: var(--primary-gray);
  line-height: 1.9;
  margin-bottom: 2.4rem;
}
.est-content {
  min-height: 28rem;
  transition: opacity 0.22s ease, transform 0.22s ease;
}
.est-content.fade {
  opacity: 0;
  transform: translateY(0.8rem);
}

/* Step 1 fields */
.est-field-label {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  font-family: var(--font-jp-zenold);
  font-size: 1.8rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--primary-black);
  margin-bottom: 1.6rem;
}
.est-field-label::before {
  content: "";
  display: inline-block;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 0.45rem 0 0.45rem 0.7rem;
  border-color: transparent transparent transparent var(--primary-black);
  flex-shrink: 0;
}
.est-field-label-spaced {
  margin-top: 4rem;
}

/* Guests */
.est-guests-row {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: 1.6rem;
  margin: 0 0 2rem;
}
.est-guests-field {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.est-guests-btn {
  width: 4.4rem;
  height: 4.4rem;
  margin-top: 0.6rem;
  border-radius: 50%;
  border: none;
  background: var(--tertiary-gray);
  cursor: pointer;
  font-size: 2rem;
  color: var(--secondary-black);
  line-height: 1;
  transition: background 0.2s ease, color 0.2s ease;
}
.est-guests-btn:hover {
  background: #dcdcdc;
  color: var(--primary-black);
}
.est-guests-input {
  width: 12rem;
  height: 5.6rem;
  text-align: center;
  border: 1px solid var(--secondary-gray);
  border-radius: 0.2rem;
  outline: none;
  font-family: var(--font-eg-eb);
  font-size: 3.2rem;
  color: #555555;
  background: #fff;
  line-height: 1;
  -moz-appearance: textfield;
}
.est-guests-input::-webkit-outer-spin-button,
.est-guests-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.est-guests-input:focus {
  border-color: var(--primary-black);
}
.est-guests-unit {
  text-align: center;
  font-size: 1.4rem;
  color: var(--primary-gray);
  margin-top: 0.6rem;
  line-height: 1;
}
.est-presets {
  display: flex;
  gap: 0.8rem;
  justify-content: center;
  flex-wrap: wrap;
}
.est-preset {
  padding: 0.8rem 1.6rem;
  border-radius: 0.2rem;
  border: 1px solid var(--tertiary-gray);
  background: #F6F6F6;
  cursor: pointer;
  font-size: 1.3rem;
  font-family: var(--font-jp-noto);
  color: var(--primary-black);
  transition: border-color 0.2s, background 0.2s, color 0.2s;
}
.est-preset:hover {
  border-color: var(--secondary-gray);
  background: #f7f7f7;
}
.est-preset.active {
  border-color: var(--primary-black);
  background: var(--primary-black);
  color: #fff;
}

/* Location */
.est-location-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.2rem;
}
.est-location-card {
  display: flex;
  align-items: flex-start;
  gap: 1.2rem;
  width: 100%;
  text-align: left;
  cursor: pointer;
  padding: 1.8rem 1.6rem;
  border-radius: 0.3rem;
  border: 1px solid transparent;
  background: var(--tertiary-gray);
  box-shadow: none;
  transition:
    border-color 0.2s ease,
    background 0.2s ease;
  font-family: var(--font-jp-noto);
}
.est-location-card:hover {
  background: #e2e2e2;
}
.est-location-card.selected {
  border-color: #389d38;
  background: #fff;
}
.est-location-radio {
  flex-shrink: 0;
  width: 1.8rem;
  height: 1.8rem;
  margin-top: 0.2rem;
  border-radius: 50%;
  border: 1px solid var(--secondary-gray);
  background: #fff;
  position: relative;
  transition: border-color 0.2s ease, background 0.2s ease;
}
.est-location-card.selected .est-location-radio {
  border-color: #389d38;
  background: #fff;
}
.est-location-card.selected .est-location-radio::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 1rem;
  height: 1rem;
  border-radius: 50%;
  background: #389d38;
  transform: translate(-50%, -50%);
}
.est-location-body {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.est-location-label {
  font-size: 1.6rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--primary-black);
}
.est-location-desc {
  font-size: 1.2rem;
  color: var(--primary-gray);
  line-height: 1.7;
}

/* Plan categories */
.est-plan-categories {
  display: flex;
  flex-direction: column;
  gap: 2.4rem;
}
.est-plan-category {
  padding: 2.4rem 2rem;
  border: none;
  border-radius: 1rem;
  background: #f7f7f7;
}
.est-plan-category-head {
  margin-bottom: 1.6rem;
}
.est-plan-category-title {
  font-family: var(--font-jp-zenold);
  font-size: 2.2rem;
  line-height: 1.5;
  letter-spacing: 0.04em;
  display: flex;
  align-items: baseline;
  gap: 0.6rem;
}
.est-plan-category-mark {
  font-family: var(--font-jp-noto);
  font-size: 1.4rem;
  color: var(--primary-black);
  line-height: 1;
}
.est-plan-category-desc {
  font-size: 1.3rem;
  color: var(--primary-gray);
  line-height: 1.85;
  margin-top: 0.8rem;
}

/* Plan cards */
.est-plan-grid {
  display: grid;
  gap: 1.6rem;
}
.est-plan-grid.cols-multi {
  grid-template-columns: repeat(auto-fit, minmax(22rem, 1fr));
  align-items: stretch;
}
/* ワンウェイ3枚・オーダーメイド2枚はPCで常に1行にし、開いたメニュー高さを揃える */
@media screen and (min-width: 1001px) {
  .est-plan-category--oneway .est-plan-grid.cols-multi {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .est-plan-category--custom .est-plan-grid.cols-multi {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.est-plan-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  width: 100%;
  text-align: left;
  cursor: pointer;
  border-radius: 1rem;
  padding: 2.4rem 2rem;
  background: #fff;
  border: 1px solid var(--tertiary-gray);
  box-shadow: none;
  transition:
    border-color 0.2s ease,
    box-shadow 0.2s ease,
    background 0.2s ease;
  font-family: var(--font-jp-noto);
  overflow: visible;
}
.est-plan-card:hover {
  border-color: var(--secondary-gray);
  background: #fff;
  box-shadow: 0 0.4rem 1.6rem rgba(0, 0, 0, 0.08);
}
.est-plan-card:active {
  box-shadow: none;
}
.est-plan-card:focus-visible {
  outline: none;
  border-color: #389d38;
  box-shadow: 0 0 0 0.3rem rgba(56, 157, 56, 0.2);
}
.est-plan-card.selected {
  border-color: #389d38;
  border-width: 2px;
  background: #fff;
  box-shadow: none;
}
.est-plan-card.selected:hover {
  border-color: #389d38;
}
.est-plan-card.is-menu-open {
  z-index: auto;
}
.est-plan-title-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.8rem 1.2rem;
  margin-bottom: 0.8rem;
}
.est-plan-title-row::after {
  content: "";
  display: block;
  width: 100%;
  height: 1px;
  background: var(--tertiary-gray);
}

.est-plan-badge {
  display: inline-block;
  flex-shrink: 0;
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: #fff;
  background: #389d38;
  padding: 0.3rem 1rem;
  border-radius: 0;
  margin: 0;
}
.est-plan-sub {
  font-size: 1.2rem;
  color: var(--primary-gray);
  letter-spacing: 0.04em;
  margin-bottom: 0.4rem;
}
.est-plan-head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.6rem;
}
.est-plan-label {
  font-family: var(--font-jp-zenold);
  font-size: 2.2rem;
  line-height: 1.4;
  color: var(--primary-black);
}
.est-plan-price-row {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.8rem 1.6rem;
  margin-top: 0.4rem;
}
.est-plan-price-row .est-plan-note {
  margin-top: 0;
}
.est-plan-price {
  font-family: var(--font-eg-eb);
  font-size: 3.2rem;
  line-height: 1.2;
  margin: 0;
  color: #c0392b;
}
.est-plan-price small {
  font-family: var(--font-jp-noto);
  font-size: 1.3rem;
  font-weight: 400;
  color: var(--primary-gray);
  margin-left: 0.2rem;
}
/* メニュー構成：コンパクトなインライン開閉 */
.est-plan-menu-wrap {
  position: relative;
  align-self: flex-start;
  margin-top: 1rem;
  z-index: 2;
  width: 100%;
}
.est-plan-menu-wrap.is-open {
  z-index: 2;
}
.est-plan-menu-hint {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: 0.2rem;
  width: auto;
  margin: 0;
  padding: 0.2rem 0;
  box-sizing: border-box;
  border: none;
  border-radius: 0;
  background: none;
  font-size: 1.2rem;
  line-height: 1.4;
  color: var(--secondary-black);
  font-family: var(--font-jp-noto);
  cursor: pointer;
  transition: color 0.15s ease, opacity 0.15s ease;
  -webkit-tap-highlight-color: transparent;
}
.est-plan-menu-hint.is-open {
  color: var(--primary-black);
  background: none;
}
.est-plan-menu-hint-img {
  display: block;
  width: 3.5rem;
  height: 3.5rem;
  object-fit: contain;
  flex-shrink: 0;
  transform-origin: center;
  transition: transform 0.18s ease;
}
/* PCなどホバー可能な端末だけ */
@media (hover: hover) and (pointer: fine) {
  .est-plan-menu-hint:hover {
    color: var(--primary-black);
    background: none;
  }
  .est-plan-menu-hint:hover .est-plan-menu-hint-img {
    transform: scale(1.12);
  }
}
/* スマホ／共通のタップ反応 */
.est-plan-menu-hint:active {
  background: none;
  opacity: 0.65;
}
.est-plan-menu-hint:active .est-plan-menu-hint-img {
  transform: scale(0.88);
}
/* 開いたとき：いま操作したカードのアイコンだけアニメ */
.est-plan-menu-hint.is-animating .est-plan-menu-hint-img {
  animation: est-menu-icon-in 0.22s ease;
}
@keyframes est-menu-icon-in {
  0% {
    opacity: 0;
    transform: scale(0.7) rotate(-12deg);
  }
  70% {
    opacity: 1;
    transform: scale(1.12) rotate(0deg);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .est-plan-menu-hint,
  .est-plan-menu-hint-img {
    transition: none;
  }
  .est-plan-menu-hint.is-animating .est-plan-menu-hint-img {
    animation: none;
  }
}
.est-plan-menu-wrap .est-plan-menu {
  margin-top: 0.6rem;
  padding-top: 0.6rem;
  border-top: 1px solid var(--tertiary-gray);
}
.est-plan-menu-wrap .est-plan-menu-list {
  font-size: 1.2rem;
}
.est-plan-menu-wrap .est-plan-menu-list li,
.est-plan-menu-wrap .est-plan-menu-text {
  font-size: 1.2rem;
  line-height: 1.55;
  color: var(--secondary-black);
}
.est-plan-delivery {
  margin-top: 1rem;
  margin-bottom: 1.6rem;
  padding-bottom: 1.4rem;
  border-bottom: 1px solid var(--tertiary-gray);
  font-size: 1.3rem;
  color: var(--secondary-black);
  line-height: 1.7;
}
.est-plan-delivery--outside {
  color: #92400e;
  background: #fffbeb;
  margin-top: 1rem;
  margin-bottom: 1.6rem;
  padding: 1rem 1.2rem 1.2rem;
  border-bottom: none;
  border: 1px solid #fde68a;
  border-radius: 1rem;
  line-height: 1.75;
}
.est-plan-menu {
  margin-top: 1.2rem;
  margin-bottom: 0.6rem;
  padding-top: 1.2rem;
  border-top: 1px solid var(--tertiary-gray);
}
.est-plan-menu-label {
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--primary-gray);
  margin-bottom: 0.8rem;
}
.est-plan-menu-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.est-plan-menu-list li {
  position: relative;
  padding-left: 1.2rem;
  font-size: 1.3rem;
  color: var(--secondary-black);
  line-height: 1.65;
}
.est-plan-menu-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.75em;
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 50%;
  background: var(--primary-gray);
  transform: translateY(-50%);
}
.est-plan-menu-text {
  font-size: 1.3rem;
  color: var(--primary-black);
  line-height: 1.85;
  margin: 0;
}
.est-plan-extra {
  font-size: 1.3rem;
  color: var(--primary-gray);
  line-height: 1.8;
  margin-top: 0.4rem;
}
.est-plan-note {
  margin-top: 1rem;
  font-size: 1.2rem;
  color: var(--primary-gray);
  line-height: 1.7;
}
.est-plan-cat-desc-inline {
  margin-top: 0;
  font-size: 1.3rem;
  color: var(--primary-black);
  line-height: 1.75;
}
.est-plan-cat-desc-inline + .est-plan-cat-desc-inline {
  margin-top: 0.8rem;
}
.est-check {
  position: absolute;
  top: 1.4rem;
  right: 1.4rem;
  width: 2.4rem;
  height: 2.4rem;
  border-radius: 50%;
  display: none;
  align-items: center;
  justify-content: center;
  background: #389d38;
  color: #fff;
  font-size: 1.2rem;
  font-weight: 700;
  box-shadow: 0 0.2rem 0.6rem rgba(56, 157, 56, 0.3);
  z-index: 1;
}
.est-plan-card.selected .est-check { display: flex; }

.est-plan-card-foot {
  display: flex;
  justify-content: flex-end;
  margin-top: auto;
  padding-top: 2rem;
}
.est-plan-card-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16rem;
  margin: 0;
  padding: 0.9rem 0;
  box-sizing: border-box;
  border: 1px solid transparent;
  border-radius: 5rem;
  background: var(--primary-gray);
  transition: background 0.2s ease;
}
.est-plan-card-action-text {
  font-size: 1.4rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #fff;
}
.est-plan-card:hover .est-plan-card-action {
  background: var(--secondary-black);
}
.est-plan-card.selected .est-plan-card-action {
  background: #389d38;
}
.est-plan-card.selected .est-plan-card-action-text {
  color: #fff;
}
.est-plan-card.selected:hover .est-plan-card-action {
  background: #2e842e;
}

/* --- カテゴリ別カードレイアウト --- */
/* 1枚目：季節プラン — 説明文とボタンを横並び */
.est-plan-card--seasonal .est-plan-seasonal-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  margin-top: 1.6rem;
}
.est-plan-card--seasonal .est-plan-seasonal-desc {
  flex: 1;
  min-width: 0;
}
.est-plan-card--seasonal .est-plan-card-foot {
  margin-top: 0;
  padding-top: 0;
  flex-shrink: 0;
}

/* 2枚目：ワンウェイ — PCは同列カードの高さを揃え、選択ボタンは下揃え */
.est-plan-card--oneway {
  height: 100%;
}
.est-plan-card--oneway .est-plan-actions-row {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 1.2rem;
  margin-top: 1.6rem;
  flex: 1 1 auto;
  min-height: 0;
}
.est-plan-card--oneway .est-plan-actions-row .est-plan-menu-wrap {
  align-self: stretch;
  margin-top: 0;
  flex: 0 1 auto;
  min-width: 0;
  width: 100%;
}
.est-plan-card--oneway .est-plan-actions-row .est-plan-card-foot {
  justify-content: center;
  width: 100%;
  margin-top: auto;
  padding-top: 0;
}
.est-plan-card--oneway .est-plan-menu-wrap {
  align-self: stretch;
  margin-top: 1.6rem;
}
.est-plan-card--oneway .est-plan-card-foot {
  justify-content: center;
  width: 100%;
}

/* 3枚目：オーダーメイド — 左料金は上揃え、選択ボタンはカード下揃え */
.est-plan-card--custom {
  height: 100%;
}
.est-plan-card--custom .est-plan-split-row {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 2rem;
  margin-top: 1.2rem;
  flex: 1 1 auto;
  min-height: 0;
}
.est-plan-card--custom .est-plan-split-info {
  flex: 1;
  min-width: 0;
  /* 列は伸びても中身は上から */
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.est-plan-card--custom .est-plan-split-info .est-plan-head {
  margin: 0;
}
.est-plan-card--custom .est-plan-split-info .est-plan-note {
  margin-top: 0.8rem;
}
.est-plan-card--custom .est-plan-split-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.2rem;
  flex-shrink: 0;
  align-self: stretch;
}
.est-plan-card--custom .est-plan-menu-wrap {
  margin-top: 0;
  align-self: stretch;
  width: 100%;
}
.est-plan-card--custom .est-plan-card-foot {
  margin-top: auto;
  padding-top: 0;
  justify-content: center;
  width: 100%;
}

/* 4・5枚目：相談系 — ラベル＋価格横並び＋下線、テキストとボタン横並び */
.est-plan-card--consult .est-plan-title-row--lined,
.est-plan-card--other .est-plan-title-row--lined {
  align-items: baseline;
  padding-bottom: 1.2rem;
  margin-bottom: 1.6rem;
}
.est-plan-card--consult .est-plan-title-row--lined .est-plan-price,
.est-plan-card--other .est-plan-title-row--lined .est-plan-price {
  margin-left: auto;
}
.est-plan-card--consult .est-plan-consult-row,
.est-plan-card--other .est-plan-consult-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  flex: 1;
}
.est-plan-card--consult .est-plan-consult-text,
.est-plan-card--other .est-plan-consult-text {
  flex: 1;
  min-width: 0;
}
.est-plan-card--consult .est-plan-menu,
.est-plan-card--other .est-plan-menu {
  margin: 0;
  padding: 0;
  border-top: none;
}
.est-plan-card--consult .est-plan-menu-text,
.est-plan-card--other .est-plan-menu-text {
  margin-top: 0;
}
.est-plan-card--consult .est-plan-menu-text + .est-plan-menu-text,
.est-plan-card--other .est-plan-menu-text + .est-plan-menu-text {
  margin-top: 0.8rem;
}
.est-plan-card--consult .est-plan-card-foot,
.est-plan-card--other .est-plan-card-foot {
  margin-top: 0;
  padding-top: 0;
  flex-shrink: 0;
}

/* Options */
.est-opt-category-label {
  margin-top: 2.4rem;
  margin-bottom: 1.2rem;
}
.est-opt-category-label:first-child {
  margin-top: 0;
}
.est-opt-grid { display: grid; gap: 1rem; }
.est-opt-card {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  width: 100%;
  text-align: left;
  cursor: pointer;
  border-radius: 1rem;
  padding: 2.4rem;
  background: #fff;
  border: 1px solid var(--tertiary-gray);
  font-family: var(--font-jp-noto);
  transition: border-color 0.2s ease;
}
.est-opt-card:hover:not(:disabled):not(.is-unavailable) {
  border-color: var(--secondary-gray);
}
.est-opt-card:focus-visible {
  outline: none;
  border-color: var(--primary-black);
  box-shadow: 0 0 0 0.25rem rgba(51, 51, 51, 0.12);
}
.est-opt-card.selected {
  background: #fff;
  border: 2px solid var(--primary-green);
}
.est-opt-card.selected:hover:not(:disabled) {
  border-color: #2e842e;
}
.est-opt-icon {
  flex-shrink: 0;
  width: 2.4rem;
  height: 2.4rem;
  margin-top: 0.2rem;
  border-radius: 50%;
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--primary-gray);
  color: #fff;
  font-size: 1.6rem;
  font-weight: 400;
  line-height: 1;
}
.est-opt-icon.is-selected {
  background: var(--primary-green);
  color: #fff;
  font-size: 1.2rem;
  font-weight: 700;
}
.est-opt-body {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.2rem;
}
.est-opt-text {
  flex: 1;
  min-width: 0;
}
.est-opt-label {
  font-size: 2rem;
  font-weight: 500;
  color: var(--primary-black);
  line-height: 1.4;
  font-family: var(--font-jp-zenold);
}
.est-opt-desc {
  font-size: 1.4rem;
  color: var(--primary-gray);
  margin-top: 0.4rem;
  line-height: 1.65;
}
.est-opt-price {
  font-family: var(--font-eg-eb);
  font-size: 3.2rem;
  color: #c0392b;
  white-space: nowrap;
  flex-shrink: 0;
  align-self: center;
}
.est-opt-price-plus {
  color: var(--primary-gray);
}
.est-opt-price small {
  font-size: 1.4rem;
  font-family: var(--font-jp-noto);
  color: var(--primary-gray);
}
.est-opt-price-included {
  font-size: 1.4rem;
  font-family: var(--font-jp-noto);
  color: var(--primary-gray);
}

.est-opt-card-wrap {
  border: 2px solid var(--primary-green);
  border-radius: 1rem;
  background: #fff;
  overflow: hidden;
}
.est-opt-card-wrap.selected {
  border-color: var(--primary-green);
  background: #fff;
}
.est-opt-card-wrap .est-opt-card {
  border: none;
  border-radius: 0;
  background: transparent;
}
.est-opt-card-wrap .est-opt-card:hover {
  border: none;
  background: transparent;
}
.est-opt-card-wrap.is-unavailable {
  position: relative;
  border: none;
  border-radius: 1rem;
  background: transparent;
  overflow: hidden;
}
.est-opt-unavail-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem 1.6rem;
  background: rgba(255, 255, 255, 0.55);
  border-radius: 1rem;
  pointer-events: none;
}
.est-opt-unavail-msg {
  font-size: 1.15rem;
  line-height: 1.55;
  color: #4b5563;
  text-align: center;
  margin: 0;
  font-weight: 500;
}
.est-opt-card-wrap.is-unavailable .est-opt-card {
  width: 100%;
  cursor: not-allowed;
  background: #fff;
  border: 1px solid var(--tertiary-gray);
  border-radius: 1rem;
}
.est-opt-card-wrap.is-unavailable .est-opt-card:hover {
  border-color: var(--tertiary-gray);
}
.est-opt-card.is-unavailable .est-opt-label {
  color: var(--secondary-black);
}
.est-opt-card.is-unavailable .est-opt-desc {
  color: var(--primary-gray);
}
.est-opt-card.is-unavailable .est-opt-price {
  color: var(--secondary-black);
}
.est-opt-card:disabled {
  pointer-events: none;
}
.est-kids-count {
  padding: 1.6rem 1.6rem 2rem;
  border-top: 1px solid var(--tertiary-gray);
}
.est-kids-count-label {
  font-size: 1.3rem;
  line-height: 1.75;
  color: var(--secondary-black);
  margin: 0 0 1.6rem;
  text-align: start;
}
.est-kids-stepper {
  display: flex;
  align-items: flex-start;
  gap: 1.2rem;
}
.est-kids-btn {
  width: 3.2rem;
  height: 3.2rem;
  margin-top: 0.4rem;
  border-radius: 50%;
  border: none;
  background: var(--tertiary-gray);
  cursor: pointer;
  font-size: 1.8rem;
  color: var(--secondary-black);
  line-height: 1;
  transition: background 0.2s ease, color 0.2s ease;
}
.est-kids-btn:hover {
  background: #dcdcdc;
  color: var(--primary-black);
}
.est-kids-field {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.est-kids-input {
  width: 12rem !important;
  height: 4.4rem;
  text-align: center;
  border: none;
  border-radius: 0.4rem;
  outline: none;
  font-family: var(--font-eg-eb);
  font-size: 2.4rem;
  color: var(--secondary-black);
  background: var(--tertiary-gray);
  line-height: 1;
  -moz-appearance: textfield;
}
.est-kids-input::-webkit-outer-spin-button,
.est-kids-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.est-kids-input:focus {
  background: #e0e0e0;
}
.est-kids-input
.est-kids-unit {
  text-align: center;
  font-size: 1.2rem;
  color: var(--primary-gray);
  margin-top: 0.4rem;
  line-height: 1;
}

/* Result */
.est-result-hero {
  background: #F9E2DF;
  border-radius: 1rem;
  padding: 2.8rem 2rem;
  text-align: center;
  margin-bottom: 2rem;
}
.est-result-hero .est-result-label,
.est-result-hero .est-result-total,
.est-result-hero .est-result-tax,
.est-result-hero .est-result-disclaimer {
  color: var(--primary-black);
}
.est-result-label {
  font-size: 1.6rem;
  letter-spacing: 0.12em;
  opacity: 0.75;
  margin-bottom: 0.6rem;
}
.est-result-total {
  font-family: var(--font-eg-eb);
  font-size: 5.6rem;
  line-height: 1.1;
  letter-spacing: 0.02em;
}
.est-result-tax {
  font-size: 1.3rem;
  font-family: var(--font-jp-noto);
  opacity: 0.85;
}
.est-result-disclaimer {
  font-size: 1.4rem;
  line-height: 1.85;
  margin-top: 1.2rem;
  opacity: 0.85;
  text-align: center;
}

.est-receipt {
  background: #f6f6f6;
  border-radius: 1rem;
  padding: 1.4rem 1.6rem;
  margin-bottom: 1.6rem;
}
.est-receipt-line {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1.2rem;
  font-size: 1.6rem;
  padding: 0.8rem 0;
  border-bottom: 1px solid var(--tertiary-gray);
}
.est-receipt-line:last-child,
.est-receipt-line:not(:has(+ .est-receipt-line)) {
  border-bottom: none;
}
.est-receipt-line.negative .est-receipt-amt { color: #b91c1c; }
.est-receipt-label { color: var(--secondary-black); flex: 1; }
.est-receipt-amt {
  font-family: var(--font-eg-eb);
  font-size: 2.2rem;
  white-space: nowrap;
}
.est-receipt-line.unavailable .est-receipt-amt.is-unavailable {
  font-family: inherit;
  font-size: 1.2rem;
  font-weight: 500;
  white-space: normal;
  text-align: right;
  max-width: 58%;
  color: #b91c1c;
  line-height: 1.55;
}
.est-receipt-total {
  display: flex;
  justify-content: space-between;
  padding-top: 1.2rem;
  margin-top: 0.4rem;
  border-top: 2px solid var(--tertiary-gray);
}
.est-receipt-total-label {
  font-weight: 700;
  font-size: 1.6rem;
}
.est-receipt-total-amt {
  font-family: var(--font-eg-eb);
  font-weight: 700;
  font-size: 2.2rem;
}
.est-receipt-min-note {
  font-size: 1.3rem;
  color: #b91c1c;
  line-height: 1.75;
  margin: 0.8rem 0 0;
  text-align: right;
}
.est-warn {
  font-size: 1.3rem;
  color: #b45309;
  line-height: 1.8;
  margin-bottom: 0.6rem;
}
.est-note {
  font-size: 1.2rem;
  color: var(--primary-gray);
  line-height: 1.85;
  margin-bottom: 0.5rem;
}

.est-summary-box {
  /* background: #fafafa;
  border-radius: 1rem;
  padding: 1.4rem 1.6rem;
  margin-bottom: 1.6rem; */
  background: #fff;
  padding: 1.6rem 2rem;
  margin-bottom: 1.6rem;
}
.est-summary-row {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.est-summary-item {
  display: flex;
  align-items: flex-start;
  padding: 1rem 0;
  border-bottom: 1px solid var(--tertiary-gray);
}
.est-summary-item:first-child {
  padding-top: 0;
}
.est-summary-item:last-child {
  padding-bottom: 0;
  border-bottom: none;
}
.est-summary-body {
  flex: 1;
  min-width: 0;
}
.est-summary-inline-notes {
  margin-top: 0.6rem;
}
.est-summary-inline-warn,
.est-summary-inline-note {
  font-size: 1.2rem;
  line-height: 1.75;
  color: #b91c1c;
  margin: 0.35rem 0 0;
}
.est-summary-label {
  font-size: 1.6rem;
  font-weight: 400;
  line-height: 1.65;
  width: 15%;
  flex-shrink: 0;
  color: var(--secondary-black);
}
.est-summary-value {
  font-size: 1.6rem;
  font-weight: 400;
  line-height: 1.65;
}

/* Nav buttons */
.est-nav {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1.6rem;
  margin-top: 4.8rem;
  scroll-margin-bottom: 2.4rem;
  position: sticky;
  bottom: 0;
  z-index: 20;
  padding: 1.6rem 0 calc(1.6rem + env(safe-area-inset-bottom, 0px));
  background: #fff;
  border-top: 1px solid var(--tertiary-gray);
  box-shadow: 0 -0.4rem 1.2rem rgba(0, 0, 0, 0.06);
}
.est-nav-next-only {
  justify-content: center;
}
.est-btn-back,
.est-btn-next {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24rem;
  min-height: 4.4rem;
  height: 4.4rem;
  padding: 0 2rem;
  box-sizing: border-box;
  border-radius: 5rem;
  font-size: 1.5rem;
  font-weight: 600;
  font-family: var(--font-jp-noto);
  line-height: 1;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s, color 0.2s;
}
.est-btn-back {
  border: 1px solid var(--tertiary-gray);
  background: #fff;
  color: var(--secondary-black);
}
.est-btn-back:hover {
  border-color: var(--primary-black);
  color: var(--primary-black);
}
.est-btn-next {
  border: 1px solid var(--tertiary-gray);
  background: var(--tertiary-gray);
  color: var(--primary-gray);
  cursor: not-allowed;
}
.est-btn-next:disabled,
.est-btn-next[disabled] {
  border-color: var(--tertiary-gray);
  background: var(--tertiary-gray);
  color: var(--primary-gray);
  opacity: 1;
  cursor: not-allowed;
}
.est-btn-next.is-active,
.est-btn-next:not(:disabled) {
  background: var(--primary-green);
  border-color: var(--primary-green);
  color: #fff;
  cursor: pointer;
}
.est-btn-next.is-active:hover,
.est-btn-next:not(:disabled):hover {
  background: #2e842e;
  border-color: #2e842e;
}

.est-result-actions {
  display: flex;
  justify-content: center;
  gap: 1.2rem;
  margin-top: 2.4rem;
  position: sticky;
  bottom: 0;
  z-index: 20;
  padding: 1.2rem 0 calc(1.2rem + env(safe-area-inset-bottom, 0px));
  background: #fff;
  border-top: 1px solid var(--tertiary-gray);
  box-shadow: 0 -0.4rem 1.2rem rgba(0, 0, 0, 0.06);
}
/* Step4でフォームを開いている間は固定を解除し、フォームの送信ボタンに委ねる */
body.est-contact-open .est-result-actions {
  position: static;
  padding: 0;
  background: none;
  border-top: none;
  box-shadow: none;
}
.est-result-actions .est-btn-cta,
.est-result-actions .est-btn-reset {
  flex: 1;
  max-width: 27rem;
  margin: 0;
  padding: 1.3rem 1.6rem;
  text-align: center;
  border-radius: 6rem;
  font-size: 1.5rem;
  font-weight: 600;
  font-family: var(--font-jp-noto);
  line-height: 1.4;
  cursor: pointer;
  transition: background 0.2s, border-color 0.2s, color 0.2s;
}
.est-btn-cta {
  display: inline-block;
  background: #389d38;
  color: #fff;
  border: 1px solid #389d38;
  text-decoration: none;
}
.est-btn-cta:hover:not(:disabled) {
  background: #2e842e;
  border-color: #2e842e;
  color: #fff;
}
.est-btn-reset {
  background: #fff;
  color: var(--primary-black);
  border: 1px solid var(--primary-black);
}
.est-btn-reset:hover {
  background: #f7f7f7;
}
.est-btn-cta.is-active {
  opacity: 0.65;
  cursor: default;
}
.est-btn-cta:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Inline contact panel */
.est-contact-panel {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  transition: max-height 0.55s cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity 0.4s ease;
}
.est-contact-panel.is-open {
  max-height: 6000px;
  opacity: 1;
}
.est-contact-panel-inner {
  margin-top: 8rem;
}
.est-contact-panel-title {
  font-family: var(--font-jp-zenold);
  font-size: 2.4rem;
  line-height: 1.5;
  margin-bottom: 0.8rem;
}
.est-contact-panel-lead {
  font-size: 1.4rem;
  color: var(--primary-gray);
  line-height: 1.85;
  margin-bottom: 2rem;
}
.est-contact-summary {
  margin-bottom: 2.4rem;
  padding: 1.4rem 1.6rem;
  background: #f7f7f7;
  border: 1px solid var(--tertiary-gray);
  border-radius: 1rem;
}
.est-contact-summary-title {
  font-size: 1.5rem;
  font-weight: 500;
  color: var(--secondary-black);
  margin-bottom: 0.8rem;
  letter-spacing: 0.06em;
}
.est-contact-summary-body {
  font-family: var(--font-jp-noto);
  font-size: 1.5rem;
  font-weight: 400;
  line-height: 1.85;
  white-space: pre-wrap;
  margin: 0;
  color: var(--primary-black);
  background: transparent;
  border: none;
}
.est-contact-form .form-section {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-bottom: 3.2rem;
}
.est-contact-form input::placeholder,
.est-contact-form textarea::placeholder {
  color: #c8c8c8;
  opacity: 1;
}
.est-contact-form input::-webkit-input-placeholder,
.est-contact-form textarea::-webkit-input-placeholder {
  color: #c8c8c8;
}
.est-contact-form input::-moz-placeholder,
.est-contact-form textarea::-moz-placeholder {
  color: #c8c8c8;
  opacity: 1;
}
.est-contact-panel-inner .form-row:first-of-type {
  margin-top: 0;
}
.form-pills label:has(input:checked) {
    background: var(--primary-black);
    color: #fff;
}
.est-contact-methods {
  display: flex;
  flex-wrap: wrap;
  gap: 0.8rem;
}
.est-contact-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.8rem 1.4rem;
  border: 1px solid var(--tertiary-gray);
  border-radius: 5rem;
  font-size: 1.3rem;
  cursor: pointer;
  background: #fff;
}
.est-contact-pill input {
  accent-color: var(--primary-black);
}
.est-contact-methods.is-error {
  padding: 0.8rem;
  border: 1px solid #dc2626;
  border-radius: 0.4rem;
}
.est-contact-form .form-input,
.est-contact-form .est-contact-methods,
.est-contact-form .form-privacy {
  position: relative;
}
.est-contact-form .wpcf7-not-valid-tip {
  display: block;
  color: #d02c2c;
  font-size: 1.4rem;
  line-height: 1.5;
  margin: 0.8rem 0 0;
  position: static;
}
.est-contact-form .form-privacy > .wpcf7-not-valid-tip {
  text-align: center;
}
.est-contact-form .wpcf7-not-valid-tip[hidden] {
  display: none;
}
.est-contact-form .wpcf7-form-control.is-error,
.est-contact-form textarea.is-error {
  border-color: #dc2626 !important;
  background: #fff5f5;
}
.form-privacy {
  margin-bottom: 4.5rem;
}
.form-privacy-accept {
  position: relative;
}
.form-privacy-accept-wrap.is-error {
  outline: 1px solid #dc2626;
  border-radius: 0.3rem;
}
.form-privacy-accept span{
  color: var(--secondary-black);
  font-size: 1.6rem;
  letter-spacing: 0.03em;
  padding-left: 2.9rem;
}
.form-privacy-accept input[type="checkbox"] {
  display: none;
}
.form-privacy-accept span::before {
    content: "";
    width: 2rem;
    height: 2rem;
    background: #FFF;
    border-radius: .4rem;
    border: .1rem solid var(--primary-gray);
    cursor: pointer;
    position: absolute;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
}
.form-privacy-accept span::after {
    content: "";
    width: .5rem;
    height: 1rem;
    border-bottom: .15rem solid var(--primary-black);
    border-right: .15rem solid var(--primary-black);
    position: absolute;
    left: .7rem;
    top: 49%;
    opacity: 0;
    transform: translateY(-60%) rotate(45deg);
    transition: opacity 0.2s ease;
}

.form-privacy-accept input[type="checkbox"]:checked + span::after {
  opacity: 1;
}

.est-contact-error {
  margin: 1.6rem 0 0;
  color: #d02c2c;
  font-size: 1.6rem;
  line-height: 1.7;
  text-align: center;
}
.est-contact-error[hidden] {
  display: none;
}
.page-thanks-contact {
  text-align: center;
  font-size: 1.6rem;
  font-weight: 700;
}
.page-thanks-contact p {
  margin-bottom: 1.6rem;
}
.est-contact-form .submit-btn.is-submitting {
  opacity: 0.7;
  cursor: wait;
}

/* CF7ブリッジ（見た目のフォームは JS、送信だけ CF7） */
.est-cf7-bridge {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.est-cf7-bridge .wpcf7-response-output,
.est-cf7-bridge .screen-reader-response {
  display: none !important;
}

.est-contact-thanks {
  text-align: center;
  padding: 2rem 1rem 1rem;
}
.est-contact-thanks-title {
  font-family: var(--font-jp-zenold);
  font-size: 2.2rem;
  margin-bottom: 1rem;
}
.est-contact-thanks p {
  font-size: 1.5rem;
  line-height: 1.9;
  color: var(--secondary-black);
}
.est-contact-thanks-note {
  margin-top: 1.2rem;
  font-size: 1.2rem !important;
  color: var(--primary-gray) !important;
}

.est-consult-box {
  text-align: center;
  padding: 3.2rem 2rem;
  border: 1px dashed var(--secondary-gray);
  border-radius: 1rem;
  background: #fafafa;
}
.est-consult-box p {
  font-size: 1.5rem;
  color: var(--secondary-black);
  margin-bottom: 1.6rem;
  line-height: 1.9;
}

.est-consult-lead {
  font-size: 1.5rem;
  line-height: 1.9;
  color: var(--secondary-black);
  margin: -0.4rem 0 2rem;
  text-align: center;
}
.est-consult-hint {
  font-size: 1.3rem;
  line-height: 1.8;
  color: var(--primary-gray);
  text-align: center;
  margin: 0 0 2.4rem;
}
.est-consult-summary {
  margin-bottom: 2rem;
}
.est-consult-summary .est-summary-row {
  grid-template-columns: repeat(3, 1fr);
}
.est-consult-footer {
  display: flex;
  justify-content: center;
  margin-top: 2.4rem;
  padding-top: 0.4rem;
}
.est-consult-footer .est-btn-reset {
  flex: none;
  max-width: 27rem;
  width: 100%;
  margin: 0;
  padding: 1.3rem 1.6rem;
  text-align: center;
  border-radius: 6rem;
  font-size: 1.5rem;
  font-weight: 600;
}

@media screen and (max-width: 1000px) {
  .est-wrap {
    width: calc(100% - 4rem);
    margin-bottom: 6rem;
  }
  /* --- Step2: プランカードはPC同様のカード構成を維持 --- */
  .est-plan-categories { gap: 1.6rem; }
  .est-plan-category {
    padding: 1.6rem 1.2rem;
    border: none;
    background: #f7f7f7;
    border-radius: 1rem;
  }
  .est-plan-category-head {
    margin-bottom: 1rem;
  }
  .est-plan-category-title { font-size: 1.9rem; }
  .est-plan-category-desc { font-size: 1.35rem; line-height: 1.7; margin-top: 0.5rem; }
  .est-plan-grid { gap: 1.2rem; }
  .est-plan-grid.cols-multi {
    grid-template-columns: 1fr;
    gap: 1.2rem;
  }
  .est-plan-card {
    border: 1px solid var(--tertiary-gray);
    border-radius: 1rem;
    background: #fff;
    box-shadow: none;
    padding: 1.8rem 1.4rem;
  }
  .est-plan-card:hover,
  .est-plan-card:active {
    box-shadow: none;
  }
  .est-plan-card.selected {
    border: 2px solid #389d38;
    background: #fff;
    box-shadow: none;
  }
  .est-plan-sub { font-size: 1.2rem; margin-bottom: 0.2rem; }
  .est-plan-label { font-size: 1.8rem; }
  .est-plan-title-row { gap: 0.6rem 0.8rem; }
  .est-plan-menu { margin-top: 0.9rem; padding-top: 0.9rem; }
  .est-plan-menu-list { gap: 0.35rem; }
  .est-plan-menu-list li,
  .est-plan-menu-text,
  .est-plan-extra { font-size: 1.35rem; line-height: 1.65; }
  .est-plan-menu-wrap .est-plan-menu-list li,
  .est-plan-menu-wrap .est-plan-menu-text {
    font-size: 1.15rem;
    line-height: 1.5;
  }
  .est-plan-price { font-size: 2.8rem; }
  .est-plan-price-row {
    gap: 0.4rem 1rem;
  }
  .est-plan-note { font-size: 1.25rem; margin-top: 0.8rem; }
  .est-plan-card-foot {
    padding-top: 1.6rem;
  }
  .est-plan-menu-hint {
    width: auto;
    min-height: 0;
    height: auto;
    padding: 0.2rem 0;
    font-size: 1.15rem;
  }
  .est-plan-card-action {
    width: 16rem;
    min-height: 4.4rem;
    height: 4.4rem;
    padding: 0 1.2rem;
  }
  .est-plan-card.selected .est-plan-card-action {
    background: #389d38;
  }
  .est-check { top: 1.2rem; right: 1.2rem; }

  .est-plan-card--seasonal .est-plan-seasonal-row,
  .est-plan-card--custom .est-plan-split-row,
  .est-plan-card--consult .est-plan-consult-row,
  .est-plan-card--other .est-plan-consult-row {
    flex-direction: column;
    align-items: stretch;
    gap: 1.6rem;
  }
  .est-plan-card--seasonal .est-plan-card-foot,
  .est-plan-card--consult .est-plan-card-foot,
  .est-plan-card--other .est-plan-card-foot {
    justify-content: center;
    width: 100%;
  }
  .est-plan-card--custom .est-plan-split-actions,
  .est-plan-card--oneway .est-plan-actions-row {
    flex-direction: row;
    justify-content: center;
    align-items: stretch;
    gap: 1rem;
    width: 100%;
  }
  .est-plan-card--custom .est-plan-menu-wrap,
  .est-plan-card--oneway .est-plan-actions-row .est-plan-menu-wrap {
    flex: 1;
    min-width: 0;
    width: auto;
    margin-top: 0;
    align-self: stretch;
  }
  .est-plan-card--custom .est-plan-card-foot,
  .est-plan-card--oneway .est-plan-actions-row .est-plan-card-foot {
    flex: 1;
    min-width: 0;
    width: auto;
    margin-top: 0;
    padding-top: 0;
    justify-content: stretch;
  }
  .est-plan-card--custom .est-plan-menu-hint,
  .est-plan-card--oneway .est-plan-actions-row .est-plan-menu-hint {
    width: auto;
    max-width: none;
  }
  .est-plan-card--custom .est-plan-card-action,
  .est-plan-card--oneway .est-plan-actions-row .est-plan-card-action {
    width: 100%;
    max-width: none;
  }
  .est-plan-card--consult .est-plan-title-row--lined .est-plan-price,
  .est-plan-card--other .est-plan-title-row--lined .est-plan-price {
    margin-left: 0;
  }

  .est-location-grid {
    grid-template-columns: 1fr 1fr;
    gap: 0.8rem;
  }
  .est-location-card {
    padding: 1.4rem 1rem;
    gap: 0.8rem;
  }
  .est-location-label { font-size: 1.4rem; }
  .est-location-desc { font-size: 1.1rem; }
  .est-step-title {
    font-size: 2rem;
    margin-bottom: 2.4rem;
  }
  .est-field-label { font-size: 1.5rem; }
  .est-field-label-spaced { margin-top: 3.2rem; }
  .est-progress {
    margin-top: 4rem;
  }
  .est-progress-label { font-size: 2.4rem; }
  .est-progress-step {
    width: 3.2rem;
    height: 3.2rem;
    font-size: 1.6rem;
  }
  .est-progress-step:not(:last-child) { margin-right: 2.2rem; }
  .est-progress-step:not(:last-child)::after {
    left: calc(100% + 0.5rem);
    width: 1.2rem;
  }
  .est-step-sub { font-size: 1.4rem; }
  .est-guests-row { gap: 1.6rem; }
  .est-guests-btn {
    width: 4rem;
    height: 4rem;
    font-size: 1.8rem;
  }

  .est-guests-field {
    width: 16rem;
  }

  .est-guests-input {
    font-size: 2.8rem;
    width: 10rem;
    height: 4.8rem;
  }
  .est-presets {
    gap: 0.8rem;
  }
  .est-preset {
    padding: 0.9rem 0.8rem;
    font-size: 1.2rem;
    background: var(--tertiary-gray);
    border-color: var(--tertiary-gray);
  }
  .est-preset.active {
    background: var(--primary-black);
    border-color: var(--primary-black);
    color: #fff;
  }
  .est-result-total { font-size: 4.4rem; }
  .est-nav {
    gap: 1rem;
    flex-direction: row;
    justify-content: center;
  }
  .est-btn-next,
  .est-btn-back {
    width: calc((100% - 1rem) / 2);
    max-width: 16rem;
    min-height: 50px;
    height: 50px;
    text-align: center;
  }
  .est-nav-next-only .est-btn-next {
    width: 100%;
    max-width: 24rem;
  }
  .est-result-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .est-result-actions .est-btn-cta,
  .est-result-actions .est-btn-reset {
    max-width: none;
  }

  /* --- タップ領域はフォント縮小と切り離してpxで確保（親指で押しやすく） --- */
  .est-btn-next,
  .est-btn-back,
  .est-result-actions .est-btn-cta,
  .est-result-actions .est-btn-reset,
  .est-consult-footer .est-btn-reset,
  .est-contact-form .submit-btn {
    min-height: 50px;
  }
  .est-btn-next,
  .est-btn-back,
  .est-result-actions .est-btn-cta,
  .est-result-actions .est-btn-reset,
  .est-consult-footer .est-btn-reset {
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .est-guests-btn {
    width: 48px;
    height: 48px;
    font-size: 2.2rem;
  }
  .est-plan-menu-hint {
    width: auto;
    min-height: 0;
    height: auto;
    padding: 0.2rem 0;
  }
  .est-plan-card-action {
    width: 20rem;
    min-height: 50px;
    height: 50px;
    padding: 0 1.2rem;
  }
  .est-plan-card--custom .est-plan-menu-hint,
  .est-plan-card--oneway .est-plan-actions-row .est-plan-menu-hint {
    width: auto;
  }
  .est-plan-card--custom .est-plan-card-action,
  .est-plan-card--oneway .est-plan-actions-row .est-plan-card-action {
    width: 100%;
  }
  .est-opt-card {
    min-height: 54px;
    padding: 1.4rem 1.2rem;
    gap: 1rem;
    align-items: center;
  }
  .est-opt-icon {
    width: 1.4rem;
    height: 1.4rem;
    font-size: 1.4rem;
  }
  .est-opt-icon.is-selected {
    font-size: 1rem;
  }
  .est-kids-count-label {
    font-size: 1.2rem;
  }
  .est-kids-btn {
    width: 3rem;
    height: 3rem;
    font-size: 1.6rem;
  }
  .est-kids-input {
    width: 5.6rem;
    height: 4rem;
    font-size: 2.2rem;
  }
  .est-opt-body {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "label label"
      "desc price";
    align-items: start;
    gap: 0.4rem 0.8rem;
  }
  .est-opt-text {
    display: contents;
  }
  .est-opt-label {
    grid-area: label;
    font-size: 1.8rem;
  }
  .est-opt-desc {
    grid-area: desc;
    font-size: 1.3rem;
    margin-top: 0;
    min-width: 0;
  }
  .est-opt-price {
    grid-area: price;
    font-size: 2.2rem;
    align-self: center;
  }
  .est-opt-category-label {
    font-size: 1.4rem;
    margin-top: 2rem;
    margin-bottom: 1rem;
  }
  .est-location-card { min-height: 56px; }
  .est-contact-pill { min-height: 42px; }

  .est-context-head {
    font-size: 1.6rem;
  }
  .est-context-item {
    font-size: 1.3rem;

  }

  .est-summary-label {
    width: 40%;
  }
  .est-receipt {
    padding: 3.2rem;
  }
  .est-receipt-line {
    display: grid;
    gap: 1.2rem;
  }

  .est-receipt-total {
    padding-top: 2.4rem;
  }
  /* iOSでの入力フォーカス時オートズームを防ぐ（16px以上）＋押しやすい高さ */
  .est-contact-form input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]),
  .est-contact-form select,
  .est-contact-form textarea {
    font-size: 16px;
    min-height: 46px;
  }
  .est-contact-form textarea {
    min-height: 96px;
  }

  /* --- 下部ナビ／結果アクション（sticky）：スマホは画面端まで背景を広げる --- */
  .est-nav,
  .est-result-actions {
    display: flex;
    flex-direction: row;
    margin-top: 2rem;
    margin-left: -1.2rem;
    margin-right: -1.2rem;
    padding-left: 1.2rem;
    padding-right: 1.2rem;
    box-shadow: 0 -0.4rem 1.2rem rgba(0, 0, 0, 0.07);
  }
  body.est-contact-open .est-result-actions {
    margin-left: 0;
    margin-right: 0;
  }
}

.page-header-estimate {
    background: url(../images/pagettl-bg-estimate.webp) center center no-repeat;
    background-size: cover;
}

@media screen and (max-width: 1000px) {
    .page-header-estimate {
        background: url(../images/pagettl-bg-estimate-sp.webp) center center no-repeat;
        background-size: cover;
    }
}

.page-estimate input[type="number"] {
  width: 15em;
}

.est-contact-panel-inner {
  margin-top: 5rem;
}
}
