/* board/form.html — 페이지 전용 보정
 * 원본 반입 CSS(css/style-5.css)가 .form__viusal/.form__section-01/.contact-form
 * 를 이미 정의한다. 이 파일은 반응형 잔여 격차만 최소 보정한다(R5 — 전면 재작성 금지).
 *
 * COMMON 이슈 임시 완화(이 페이지 스코프만) — css/style-*.css 전체에
 * body{opacity:0;transition:opacity .4s;} 가 있다(원본 lenis/gsap 페이지-로드 리빌 게이트,
 * 전 페이지 공통, guardrails.md service/index.html 항목 참조). 재구현 JS(main.js)가 아직
 * 이 게이트를 풀지 않아 정적 재현 시 body 가 영구 opacity:0 으로 남아 전체 화면이 백지로
 * 렌더된다. main.js 의 site-wide 배선이 필요하므로 notes 에 COMMON 요청함. 이 페이지는
 * 요청 전까지 최소 완화만 적용.
 */
body { opacity: 1 !important; }

/* 원본 페이지 말미 인라인 <style> 블록 이관(R5 — 인라인 style 블록 금지, 선택자/값은
   원본 그대로 옮김 — 재저작 아님). style-5.css(이 페이지 전용 번들)에는 이 규칙이 없고
   원본 페이지 자체가 body 하단에 직접 실어온 페이지 한정 오버라이드였다(stylediff 실측:
   .container.wrap-medium 폭이 기본값 1300px 로 남아 1440px 스펙과 불일치했던 원인). */
.container.wrap-medium {
    width: 100%;
    padding: 0 !important;
}

/* 고정폭 컨테이너 유동화 — 태블릿/모바일 가로 overflow 방지 (R3 반응형 보강) */
.form__section-01,
.contact-form,
.form-wrap {
    max-width: 100%;
}

.contact-form .form-wrap textarea,
.contact-form .form-wrap input[type="text"] {
    max-width: 100%;
    box-sizing: border-box;
}

@media all and (max-width: 767px) {
    .form__section-title h2 {
        word-break: keep-all;
    }
    .contact-form .privacy-content {
        word-break: keep-all;
    }
}

/* ── API 배선(board-contact) 상태 표시 ─────────────────────────────────
   원본에는 없던 요소지만 정적 폼이 실제 접수 폼이 되면서 필요해진 것들이다
   (로딩/에러/접수결과). 원본 폼 디자인은 건드리지 않고 상태 표시만 얹는다. */

/* 어드민 약관 본문이 들어오는 자리 — 원본 .privacy-content 박스(스크롤/테두리)를
   그대로 쓰고, 안쪽 문단만 원본 정적 약관과 같은 리듬으로 맞춘다. */
.contact-form .privacy-content [data-state="ready"] p {
    margin: 0 0 1em;
}

.contact-form .privacy-content [data-state="ready"] p:last-child {
    margin-bottom: 0;
}

/* 폼 해석 3상태(로딩/에러) — 폼 바깥에 두어 원본 form-group 리듬을 깨지 않는다. */
.contact-form .form-state {
    margin-top: 20rem;
    font-size: 16rem;
    line-height: 1.5;
    color: #555;
}

.contact-form .form-state--error {
    color: #c0392b;
}

/* 제출 결과 안내 */
.contact-form .form-status {
    margin-top: 20rem;
    font-size: 16rem;
    line-height: 1.5;
    color: #555;
    word-break: keep-all;
    white-space: pre-line;
}

.contact-form .form-status--error {
    color: #c0392b;
}

.contact-form .form-status--success {
    color: #1e7e34;
}

/* 미입력/서버 지적 필드 표시 */
.contact-form .form-wrap .is-invalid input[type="text"],
.contact-form .form-wrap .is-invalid textarea,
.contact-form .form-wrap input.is-invalid,
.contact-form .form-wrap textarea.is-invalid {
    border: 1rem solid #c0392b;
}

.contact-form .form-wrap .form-group.is-invalid .form-group-title {
    color: #c0392b;
}

/* 제출 중 — 버튼 중복 클릭 차단(계약상 429: 5회/분) */
.contact-form .form-wrap .form-group.button-wrap #submit-button[data-busy="1"],
.contact-form .form-wrap .form-group.button-wrap #submit-button[aria-disabled="true"] {
    opacity: .55;
    cursor: not-allowed;
    pointer-events: none;
}
