diff --git a/src/components/ContactModal.tsx b/src/components/ContactModal.tsx index e59aeda..b73d9e8 100644 --- a/src/components/ContactModal.tsx +++ b/src/components/ContactModal.tsx @@ -8,6 +8,7 @@ * 두 종류로 보이지 않게 하기 위해서다. */ import { useEffect, useState } from 'react'; +import { createPortal } from 'react-dom'; import { AnimatePresence, motion } from 'motion/react'; import { ArrowRight } from 'lucide-react'; import { submitLead } from '../lib/submitLead'; @@ -76,7 +77,11 @@ export default function ContactModal({ open, onClose, source }: ContactModalProp return `mailto:${CONTACT_EMAIL}?subject=${encodeURIComponent('[INFINITH] 도입 문의')}&body=${encodeURIComponent(body)}`; }; - return ( + // 반드시 body 로 포털한다. 이 모달을 여는 Navbar 는 backdrop-blur-md 를 쓰는데, + // backdrop-filter 가 걸린 요소는 position:fixed 자손의 기준 블록이 된다. + // 그대로 두면 오버레이의 inset-0 이 뷰포트가 아니라 nav 박스(높이 80px)로 잡혀 + // 모달이 헤더 안에 갇혀 잘린다. 2026-10-01 프로덕션에서 실제로 그렇게 나왔다. + return createPortal( {open && ( )} - + , + document.body, ); }