/* サイト固有の上書きはここに書く。theme.css は触らない。 */

/* ---------- 新規入会ウィザード(templates/join.html.twig / js/join.js) ---------- */
.btn-join { background: var(--gold); border-color: var(--gold); color: var(--ink); border-bottom-color: var(--blue-dk); }
.btn-join:hover { background: var(--cream); }

.join-progress { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; counter-reset: s; }
.join-progress li { counter-increment: s; font-size: 0.8125rem; font-weight: 700; padding: 3px 10px; background: var(--blue-soft); border: 1px solid var(--blue-line); color: var(--blue-dk); }
.join-progress li::before { content: counter(s) ". "; }
.join-progress li.is-done { background: var(--blue-pale); }
.join-progress li.is-current { background: var(--blue-dk); border-color: var(--blue-dk); color: var(--white); }

#wizard-container [data-step] { display: flex; flex-direction: column; gap: calc(16px * var(--sp)); }
.join-form { display: flex; flex-direction: column; gap: calc(16px * var(--sp)); }
.join-grid { display: flex; flex-direction: column; gap: calc(14px * var(--sp)); }
.join-list { margin: 0; padding-left: 1.4em; line-height: 1.8; }
.join-hint { margin: 0; font-size: 0.9375rem; line-height: 1.7; }
.join-age { display: block; min-height: 1.2em; color: var(--blue-dk); font-weight: 700; }
.join-error { margin: 0; padding: 8px 12px; background: #FFF0F0; border: 1px solid #C33; color: #900; font-weight: 700; }
.join-error[hidden], [data-show-if][hidden] { display: none; }

/* 入力行: 広いときは「左にラベル / 右に入力欄」、狭いと入力欄がラベルの下に折り返す。 */
.f { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; border: 0; margin: 0; padding: 0; min-width: 0; }
.f__lbl { flex: 0 0 13em; max-width: 100%; box-sizing: border-box; padding: 0; font-size: 0.9375rem; font-weight: 700; color: var(--navy); }
/* 必須バッジはラベルの後ろに CSS で付ける(マークアップの .req は使わない) */
.f .req { display: none; }
.f:has(:required) > .f__lbl::after {
  content: "必須"; margin-left: 8px; padding: 1px 6px; vertical-align: 1px;
  font-size: 0.6875rem; font-weight: 700; color: var(--white); background: #B33;
}
.f input[type=text], .f input[type=email], .f input[type=tel], .f input[type=date], .f input[type=number], .f select {
  flex: 1 1 14em; min-width: 0; max-width: 36em; box-sizing: border-box; min-height: calc(48px * var(--ctl)); padding: 6px 10px;
  font: inherit; font-size: 1rem; border: 2px solid var(--blue-line); background: var(--white); color: var(--ink);
}
.f input[type=date], .f input[type=tel], .f input[name=zip], .f input[type=number], .f select { max-width: 16em; }
.f input:focus, .f select:focus { outline: 3px solid var(--blue-lt); border-color: var(--blue); }
.f .join-age { flex: 1 1 100%; margin-left: calc(13em + 16px); }
.f--radio label { display: inline-flex; align-items: center; gap: 6px; min-height: calc(44px * var(--ctl)); margin-right: 20px; font-size: 1rem; }
.f--radio .f__lbl { float: none; }
@media (max-width: 640px) {
  .f__lbl { flex-basis: 100%; }
  .f .join-age { margin-left: 0; }
  .f input[type=text], .f input[type=email], .f input[type=tel], .f input[type=date], .f input[type=number], .f select { flex-basis: 100%; max-width: none; }
}

.join-check { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; background: var(--blue-soft); border: 1px solid var(--blue-line); line-height: 1.6; cursor: pointer; }
.join-check input { width: 22px; height: 22px; flex: none; margin-top: 2px; }

.join-nav { display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; margin-top: calc(8px * var(--sp)); }
.join-nav .btn { cursor: pointer; font-family: inherit; min-width: 140px; }
.join-nav .btn--strong { margin-left: auto; }
.join-nav .btn:disabled { opacity: 0.6; cursor: wait; }

.join-summary__h { margin: calc(12px * var(--sp)) 0 4px; font-size: 1.0625rem; border-left: 6px solid var(--gold); padding-left: 8px; }
.join-summary dl { display: grid; grid-template-columns: minmax(8em, 14em) 1fr; margin: 0; border-top: 1px solid var(--blue-line); }
.join-summary dt, .join-summary dd { margin: 0; padding: 6px 8px; border-bottom: 1px solid var(--blue-line); }
.join-summary dt { background: var(--blue-soft); font-weight: 700; font-size: 0.9375rem; }
.join-summary dd { overflow-wrap: anywhere; }
@media (max-width: 560px) { .join-summary dl { grid-template-columns: 1fr; } .join-summary dt { border-bottom: 0; padding-bottom: 0; } }
[data-show-if] { display: flex; flex-direction: column; gap: calc(14px * var(--sp)); }
