@charset "UTF-8";
/* src/css/page/contact_service_input.scss */
main {
  margin-bottom: clamp(3.125rem, -2.838740458rem + 25.4452926209vw, 9.375rem);
}

/* ====== Layout containers ====== */
.container-outer {
  width: 100%;
  /* ★ 100vw依存をやめて中央ズレ防止 */
  max-width: 1920px;
  margin-inline: auto;
  display: grid;
  justify-items: center;
}

.container-inner {
  /* ★ 常に中央寄せ＆器からはみ出さない */
  width: 100%;
  max-width: 1420px;
  margin: 0 auto;
  /* ★ 中身を中央に揃える */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (width > 768px) {
  .container-inner {
    padding: 2rem;
  }
}

/* ====== Breadcrumb ====== */
.breadcrumb {
  position: static;
  margin: 8px 0 0;
  font-family: "Noto Sans JP", sans-serif;
  font-style: normal;
  font-weight: 400;
  font-size: clamp(0.75rem, 0.5114503817rem + 1.0178117048vw, 1rem);
  line-height: 1.9;
  letter-spacing: 0px;
  color: #333333;
  text-align: left;
  opacity: 1;
}
@media (width > 768px) {
  .breadcrumb {
    margin: 0;
  }
}

/* ====== Page header & titles ====== */
.page-header {
  margin: 40px auto 24px;
  text-align: center;
}
@media (width > 768px) {
  .page-header {
    margin: 4rem auto 2rem;
  }
}

.page-title-en {
  font: normal normal bold clamp(1rem, 0.5229007634rem + 2.0356234097vw, 1.5rem)/1 "Roboto", sans-serif;
  letter-spacing: 1.6px;
  color: #333333;
  margin-bottom: 8px;
}

.page-title-underline {
  width: 80px;
  height: 4px;
  background: linear-gradient(90deg, #ff0000 0%, #ff8341 100%);
  margin: 0 auto 12px;
}
@media (width > 768px) {
  .page-title-underline {
    width: 100px;
    height: 5px;
    margin-bottom: 16px;
  }
}

.page-title-ja {
  font: normal normal bold clamp(2.875rem, 2.0400763359rem + 3.5623409669vw, 3.75rem)/1.45 "Noto Sans JP", sans-serif;
  margin-bottom: 12px;
}

/* ====== Contact title ====== */
.contact-form-title {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: bold;
  font-size: clamp(1.75rem, 1.034351145rem + 3.0534351145vw, 2.5rem);
  line-height: 1.4;
  color: #333333;
  letter-spacing: 0;
  width: auto;
  height: auto;
  margin: 40px auto 40px;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}
@media (width > 768px) {
  .contact-form-title {
    width: 100%;
    height: 58px;
    margin: 40px auto 20px;
  }
}

/* ====== Card wrapper ====== */
.contact-form-outer {
  /* 常に中央＆左右ガターを確保（SP:16px, PC:32px） */
  width: min(1000px, 100%);
  margin: 40px auto;
  background: #fff;
  border: 1px solid hsl(0, 0%, 44%);
  box-sizing: border-box;
  padding: 24px 16px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 8px;
}
@media (width > 768px) {
  .contact-form-outer {
    width: min(1000px, 100% - 64px);
    padding: 48px 80px;
    margin: 60px auto;
  }
}

/* ====== Inner ====== */
.contact-form-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

/* ====== Rows that follow the card width ====== */
.form-group,
.custom-checkbox-label,
.privacy-checkbox-label {
  width: min(1000px, 100% - 32px);
  margin-inline: auto;
}
@media (width > 768px) {
  .form-group,
  .custom-checkbox-label,
  .privacy-checkbox-label {
    width: min(1000px, 100% - 64px);
  }
}

/* ====== Labels (align to the same rail as inputs) ====== */
.form-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  font-size: clamp(1rem, 0.7614503817rem + 1.0178117048vw, 1.25rem);
  line-height: 1.75;
  color: #333333;
  margin-bottom: 8px;
  /* ★ ラベル行ブロックも中央幅に追従 */
  width: 100%;
  max-width: 1000px;
  margin-inline: auto;
}

/* ====== Required badge ====== */
.required-badge {
  display: inline-block;
  min-width: 48px;
  height: 26px;
  line-height: 26px;
  padding-inline: 8px;
  background: #0070e0;
  color: #fff;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: bold;
  font-size: clamp(0.75rem, 0.5114503817rem + 1.0178117048vw, 1rem);
  letter-spacing: 0;
  text-align: center;
  border-radius: 15px;
  margin-right: 8px;
  vertical-align: middle;
  user-select: none;
}
@media (width > 768px) {
  .required-badge {
    width: 59px;
    height: 29px;
    line-height: 29px;
  }
}

/* ====== Error badge (必須) ====== */
.form-group:has(> .form-input.is-error) .form-label .required-badge {
  background: #DB3333;
  color: #fff;
}

.form-group:has(> .radio-group.is-error) .form-label .required-badge {
  background: #DB3333;
  color: #fff;
}

.form-group:has(> .phone-inputs.is-error) .form-label .required-badge {
  background: #DB3333;
  color: #fff;
}

/* ====== Inputs ====== */
.form-input {
  width: 100%;
  max-width: 850px;
  background: #fff;
  border: 1px solid #707070;
  border-radius: 10px;
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(1rem, 0.7614503817rem + 1.0178117048vw, 1.25rem);
  color: #333333;
  padding: 10px 15px;
  box-sizing: border-box;
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.form-input:focus {
  border-color: #0d8bde;
  box-shadow: 0 0 0 3px color-mix(in srgb, #0d8bde 20%, transparent);
}

.form-input[type=text] {
  height: 45px;
}

textarea.form-input {
  min-height: 120px;
  resize: none;
}
@media (width > 768px) {
  textarea.form-input {
    min-height: 91px;
  }
}

/* ====== Placeholder ====== */
.form-input::placeholder {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 400;
  font-size: clamp(0.875rem, 0.7557251908rem + 0.5089058524vw, 1rem);
  line-height: 1.6;
  color: #666666;
  letter-spacing: 0;
  opacity: 1;
  text-align: left;
}

.radio-group {
  font-size: 18px;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

/* ====== TELにも共通スタイルを適用 ====== */
.contact-form-outer .form-input--phone {
  /* .form-input[type="text"] と同等の外観 */
  background: #fff;
  border: 1px solid #707070;
  border-radius: 10px;
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(1rem, 0.7614503817rem + 1.0178117048vw, 1.25rem);
  color: #333333;
  padding: 10px 15px;
  box-sizing: border-box;
  height: 45px;
  outline: none;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.contact-form-outer .form-input--phone:focus {
  border-color: #0d8bde;
  box-shadow: 0 0 0 3px color-mix(in srgb, #0d8bde 20%, transparent);
}

/* ====== 電話番号3分割の横並び＆サイズ ====== */
.phone-inputs {
  display: flex;
  align-items: center;
  gap: 8px;
  /* 入力とハイフンの間隔 */
  max-width: 850px;
  /* ほかの入力と幅を合わせる */
  /* ほかの入力と同じ下余白 */
}

.form-input--phone {
  width: 7ch;
  /* 3〜4桁を想定 */
  max-width: none;
  margin-bottom: 0;
  /* 横並びなので下余白は消す */
}

/* ハイフンの見た目 */
.hyphen {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 12px;
  font-weight: 700;
  color: #666;
}

/* ====== Custom checkbox ====== */
.custom-checkbox {
  display: none;
}

.custom-checkbox-mark {
  width: 20px;
  height: 20px;
  background: #fff;
  border: 1px solid #666666;
  border-radius: 5px;
  display: inline-block;
  position: relative;
  margin-right: 10px;
  flex-shrink: 0;
  box-sizing: border-box;
}

.custom-checkbox:checked + .custom-checkbox-mark::after {
  content: "";
  position: absolute;
  left: 4px;
  top: 1px;
  width: 9px;
  height: 14px;
  border: solid #0070e0;
  border-width: 0 3px 3px 0;
  transform: rotate(45deg);
}

/* ====== Checkbox label ====== */
.custom-checkbox-label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: bold;
  font-size: clamp(1rem, 0.7614503817rem + 1.0178117048vw, 1.25rem);
  line-height: 1.75;
  color: #006CB4;
  letter-spacing: 0;
  text-align: left;
  width: 100%;
  margin-bottom: 20px;
  /* ★ ラベル行も中央幅に追従 */
  max-width: 1000px;
  margin-inline: auto;
}
@media (width > 768px) {
  .custom-checkbox-label {
    width: 840px;
  }
}

.form-group {
  /* ★ 各ブロックも中央幅に追従 */
  width: 100%;
  max-width: 1000px;
  margin-inline: auto;
  margin-bottom: 24px;
}

/* ★★★ 見積り注意ブロック（チェック行）を入力欄と左端揃えにする ★★★ */
.form-group.estimate-group {
  /* 入力欄の上限 850px に合わせる */
  max-width: 850px;
  margin-left: 0;
  margin-right: auto;
  align-self: flex-start;
  /* フォーム枠内で確実に左寄せ */
}

.form-group.estimate-group .custom-checkbox-label {
  max-width: 850px;
  margin-left: 0;
  margin-right: auto;
  justify-content: flex-start;
  padding-left: 0;
}

.form-group.estimate-group .custom-checkbox-mark {
  margin-left: 0;
}

/* 同意テキスト（チェック行） */
.privacy-checkbox-label {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  font-size: clamp(0.875rem, 0.7557251908rem + 0.5089058524vw, 1rem);
  line-height: 2.2;
  color: #333333;
  letter-spacing: 0;
  text-align: left;
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 16px;
  /* ★ チェック行も中央寄せブロックに */
  width: 100%;
  max-width: 1000px;
  margin-inline: auto;
}

/* 詳細見出し */
.privacy-detail-title {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  font-size: clamp(0.875rem, 0.7557251908rem + 0.5089058524vw, 1rem);
  line-height: 2.2;
  color: #333333;
  letter-spacing: 0;
  text-align: left;
  margin-bottom: 9px;
}

/* 詳細本文 */
.privacy-detail-text {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 500;
  font-size: clamp(0.875rem, 0.7557251908rem + 0.5089058524vw, 1rem);
  line-height: 1.6;
  color: #333333;
  letter-spacing: 0;
  text-align: left;
  width: 100%;
  margin: 0;
}

/* ====== Actions / buttons wrapper ====== */
.form-submit-wrapper,
.footer-nav__btn-area {
  width: 100%;
  display: flex;
  justify-content: center;
  /* ★ 常に中央 */
  margin: 24px 0 48px;
}
@media (width > 768px) {
  .form-submit-wrapper,
  .footer-nav__btn-area {
    margin: 32px 0 64px;
  }
}

/* ====== Helpers (optional hover/focus, errors) ====== */
.form-input.is-error,
textarea.form-input.is-error {
  border-color: #e21d1d;
  box-shadow: 0 0 0 3px color-mix(in srgb, #e21d1d 18%, transparent);
}

.phone-inputs.is-error .form-input--phone {
  border-color: #e21d1d;
  box-shadow: 0 0 0 3px color-mix(in srgb, #e21d1d 18%, transparent);
}

.helper-text {
  width: 100%;
  max-width: 850px;
  color: #666;
  font-size: clamp(0.75rem, 0.6307251908rem + 0.5089058524vw, 0.875rem);
  line-height: 1.6;
  margin-top: -16px;
  margin-bottom: 16px;
}

.form-error-message {
  display: block;
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 400;
  font-size: clamp(1rem, 0.7614503817rem + 1.0178117048vw, 1.25rem);
  line-height: 1.75;
  color: #DB3333;
  text-align: left;
  margin-left: 8px;
  opacity: 1;
}

.form-input.error-placeholder::placeholder {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 400;
  font-size: clamp(1rem, 0.7614503817rem + 1.0178117048vw, 1.25rem);
  line-height: 1.75;
  color: #DB3333;
  opacity: 1;
  text-align: left;
}

.required-badge.is-error {
  background: #DB3333;
  color: #fff;
}