/* ============================================
   フォームページ共通（後援会・お問い合わせ）
   ============================================ */

.form-page { }

.form-intro {
  background: var(--color-primary-light);
  border-radius: var(--radius-md);
  padding: var(--sp-4);
  margin-bottom: var(--sp-5);
  text-align: center;
  font-size: var(--font-size-md);
  line-height: 1.9;
}
.form-intro p + p { margin-top: var(--sp-2); }
.form-intro__note {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin-top: var(--sp-2);
}

/* ── フォーム本体 ── */
.form-body {
  max-width: 680px;
  margin: 0 auto;
}

.form-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: var(--sp-4);
}

.form-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--font-size-md);
  font-weight: 500;
  color: var(--color-text);
}
.badge-required {
  font-size: 11px;
  font-weight: 700;
  background: var(--color-required);
  color: var(--color-white);
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  flex-shrink: 0;
}

.form-control {
  width: 100%;
  padding: 12px var(--sp-2);
  font-size: var(--font-size-md);
  font-family: var(--font-family);
  color: var(--color-text);
  background: var(--color-white);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-md);
  transition: border-color var(--transition), box-shadow var(--transition);
  appearance: none;
  -webkit-appearance: none;
}
.form-control::placeholder { color: var(--color-text-light); }
.form-control:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(58,158,66,0.15);
}
.form-control.error {
  border-color: var(--color-required);
  box-shadow: 0 0 0 3px rgba(211,47,47,0.12);
}

textarea.form-control {
  min-height: 140px;
  resize: vertical;
}

/* セレクト */
.form-select-wrap {
  position: relative;
}
.form-select-wrap::after {
  content: "▼";
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 10px;
  color: var(--color-text-muted);
  pointer-events: none;
}
select.form-control { padding-right: 36px; cursor: pointer; }

/* エラーメッセージ */
.form-error {
  font-size: var(--font-size-sm);
  color: var(--color-required);
  display: none;
}
.form-error.visible { display: block; }

/* ── 家族欄 ── */
.family-section {
  border: 2px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--sp-3);
  margin-bottom: var(--sp-4);
}
.family-section__title {
  font-size: var(--font-size-md);
  font-weight: 500;
  color: var(--color-text);
  margin-bottom: var(--sp-2);
}
.family-row {
  display: flex;
  gap: var(--sp-2);
  margin-bottom: var(--sp-2);
  align-items: flex-start;
}
.family-row:last-child { margin-bottom: 0; }
.family-row__kankei {
  flex: 0 0 120px;
}
.family-row__name {
  flex: 1;
}

/* ── 確認ページ ── */
.confirm-table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: var(--sp-5);
}
.confirm-table th,
.confirm-table td {
  padding: 12px var(--sp-2);
  border-bottom: 1px solid var(--color-border);
  font-size: var(--font-size-md);
  text-align: left;
  vertical-align: top;
  line-height: 1.6;
}
.confirm-table th {
  width: 140px;
  font-weight: 500;
  color: var(--color-text-muted);
  white-space: nowrap;
  background: var(--color-bg);
}
.confirm-table td { background: var(--color-white); }

.confirm-actions {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  align-items: center;
  margin-top: var(--sp-4);
}

.form-note {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  margin-top: var(--sp-2);
  text-align: center;
}
.form-note--mt-3 {
  margin-top: var(--sp-3);
}

.complete-note {
  margin-top: var(--sp-3);
}
.sns-btn-group--mt-3 {
  margin-top: var(--sp-3);
}

/* ── フォームアクション ── */
.form-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp-2);
  margin-top: var(--sp-5);
}

/* ── スピナー ── */
.spinner {
  display: none;
  width: 20px;
  height: 20px;
  border: 2px solid rgba(255,255,255,0.3);
  border-top-color: var(--color-white);
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
}
.btn--loading .spinner { display: inline-block; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ── PC ── */
@media (min-width: 768px) {
  .confirm-actions {
    flex-direction: row;
    justify-content: center;
  }
  .form-actions {
    flex-direction: row;
    justify-content: center;
  }
  .family-row__kankei { flex: 0 0 160px; }
}
