/* お問い合わせ（form_page/page-contact.php・確認・完了）
   デザイン: build_a_sub3.py contact_page() / build_a_sub6.py thanks_page()
   確認・完了画面はテンプレート側でこのファイルを読み込む */

/* 左 340px（送信の流れ・電話）＋右フォーム */
.rn-contact__grid { display: flex; align-items: flex-start; gap: 80px; }
.rn-contact__side { width: 340px; flex-shrink: 0; }
.rn-contact__grid--thanks .rn-contact__side { width: 300px; }
.rn-contact__main { flex: 1; min-width: 0; }

/* 送信の流れ（form_page/flow.php）: 1段 64px、60° の斜面に沿ってずらす */
.rn-contact__flow-en { font-size: 11px; color: var(--rn-ink); }
.rn-contact__flow-list { position: relative; margin: 14px 0 0; padding: 0; list-style: none; border-bottom: 1px solid var(--rn-line-light); }
.rn-contact__flow-list::before { content: ""; position: absolute; left: -14px; top: 0; width: 1.5px; height: 100%; background: var(--rn-gold); transform-origin: top left; transform: skewX(30deg); }
.rn-contact__flow-item { --row: 64px; display: flex; align-items: center; gap: 16px; min-height: var(--row); margin-left: calc(var(--i) * var(--row) * 0.57735); padding-left: 28px; border-top: 1px solid var(--rn-line-light); color: rgba(17, 18, 20, 0.45); }
/* 金の線が番号に重ならないよう、行頭に線の通り道を空ける */
.rn-contact__flow-num { font-size: 30px; font-weight: 500; line-height: 1; color: rgba(17, 18, 20, 0.35); }
.rn-contact__flow-label { font-size: 15px; font-weight: 700; }
.rn-contact__flow-item.is-active, .rn-contact__flow-item.is-active .rn-contact__flow-num { color: var(--rn-ink); }

