diff --git a/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx b/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx
index d0a34702..b1254a8a 100644
--- a/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx
+++ b/apps/web/src/app/tournament/[id]/create/_components/TournamentCreateClient.tsx
@@ -99,6 +99,8 @@ function TournamentCreateClient({ tournamentId }: TournamentCreateClientProps) {
// ownerStarted 면 어차피 시작 흐름으로 넘어가야 하므로 마감 처리하지 않는다.
// 협업 의도가 없는 토너먼트는 만료 자체를 무시한다.
const isDepositClosed = !tournamentData.isOwner && !ownerStarted && isExpired && isCollaborative;
+ // 참여자는 주최자가 시작한 뒤로 담을 수 없다(서버 409). 만료 마감과 별개 사유라 따로 둔다.
+ const isAddItemBlocked = isDepositClosed || (!tournamentData.isOwner && ownerStarted);
const participantImageMap = new Map(
(pending?.participants ?? []).map(p => [p.userId, p.profileImage])
@@ -195,7 +197,7 @@ function TournamentCreateClient({ tournamentId }: TournamentCreateClientProps) {
items={pending?.items}
scrollToLast={scrollToLast}
previousItemCount={previousItemCount}
- isDepositClosed={isDepositClosed}
+ isAddItemBlocked={isAddItemBlocked}
participantImageMap={participantImageMap}
/>
-