Index: chapterx-frontend/src/pages/story/StoryDetailPage.tsx
===================================================================
--- chapterx-frontend/src/pages/story/StoryDetailPage.tsx	(revision b62cefc14094ca5ac7154f7d48797a1e6c444935)
+++ chapterx-frontend/src/pages/story/StoryDetailPage.tsx	(revision acf690c1403ecbecd948a46d950278f177f2d408)
@@ -39,5 +39,5 @@
   const myLists = currentUser ? readingLists.filter(l => l.user_id === currentUser.user_id) : []
 
-  const handleAddToList = (listId: number) => {
+  const handleAddToList = async (listId: number) => {
     const list = readingLists.find(l => l.list_id === listId)
     if (!list) return
@@ -55,10 +55,19 @@
       genres: story.genres,
     }
-    addStoryToList(listId, item)
-    addToast(`Added to "${list.name}"!`)
+    try {
+      await addStoryToList(listId, item)
+      addToast(`Added to "${list.name}"!`)
+    } catch (err: any) {
+      const msg = err?.response?.data?.message || ''
+      if (msg.includes('already') || msg.includes('duplicate') || err?.response?.status === 400) {
+        addToast('Already in this list', 'info')
+      } else {
+        addToast('Failed to add to list.', 'error')
+      }
+    }
     setListModalOpen(false)
   }
 
-  const handleCreateList = () => {
+  const handleCreateList = async () => {
     if (!newListName.trim() || !currentUser) return
     const newList = {
@@ -69,7 +78,11 @@
       is_public: false,
       created_at: new Date().toISOString(),
-      stories: [{
+      stories: [],
+    }
+    try {
+      const realListId = await createReadingList(newList)
+      await addStoryToList(realListId, {
         item_id: Date.now() + 1,
-        list_id: Date.now(),
+        list_id: realListId,
         story_id: story.story_id,
         story_title: story.title,
@@ -77,8 +90,9 @@
         added_at: new Date().toISOString(),
         genres: story.genres,
-      }],
-    }
-    createReadingList(newList)
-    addToast(`Created "${newListName}" and added story!`)
+      })
+      addToast(`Created "${newListName}" and added story!`)
+    } catch {
+      addToast('Failed to create list.', 'error')
+    }
     setNewListName('')
     setListModalOpen(false)