/* 電話の箱 */
.rn-contact__tel { --rn-tombo: var(--rn-gold); margin-top: 52px; padding: 30px 30px 28px; background: var(--rn-ink); color: #fff; }
.rn-contact__tel::before, .rn-contact__tel::after { width: 14px; height: 14px; }
.rn-contact__tel::before { left: 10px; top: 10px; }
.rn-contact__tel::after { right: 10px; bottom: 10px; }
.rn-contact__tel-en { font-size: 11px; color: var(--rn-gold-on-dark); }
.rn-contact__tel-num { display: inline-block; margin-top: 4px; font-size: 40px; font-weight: 500; line-height: 1.15; color: #fff; text-decoration: none; }
.rn-contact__tel-note { margin-top: 10px; font-size: 13px; line-height: 1.85; color: var(--rn-sub-dark); }

/* フォームの見出し */
.rn-contact__intro { margin-bottom: 40px; }
.rn-contact__head { padding-bottom: 28px; }
.rn-contact__head .rn-title { margin-top: 0; }
.rn-contact__note { margin-top: 14px; font-size: 14px; line-height: 1.9; color: var(--rn-sub-light); }

/* 入力欄の行（左 220px に項目名） */
.rn-form__list { margin: 0; padding: 0; list-style: none; }
.rn-form__item { display: flex; gap: 32px; padding: 22px 0; border-top: 1px solid var(--rn-line-light); }
.rn-form__label { display: block; width: 220px; flex-shrink: 0; padding-top: 10px; color: var(--rn-ink); cursor: default; }
label.rn-form__label { cursor: pointer; }
.rn-form__label-en { display: block; font-family: var(--rn-font-mono); font-size: 10.5px; letter-spacing: .08em; color: rgba(17, 18, 20, 0.6); }
.rn-form__label-ja { font-size: 15px; font-weight: 700; }
.rn-form__required, .rn-form__optional { display: inline-block; margin-left: 10px; padding: 1px 8px; font-size: 11px; line-height: 1.6; vertical-align: 2px; }
.rn-form__required { background: var(--rn-ink); color: #fff; }
.rn-form__optional { border: 1px solid rgba(17, 18, 20, 0.3); color: var(--rn-sub-light); }
.rn-form__field { flex: 1; min-width: 0; }
.rn-form__input, .rn-form__textarea { display: block; width: 100%; padding: 0 16px; border: 1px solid rgba(17, 18, 20, 0.3); border-radius: 0; background: #fff; color: var(--rn-ink); font: inherit; font-size: 15px; box-sizing: border-box; box-shadow: none; }
.rn-form__input { height: 52px; }
.rn-form__textarea { min-height: 190px; padding: 14px 16px; line-height: 1.8; resize: vertical; }
.rn-form__input::placeholder, .rn-form__textarea::placeholder { color: rgba(17, 18, 20, 0.4); }
.rn-form__input:focus-visible, .rn-form__textarea:focus-visible { outline: 2px solid var(--rn-gold); outline-offset: 1px; border-color: var(--rn-ink); }
.rn-form__field--email { display: grid; gap: 10px; }
/* 入力漏れ（contact.form.system.js が付ける borderRed） */
.rn-contact .borderRed { border-color: #c0392b !important; background: #fdf3f2; }

/* 種別（選んだものを黒地に反転） */
.rn-form__radio-group { display: flex; flex-wrap: wrap; gap: 10px; }
.rn-form__radio { display: flex; align-items: center; gap: 10px; min-height: 52px; padding: 0 20px; border: 1px solid rgba(17, 18, 20, 0.3); background: #fff; color: var(--rn-ink); font-size: 15px; box-sizing: border-box; cursor: pointer; }
.rn-form__radio input { width: 16px; height: 16px; margin: 0; accent-color: var(--rn-gold); }
.rn-form__radio-mark { display: none; }
.rn-form__radio:has(input:checked) { background: var(--rn-ink); border-color: var(--rn-ink); color: #fff; }
.rn-form__radio:has(input:focus-visible) { outline: 2px solid var(--rn-gold); outline-offset: 2px; }

/* 添付ファイル（3行） */
.rn-form__file { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
.rn-form__file + .rn-form__file { margin-top: 10px; }
.rn-form__file-no { width: 120px; font-size: 11px; color: rgba(17, 18, 20, 0.6); }
.rn-form__file-btn { position: relative; display: inline-flex; align-items: center; min-height: 40px; padding: 0 18px; border: 1px solid var(--rn-ink); background: #fff; font-size: 13.5px; font-weight: 700; cursor: pointer; }
.rn-form__file-btn input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.rn-form__file-btn:has(input:focus-visible) { outline: 2px solid var(--rn-gold); outline-offset: 2px; }
.rn-form__file-name { flex: 1; min-width: 0; margin: 0; font-size: 13px; color: var(--rn-sub-light); overflow-wrap: anywhere; }
.rn-form__file-note { margin-top: 12px; font-family: var(--rn-font-mono); font-size: 10.5px; line-height: 1.8; letter-spacing: .02em; color: rgba(17, 18, 20, 0.6); }

/* 同意と送信 */
.rn-form__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 32px; padding-top: 30px; border-top: 1px solid var(--rn-line-light); }
.rn-form__checkbox { display: inline-flex; align-items: center; gap: 10px; font-size: 14.5px; color: var(--rn-ink); cursor: pointer; }
.rn-form__checkbox input { width: 18px; height: 18px; margin: 0; accent-color: var(--rn-gold); }
.rn-form__checkbox-mark { display: none; }
.rn-form__checkbox a { text-decoration: underline; text-underline-offset: 3px; }
.rn-form__submit { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 14px; }
.rn-form__btn { display: inline-flex; align-items: center; justify-content: center; gap: 16px; min-height: 62px; padding: 0 40px; border: 1px solid var(--rn-ink); border-radius: 0; background: var(--rn-ink); color: #fff; font: inherit; font-size: 16px; font-weight: 700; cursor: pointer; transition: opacity .2s; }
.rn-form__btn:hover { opacity: .85; }
.rn-form__btn svg { color: var(--rn-gold-on-dark); }
.rn-form__btn:focus-visible { outline: 2px solid var(--rn-gold); outline-offset: 2px; }
.rn-form__btn--secondary { background: #fff; color: var(--rn-ink); }
.rn-form__btn--secondary svg { color: var(--rn-ink); }

/* 確認画面の表 */
.rn-contact--confirm .rn-form__submit { margin-top: 36px; flex-direction: row-reverse; justify-content: flex-start; }
.rn-confirm__table { width: 100%; border-collapse: collapse; border-bottom: 1px solid var(--rn-line-light); font-size: 15px; line-height: 1.9; }
.rn-confirm__table th, .rn-confirm__table td { padding: 20px 0; border-top: 1px solid var(--rn-line-light); text-align: left; vertical-align: top; }
.rn-confirm__table th { width: 220px; padding-right: 32px; font-size: 14px; font-weight: 700; color: var(--rn-ink); }
.rn-confirm__table td { color: var(--rn-ink); overflow-wrap: anywhere; }

/* 完了画面 */
.rn-thanks__title { font-size: 36px; line-height: 1.3; color: var(--rn-ink); }
.rn-thanks__text { margin-top: 20px; font-size: 16px; line-height: 2.1; color: var(--rn-ink); }
.rn-thanks__tel { --rn-tombo: var(--rn-gold); display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 36px; padding: 28px 32px; background: var(--rn-ink); color: #fff; }
.rn-thanks__tel::before, .rn-thanks__tel::after { width: 14px; height: 14px; }
.rn-thanks__tel::before { left: 10px; top: 10px; }
.rn-thanks__tel::after { right: 10px; bottom: 10px; }
.rn-thanks__tel-en { font-size: 11px; color: var(--rn-gold-on-dark); }
.rn-thanks__tel-num { display: inline-block; margin-top: 4px; font-size: 40px; font-weight: 500; line-height: 1.15; color: #fff; text-decoration: none; }
.rn-thanks__hours { font-size: 11px; color: var(--rn-sub-dark); }
.rn-thanks__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 32px; }
.rn-thanks__actions .rn-btn { min-height: 58px; padding: 0 28px; }
.rn-thanks__actions .rn-btn--ink .rn-arrow { color: var(--rn-gold-on-dark); }

/* 送信中の表示・エラー（contact.form.system.js が表示を切り替える） */
.rn-contact .loaderItem { display: none; position: fixed; inset: 0; z-index: 9999; }
.rn-contact .loaderBox { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; background: rgba(17, 18, 20, 0.75); }
.rn-contact .loader { position: relative; width: 64px; height: 64px; border: 3px solid rgba(255, 255, 255, 0.15); border-top-color: var(--rn-gold); border-radius: 50%; animation: rnContactSpin 1s linear infinite; }
.rn-contact .loader .screen-reader-text { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; }
@keyframes rnContactSpin { to { transform: rotate(360deg); } }
.rn-contact .errorMessage { display: none; position: fixed; left: 50%; bottom: 32px; z-index: 10000; transform: translateX(-50%); max-width: min(90vw, 420px); padding: 18px 28px; border-left: 3px solid #c0392b; background: #fff; color: #c0392b; box-shadow: 0 16px 40px rgba(0, 0, 0, 0.15); font-size: 14px; font-weight: 700; text-align: center; cursor: pointer; }

@media (max-width: 1100px) {
  .rn-contact__grid { gap: 48px; }
  .rn-contact__side, .rn-contact__grid--thanks .rn-contact__side { width: 280px; }
  .rn-form__label { width: 180px; }
}
@media (max-width: 900px) {
  .rn-contact__grid { flex-direction: column; gap: 36px; }
  .rn-contact__side, .rn-contact__grid--thanks .rn-contact__side { width: 100%; }
  .rn-contact__flow-list::before { display: none; }
  .rn-contact__flow-item { --row: 52px; margin-left: calc(var(--i) * 14px); padding-left: 0; }
  .rn-contact__flow-num { font-size: 24px; }
  .rn-contact__tel { margin-top: 28px; padding: 24px 22px; }
  .rn-contact__tel-num, .rn-thanks__tel-num { font-size: 32px; }
  .rn-contact__note br { display: none; }
  .rn-form__item { flex-direction: column; gap: 10px; padding: 18px 0; }
  .rn-form__label { width: auto; padding-top: 0; }
  .rn-form__radio-group { display: grid; grid-template-columns: 1fr; }
  .rn-form__file-no { width: 100%; }
  .rn-form__foot { flex-direction: column; align-items: stretch; }
  .rn-form__submit, .rn-contact--confirm .rn-form__submit { flex-direction: column; }
  .rn-form__btn { width: 100%; padding: 0 24px; }
  .rn-confirm__table th, .rn-confirm__table td { display: block; width: auto; padding-right: 0; }
  .rn-confirm__table th { padding-bottom: 0; border-top: 1px solid var(--rn-line-light); }
  .rn-confirm__table td { padding-top: 4px; border-top: 0; }
  .rn-thanks__title { font-size: 28px; }
  .rn-thanks__text { font-size: 15px; }
  .rn-thanks__text br { display: none; }
  .rn-thanks__tel { flex-direction: column; align-items: flex-start; padding: 24px 22px; }
  .rn-thanks__actions { flex-direction: column; }
  .rn-thanks__actions .rn-btn { width: 100%; }
}
