style(custom-entry-modal): 커스텀 입장 모달 톤과 크기를 안정화

맥락:
- 커스텀 입장 모달이 허브 대비 과도하게 어두워 화면 톤 일관성이 떨어졌다.
- 탭(공간/사운드/타이머) 전환 시 본문 높이가 달라져 모달 외곽 크기가 흔들리는 UX 이슈가 있었다.

변경사항:
- Modal 오버레이/패널/헤더/푸터 스타일을 밝은 글래스 톤으로 조정해 허브 톤과 맞췄다.
- CustomEntryModal의 탭 콘텐츠 영역을 고정 높이 컨테이너로 변경해 탭 전환 시 모달 전체 크기가 변하지 않도록 했다.
- 공간/사운드/타이머 옵션 버튼과 커스텀 타이머 입력 필드를 밝은 팔레트로 재정의했다.
- Tabs 컴포넌트를 밝은 표면 톤에 맞게 보정했다.
- 세션 문서(90_current_state, session_brief)에 이번 작업 내용/리스크를 반영했다.

검증:
- npx tsc --noEmit

세션-상태: 커스텀 입장 모달의 밝은 톤 정렬 및 탭 전환 크기 고정 반영 완료
세션-다음: RoomSheet/도크 패널의 인원수 기반 표현을 분위기형 정보로 전환
세션-리스크: 모달 고정 높이 적용으로 작은 화면에서 탭 본문 내부 스크롤 의존도가 증가할 수 있음
This commit is contained in:
2026-02-28 23:29:17 +09:00
parent 105c5785b8
commit 3280df7aa1
5 changed files with 127 additions and 90 deletions

View File

@@ -52,7 +52,7 @@ export const Modal = ({
type="button"
aria-label="모달 닫기"
onClick={onClose}
className="absolute inset-0 bg-slate-950/78 backdrop-blur-sm"
className="absolute inset-0 bg-slate-900/52 backdrop-blur-[2px]"
/>
<div
@@ -60,36 +60,36 @@ export const Modal = ({
aria-modal="true"
aria-labelledby="custom-entry-modal-title"
className={cn(
'relative z-10 w-full max-w-3xl overflow-hidden rounded-3xl border border-white/20 bg-slate-950/92 shadow-[0_30px_100px_rgba(2,6,23,0.65)]',
'relative z-10 w-full max-w-3xl overflow-hidden rounded-3xl border border-white/35 bg-[linear-gradient(160deg,rgba(248,250,252,0.9)_0%,rgba(226,232,240,0.84)_52%,rgba(203,213,225,0.86)_100%)] shadow-[0_24px_90px_rgba(15,23,42,0.32)]',
reducedMotion
? 'transition-none'
: 'transition-transform duration-300 ease-out motion-reduce:transition-none',
)}
>
<header className="border-b border-white/12 px-6 py-5 sm:px-7">
<header className="border-b border-brand-dark/14 px-6 py-5 sm:px-7">
<div className="flex items-start justify-between gap-4">
<div>
<h2 id="custom-entry-modal-title" className="text-lg font-semibold text-white">
<h2 id="custom-entry-modal-title" className="text-lg font-semibold text-brand-dark">
{title}
</h2>
{description ? (
<p className="mt-1 text-sm text-white/65">{description}</p>
<p className="mt-1 text-sm text-brand-dark/64">{description}</p>
) : null}
</div>
<button
type="button"
onClick={onClose}
className="rounded-lg border border-white/20 px-2.5 py-1.5 text-xs text-white/80 transition hover:bg-white/10 hover:text-white"
className="rounded-lg border border-brand-dark/16 bg-white/58 px-2.5 py-1.5 text-xs text-brand-dark/82 transition hover:bg-white/84 hover:text-brand-dark"
>
</button>
</div>
</header>
<div className="max-h-[68vh] overflow-y-auto px-6 py-5 sm:px-7">{children}</div>
<div className="max-h-[72vh] overflow-y-auto px-6 py-5 sm:px-7">{children}</div>
{footer ? (
<footer className="border-t border-white/12 bg-slate-900/80 px-6 py-4 sm:px-7">{footer}</footer>
<footer className="border-t border-brand-dark/12 bg-white/56 px-6 py-4 sm:px-7">{footer}</footer>
) : null}
</div>
</div>