@charset "utf-8";

@media ( max-width: 767px ) {}/* スマホ（〜767px） */
@media ( min-width: 768px ) and (max-width: 1024px) {}/* タブレット（768px〜1024px） */
@media ( min-width: 1025px ) {}/* PC（1025px〜） */

/* サイト共通の汎用フォーム部品。.btn / .btn_color_primary / .btn_type_arrow は
   components.css 側に既にあるためここでは定義しない。 */

/*＝＝＝＝＝＝＝＝＝フォーム全体・セクション枠＝＝＝＝＝＝＝＝＝*/
.form_error_summary { padding: 16px 20px; margin-bottom: 24px; border-radius: 8px; border: 1.5px solid #CB4524; background: #FFF5F3; color: #CB4524; font-size: 14px; font-weight: bold; }
.form_sections { background: #FFF; border-radius: 16px; overflow: hidden; }
.form_sec { margin-bottom: 0; padding: 20px; }
.section_header { background: transparent; }
.section_title { font-size: 18px; font-weight: bold; letter-spacing: 0.05em; }
.form_sec_body { padding-top: 12px; }
.form_sec_fields > * + * { margin-top: 1.5rem; }
@media ( min-width: 768px ) {
    .form_sec { padding: 50px 60px 0; }
    .form_sec:last-child { padding-bottom: 50px; }
    .section_title { font-size: 20px; }
}

/*＝＝＝＝＝＝＝＝＝グリッド・フィールド＝＝＝＝＝＝＝＝＝*/
.personal_info_grid { display: grid; grid-template-columns: 1fr; align-items: start; gap: 8px; margin-bottom: 0; }
.form_field > .personal_info_grid { gap: 24px; }
.form_field { display: flex; flex-direction: column; margin-bottom: 0; gap: 0; }
.field_label { font-weight: bold; }
.required_badge { display: inline-flex; align-items: center; justify-content: center; padding: 2px 8px; border-radius: 4px; background: #F75228; color: #FFF; font-size: 12px; font-weight: bold; line-height: 1.6; letter-spacing: 0.05em; height: auto; white-space: nowrap; }
.form_sec_fields > .form_field,
.form_sec_fields > .personal_info_grid { border-top: 1px solid #B2B2B2; margin-top: 0 !important; }
.form_sec_fields > .form_field:last-child,
.form_sec_fields > .personal_info_grid:last-child { border-bottom: 1px solid #B2B2B2; }
.form_sec_fields > .form_footer { margin-top: 0 !important; }
.form_footer { display: flex; flex-direction: column; }
.field_label_row { display: flex; align-items: center; justify-content: space-between; gap: 8px; background: #F4F4F4; padding: 12px; }
.form_field > *:not(.field_label_row) { padding: 12px; }
@media ( min-width: 768px ) {
    .personal_info_grid { grid-template-columns: 1fr 1fr; }
    .personal_info_grid .form_field + .form_field { border-top: none; border-left: 1px solid #EDE7DD; }
    .form_field { display: grid; grid-template-columns: 240px 1fr; align-items: stretch; }
    .field_label_row { padding: 20px 24px; min-width: 240px; }
    .form_field > *:not(.field_label_row) { grid-column: 2; padding: 20px 24px; align-self: center; }
    .form_field > .input_with_unit .input_full { max-width: 180px; }
}

/*＝＝＝＝＝＝＝＝＝ヒント文・エラー文＝＝＝＝＝＝＝＝＝*/
.form_note_text { margin: 0; font-size: 14px; color: #F75228; font-weight: bold; }
.error_text { margin: 0; font-size: 12px; line-height: 1.5; color: #F75228; font-weight: bold; }
.address_group > .error_text { margin-top: -4px; }

/*＝＝＝＝＝＝＝＝＝入力パーツ共通＝＝＝＝＝＝＝＝＝*/
.input_full,
.form_control,
.user_textarea { width: 100%; height: auto; padding: 8px 12px; border: 1px solid #B2B2B2; border-radius: 8px; font-family: inherit; transition: border-color .15s; appearance: none; }
.input_full:focus,
.form_control:focus,
.user_textarea:focus { outline: none; border-color: #CB4524; background: #FFF; }
.input_full::placeholder,
.user_textarea::placeholder { color: #B2B2B2; }
.input_full.is_error,
.form_control.is_error { border-color: #F75228; }
.user_textarea { min-height: 120px; resize: vertical; line-height: 1.8; }

.input_with_unit { display: flex; align-items: center; gap: 8px; }
.input_with_unit .input_full { flex: 1; }
.input_unit { white-space: nowrap; }
.input_with_unit:has(> .error_text) { display: grid; grid-template-columns: auto 1fr; align-items: center; column-gap: 8px; row-gap: 4px; }
.input_with_unit > .error_text { grid-column: 2; }

.postal_input_group { display: flex; flex-direction: column; gap: 6px; }

.address_group { display: flex; flex-direction: column; gap: 8px; }
.address_input_group { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.prefecture_label { display: flex; align-items: center; justify-content: center; white-space: nowrap; height: 47px; width: auto; }
.address_input_group .input_full { flex: 1; min-width: 80px; }

.guide_button { display: inline-flex; align-items: center; justify-content: center; text-align: center; height: 47px; padding: 0 10px; border: none; border-radius: 6px; background: #2E8832; color: #FFF; font-size: 12px; font-weight: bold; line-height: 1.3; cursor: pointer; flex-shrink: 0; transition: opacity .2s; }
.guide_button:hover { opacity: 0.85; }

/*＝＝＝＝＝＝＝＝＝チェックボックス＝＝＝＝＝＝＝＝＝*/
.checkbox_item { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.checkbox_input { width: 18px; height: 18px; accent-color: #CB4524; cursor: pointer; flex-shrink: 0; border-radius: 4px; }
.checkbox_input:focus-visible { outline: 2px solid #CB4524; outline-offset: 2px; }
.checkbox_item span { font-size: 14px; line-height: 1.4; }
.checkbox_item span a { text-decoration: underline; }
.checkbox_item span a:hover { text-decoration: none; }
@media ( min-width: 768px ) {
    .checkbox_item span { font-size: 16px; }
}

/*＝＝＝＝＝＝＝＝＝プライバシーポリシー・送信ボタン＝＝＝＝＝＝＝＝＝*/
.form_privacy { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; }
.form_turnstile { display: flex; flex-direction: column; align-items: center; gap: 4px; margin-top: 2rem; }
.form_submit_wrap { display: flex; justify-content: center; margin-top: 2rem; }
/* 見た目・ホバーアクションは components.css の .btn / .btn_color_primary に準拠 */
.submit_button { width: min(280px, 80vw); height: 68px; }
.submit_button:disabled { background: #CCC; border-color: #CCC; cursor: not-allowed; }
@media ( min-width: 600px ) {
    .submit_button { width: min(270px, 40vw); }
}
@media ( min-width: 1200px ) {
    .submit_button { width: 280px; }
}

/*＝＝＝＝＝＝＝＝＝送信完了ページ＝＝＝＝＝＝＝＝＝*/
.thanks_wrap { display: flex; flex-direction: column; align-items: center; gap: 24px; padding: 48px 24px; background: #FFF; border-radius: 16px; text-align: center; }
.thanks_title { font-size: 20px; font-weight: bold; margin: 0; }
.thanks_text { color: #555; line-height: 2; margin: 0; }

/* お問合せ内容 */
.thanks_detail { display: flex; flex-direction: column; width: 100%; margin-top: 8px; padding-top: 20px; border-top: 1px solid #B2B2B2; text-align: left; }
.thanks_detail_row { display: flex; flex-direction: column; gap: 4px; padding: 8px 0; }
.thanks_detail_row dt { font-weight: bold; }
.thanks_detail_message { white-space: pre-line; }

.thanks_btn_wrap { display: flex; justify-content: center; margin-top: 32px; }
/* 見た目・ホバーアクションは components.css の .btn / .btn_color_primary に準拠 */
.thanks_btn { width: min(280px, 80vw); height: 68px; }
@media ( min-width: 600px ) {
    .thanks_btn { width: min(270px, 40vw); }
}
@media ( min-width: 768px ) {
    .thanks_wrap { padding: 80px 120px; gap: 32px; }
    .thanks_title { font-size: 26px; }
    .thanks_text { font-size: 17px; }
    .thanks_detail_row { flex-direction: row; gap: 40px; padding: 12px 0; }
    .thanks_detail_row dt { flex: 0 0 160px; }
    .thanks_btn_wrap { margin-top: 48px; }
}
@media ( min-width: 1200px ) {
    .thanks_btn { width: 280px; }
}

/*＝＝＝＝＝＝＝＝＝honeypot（スパム対策、視覚的に隠すだけ）＝＝＝＝＝＝＝＝＝*/
.hp_field { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
