diff --git a/front/src/AnimePage.js b/front/src/AnimePage.js
index 03ad8b2..47ae5e2 100644
--- a/front/src/AnimePage.js
+++ b/front/src/AnimePage.js
@@ -1,38 +1,40 @@
 import React, { useState, useEffect } from "react";
 import HomeIcon from "@mui/icons-material/Home";
 import MovieIcon from "@mui/icons-material/Movie";
-import EmailIcon from "@mui/icons-material/Email";
+import TvIcon from "@mui/icons-material/Tv";
 import MusicNoteIcon from "@mui/icons-material/MusicNote";
-import EmojiPeopleIcon from "@mui/icons-material/EmojiPeople";
+import AnimationIcon from "@mui/icons-material/Animation";
 import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
 import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
 import PersonIcon from "@mui/icons-material/Person";
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import ForumIcon from "@mui/icons-material/Forum";
 import HelpIcon from "@mui/icons-material/Help";
-import "./App.css";
+import "./SharedStyles.css";
 import { useNavigate } from "react-router-dom";
 import { API_BASE_URL } from "./config";
 
 const navItems = [
-  { label: "首页", icon: <HomeIcon />, path: "/home" },
-  { label: "电影", icon: <MovieIcon />, path: "/movie" },
-  { label: "剧集", icon: <EmailIcon />, path: "/tv" },
-  { label: "音乐", icon: <MusicNoteIcon />, path: "/music" },
-  { label: "动漫", icon: <EmojiPeopleIcon />, path: "/anime" },
-  { label: "游戏", icon: <SportsEsportsIcon />, path: "/game" },
-  { label: "体育", icon: <SportsMartialArtsIcon />, path: "/sport" },
-  { label: "资料", icon: <PersonIcon />, path: "/info" },
-  { label: "论坛", icon: <ForumIcon />, path: "/forum" },
-  { label: "发布", icon: <AccountCircleIcon />, path: "/publish" },
-  { label: "求种", icon: <HelpIcon />, path: "/begseed" },
+  { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+  { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+  { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+  { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+  { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+  { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+  { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+  { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+  { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+  { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+  { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
 ];
 
+// 动漫地区标签
 const areaTabs = [
-  { label: "国创", icon: <EmojiPeopleIcon fontSize="small" /> },
-  { label: "日漫", icon: <EmailIcon fontSize="small" /> },
-  { label: "欧美动漫", icon: <PersonIcon fontSize="small" /> },
-  { label: "韩漫", icon: <EmojiPeopleIcon fontSize="small" /> },
+  { label: "国创动漫", value: "chinese" },
+  { label: "日系动漫", value: "japanese" },
+  { label: "欧美动漫", value: "western" },
+  { label: "韩系动漫", value: "korean" },
+  { label: "其他动漫", value: "others" }
 ];
 
 export default function AnimePage() {
@@ -60,18 +62,8 @@
       })
       .catch(err => console.error('Fetching user profile failed', err));
   }, []);
-
-  // 每个tab对应的动漫类型
-  const animeTypesList = [
-    ["华语动漫（大陆）", "欧美动漫", "日韩动漫", "港台动漫", "其他"], // 国创
-    ["日漫热血", "日漫搞笑", "日漫其他"], // 日漫
-    ["欧美冒险", "欧美科幻", "欧美其他"], // 欧美动漫
-    ["韩漫爱情", "韩漫奇幻", "韩漫其他"], // 韩漫
-    ["其他类型1", "其他类型2"] // 其他
-  ];
-  const animeTypes = animeTypesList[activeTab] || [];
-
   useEffect(() => {
+    // 根据选中的标签获取动漫列表
     const area = areaTabs[activeTab].label;
     fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
@@ -85,128 +77,221 @@
     fetch(`${API_BASE_URL}/api/search-seeds?tag=${encodeURIComponent(area)}&keyword=${encodeURIComponent(searchText)}`)
       .then(res => res.json())
       .then(data => {
+        console.log('搜索返回数据:', data);
         setAnimeList(data);
       })
       .catch(() => setAnimeList([]));
   };
 
+  const animeTypesList = [
+    ["华语动漫", "国产3D", "国产2D", "华语其他"], // 国创动漫
+    ["日漫热血", "日漫治愈", "日漫搞笑", "日漫其他"], // 日系动漫
+    ["欧美冒险", "欧美科幻", "欧美喜剧", "欧美其他"], // 欧美动漫
+    ["韩漫爱情", "韩漫奇幻", "韩漫其他"], // 韩系动漫
+    ["独立动画", "短篇动画", "其他类型"] // 其他动漫
+  ];
+  const animeTypes = animeTypesList[activeTab] || [];
   return (
-    <div className="container">
-      {/* 顶部空白与动漫界面一致，用户栏绝对定位在页面右上角 */}
-      <div style={{ height: 80 }} />
-      <div className="user-bar" style={{ position: 'fixed', top: 18, right: 42, zIndex: 100, display: 'flex', alignItems: 'center', background: '#e0f3ff', borderRadius: 12, padding: '6px 18px', boxShadow: '0 2px 8px #b2d8ea', minWidth: 320, minHeight: 48, width: 420 }}>
-        <div style={{ cursor: 'pointer', marginRight: 16 }} onClick={() => navigate('/user')}>
-          {userInfo.avatar_url ? (
-            <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
-          ) : (
-            <AccountCircleIcon style={{ fontSize: 38, color: '#1a237e', background: '#e0f3ff', borderRadius: '50%' }} />
-          )}
-        </div>
-        <div style={{ color: '#222', fontWeight: 500, marginRight: 24 }}>{userInfo.username || '用户栏'}</div>
-        <div style={{ display: 'flex', gap: 28, flex: 1, justifyContent: 'flex-end', alignItems: 'center' }}>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>魔力值: <b>{userPT.magic}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>分享率: <b>{userPT.ratio}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>上传量: <b>{userPT.upload}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>下载量: <b>{userPT.download}</b></span>
-        </div>
+    <div className="emerald-home-container">
+      {/* 流星雨背景效果 */}
+      <div className="meteor-shower">
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
       </div>
-      {/* 下方内容整体下移，留出与动漫界面一致的间距 */}
-      <div style={{ height: 32 }} />
-      <nav className="nav-bar card">
-        {navItems.map((item) => (
-          <div
-            key={item.label}
-            className={item.label === "动漫" ? "nav-item active" : "nav-item"}
-            onClick={() => navigate(item.path)}
-          >
-            {item.icon}
-            <span>{item.label}</span>
-          </div>
-        ))}
-      </nav>
-      <div className="search-section card">
-        <input
-          className="search-input"
-          placeholder="输入搜索关键词"
-          value={searchText}
-          onChange={e => setSearchText(e.target.value)}
-        />
-        <button className="search-btn" onClick={handleSearch}>
-          <span role="img" aria-label="search">🔍</span>
-        </button>
+
+      {/* 浮动园林装饰元素 */}
+      <div className="floating-garden-elements">
+        <div className="garden-element">🌿</div>
+        <div className="garden-element">🦋</div>
+        <div className="garden-element">🌺</div>
+        <div className="garden-element">🌸</div>
       </div>
-      <div className="area-tabs" style={{ display: 'flex', justifyContent: 'center', gap: 24, margin: '18px 0' }}>
-        {areaTabs.map((tab, idx) => (
-          <div
-            key={tab.label}
-            className={activeTab === idx ? "area-tab active" : "area-tab"}
-            onClick={() => setActiveTab(idx)}
-          >
-            {tab.icon} <span>{tab.label}</span>
-          </div>
-        ))}
-      </div>
-      <div className="table-section">
-        <table className="anime-table">
-          <thead>
-            <tr>
-              <th>动漫类型</th>
-              <th>标题</th>
-              <th>发布者</th>
-              <th>大小</th>
-              <th>热度</th>
-              <th>折扣倍率</th>
-            </tr>
-          </thead>
-          <tbody>
-            {animeList.length > 0 ? (
-              animeList.map((item, index) => (
-                <tr key={item.id || index}>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.seedtag}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.title}
-                    </a>
-                  </td>
-                  <td>{item.username}</td>
-                  <td>{item.seedsize}</td>
-                  <td>{item.downloadtimes}</td>
-                  <td>{item.discount == null ? 1 : item.discount}</td>
-                </tr>
-              ))
+
+      <div className="emerald-content">
+        {/* NeuraFlux用户栏 */}
+        <div className="emerald-user-bar">
+          <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+            {userInfo.avatar_url ? (
+              <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
             ) : (
-              animeTypes.map((type, index) => (
-                <tr key={type}>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {type}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      种子{index + 1}
-                    </a>
-                  </td>
-                  <td>发布者{index + 1}</td>
-                  <td>--</td>
-                  <td>--</td>
-                  <td>1</td>
-                </tr>
-              ))
+              <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
             )}
-          </tbody>
-        </table>
+          </div>
+          <div className="emerald-brand-section">
+            <div className="emerald-brand-icon">⚡</div>
+            <div className="emerald-user-label">NeuraFlux</div>
+          </div>
+          <div className="emerald-user-stats">
+            <span className="emerald-stat-item">
+              魔力值: <span className="emerald-stat-value">{userPT.magic}</span>
+            </span>
+            <span className="emerald-stat-item">
+              分享率: <span className="emerald-stat-value">{userPT.ratio}</span>
+            </span>
+            <span className="emerald-stat-item">
+              上传: <span className="emerald-stat-value">{userPT.upload}GB</span>
+            </span>
+            <span className="emerald-stat-item">
+              下载: <span className="emerald-stat-value">{userPT.download}GB</span>
+            </span>
+          </div>
+        </div>
+
+        {/* NeuraFlux导航栏 */}
+        <nav className="emerald-nav-bar">
+          {navItems.map((item) => (
+            <div
+              key={item.label}
+              className={`emerald-nav-item ${item.label === "动漫" ? "active" : ""}`}
+              data-type={item.type}
+              onClick={() => navigate(item.path)}
+            >
+              {item.icon}
+              <span className="emerald-nav-label">{item.label}</span>
+            </div>
+          ))}
+        </nav>
+
+        {/* 动漫内容区域 */}
+        <div className="emerald-content-section">
+          <h1 className="emerald-page-title">🎌 动漫资源</h1>
+          <p style={{ textAlign: 'center', color: '#2d5016', fontSize: '18px', marginBottom: '30px' }}>
+            欢迎来到NeuraFlux动漫频道，这里有最新最热门的动漫资源
+          </p>
+          
+          {/* 搜索栏 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px'
+          }}>
+            <input
+              type="text"
+              placeholder="搜索动漫资源..."
+              value={searchText}
+              onChange={(e) => setSearchText(e.target.value)}
+              style={{
+                padding: '12px 20px',
+                borderRadius: '20px',
+                border: '2px solid rgba(144, 238, 144, 0.3)',
+                background: 'rgba(240, 255, 240, 0.5)',
+                fontSize: '16px',
+                width: '300px',
+                fontFamily: 'Lora, serif'
+              }}
+            />
+            <button
+              onClick={handleSearch}
+              style={{
+                padding: '12px 24px',
+                borderRadius: '20px',
+                border: 'none',
+                background: 'linear-gradient(135deg, #2d5016 0%, #90ee90 100%)',
+                color: 'white',
+                fontSize: '16px',
+                cursor: 'pointer',
+                fontFamily: 'Lora, serif'
+              }}
+            >
+              搜索
+            </button>
+          </div>
+
+          {/* 地区分类标签 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px',
+            flexWrap: 'wrap'
+          }}>
+            {areaTabs.map((tab, index) => (
+              <button
+                key={tab.value}
+                onClick={() => setActiveTab(index)}
+                style={{
+                  padding: '10px 20px',
+                  borderRadius: '15px',
+                  border: '2px solid rgba(144, 238, 144, 0.3)',
+                  background: activeTab === index 
+                    ? 'linear-gradient(135deg, #90ee90 0%, #2d5016 100%)' 
+                    : 'rgba(240, 255, 240, 0.3)',
+                  color: activeTab === index ? 'white' : '#2d5016',
+                  fontSize: '14px',
+                  cursor: 'pointer',
+                  fontFamily: 'Lora, serif',
+                  transition: 'all 0.3s ease'
+                }}
+              >
+                {tab.label}
+              </button>
+            ))}
+          </div>
+
+          {/* 动漫列表 */}
+          <div className="emerald-table-section">
+            <table className="emerald-table">
+              <thead>
+                <tr>
+                  <th>动漫类型</th>
+                  <th>标题</th>
+                  <th>发布者</th>
+                  <th>大小</th>
+                  <th>热度</th>
+                  <th>折扣倍率</th>
+                </tr>
+              </thead>
+              <tbody>
+                {animeList.length > 0 ? (
+                  animeList.map((item, index) => (
+                    <tr key={item.id || index}>
+                      <td>{item.seedtag}</td>
+                      <td>
+                        <a href={`/torrent/${item.seedid}`}>
+                          {item.title}
+                        </a>
+                      </td>
+                      <td>{item.username}</td>
+                      <td>{item.seedsize}</td>
+                      <td>{item.downloadtimes}</td>
+                      <td>{item.discount == null ? 1 : item.discount}</td>
+                    </tr>
+                  ))
+                ) : (
+                  animeTypes.map((type, index) => (
+                    <tr key={type}>
+                      <td>{type}</td>
+                      <td>
+                        <a href={`/torrent/${type}`}>
+                          种子{index + 1}
+                        </a>
+                      </td>
+                      <td>发布者{index + 1}</td>
+                      <td>--</td>
+                      <td>--</td>
+                      <td>1</td>
+                    </tr>
+                  ))
+                )}
+              </tbody>
+            </table>
+          </div>
+        </div>
       </div>
-      <div style={{ height: 32 }} />
-      <Pagination />
     </div>
   );
 }
 
+// Pagination组件暂时不使用
 function Pagination() {
   const [page, setPage] = React.useState(3);
   const total = 5;
diff --git a/front/src/ForumPage.js b/front/src/ForumPage.js
index 7939da1..bf75671 100644
--- a/front/src/ForumPage.js
+++ b/front/src/ForumPage.js
@@ -1,43 +1,69 @@
 import React, { useState, useEffect } from "react";
 import { useNavigate } from "react-router-dom";
 import { API_BASE_URL } from "./config";
+import HomeIcon from "@mui/icons-material/Home";
+import MovieIcon from "@mui/icons-material/Movie";
+import TvIcon from "@mui/icons-material/Tv";
+import MusicNoteIcon from "@mui/icons-material/MusicNote";
+import AnimationIcon from "@mui/icons-material/Animation";
+import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
+import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
+import PersonIcon from "@mui/icons-material/Person";
+import AccountCircleIcon from "@mui/icons-material/AccountCircle";
+import ForumIcon from "@mui/icons-material/Forum";
+import HelpIcon from "@mui/icons-material/Help";
+import SearchIcon from "@mui/icons-material/Search";
+import PostAddIcon from "@mui/icons-material/PostAdd";
+import "./SharedStyles.css";
 
-// 示例数据
-const posts = [
-    {
-        post_id: "1",
-        title: "欢迎来到G10论坛",
-        content: "这里是G10 PT站的官方论坛,欢迎大家发帖交流!",
-        author_id: "u1",
-        author_name: "Alice",
-        created_at: "2024-06-01 12:00",
-        reply_count: 3,
-        view_count: 120,
-    },
-    {
-        post_id: "2",
-        title: "经典电影合集",
-        content: "90年代经典电影大家有什么推荐吗?",
-        author_id: "u2",
-        author_name: "Bob",
-        created_at: "2024-06-02 09:30",
-        reply_count: 1,
-        view_count: 45,
-    },
+const navItems = [
+  { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+  { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+  { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+  { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+  { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+  { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+  { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+  { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+  { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+  { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+  { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
+];
+
+// 论坛文字雨内容
+const forumTexts = [
+  "讨论", "交流", "分享", "观点", "话题", "回复", "发帖", "社区",
+  "对话", "互动", "评论", "建议", "意见", "经验", "心得", "推荐",
+  "新手", "老鸟", "攻略", "指南", "教程", "资源", "福利", "活动"
 ];
 
 export default function ForumPage() {
     const navigate = useNavigate();
     const [posts, setPosts] = useState([]);
     const [searchQuery, setSearchQuery] = useState('');
+    const [userInfo, setUserInfo] = useState({ avatar_url: '', username: '' });
+    const [userPT, setUserPT] = useState({ magic: 0, ratio: 0, upload: 0, download: 0 });
 
     useEffect(() => {
-        // get userId from cookie
+        // 获取用户信息
         const match = document.cookie.match('(^|;)\\s*userId=([^;]+)');
         const userId = match ? match[2] : null;
-        console.log("User ID from cookie:", userId);
-        // if (!userId) return;
-        console.log("Fetching forum posts...");
+        if (userId) {
+            fetch(`${API_BASE_URL}/api/get-userpt?userid=${encodeURIComponent(userId)}`)
+                .then(res => res.json())
+                .then(data => {
+                    setUserInfo({ avatar_url: data.user.avatar_url, username: data.user.username });
+                    setUserPT({
+                        magic: data.magic_value || data.magic || 0,
+                        ratio: data.share_ratio || data.share || 0,
+                        upload: data.upload_amount || data.upload || 0,
+                        download: data.download_amount || data.download || 0,
+                    });
+                })
+                .catch(err => console.error('Fetching user profile failed', err));
+        }
+
+        // 获取论坛帖子
         fetch(`${API_BASE_URL}/api/forum`)
             .then(res => {
                 // console.log("fetch raw response:", res);
@@ -81,68 +107,157 @@
     };
 
     return (
-        <div style={{ maxWidth: 700, margin: "40px auto" }}>
-            <div style={{ display: "flex", alignItems: "center", marginBottom: 24 }}>
-                <h2 style={{ color: "#1a237e", margin: 0, marginRight: 24 }}>G10 论坛</h2>
-                <input
-                    type="text"
-                    placeholder="搜索帖子内容"
-                    value={searchQuery}
-                    onChange={e => setSearchQuery(e.target.value)}
-                    style={{
-                        flex: 1,
-                        fontSize: 16,
-                        padding: "8px 14px",
-                        border: "1px solid #bfcfff",
-                        borderRadius: 8,
-                        outline: "none",
-                        minWidth: 0,
-                    }}
-                />
-                <button
-                    style={{
-                        marginLeft: 8,
-                        fontSize: 16,
-                        padding: "8px 18px",
-                        border: "1px solid #bfcfff",
-                        background: "#e0e7ff",
-                        borderRadius: 8,
-                        cursor: "pointer",
-                    }}
-                    onClick={handleSearch}
-                >
-                    🔍
-                </button>
+        <div className="emerald-home-container">
+            {/* 文字雨背景效果 */}
+            <div className="forum-text-rain">
+                {forumTexts.map((text, index) => (
+                    <div key={index} className="text-drop" style={{
+                        left: `${(index * 3.5) % 100}%`,
+                        animationDelay: `${(index * 0.8) % 10}s`,
+                        animationDuration: `${8 + (index % 5)}s`
+                    }}>
+                        {text}
+                    </div>
+                ))}
             </div>
-            {posts.map(post => (
-                <div
-                    key={post.post_id}
-                    style={{
-                        background: "#fff",
-                        borderRadius: 12,
-                        boxShadow: "0 2px 8px #e0e7ff",
-                        padding: 24,
-                        marginBottom: 24,
-                        cursor: "pointer",
-                        transition: "box-shadow 0.2s",
-                    }}
-                    onClick={() => navigate(`/forum/${post.post_id}`)}
-                >
-                    <div style={{ fontSize: 15, color: "#1976d2", marginBottom: 6 }}>
-                        {post.author_name} · {post.created_at}
+
+            {/* 浮动园林装饰元素 */}
+            <div className="floating-garden-elements">
+                <div className="garden-element">💬</div>
+                <div className="garden-element">📝</div>
+                <div className="garden-element">🗨️</div>
+                <div className="garden-element">✍️</div>
+            </div>
+
+            <div className="emerald-content">
+                {/* NeuraFlux用户栏 */}
+                <div className="emerald-user-bar">
+                    <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+                        {userInfo.avatar_url ? (
+                            <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
+                        ) : (
+                            <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
+                        )}
                     </div>
-                    <div style={{ fontWeight: 600, fontSize: 20, marginBottom: 8, color: "#222" }}>
-                        {post.title}
+                    <div className="emerald-brand-section">
+                        <div className="emerald-brand-icon">⚡</div>
+                        <div className="emerald-user-label">NeuraFlux</div>
                     </div>
-                    <div style={{ fontSize: 16, color: "#444", marginBottom: 18 }}>
-                        {post.content}
-                    </div>
-                    <div style={{ display: "flex", justifyContent: "flex-start", gap: 32, fontSize: 14, color: "#888" }}>
-                        <span>回复数: {post.reply_count}</span>
-                        <span>观看数: {post.view_count}</span>
+                    <div className="emerald-user-stats">
+                        <span className="emerald-stat-item">
+                            魔力值: <span className="emerald-stat-value">{userPT.magic}</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            分享率: <span className="emerald-stat-value">{userPT.ratio}</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            上传: <span className="emerald-stat-value">{userPT.upload}GB</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            下载: <span className="emerald-stat-value">{userPT.download}GB</span>
+                        </span>
                     </div>
                 </div>
-            ))}
+
+                {/* NeuraFlux导航栏 */}
+                <nav className="emerald-nav-bar">
+                    {navItems.map((item) => (
+                        <div
+                            key={item.label}
+                            className={`emerald-nav-item ${item.label === "论坛" ? "active" : ""}`}
+                            data-type={item.type}
+                            onClick={() => navigate(item.path)}
+                        >
+                            {item.icon}
+                            <span className="emerald-nav-label">{item.label}</span>
+                        </div>
+                    ))}
+                </nav>
+
+                {/* 论坛内容区域 */}
+                <div className="emerald-content-section">
+                    <h1 className="emerald-page-title">💬 NeuraFlux论坛</h1>
+                    <p style={{ textAlign: 'center', color: '#2d5016', fontSize: '18px', marginBottom: '30px' }}>
+                        欢迎来到NeuraFlux社区论坛，这里是知识与思想的碰撞之地
+                    </p>
+                    
+                    {/* 论坛工具栏 */}
+                    <div className="forum-toolbar">
+                        <div className="search-section">
+                            <div className="search-input-container">
+                                <SearchIcon className="search-icon" />
+                                <input
+                                    type="text"
+                                    placeholder="搜索论坛话题..."
+                                    value={searchQuery}
+                                    onChange={(e) => setSearchQuery(e.target.value)}
+                                    className="forum-search-input"
+                                />
+                            </div>
+                            <button onClick={handleSearch} className="forum-search-btn">
+                                搜索
+                            </button>
+                        </div>
+                        <button className="new-post-btn" onClick={() => navigate('/publish')}>
+                            <PostAddIcon style={{ marginRight: '8px' }} />
+                            发布新话题
+                        </button>
+                    </div>
+
+                    {/* 帖子列表 */}
+                    <div className="forum-posts-container">
+                        {posts.length > 0 ? (
+                            posts.map((post) => (
+                                <div
+                                    key={post.post_id}
+                                    className="forum-post-card"
+                                    onClick={() => navigate(`/forum/${post.post_id}`)}
+                                >
+                                    <div className="post-header">
+                                        <div className="post-author-info">
+                                            <div className="author-avatar">
+                                                <AccountCircleIcon style={{ fontSize: 28, color: '#2d5016' }} />
+                                            </div>
+                                            <div className="author-details">
+                                                <span className="author-name">{post.author_name}</span>
+                                                <span className="post-time">{post.created_at}</span>
+                                            </div>
+                                        </div>
+                                        <div className="post-stats">
+                                            <span className="stat-item">👁 {post.view_count}</span>
+                                            <span className="stat-item">💬 {post.reply_count}</span>
+                                        </div>
+                                    </div>
+                                    
+                                    <div className="post-content">
+                                        <h3 className="post-title">{post.title}</h3>
+                                        <p className="post-preview">{post.content}</p>
+                                    </div>
+                                    
+                                    <div className="post-footer">
+                                        <div className="post-tags">
+                                            <span className="post-tag">讨论</span>
+                                        </div>
+                                        <div className="post-actions">
+                                            <span className="action-btn">查看详情 →</span>
+                                        </div>
+                                    </div>
+                                </div>
+                            ))
+                        ) : (
+                            <div className="empty-state">
+                                <ForumIcon style={{ fontSize: 64, color: '#90ee90', marginBottom: '16px' }} />
+                                <h3 style={{ color: '#2d5016', marginBottom: '8px' }}>暂无帖子</h3>
+                                <p style={{ color: '#666', marginBottom: '20px' }}>快来发布第一个话题吧！</p>
+                                <button className="new-post-btn" onClick={() => navigate('/publish')}>
+                                    <PostAddIcon style={{ marginRight: '8px' }} />
+                                    发布话题
+                                </button>
+                            </div>
+                        )}
+                    </div>
+                </div>
+            </div>
         </div>
     );
 }
\ No newline at end of file
diff --git a/front/src/GamePage.js b/front/src/GamePage.js
index cae28cd..4a12636 100644
--- a/front/src/GamePage.js
+++ b/front/src/GamePage.js
@@ -1,51 +1,41 @@
 import React, { useState, useEffect } from "react";
 import HomeIcon from "@mui/icons-material/Home";
 import MovieIcon from "@mui/icons-material/Movie";
-import EmailIcon from "@mui/icons-material/Email";
+import TvIcon from "@mui/icons-material/Tv";
 import MusicNoteIcon from "@mui/icons-material/MusicNote";
-import EmojiPeopleIcon from "@mui/icons-material/EmojiPeople";
+import AnimationIcon from "@mui/icons-material/Animation";
 import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
 import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
 import PersonIcon from "@mui/icons-material/Person";
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import ForumIcon from "@mui/icons-material/Forum";
 import HelpIcon from "@mui/icons-material/Help";
-import "./App.css";
+import "./SharedStyles.css";
 import { useNavigate } from "react-router-dom";
 import { API_BASE_URL } from "./config";
 
 const navItems = [
-  { label: "首页", icon: <HomeIcon />, path: "/home" },
-  { label: "电影", icon: <MovieIcon />, path: "/movie" },
-  { label: "剧集", icon: <EmailIcon />, path: "/tv" },
-  { label: "音乐", icon: <MusicNoteIcon />, path: "/music" },
-  { label: "动漫", icon: <EmojiPeopleIcon />, path: "/anime" },
-  { label: "游戏", icon: <SportsEsportsIcon />, path: "/game" },
-  { label: "体育", icon: <SportsMartialArtsIcon />, path: "/sport" },
-  { label: "资料", icon: <PersonIcon />, path: "/info" },
-  { label: "论坛", icon: <ForumIcon />, path: "/forum" },
-  { label: "发布", icon: <AccountCircleIcon />, path: "/publish" },
-  { label: "求种", icon: <HelpIcon />, path: "/begseed" },
+  { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+  { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+  { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+  { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+  { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+  { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+  { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+  { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+  { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+  { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+  { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
 ];
 
+// 游戏平台标签
 const areaTabs = [
-  { label: "PC", icon: <MovieIcon fontSize="small" /> },
-  { label: "主机", icon: <EmailIcon fontSize="small" /> },
-  { label: "移动", icon: <PersonIcon fontSize="small" /> },
-  { label: "掌机", icon: <EmojiPeopleIcon fontSize="small" /> },
-  { label: "视频", icon: <PersonIcon fontSize="small" /> },
+  { label: "PC游戏", value: "pc" },
+  { label: "主机游戏", value: "console" },
+  { label: "移动游戏", value: "mobile" },
+  { label: "掌机游戏", value: "handheld" },
+  { label: "游戏视频", value: "video" }
 ];
-
-// 每个tab对应的游戏类型
-const gameTypesList = [
-  ["PC单机", "PC网络", "PC独立", "PC其他"], // PC
-  ["主机动作", "主机RPG", "主机其他"], // 主机
-  ["移动休闲", "移动竞技", "移动其他"], // 移动
-  ["掌机冒险", "掌机其他"], // 掌机
-  ["游戏视频", "赛事视频", "其他视频"], // 视频
-  ["其他类型1", "其他类型2"] // 其他
-];
-
 export default function GamePage() {
   const navigate = useNavigate();
   const [searchText, setSearchText] = useState('');
@@ -72,9 +62,8 @@
       .catch(err => console.error('Fetching user profile failed', err));
   }, []);
 
-  const gameTypes = gameTypesList[activeTab] || [];
-
   useEffect(() => {
+    // 根据选中的标签获取游戏列表
     const area = areaTabs[activeTab].label;
     fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
@@ -88,128 +77,221 @@
     fetch(`${API_BASE_URL}/api/search-seeds?tag=${encodeURIComponent(area)}&keyword=${encodeURIComponent(searchText)}`)
       .then(res => res.json())
       .then(data => {
+        console.log('搜索返回数据:', data);
         setGameList(data);
       })
       .catch(() => setGameList([]));
   };
 
+  const gameTypesList = [
+    ["PC单机", "PC网络", "PC独立", "PC其他"], // PC游戏
+    ["主机动作", "主机RPG", "主机竞速", "主机其他"], // 主机游戏
+    ["移动休闲", "移动竞技", "移动策略", "移动其他"], // 移动游戏
+    ["掌机冒险", "掌机RPG", "掌机其他"], // 掌机游戏
+    ["游戏实况", "赛事视频", "攻略教学", "其他视频"] // 游戏视频
+  ];
+  const gameTypes = gameTypesList[activeTab] || [];
   return (
-    <div className="container">
-      {/* 顶部空白与游戏界面一致，用户栏绝对定位在页面右上角 */}
-      <div style={{ height: 80 }} />
-      <div className="user-bar" style={{ position: 'fixed', top: 18, right: 42, zIndex: 100, display: 'flex', alignItems: 'center', background: '#e0f3ff', borderRadius: 12, padding: '6px 18px', boxShadow: '0 2px 8px #b2d8ea', minWidth: 320, minHeight: 48, width: 420 }}>
-        <div style={{ cursor: 'pointer', marginRight: 16 }} onClick={() => navigate('/user')}>
-          {userInfo.avatar_url ? (
-            <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
-          ) : (
-            <AccountCircleIcon style={{ fontSize: 38, color: '#1a237e', background: '#e0f3ff', borderRadius: '50%' }} />
-          )}
-        </div>
-        <div style={{ color: '#222', fontWeight: 500, marginRight: 24 }}>{userInfo.username || '用户栏'}</div>
-        <div style={{ display: 'flex', gap: 28, flex: 1, justifyContent: 'flex-end', alignItems: 'center' }}>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>魔力值: <b>{userPT.magic}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>分享率: <b>{userPT.ratio}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>上传量: <b>{userPT.upload}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>下载量: <b>{userPT.download}</b></span>
-        </div>
+    <div className="emerald-home-container">
+      {/* 流星雨背景效果 */}
+      <div className="meteor-shower">
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
       </div>
-      {/* 下方内容整体下移，留出与游戏界面一致的间距 */}
-      <div style={{ height: 32 }} />
-      <nav className="nav-bar card">
-        {navItems.map((item) => (
-          <div
-            key={item.label}
-            className={item.label === "游戏" ? "nav-item active" : "nav-item"}
-            onClick={() => navigate(item.path)}
-          >
-            {item.icon}
-            <span>{item.label}</span>
-          </div>
-        ))}
-      </nav>
-      <div className="search-section card">
-        <input
-          className="search-input"
-          placeholder="输入搜索关键词"
-          value={searchText}
-          onChange={e => setSearchText(e.target.value)}
-        />
-        <button className="search-btn" onClick={handleSearch}>
-          <span role="img" aria-label="search">🔍</span>
-        </button>
+
+      {/* 浮动园林装饰元素 */}
+      <div className="floating-garden-elements">
+        <div className="garden-element">🌿</div>
+        <div className="garden-element">🦋</div>
+        <div className="garden-element">🌺</div>
+        <div className="garden-element">🌸</div>
       </div>
-      <div className="area-tabs" style={{ display: 'flex', justifyContent: 'center', gap: 24, margin: '18px 0' }}>
-        {areaTabs.map((tab, idx) => (
-          <div
-            key={tab.label}
-            className={activeTab === idx ? "area-tab active" : "area-tab"}
-            onClick={() => setActiveTab(idx)}
-          >
-            {tab.icon} <span>{tab.label}</span>
-          </div>
-        ))}
-      </div>
-      <div className="table-section">
-        <table className="game-table">
-          <thead>
-            <tr>
-              <th>游戏类型</th>
-              <th>标题</th>
-              <th>发布者</th>
-              <th>大小</th>
-              <th>热度</th>
-              <th>折扣倍率</th>
-            </tr>
-          </thead>
-          <tbody>
-            {gameList.length > 0 ? (
-              gameList.map((item, index) => (
-                <tr key={item.id || index}>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.seedtag}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.title}
-                    </a>
-                  </td>
-                  <td>{item.username}</td>
-                  <td>{item.seedsize}</td>
-                  <td>{item.downloadtimes}</td>
-                  <td>{item.discount == null ? 1 : item.discount}</td>
-                </tr>
-              ))
+
+      <div className="emerald-content">
+        {/* NeuraFlux用户栏 */}
+        <div className="emerald-user-bar">
+          <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+            {userInfo.avatar_url ? (
+              <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
             ) : (
-              gameTypes.map((type, index) => (
-                <tr key={type}>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {type}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      种子{index + 1}
-                    </a>
-                  </td>
-                  <td>发布者{index + 1}</td>
-                  <td>--</td>
-                  <td>--</td>
-                  <td>1</td>
-                </tr>
-              ))
+              <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
             )}
-          </tbody>
-        </table>
+          </div>
+          <div className="emerald-brand-section">
+            <div className="emerald-brand-icon">⚡</div>
+            <div className="emerald-user-label">NeuraFlux</div>
+          </div>
+          <div className="emerald-user-stats">
+            <span className="emerald-stat-item">
+              魔力值: <span className="emerald-stat-value">{userPT.magic}</span>
+            </span>
+            <span className="emerald-stat-item">
+              分享率: <span className="emerald-stat-value">{userPT.ratio}</span>
+            </span>
+            <span className="emerald-stat-item">
+              上传: <span className="emerald-stat-value">{userPT.upload}GB</span>
+            </span>
+            <span className="emerald-stat-item">
+              下载: <span className="emerald-stat-value">{userPT.download}GB</span>
+            </span>
+          </div>
+        </div>
+
+        {/* NeuraFlux导航栏 */}
+        <nav className="emerald-nav-bar">
+          {navItems.map((item) => (
+            <div
+              key={item.label}
+              className={`emerald-nav-item ${item.label === "游戏" ? "active" : ""}`}
+              data-type={item.type}
+              onClick={() => navigate(item.path)}
+            >
+              {item.icon}
+              <span className="emerald-nav-label">{item.label}</span>
+            </div>
+          ))}
+        </nav>
+
+        {/* 游戏内容区域 */}
+        <div className="emerald-content-section">
+          <h1 className="emerald-page-title">🎮 游戏资源</h1>
+          <p style={{ textAlign: 'center', color: '#2d5016', fontSize: '18px', marginBottom: '30px' }}>
+            欢迎来到NeuraFlux游戏频道，这里有最新最热门的游戏资源
+          </p>
+          
+          {/* 搜索栏 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px'
+          }}>
+            <input
+              type="text"
+              placeholder="搜索游戏资源..."
+              value={searchText}
+              onChange={(e) => setSearchText(e.target.value)}
+              style={{
+                padding: '12px 20px',
+                borderRadius: '20px',
+                border: '2px solid rgba(144, 238, 144, 0.3)',
+                background: 'rgba(240, 255, 240, 0.5)',
+                fontSize: '16px',
+                width: '300px',
+                fontFamily: 'Lora, serif'
+              }}
+            />
+            <button
+              onClick={handleSearch}
+              style={{
+                padding: '12px 24px',
+                borderRadius: '20px',
+                border: 'none',
+                background: 'linear-gradient(135deg, #2d5016 0%, #90ee90 100%)',
+                color: 'white',
+                fontSize: '16px',
+                cursor: 'pointer',
+                fontFamily: 'Lora, serif'
+              }}
+            >
+              搜索
+            </button>
+          </div>
+
+          {/* 平台分类标签 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px',
+            flexWrap: 'wrap'
+          }}>
+            {areaTabs.map((tab, index) => (
+              <button
+                key={tab.value}
+                onClick={() => setActiveTab(index)}
+                style={{
+                  padding: '10px 20px',
+                  borderRadius: '15px',
+                  border: '2px solid rgba(144, 238, 144, 0.3)',
+                  background: activeTab === index 
+                    ? 'linear-gradient(135deg, #90ee90 0%, #2d5016 100%)' 
+                    : 'rgba(240, 255, 240, 0.3)',
+                  color: activeTab === index ? 'white' : '#2d5016',
+                  fontSize: '14px',
+                  cursor: 'pointer',
+                  fontFamily: 'Lora, serif',
+                  transition: 'all 0.3s ease'
+                }}
+              >
+                {tab.label}
+              </button>
+            ))}
+          </div>
+
+          {/* 游戏列表 */}
+          <div className="emerald-table-section">
+            <table className="emerald-table">
+              <thead>
+                <tr>
+                  <th>游戏类型</th>
+                  <th>标题</th>
+                  <th>发布者</th>
+                  <th>大小</th>
+                  <th>热度</th>
+                  <th>折扣倍率</th>
+                </tr>
+              </thead>
+              <tbody>
+                {gameList.length > 0 ? (
+                  gameList.map((item, index) => (
+                    <tr key={item.id || index}>
+                      <td>{item.seedtag}</td>
+                      <td>
+                        <a href={`/torrent/${item.seedid}`}>
+                          {item.title}
+                        </a>
+                      </td>
+                      <td>{item.username}</td>
+                      <td>{item.seedsize}</td>
+                      <td>{item.downloadtimes}</td>
+                      <td>{item.discount == null ? 1 : item.discount}</td>
+                    </tr>
+                  ))
+                ) : (
+                  gameTypes.map((type, index) => (
+                    <tr key={type}>
+                      <td>{type}</td>
+                      <td>
+                        <a href={`/torrent/${type}`}>
+                          种子{index + 1}
+                        </a>
+                      </td>
+                      <td>发布者{index + 1}</td>
+                      <td>--</td>
+                      <td>--</td>
+                      <td>1</td>
+                    </tr>
+                  ))
+                )}
+              </tbody>
+            </table>
+          </div>
+        </div>
       </div>
-      <div style={{ height: 32 }} />
-      <Pagination />
     </div>
   );
 }
 
+// Pagination组件暂时不使用
 function Pagination() {
   const [page, setPage] = React.useState(3);
   const total = 5;
diff --git a/front/src/HomePage.css b/front/src/HomePage.css
new file mode 100644
index 0000000..4423000
--- /dev/null
+++ b/front/src/HomePage.css
@@ -0,0 +1,133 @@
+/* HomePage 特定样式 */
+@import './SharedStyles.css';
+
+/* 表格区域样式 */
+.emerald-table-section {
+  background: rgba(255, 255, 255, 0.95);
+  backdrop-filter: blur(20px);
+  border-radius: 25px;
+  padding: 30px;
+  margin: 30px auto;
+  box-shadow: 
+    0 20px 60px rgba(45, 80, 22, 0.12),
+    0 8px 25px rgba(144, 238, 144, 0.08),
+    inset 0 1px 0 rgba(255, 255, 255, 0.9);
+  border: 2px solid rgba(144, 238, 144, 0.2);
+  position: relative;
+  overflow: hidden;
+}
+
+.emerald-table-section::before {
+  content: '';
+  position: absolute;
+  top: -2px;
+  left: -2px;
+  right: -2px;
+  bottom: -2px;
+  background: linear-gradient(45deg, 
+    #90ee90 0%, 
+    #98fb98 25%, 
+    #f0fff0 50%, 
+    #98fb98 75%, 
+    #90ee90 100%);
+  border-radius: 27px;
+  z-index: -1;
+  animation: borderGlow 4s ease-in-out infinite;
+}
+
+/* 表格样式 */
+.emerald-table {
+  width: 100%;
+  border-collapse: collapse;
+  font-family: 'Lora', serif;
+  background: transparent;
+}
+
+.emerald-table thead {
+  background: linear-gradient(135deg, #2d5016 0%, #4a7c59 100%);
+}
+
+.emerald-table th {
+  padding: 16px 20px;
+  text-align: left;
+  color: white;
+  font-weight: 600;
+  font-size: 16px;
+  letter-spacing: 1px;
+  border-bottom: 3px solid #90ee90;
+  position: relative;
+}
+
+.emerald-table th:first-child {
+  border-radius: 15px 0 0 0;
+}
+
+.emerald-table th:last-child {
+  border-radius: 0 15px 0 0;
+}
+
+.emerald-table tbody tr {
+  transition: all 0.3s ease;
+  border-bottom: 1px solid rgba(144, 238, 144, 0.2);
+}
+
+.emerald-table tbody tr:hover {
+  background: rgba(144, 238, 144, 0.1);
+  transform: translateX(5px);
+  box-shadow: 0 4px 15px rgba(144, 238, 144, 0.15);
+}
+
+.emerald-table td {
+  padding: 14px 20px;
+  color: #2d5016;
+  font-size: 15px;
+  vertical-align: middle;
+  transition: all 0.3s ease;
+}
+
+.emerald-table tbody tr:hover td {
+  color: #1a5c1a;
+}
+
+/* 表格链接样式 */
+.emerald-table a {
+  color: #2d5016;
+  text-decoration: none;
+  font-weight: 500;
+  transition: all 0.3s ease;
+  padding: 4px 8px;
+  border-radius: 8px;
+  display: inline-block;
+}
+
+.emerald-table a:hover {
+  color: #1a5c1a;
+  background: rgba(144, 238, 144, 0.2);
+  transform: translateY(-2px);
+  box-shadow: 0 4px 12px rgba(144, 238, 144, 0.3);
+}
+
+/* 响应式表格设计 */
+@media (max-width: 768px) {
+  .emerald-table-section {
+    margin: 20px 10px;
+    padding: 20px 15px;
+  }
+  
+  .emerald-table {
+    font-size: 14px;
+  }
+  
+  .emerald-table th,
+  .emerald-table td {
+    padding: 12px 15px;
+  }
+}
+
+@media (max-width: 480px) {
+  .emerald-table th,
+  .emerald-table td {
+    padding: 10px 12px;
+    font-size: 13px;
+  }
+}
diff --git a/front/src/HomePage.js b/front/src/HomePage.js
index a657a72..026f122 100644
--- a/front/src/HomePage.js
+++ b/front/src/HomePage.js
@@ -1,9 +1,9 @@
 import React from "react";
 import HomeIcon from "@mui/icons-material/Home";
 import MovieIcon from "@mui/icons-material/Movie";
-import EmailIcon from "@mui/icons-material/Email";
+import TvIcon from "@mui/icons-material/Tv";
 import MusicNoteIcon from "@mui/icons-material/MusicNote";
-import EmojiPeopleIcon from "@mui/icons-material/EmojiPeople";
+import AnimationIcon from "@mui/icons-material/Animation";
 import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
 import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
 import PersonIcon from "@mui/icons-material/Person";
@@ -11,21 +11,21 @@
 import ForumIcon from "@mui/icons-material/Forum";
 import HelpIcon from "@mui/icons-material/Help";
 import { useNavigate } from "react-router-dom";
-import "./App.css";
+import "./HomePage.css";
 
 // 导航栏
 const navItems = [
-    { label: "首页", icon: <HomeIcon />, path: "/home" },
-    { label: "电影", icon: <MovieIcon />, path: "/movie" },
-    { label: "剧集", icon: <EmailIcon />, path: "/tv" },
-    { label: "音乐", icon: <MusicNoteIcon />, path: "/music" },
-    { label: "动漫", icon: <EmojiPeopleIcon />, path: "/anime" },
-    { label: "游戏", icon: <SportsEsportsIcon />, path: "/game" },
-    { label: "体育", icon: <SportsMartialArtsIcon />, path: "/sport" },
-    { label: "资料", icon: <PersonIcon />, path: "/info" },
-    { label: "论坛", icon: <ForumIcon />, path: "/forum" },
-    { label: "发布", icon: <AccountCircleIcon />, path: "/publish" },
-    { label: "求种", icon: <HelpIcon />, path: "/begseed" },
+    { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+    { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+    { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+    { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+    { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+    { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+    { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+    { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+    { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+    { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+    { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
 ];
 
 // 示例种子数据
@@ -64,63 +64,98 @@
     const navigate = useNavigate();
 
     return (
-        <div className="container">
-            {/* 顶部空白与电影界面一致 */}
-            <div style={{ height: 80 }} />
-            {/* 用户栏 */}
-            <div className="user-bar" style={{ position: 'fixed', top: 18, right: 42, zIndex: 100, display: 'flex', alignItems: 'center', background: '#e0f3ff', borderRadius: 12, padding: '6px 18px', boxShadow: '0 2px 8px #b2d8ea', minWidth: 320, minHeight: 48, width: 420 }}>
-                <div style={{ cursor: 'pointer', marginRight: 16 }} onClick={() => navigate('/user')}>
-                    <AccountCircleIcon style={{ fontSize: 38, color: '#1a237e', background: '#e0f3ff', borderRadius: '50%' }} />
-                </div>
-                <div style={{ color: '#222', fontWeight: 500, marginRight: 24 }}>用户栏</div>
-                <div style={{ display: 'flex', gap: 28, flex: 1, justifyContent: 'flex-end', alignItems: 'center' }}>
-                    <span style={{ color: '#1976d2', fontWeight: 500 }}>魔力值: <b>12345</b></span>
-                    <span style={{ color: '#1976d2', fontWeight: 500 }}>分享率: <b>2.56</b></span>
-                    <span style={{ color: '#1976d2', fontWeight: 500 }}>上传量: <b>100GB</b></span>
-                    <span style={{ color: '#1976d2', fontWeight: 500 }}>下载量: <b>50GB</b></span>
-                </div>
+        <div className="emerald-home-container">
+            {/* 流星雨背景效果 */}
+            <div className="meteor-shower">
+                <div className="meteor">💫</div>
+                <div className="meteor">⭐</div>
+                <div className="meteor">✨</div>
+                <div className="meteor">🌟</div>
+                <div className="meteor">💫</div>
+                <div className="meteor">⭐</div>
+                <div className="meteor">✨</div>
+                <div className="meteor">🌟</div>
+                <div className="meteor">💫</div>
+                <div className="meteor">⭐</div>
             </div>
-            {/* 下方内容整体下移，留出与电影界面一致的间距 */}
-            <div style={{ height: 32 }} />
-            <nav className="nav-bar card">
-                {navItems.map((item) => (
-                    <div
-                        key={item.label}
-                        className={item.label === "首页" ? "nav-item active" : "nav-item"}
-                        onClick={() => navigate(item.path)}
-                    >
-                        {item.icon}
-                        <span>{item.label}</span>
+
+            {/* 浮动园林装饰元素 */}
+            <div className="floating-garden-elements">
+                <div className="garden-element">🌿</div>
+                <div className="garden-element">🦋</div>
+                <div className="garden-element">🌺</div>
+                <div className="garden-element">🌸</div>
+            </div>
+
+            <div className="emerald-content">
+                {/* NeuraFlux用户栏 */}
+                <div className="emerald-user-bar">
+                    <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+                        <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
                     </div>
-                ))}
-            </nav>
-            <div className="table-section card">
-                <table className="movie-table">
-                    <thead>
-                        <tr>
-                            <th>标签</th>
-                            <th>标题</th>
-                            <th>热度</th>
-                            <th>发布者</th>
-                        </tr>
-                    </thead>
-                    <tbody>
-                        {exampleSeeds.map((seed) => (
-                            <tr key={seed.id}>
-                                <td>{seed.tags}</td>
-                                <td>
-                                    <a href={`/torrent/${seed.id}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                                        {seed.title}
-                                    </a>
-                                </td>
-                                <td>{seed.popularity}</td>
-                                <td>{seed.user.username}</td>
+                    <div className="emerald-brand-section">
+                        <div className="emerald-brand-icon">⚡</div>
+                        <div className="emerald-user-label">NeuraFlux</div>
+                    </div>
+                    <div className="emerald-user-stats">
+                        <span className="emerald-stat-item">
+                            魔力值: <span className="emerald-stat-value">12,345</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            分享率: <span className="emerald-stat-value">2.56</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            上传: <span className="emerald-stat-value">100GB</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            下载: <span className="emerald-stat-value">50GB</span>
+                        </span>
+                    </div>
+                </div>
+
+                {/* NeuraFlux导航栏 */}
+                <nav className="emerald-nav-bar">
+                    {navItems.map((item) => (
+                        <div
+                            key={item.label}
+                            className={`emerald-nav-item ${item.label === "首页" ? "active" : ""}`}
+                            data-type={item.type}
+                            onClick={() => navigate(item.path)}
+                        >
+                            {item.icon}
+                            <span className="emerald-nav-label">{item.label}</span>
+                        </div>
+                    ))}
+                </nav>
+
+                {/* NeuraFlux种子列表 */}
+                <div className="emerald-table-section">
+                    <table className="emerald-table">
+                        <thead>
+                            <tr>
+                                <th>分类标签</th>
+                                <th>资源标题</th>
+                                <th>热门指数</th>
+                                <th>发布者</th>
                             </tr>
-                        ))}
-                    </tbody>
-                </table>
+                        </thead>
+                        <tbody>
+                            {exampleSeeds.map((seed) => (
+                                <tr key={seed.id}>
+                                    <td>{seed.tags}</td>
+                                    <td>
+                                        <a href={`/torrent/${seed.id}`}>
+                                            {seed.title}
+                                        </a>
+                                    </td>
+                                    <td>{seed.popularity}</td>
+                                    <td>{seed.user.username}</td>
+                                </tr>
+                            ))}
+                        </tbody>
+                    </table>
+                </div>
             </div>
-            <div style={{ height: 32 }} />
         </div>
     );
 }
\ No newline at end of file
diff --git a/front/src/InfoPage.js b/front/src/InfoPage.js
index cec0b4d..1164816 100644
--- a/front/src/InfoPage.js
+++ b/front/src/InfoPage.js
@@ -1,39 +1,40 @@
 import React, { useState, useEffect } from "react";
 import HomeIcon from "@mui/icons-material/Home";
 import MovieIcon from "@mui/icons-material/Movie";
-import EmailIcon from "@mui/icons-material/Email";
+import TvIcon from "@mui/icons-material/Tv";
 import MusicNoteIcon from "@mui/icons-material/MusicNote";
-import EmojiPeopleIcon from "@mui/icons-material/EmojiPeople";
+import AnimationIcon from "@mui/icons-material/Animation";
 import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
 import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
 import PersonIcon from "@mui/icons-material/Person";
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import ForumIcon from "@mui/icons-material/Forum";
 import HelpIcon from "@mui/icons-material/Help";
-import "./App.css";
+import "./SharedStyles.css";
 import { useNavigate } from "react-router-dom";
 import { API_BASE_URL } from "./config";
 
 const navItems = [
-  { label: "首页", icon: <HomeIcon />, path: "/home" },
-  { label: "电影", icon: <MovieIcon />, path: "/movie" },
-  { label: "剧集", icon: <EmailIcon />, path: "/tv" },
-  { label: "音乐", icon: <MusicNoteIcon />, path: "/music" },
-  { label: "动漫", icon: <EmojiPeopleIcon />, path: "/anime" },
-  { label: "游戏", icon: <SportsEsportsIcon />, path: "/game" },
-  { label: "体育", icon: <SportsMartialArtsIcon />, path: "/sport" },
-  { label: "资料", icon: <PersonIcon />, path: "/info" },
-  { label: "论坛", icon: <ForumIcon />, path: "/forum" },
-  { label: "发布", icon: <AccountCircleIcon />, path: "/publish" },
-  { label: "求种", icon: <HelpIcon />, path: "/begseed" },
+  { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+  { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+  { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+  { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+  { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+  { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+  { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+  { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+  { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+  { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+  { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
 ];
 
+// 资料地区标签
 const areaTabs = [
-  { label: "出版物", icon: <MovieIcon fontSize="small" /> },
-  { label: "学习教程", icon: <EmailIcon fontSize="small" /> },
-  { label: "素材模板", icon: <PersonIcon fontSize="small" /> },
-  { label: "演讲交流", icon: <EmojiPeopleIcon fontSize="small" /> },
-  { label: "日常娱乐", icon: <PersonIcon fontSize="small" /> },
+  { label: "出版物", value: "publication" },
+  { label: "学习教程", value: "tutorial" },
+  { label: "素材模板", value: "template" },
+  { label: "演讲交流", value: "speech" },
+  { label: "日常娱乐", value: "entertainment" }
 ];
 
 export default function InfoPage() {
@@ -93,126 +94,209 @@
       })
       .catch(() => setInfoList([]));
   };
-
   return (
-    <div className="container">
-      {/* 顶部空白与资料界面一致，用户栏绝对定位在页面右上角 */}
-      <div style={{ height: 80 }} />
-      <div className="user-bar" style={{ position: 'fixed', top: 18, right: 42, zIndex: 100, display: 'flex', alignItems: 'center', background: '#e0f3ff', borderRadius: 12, padding: '6px 18px', boxShadow: '0 2px 8px #b2d8ea', minWidth: 320, minHeight: 48, width: 420 }}>
-        <div style={{ cursor: 'pointer', marginRight: 16 }} onClick={() => navigate('/user')}>
-          {userInfo.avatar_url ? (
-            <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
-          ) : (
-            <AccountCircleIcon style={{ fontSize: 38, color: '#1a237e', background: '#e0f3ff', borderRadius: '50%' }} />
-          )}
-        </div>
-        <div style={{ color: '#222', fontWeight: 500, marginRight: 24 }}>{userInfo.username || '用户栏'}</div>
-        <div style={{ display: 'flex', gap: 28, flex: 1, justifyContent: 'flex-end', alignItems: 'center' }}>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>魔力值: <b>{userPT.magic}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>分享率: <b>{userPT.ratio}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>上传量: <b>{userPT.upload}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>下载量: <b>{userPT.download}</b></span>
-        </div>
+    <div className="emerald-home-container">
+      {/* 流星雨背景效果 */}
+      <div className="meteor-shower">
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
       </div>
-      {/* 下方内容整体下移，留出与资料界面一致的间距 */}
-      <div style={{ height: 32 }} />
-      <nav className="nav-bar card">
-        {navItems.map((item) => (
-          <div
-            key={item.label}
-            className={item.label === "资料" ? "nav-item active" : "nav-item"}
-            onClick={() => navigate(item.path)}
-          >
-            {item.icon}
-            <span>{item.label}</span>
-          </div>
-        ))}
-      </nav>
-      <div className="search-section card">
-        <input
-          className="search-input"
-          placeholder="输入搜索关键词"
-          value={searchText}
-          onChange={e => setSearchText(e.target.value)}
-        />
-        <button className="search-btn" onClick={handleSearch}>
-          <span role="img" aria-label="search">🔍</span>
-        </button>
+
+      {/* 浮动园林装饰元素 */}
+      <div className="floating-garden-elements">
+        <div className="garden-element">🌿</div>
+        <div className="garden-element">🦋</div>
+        <div className="garden-element">🌺</div>
+        <div className="garden-element">🌸</div>
       </div>
-      <div className="area-tabs" style={{ display: 'flex', justifyContent: 'center', gap: 24, margin: '18px 0' }}>
-        {areaTabs.map((tab, idx) => (
-          <div
-            key={tab.label}
-            className={activeTab === idx ? "area-tab active" : "area-tab"}
-            onClick={() => setActiveTab(idx)}
-          >
-            {tab.icon} <span>{tab.label}</span>
-          </div>
-        ))}
-      </div>
-      <div className="table-section">
-        <table className="info-table">
-          <thead>
-            <tr>
-              <th>资料类型</th>
-              <th>标题</th>
-              <th>发布者</th>
-              <th>大小</th>
-              <th>热度</th>
-              <th>折扣倍率</th>
-            </tr>
-          </thead>
-          <tbody>
-            {infoList.length > 0 ? (
-              infoList.map((item, index) => (
-                <tr key={item.id || index}>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.seedtag}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.title}
-                    </a>
-                  </td>
-                  <td>{item.username}</td>
-                  <td>{item.seedsize}</td>
-                  <td>{item.downloadtimes}</td>
-                  <td>{item.discount == null ? 1 : item.discount}</td>
-                </tr>
-              ))
+
+      <div className="emerald-content">
+        {/* NeuraFlux用户栏 */}
+        <div className="emerald-user-bar">
+          <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+            {userInfo.avatar_url ? (
+              <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
             ) : (
-              infoTypes.map((type, index) => (
-                <tr key={type}>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {type}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      种子{index + 1}
-                    </a>
-                  </td>
-                  <td>发布者{index + 1}</td>
-                  <td>--</td>
-                  <td>--</td>
-                  <td>1</td>
-                </tr>
-              ))
+              <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
             )}
-          </tbody>
-        </table>
+          </div>
+          <div className="emerald-brand-section">
+            <div className="emerald-brand-icon">⚡</div>
+            <div className="emerald-user-label">NeuraFlux</div>
+          </div>
+          <div className="emerald-user-stats">
+            <span className="emerald-stat-item">
+              魔力值: <span className="emerald-stat-value">{userPT.magic}</span>
+            </span>
+            <span className="emerald-stat-item">
+              分享率: <span className="emerald-stat-value">{userPT.ratio}</span>
+            </span>
+            <span className="emerald-stat-item">
+              上传: <span className="emerald-stat-value">{userPT.upload}GB</span>
+            </span>
+            <span className="emerald-stat-item">
+              下载: <span className="emerald-stat-value">{userPT.download}GB</span>
+            </span>
+          </div>
+        </div>
+
+        {/* NeuraFlux导航栏 */}
+        <nav className="emerald-nav-bar">
+          {navItems.map((item) => (
+            <div
+              key={item.label}
+              className={`emerald-nav-item ${item.label === "资料" ? "active" : ""}`}
+              data-type={item.type}
+              onClick={() => navigate(item.path)}
+            >
+              {item.icon}
+              <span className="emerald-nav-label">{item.label}</span>
+            </div>
+          ))}
+        </nav>
+
+        {/* 资料内容区域 */}
+        <div className="emerald-content-section">
+          <h1 className="emerald-page-title">📚 资料资源</h1>
+          <p style={{ textAlign: 'center', color: '#2d5016', fontSize: '18px', marginBottom: '30px' }}>
+            欢迎来到NeuraFlux资料频道，这里有最新最热门的学习和资料资源
+          </p>
+          
+          {/* 搜索栏 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px'
+          }}>
+            <input
+              type="text"
+              placeholder="搜索资料资源..."
+              value={searchText}
+              onChange={(e) => setSearchText(e.target.value)}
+              style={{
+                padding: '12px 20px',
+                borderRadius: '20px',
+                border: '2px solid rgba(144, 238, 144, 0.3)',
+                background: 'rgba(240, 255, 240, 0.5)',
+                fontSize: '16px',
+                width: '300px',
+                fontFamily: 'Lora, serif'
+              }}
+            />
+            <button
+              onClick={handleSearch}
+              style={{
+                padding: '12px 24px',
+                borderRadius: '20px',
+                border: 'none',
+                background: 'linear-gradient(135deg, #2d5016 0%, #90ee90 100%)',
+                color: 'white',
+                fontSize: '16px',
+                cursor: 'pointer',
+                fontFamily: 'Lora, serif'
+              }}
+            >
+              搜索
+            </button>
+          </div>
+
+          {/* 地区分类标签 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px',
+            flexWrap: 'wrap'
+          }}>
+            {areaTabs.map((tab, index) => (
+              <button
+                key={tab.value}
+                onClick={() => setActiveTab(index)}
+                style={{
+                  padding: '10px 20px',
+                  borderRadius: '15px',
+                  border: '2px solid rgba(144, 238, 144, 0.3)',
+                  background: activeTab === index 
+                    ? 'linear-gradient(135deg, #90ee90 0%, #2d5016 100%)' 
+                    : 'rgba(240, 255, 240, 0.3)',
+                  color: activeTab === index ? 'white' : '#2d5016',
+                  fontSize: '14px',
+                  cursor: 'pointer',
+                  fontFamily: 'Lora, serif',
+                  transition: 'all 0.3s ease'
+                }}
+              >
+                {tab.label}
+              </button>
+            ))}
+          </div>
+
+          {/* 资料列表 */}
+          <div className="emerald-table-section">
+            <table className="emerald-table">
+              <thead>
+                <tr>
+                  <th>资料类型</th>
+                  <th>标题</th>
+                  <th>发布者</th>
+                  <th>大小</th>
+                  <th>热度</th>
+                  <th>折扣倍率</th>
+                </tr>
+              </thead>
+              <tbody>
+                {infoList.length > 0 ? (
+                  infoList.map((item, index) => (
+                    <tr key={item.id || index}>
+                      <td>{item.seedtag}</td>
+                      <td>
+                        <a href={`/torrent/${item.seedid}`}>
+                          {item.title}
+                        </a>
+                      </td>
+                      <td>{item.username}</td>
+                      <td>{item.seedsize}</td>
+                      <td>{item.downloadtimes}</td>
+                      <td>{item.discount == null ? 1 : item.discount}</td>
+                    </tr>
+                  ))
+                ) : (
+                  infoTypes.map((type, index) => (
+                    <tr key={type}>
+                      <td>{type}</td>
+                      <td>
+                        <a href={`/torrent/${type}`}>
+                          种子{index + 1}
+                        </a>
+                      </td>
+                      <td>发布者{index + 1}</td>
+                      <td>--</td>
+                      <td>--</td>
+                      <td>1</td>
+                    </tr>
+                  ))
+                )}
+              </tbody>
+            </table>
+          </div>
+        </div>
       </div>
-      <div style={{ height: 32 }} />
-      <Pagination />
     </div>
   );
 }
 
+// Pagination组件暂时不使用
 function Pagination() {
-  const [page, setPage] = React.useState(3);
+  const [page, setPage] = useState(3);
   const total = 5;
   return (
     <div className="pagination">
diff --git a/front/src/LoginPage.css b/front/src/LoginPage.css
new file mode 100644
index 0000000..ced4dae
--- /dev/null
+++ b/front/src/LoginPage.css
@@ -0,0 +1,467 @@
+/* 翡翠庄园 - 欧式园林风格登录页面样式 */
+
+/* 引入Google字体 */
+@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Lora:wght@400;500;600&display=swap');
+
+/* 页面基础样式 */
+.garden-login-page {
+  min-height: 100vh;
+  background: linear-gradient(135deg, #2d5016 0%, #4a7c59 20%, #8fbc8f 40%, #98fb98 60%, #f0fff0 100%);
+  position: relative;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  overflow: hidden;
+  font-family: 'Lora', serif;
+}
+
+/* 背景装饰元素 */
+.garden-login-page::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: 
+    radial-gradient(circle at 20% 80%, rgba(255, 255, 255, 0.1) 0%, transparent 50%),
+    radial-gradient(circle at 80% 20%, rgba(255, 255, 255, 0.08) 0%, transparent 50%),
+    radial-gradient(circle at 40% 40%, rgba(144, 238, 144, 0.1) 0%, transparent 50%);
+  animation: backgroundShift 20s ease-in-out infinite;
+}
+
+/* 浮动花瓣动画 */
+.floating-petals {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  pointer-events: none;
+  overflow: hidden;
+}
+
+.petal {
+  position: absolute;
+  font-size: 20px;
+  animation: fall linear infinite;
+  opacity: 0.7;
+}
+
+.petal:nth-child(1) { left: 10%; animation-duration: 8s; animation-delay: 0s; }
+.petal:nth-child(2) { left: 20%; animation-duration: 12s; animation-delay: 2s; }
+.petal:nth-child(3) { left: 30%; animation-duration: 10s; animation-delay: 4s; }
+.petal:nth-child(4) { left: 40%; animation-duration: 14s; animation-delay: 1s; }
+.petal:nth-child(5) { left: 50%; animation-duration: 9s; animation-delay: 3s; }
+.petal:nth-child(6) { left: 60%; animation-duration: 11s; animation-delay: 5s; }
+.petal:nth-child(7) { left: 70%; animation-duration: 13s; animation-delay: 0.5s; }
+.petal:nth-child(8) { left: 80%; animation-duration: 15s; animation-delay: 2.5s; }
+
+/* 登录表单容器 */
+.garden-login-container {
+  width: 420px;
+  padding: 50px 40px 60px;
+  background: rgba(255, 255, 255, 0.95);
+  backdrop-filter: blur(20px);
+  border-radius: 25px;
+  box-shadow: 
+    0 20px 60px rgba(0, 0, 0, 0.15),
+    0 8px 25px rgba(45, 80, 22, 0.1),
+    inset 0 1px 0 rgba(255, 255, 255, 0.9);
+  position: relative;
+  border: 2px solid rgba(144, 238, 144, 0.2);
+  animation: containerFloat 6s ease-in-out infinite;
+}
+
+/* 装饰边框 */
+.garden-login-container::before {
+  content: '';
+  position: absolute;
+  top: -2px;
+  left: -2px;
+  right: -2px;
+  bottom: -2px;
+  background: linear-gradient(45deg, 
+    #90ee90 0%, 
+    #98fb98 25%, 
+    #f0fff0 50%, 
+    #98fb98 75%, 
+    #90ee90 100%);
+  border-radius: 27px;
+  z-index: -1;
+  animation: borderGlow 4s ease-in-out infinite;
+}
+
+/* 顶部装饰图标 */
+.garden-icon {
+  text-align: center;
+  margin-bottom: 30px;
+  font-size: 48px;
+  animation: iconPulse 3s ease-in-out infinite;
+}
+
+/* 标题样式 */
+.garden-title {
+  text-align: center;
+  margin-bottom: 40px;
+  color: #2d5016;
+  font-family: 'Playfair Display', serif;
+  font-weight: 700;
+  font-size: 36px;
+  letter-spacing: 3px;
+  text-shadow: 0 2px 4px rgba(45, 80, 22, 0.1);
+  position: relative;
+}
+
+.garden-title::after {
+  content: '';
+  position: absolute;
+  bottom: -10px;
+  left: 50%;
+  transform: translateX(-50%);
+  width: 80px;
+  height: 3px;
+  background: linear-gradient(90deg, #90ee90, #2d5016, #90ee90);
+  border-radius: 2px;
+}
+
+/* 表单组样式 */
+.garden-form-group {
+  margin-bottom: 28px;
+  position: relative;
+}
+
+.garden-label {
+  display: block;
+  margin-bottom: 10px;
+  color: #2d5016;
+  font-weight: 600;
+  font-size: 16px;
+  letter-spacing: 1px;
+  transition: color 0.3s ease;
+}
+
+.garden-input {
+  width: 100%;
+  padding: 16px 20px;
+  border: 2px solid rgba(144, 238, 144, 0.3);
+  border-radius: 15px;
+  font-size: 16px;
+  font-family: 'Lora', serif;
+  background: rgba(240, 255, 240, 0.5);
+  transition: all 0.3s ease;
+  outline: none;
+  box-sizing: border-box;
+}
+
+.garden-input:focus {
+  border-color: #90ee90;
+  background: rgba(240, 255, 240, 0.8);
+  box-shadow: 
+    0 0 0 4px rgba(144, 238, 144, 0.1),
+    0 8px 25px rgba(144, 238, 144, 0.15);
+  transform: translateY(-2px);
+}
+
+.garden-input::placeholder {
+  color: #8fbc8f;
+  font-style: italic;
+}
+
+/* 输入框图标 */
+.garden-input-icon {
+  position: absolute;
+  right: 15px;
+  top: 50%;
+  transform: translateY(-50%);
+  font-size: 18px;
+  color: #8fbc8f;
+  transition: all 0.3s ease;
+}
+
+.garden-form-group:focus-within .garden-input-icon {
+  color: #2d5016;
+  animation: iconBounce 0.5s ease;
+}
+
+/* 错误信息样式 */
+.garden-error {
+  color: #dc3545;
+  text-align: center;
+  margin-bottom: 20px;
+  font-weight: 500;
+  font-size: 14px;
+  padding: 10px;
+  background: rgba(220, 53, 69, 0.1);
+  border-radius: 10px;
+  border-left: 4px solid #dc3545;
+  animation: errorShake 0.5s ease;
+}
+
+/* 按钮容器 */
+.garden-button-group {
+  display: flex;
+  flex-direction: column;
+  gap: 16px;
+  margin-top: 35px;
+  align-items: center;
+}
+
+/* 按钮基础样式 */
+.garden-button {
+  width: 160px;
+  padding: 14px 0;
+  border: none;
+  border-radius: 25px;
+  font-family: 'Lora', serif;
+  font-weight: 600;
+  font-size: 16px;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  position: relative;
+  overflow: hidden;
+  letter-spacing: 1px;
+  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1);
+}
+
+.garden-button::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: -100%;
+  width: 100%;
+  height: 100%;
+  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
+  transition: left 0.6s ease;
+}
+
+.garden-button:hover::before {
+  left: 100%;
+}
+
+/* 登录按钮 */
+.garden-login-btn {
+  background: linear-gradient(135deg, #2d5016 0%, #4a7c59 50%, #90ee90 100%);
+  color: white;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
+}
+
+.garden-login-btn:hover {
+  transform: translateY(-3px);
+  box-shadow: 
+    0 10px 30px rgba(45, 80, 22, 0.3),
+    0 4px 15px rgba(144, 238, 144, 0.2);
+}
+
+.garden-login-btn:active {
+  transform: translateY(-1px);
+}
+
+/* 注册按钮 */
+.garden-register-btn {
+  background: linear-gradient(135deg, #f0fff0 0%, #98fb98 50%, #90ee90 100%);
+  color: #2d5016;
+  border: 2px solid rgba(144, 238, 144, 0.3);
+}
+
+.garden-register-btn:hover {
+  transform: translateY(-3px);
+  background: linear-gradient(135deg, #98fb98 0%, #90ee90 50%, #2d5016 100%);
+  color: white;
+  box-shadow: 
+    0 10px 30px rgba(144, 238, 144, 0.3),
+    0 4px 15px rgba(45, 80, 22, 0.2);
+}
+
+/* 装饰性元素 */
+.garden-decoration {
+  position: absolute;
+  font-size: 24px;
+  opacity: 0.3;
+  animation: decorationFloat 4s ease-in-out infinite;
+}
+
+.garden-decoration.top-left {
+  top: 20px;
+  left: 20px;
+  animation-delay: 0s;
+}
+
+.garden-decoration.top-right {
+  top: 20px;
+  right: 20px;
+  animation-delay: 1s;
+}
+
+.garden-decoration.bottom-left {
+  bottom: 20px;
+  left: 20px;
+  animation-delay: 2s;
+}
+
+.garden-decoration.bottom-right {
+  bottom: 20px;
+  right: 20px;
+  animation-delay: 3s;
+}
+
+/* 动画定义 */
+@keyframes backgroundShift {
+  0%, 100% { opacity: 1; }
+  50% { opacity: 0.8; }
+}
+
+@keyframes fall {
+  0% {
+    transform: translateY(-100vh) rotate(0deg);
+    opacity: 0;
+  }
+  10% {
+    opacity: 0.7;
+  }
+  90% {
+    opacity: 0.7;
+  }
+  100% {
+    transform: translateY(100vh) rotate(360deg);
+    opacity: 0;
+  }
+}
+
+@keyframes containerFloat {
+  0%, 100% {
+    transform: translateY(0px);
+  }
+  50% {
+    transform: translateY(-10px);
+  }
+}
+
+@keyframes borderGlow {
+  0%, 100% {
+    opacity: 0.6;
+  }
+  50% {
+    opacity: 1;
+  }
+}
+
+@keyframes iconPulse {
+  0%, 100% {
+    transform: scale(1);
+  }
+  50% {
+    transform: scale(1.1);
+  }
+}
+
+@keyframes iconBounce {
+  0%, 100% {
+    transform: translateY(-50%) scale(1);
+  }
+  50% {
+    transform: translateY(-50%) scale(1.2);
+  }
+}
+
+@keyframes errorShake {
+  0%, 100% { transform: translateX(0); }
+  25% { transform: translateX(-5px); }
+  75% { transform: translateX(5px); }
+}
+
+@keyframes decorationFloat {
+  0%, 100% {
+    transform: translateY(0px) rotate(0deg);
+  }
+  33% {
+    transform: translateY(-10px) rotate(120deg);
+  }
+  66% {
+    transform: translateY(-5px) rotate(240deg);
+  }
+}
+
+/* 响应式设计 */
+@media (max-width: 768px) {
+  .garden-login-container {
+    width: 90%;
+    max-width: 380px;
+    padding: 40px 30px 50px;
+  }
+  
+  .garden-title {
+    font-size: 28px;
+    letter-spacing: 2px;
+  }
+  
+  .petal {
+    font-size: 16px;
+  }
+}
+
+@media (max-width: 480px) {
+  .garden-login-container {
+    padding: 30px 20px 40px;
+  }
+  
+  .garden-title {
+    font-size: 24px;
+    letter-spacing: 1px;
+  }
+  
+  .garden-button {
+    width: 140px;
+    padding: 12px 0;
+    font-size: 14px;
+  }
+}
+
+/* 加载动画 */
+@keyframes fadeInUp {
+  from {
+    opacity: 0;
+    transform: translateY(30px);
+  }
+  to {
+    opacity: 1;
+    transform: translateY(0);
+  }
+}
+
+.garden-login-container {
+  animation: fadeInUp 0.8s ease-out;
+}
+
+/* 键盘导航优化 */
+.garden-button:focus,
+.garden-input:focus {
+  outline: 3px solid rgba(144, 238, 144, 0.5);
+  outline-offset: 2px;
+}
+
+/* 深色模式支持 */
+@media (prefers-color-scheme: dark) {
+  .garden-login-page {
+    background: linear-gradient(135deg, #1a2f0a 0%, #2d5016 20%, #4a7c59 40%, #5a8a5a 60%, #6b9b6b 100%);
+  }
+  
+  .garden-login-container {
+    background: rgba(30, 40, 20, 0.95);
+    color: #e0e7ff;
+  }
+  
+  .garden-title {
+    color: #90ee90;
+  }
+  
+  .garden-label {
+    color: #98fb98;
+  }
+  
+  .garden-input {
+    background: rgba(45, 80, 22, 0.3);
+    color: #f0fff0;
+    border-color: rgba(144, 238, 144, 0.4);
+  }
+}
diff --git a/front/src/LoginPage.js b/front/src/LoginPage.js
index 31718d1..b6bdcf3 100644
--- a/front/src/LoginPage.js
+++ b/front/src/LoginPage.js
@@ -1,7 +1,6 @@
 import React, { useState } from 'react';
 import { useNavigate } from 'react-router-dom';
-import { Input } from 'antd';
-import './App.css';
+import './LoginPage.css';
 import { API_BASE_URL } from './config';
 
 const LoginPage = () => {
@@ -75,56 +74,78 @@
       } catch { }
     }
   }, []);
-
   return (
-    <div className="login-page" style={{ minHeight: '100vh', background: 'linear-gradient(135deg, #e0e7ff 0%, #f0f8ff 100%)', display: 'flex', justifyContent: 'center', alignItems: 'center' }}>
-      <div className="login-form-container" style={{ width: 360, padding: '40px 32px 80px 32px', borderRadius: 18, boxShadow: '0 8px 32px rgba(60, 80, 180, 0.10)', background: '#fff', position: 'relative' }}>
-        <h1 style={{ textAlign: 'center', marginBottom: 32, color: '#222', fontWeight: 700, fontSize: 32, letterSpacing: 2 }}>欢迎登录</h1>
-        <form className="login-form">
-          <div className="form-row" style={{ marginBottom: 24 }}>
-            <label htmlFor="username" style={{ display: 'block', marginBottom: 8, color: '#333', fontWeight: 500, fontSize: 16 }}>邮箱</label>
-            <Input
-              placeholder="请输入邮箱"
+    <div className="garden-login-page">
+      {/* 浮动花瓣装饰 */}
+      <div className="floating-petals">
+        <div className="petal">🌸</div>
+        <div className="petal">🌺</div>
+        <div className="petal">🌼</div>
+        <div className="petal">🌷</div>
+        <div className="petal">🌹</div>
+        <div className="petal">🌻</div>
+        <div className="petal">🌸</div>
+        <div className="petal">🌺</div>
+      </div>
+
+      <div className="garden-login-container">
+        {/* 装饰性元素 */}
+        <div className="garden-decoration top-left">🌿</div>
+        <div className="garden-decoration top-right">🦋</div>
+        <div className="garden-decoration bottom-left">🌱</div>
+        <div className="garden-decoration bottom-right">🌳</div>        {/* 顶部图标 */}
+        <div className="garden-icon">⚡</div>
+        
+        <h1 className="garden-title">NeuraFlux</h1>
+        
+        <form className="garden-form">
+          <div className="garden-form-group">
+            <label htmlFor="username" className="garden-label">邮箱地址</label>
+            <input
+              type="email"
+              className="garden-input"
+              placeholder="请输入您的邮箱地址"
               id="username"
               name="username"
               value={formData.username}
               onChange={handleChange}
               required
-              style={{ width: '100%', padding: '12px', borderRadius: 8, fontSize: 16, background: '#f7faff' }}
             />
+            <div className="garden-input-icon">📧</div>
           </div>
-          <div className="form-row" style={{ marginBottom: 24 }}>
-            <label htmlFor="password" style={{ display: 'block', marginBottom: 8, color: '#333', fontWeight: 500, fontSize: 16 }}>密码</label>
-            <div style={{ display: 'flex', alignItems: 'center' }}>
-              <Input
-                placeholder="请输入密码"
-                type="password"
-                id="password"
-                name="password"
-                value={formData.password}
-                onChange={handleChange}
-                required
-                style={{ flex: 1, padding: '12px', borderRadius: 8, fontSize: 16, background: '#f7faff' }}
-              />
+          
+          <div className="garden-form-group">
+            <label htmlFor="password" className="garden-label">密码</label>
+            <input
+              type="password"
+              className="garden-input"
+              placeholder="请输入您的密码"
+              id="password"
+              name="password"
+              value={formData.password}
+              onChange={handleChange}
+              required
+            />
+            <div className="garden-input-icon">🔒</div>
+          </div>
+          
+          {errorMessage && (
+            <div className="garden-error">
+              {errorMessage}
             </div>
-          </div>
-          {errorMessage && <p style={{ color: '#e53935', textAlign: 'center', marginBottom: 18, fontWeight: 500 }}>{errorMessage}</p>}
-          <div className="form-row button-row" style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', marginTop: 32, position: 'static', gap: 16 }}>
-            <button
+          )}
+          
+          <div className="garden-button-group">            <button
               type="button"
-              className="login-button"
-              onClick={handleLogin}
-              style={{ width: 120, padding: '10px 0', borderRadius: 8, border: 'none', background: 'linear-gradient(90deg, #34c759 0%, #5be584 100%)', color: '#fff', fontWeight: 600, fontSize: 16, cursor: 'pointer', boxShadow: '0 2px 8px #b2eac2', marginBottom: 12 }}
-            >
-              登录
+              className="garden-button garden-login-btn"
+              onClick={handleLogin}            >
+              接入神经网络
             </button>
             <button
               type="button"
-              className="register-button"
-              onClick={handleRegister}
-              style={{ width: 120, padding: '10px 0', borderRadius: 8, border: 'none', background: 'linear-gradient(90deg, #4f8cff 0%, #6ad1ff 100%)', color: '#fff', fontWeight: 600, fontSize: 16, cursor: 'pointer', boxShadow: '0 2px 8px #b2d8ea' }}
-            >
-              注册
+              className="garden-button garden-register-btn"
+              onClick={handleRegister}            >
+              注册神经节点
             </button>
           </div>
         </form>
diff --git a/front/src/MoviePage.js b/front/src/MoviePage.js
index 79f2c8b..421e0dd 100644
--- a/front/src/MoviePage.js
+++ b/front/src/MoviePage.js
@@ -1,223 +1,173 @@
 import React, { useState, useEffect } from "react";
 import HomeIcon from "@mui/icons-material/Home";
 import MovieIcon from "@mui/icons-material/Movie";
-import EmailIcon from "@mui/icons-material/Email";
+import TvIcon from "@mui/icons-material/Tv";
 import MusicNoteIcon from "@mui/icons-material/MusicNote";
-import EmojiPeopleIcon from "@mui/icons-material/EmojiPeople";
+import AnimationIcon from "@mui/icons-material/Animation";
 import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
 import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
 import PersonIcon from "@mui/icons-material/Person";
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import ForumIcon from "@mui/icons-material/Forum";
 import HelpIcon from "@mui/icons-material/Help";
-import "./App.css";
 import { useNavigate } from "react-router-dom";
+import "./SharedStyles.css";
 import { API_BASE_URL } from "./config";
 
+// 导航栏
 const navItems = [
-  { label: "首页", icon: <HomeIcon />, path: "/home" },
-  { label: "电影", icon: <MovieIcon />, path: "/movie" },
-  { label: "剧集", icon: <EmailIcon />, path: "/tv" },
-  { label: "音乐", icon: <MusicNoteIcon />, path: "/music" },
-  { label: "动漫", icon: <EmojiPeopleIcon />, path: "/anime" },
-  { label: "游戏", icon: <SportsEsportsIcon />, path: "/game" },
-  { label: "体育", icon: <SportsMartialArtsIcon />, path: "/sport" },
-  { label: "资料", icon: <PersonIcon />, path: "/info" },
-  { label: "论坛", icon: <ForumIcon />, path: "/forum" },
-  { label: "发布", icon: <AccountCircleIcon />, path: "/publish" },
-  { label: "求种", icon: <HelpIcon />, path: "/begseed" },
+    { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+    { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+    { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+    { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+    { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+    { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+    { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+    { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+    { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+    { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+    { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
 ];
 
+// 电影地区标签
 const areaTabs = [
-  { label: "大陆", icon: <MovieIcon fontSize="small" /> },
-  { label: "港台", icon: <EmailIcon fontSize="small" /> },
-  { label: "欧美", icon: <PersonIcon fontSize="small" /> },
-  { label: "日韩", icon: <EmojiPeopleIcon fontSize="small" /> },
+    { label: "华语电影", value: "chinese" },
+    { label: "港台电影", value: "hk_tw" },
+    { label: "欧美电影", value: "western" },
+    { label: "日韩电影", value: "jp_kr" },
+    { label: "其他电影", value: "others" }
 ];
 
 export default function MoviePage() {
-  const navigate = useNavigate();
-  const [searchText, setSearchText] = React.useState('');
-  const [userInfo, setUserInfo] = useState({ avatar_url: '', username: '' });
-  const [userPT, setUserPT] = useState({ magic: 0, ratio: 0, upload: 0, download: 0 });
-  const [activeTab, setActiveTab] = React.useState(0);
-  const [movieList, setMovieList] = React.useState([]);
+    const navigate = useNavigate();
+    const [searchText, setSearchText] = React.useState('');
+    const [userInfo, setUserInfo] = useState({ avatar_url: '', username: '' });
+    const [userPT, setUserPT] = useState({ magic: 0, ratio: 0, upload: 0, download: 0 });
+    const [activeTab, setActiveTab] = React.useState(0);
+    const [movieList, setMovieList] = React.useState([]);
 
-  useEffect(() => {
-    const match = document.cookie.match('(^|;)\\s*userId=([^;]+)');
-    const userId = match ? match[2] : null;
-    if (!userId) return;
-    fetch(`${API_BASE_URL}/api/get-userpt?userid=${encodeURIComponent(userId)}`)
-      .then(res => res.json())
-      .then(data => {
-        setUserInfo({ avatar_url: data.user.avatar_url, username: data.user.username });
-        setUserPT({
-          magic: data.magic_value || data.magic || 0,
-          ratio: data.share_ratio || data.share || 0,
-          upload: data.upload_amount || data.upload || 0,
-          download: data.download_amount || data.download || 0,
-        });
-      })
-      .catch(err => console.error('Fetching user profile failed', err));
-  }, []);
+    useEffect(() => {
+        const match = document.cookie.match('(^|;)\\s*userId=([^;]+)');
+        const userId = match ? match[2] : null;
+        if (!userId) return;
+        fetch(`${API_BASE_URL}/api/get-userpt?userid=${encodeURIComponent(userId)}`)
+            .then(res => res.json())
+            .then(data => {
+                setUserInfo({ avatar_url: data.user.avatar_url, username: data.user.username });
+                setUserPT({
+                    magic: data.magic_value || data.magic || 0,
+                    ratio: data.share_ratio || data.share || 0,
+                    upload: data.upload_amount || data.upload || 0,
+                    download: data.download_amount || data.download || 0,
+                });
+            })
+            .catch(err => console.error('Fetching user profile failed', err));
+    }, []);
 
-  // 每个tab对应的电影类型
-  const movieTypesList = [
-    ["华语电影（大陆）", "欧美电影", "日韩电影", "港台电影", "其他"], // 大陆
-    ["港台动作", "港台爱情", "港台喜剧", "港台其他"], // 港台
-    ["欧美动作", "欧美科幻", "欧美剧情", "欧美其他"], // 欧美
-    ["日韩动画", "日韩爱情", "日韩其他"], // 日韩
-    ["其他类型1", "其他类型2"] // 其他
-  ];
-  const movieTypes = movieTypesList[activeTab] || [];
+    // 每个tab对应的电影类型
+    const movieTypesList = [
+        ["华语电影（大陆）", "欧美电影", "日韩电影", "港台电影", "其他"], // 大陆
+        ["港台动作", "港台爱情", "港台喜剧", "港台其他"], // 港台
+        ["欧美动作", "欧美科幻", "欧美剧情", "欧美其他"], // 欧美
+        ["日韩动画", "日韩爱情", "日韩其他"], // 日韩
+        ["其他类型1", "其他类型2"] // 其他
+    ];
+    const movieTypes = movieTypesList[activeTab] || [];
 
-  React.useEffect(() => {
-    const area = areaTabs[activeTab].label;
-    fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
-      .then(res => res.json())
-      .then(data => {
-        setMovieList(data);
-      })
-      .catch(() => setMovieList([]));
-  }, [activeTab]);
+    React.useEffect(() => {
+        const area = areaTabs[activeTab].label;
+        fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+            .then(res => res.json())
+            .then(data => {
+                setMovieList(data);
+            })
+            .catch(() => setMovieList([]));
+    }, [activeTab]);
 
-  // 搜索按钮处理
-  const handleSearch = () => {
-    const area = areaTabs[activeTab].label;
-    fetch(`${API_BASE_URL}/api/search-seeds?tag=${encodeURIComponent(area)}&keyword=${encodeURIComponent(searchText)}`)
-      .then(res => res.json())
-      .then(data => {
-        setMovieList(data);
-      })
-      .catch(() => setMovieList([]));
-  };
+    // 搜索按钮处理
+    const handleSearch = () => {
+        const area = areaTabs[activeTab].label;
+        fetch(`${API_BASE_URL}/api/search-seeds?tag=${encodeURIComponent(area)}&keyword=${encodeURIComponent(searchText)}`)
+            .then(res => res.json())
+            .then(data => {
+                setMovieList(data);
+            })
+            .catch(() => setMovieList([]));
+    };
 
-  return (
-    <div className="container">
-      {/* 顶部空白与音乐界面一致，用户栏绝对定位在页面右上角 */}
-      <div style={{ height: 80 }} />
-      <div className="user-bar" style={{ position: 'fixed', top: 18, right: 42, zIndex: 100, display: 'flex', alignItems: 'center', background: '#e0f3ff', borderRadius: 12, padding: '6px 18px', boxShadow: '0 2px 8px #b2d8ea', minWidth: 320, minHeight: 48, width: 420 }}>
-        <div style={{ cursor: 'pointer', marginRight: 16 }} onClick={() => navigate('/user')}>
-          {userInfo.avatar_url ? (
-            <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
-          ) : (
-            <AccountCircleIcon style={{ fontSize: 38, color: '#1a237e', background: '#e0f3ff', borderRadius: '50%' }} />
-          )}
+    return (
+        <div className="emerald-home-container">
+            {/* 流星雨背景效果 */}
+            <div className="meteor-shower">
+                <div className="meteor">💫</div>
+                <div className="meteor">⭐</div>
+                <div className="meteor">✨</div>
+                <div className="meteor">🌟</div>
+                <div className="meteor">💫</div>
+                <div className="meteor">⭐</div>
+                <div className="meteor">✨</div>
+                <div className="meteor">🌟</div>
+                <div className="meteor">💫</div>
+                <div className="meteor">⭐</div>
+            </div>
+
+            {/* 浮动园林装饰元素 */}
+            <div className="floating-garden-elements">
+                <div className="garden-element">🌿</div>
+                <div className="garden-element">🦋</div>
+                <div className="garden-element">🌺</div>
+                <div className="garden-element">🌸</div>
+            </div>
+
+            <div className="emerald-content">
+                {/* NeuraFlux用户栏 */}
+                <div className="emerald-user-bar">
+                    <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+                        <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
+                    </div>
+                    <div className="emerald-brand-section">
+                        <div className="emerald-brand-icon">⚡</div>
+                        <div className="emerald-user-label">NeuraFlux</div>
+                    </div>
+                    <div className="emerald-user-stats">
+                        <span className="emerald-stat-item">
+                            魔力值: <span className="emerald-stat-value">12,345</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            分享率: <span className="emerald-stat-value">2.56</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            上传: <span className="emerald-stat-value">100GB</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            下载: <span className="emerald-stat-value">50GB</span>
+                        </span>
+                    </div>
+                </div>
+
+                {/* NeuraFlux导航栏 */}
+                <nav className="emerald-nav-bar">
+                    {navItems.map((item) => (
+                        <div
+                            key={item.label}
+                            className={`emerald-nav-item ${item.label === "电影" ? "active" : ""}`}
+                            data-type={item.type}
+                            onClick={() => navigate(item.path)}
+                        >
+                            {item.icon}
+                            <span className="emerald-nav-label">{item.label}</span>
+                        </div>
+                    ))}
+                </nav>
+
+                {/* 电影内容区域 */}
+                <div className="emerald-content-section">
+                    <h1 className="emerald-page-title">🎬 电影资源</h1>
+                    <p style={{ textAlign: 'center', color: '#2d5016', fontSize: '18px' }}>
+                        欢迎来到NeuraFlux电影频道，这里有最新最热门的电影资源
+                    </p>
+                </div>
+            </div>
         </div>
-        <div style={{ color: '#222', fontWeight: 500, marginRight: 24 }}>{userInfo.username || '用户栏'}</div>
-        <div style={{ display: 'flex', gap: 28, flex: 1, justifyContent: 'flex-end', alignItems: 'center' }}>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>魔力值: <b>{userPT.magic}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>分享率: <b>{userPT.ratio}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>上传量: <b>{userPT.upload}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>下载量: <b>{userPT.download}</b></span>
-        </div>
-      </div>
-      {/* 下方内容整体下移，留出与音乐界面一致的间距 */}
-      <div style={{ height: 32 }} />
-      <nav className="nav-bar card">
-        {navItems.map((item) => (
-          <div
-            key={item.label}
-            className={item.label === "电影" ? "nav-item active" : "nav-item"}
-            onClick={() => navigate(item.path)}
-          >
-            {item.icon}
-            <span>{item.label}</span>
-          </div>
-        ))}
-      </nav>
-      <div className="search-section card">
-        <input
-          className="search-input"
-          placeholder="输入搜索关键词"
-          value={searchText}
-          onChange={e => setSearchText(e.target.value)}
-        />
-        <button className="search-btn" onClick={handleSearch}>
-          <span role="img" aria-label="search">🔍</span>
-        </button>
-      </div>
-      <div className="area-tabs" style={{ display: 'flex', justifyContent: 'center', gap: 24, margin: '18px 0' }}>
-        {areaTabs.map((tab, idx) => (
-          <div
-            key={tab.label}
-            className={activeTab === idx ? "area-tab active" : "area-tab"}
-            onClick={() => setActiveTab(idx)}
-          >
-            {tab.icon} <span>{tab.label}</span>
-          </div>
-        ))}
-      </div>
-      <div className="table-section">
-        <table className="movie-table">
-          <thead>
-            <tr>
-              <th>电影类型</th>
-              <th>标题</th>
-              <th>发布者</th>
-              <th>大小</th>
-              <th>热度</th>
-              <th>折扣倍率</th>
-            </tr>
-          </thead>
-          <tbody>
-            {movieList.length > 0 ? (
-              movieList.map((item, index) => (
-                <tr key={item.id || index}>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.seedtag}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.title}
-                    </a>
-                  </td>
-                  <td>{item.username}</td>
-                  <td>{item.seedsize}</td>
-                  <td>{item.downloadtimes}</td>
-                  <td>{item.discount == null ? 1 : item.discount}</td>
-                </tr>
-              ))
-            ) : (
-              movieTypes.map((type, index) => (
-                <tr key={type}>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {type}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      种子{index + 1}
-                    </a>
-                  </td>
-                  <td>发布者{index + 1}</td>
-                  <td>--</td>
-                  <td>--</td>
-                  <td>1</td>
-                </tr>
-              ))
-            )}
-          </tbody>
-        </table>
-      </div>
-      <div style={{ height: 32 }} />
-      <Pagination />
-    </div>
-  );
-}
-
-function Pagination() {
-  const [page, setPage] = React.useState(3);
-  const total = 5;
-  return (
-    <div className="pagination">
-      <button onClick={() => setPage(p => Math.max(1, p - 1))} disabled={page === 1}>上一页</button>
-      <span className="page-num">{page}/{total}</span>
-      <button onClick={() => setPage(p => Math.min(total, p + 1))} disabled={page === total}>下一页</button>
-      <span className="page-info">第 <b>{page}</b> 页</span>
-    </div>
-  );
+    );
 }
diff --git a/front/src/MusicPage.js b/front/src/MusicPage.js
index 097cf3c..13a6ba5 100644
--- a/front/src/MusicPage.js
+++ b/front/src/MusicPage.js
@@ -1,48 +1,49 @@
 import React, { useState, useEffect } from "react";
 import HomeIcon from "@mui/icons-material/Home";
 import MovieIcon from "@mui/icons-material/Movie";
-import EmailIcon from "@mui/icons-material/Email";
+import TvIcon from "@mui/icons-material/Tv";
 import MusicNoteIcon from "@mui/icons-material/MusicNote";
-import EmojiPeopleIcon from "@mui/icons-material/EmojiPeople";
+import AnimationIcon from "@mui/icons-material/Animation";
 import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
 import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
 import PersonIcon from "@mui/icons-material/Person";
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import ForumIcon from "@mui/icons-material/Forum";
 import HelpIcon from "@mui/icons-material/Help";
-import "./App.css";
+import "./SharedStyles.css";
 import { useNavigate } from "react-router-dom";
 import { API_BASE_URL } from "./config";
 
 const navItems = [
-  { label: "首页", icon: <HomeIcon />, path: "/home" },
-  { label: "电影", icon: <MovieIcon />, path: "/movie" },
-  { label: "剧集", icon: <EmailIcon />, path: "/tv" },
-  { label: "音乐", icon: <MusicNoteIcon />, path: "/music" },
-  { label: "动漫", icon: <EmojiPeopleIcon />, path: "/anime" },
-  { label: "游戏", icon: <SportsEsportsIcon />, path: "/game" },
-  { label: "体育", icon: <SportsMartialArtsIcon />, path: "/sport" },
-  { label: "资料", icon: <PersonIcon />, path: "/info" },
-  { label: "论坛", icon: <ForumIcon />, path: "/forum" },
-  { label: "发布", icon: <AccountCircleIcon />, path: "/publish" },
-  { label: "求种", icon: <HelpIcon />, path: "/begseed" },
+  { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+  { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+  { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+  { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+  { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+  { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+  { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+  { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+  { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+  { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+  { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
 ];
 
+// 音乐地区标签
 const areaTabs = [
-  { label: "古典音乐", icon: <MovieIcon fontSize="small" /> },
-  { label: "流行音乐", icon: <EmailIcon fontSize="small" /> },
-  { label: "摇滚", icon: <PersonIcon fontSize="small" /> },
-  { label: "电子音乐", icon: <EmojiPeopleIcon fontSize="small" /> },
-  { label: "说唱", icon: <PersonIcon fontSize="small" /> },
+  { label: "华语音乐", value: "chinese" },
+  { label: "港台音乐", value: "hk_tw" },
+  { label: "欧美音乐", value: "western" },
+  { label: "日韩音乐", value: "jp_kr" },
+  { label: "其他音乐", value: "others" }
 ];
 
 export default function MusicPage() {
   const navigate = useNavigate();
-  const [searchText, setSearchText] = useState('');
+  const [searchText, setSearchText] = React.useState('');
   const [userInfo, setUserInfo] = useState({ avatar_url: '', username: '' });
   const [userPT, setUserPT] = useState({ magic: 0, ratio: 0, upload: 0, download: 0 });
-  const [activeTab, setActiveTab] = useState(0);
-  const [musicList, setMusicList] = useState([]);
+  const [activeTab, setActiveTab] = React.useState(0);
+  const [musicList, setMusicList] = React.useState([]);
 
   useEffect(() => {
     const match = document.cookie.match('(^|;)\\s*userId=([^;]+)');
@@ -62,17 +63,8 @@
       .catch(err => console.error('Fetching user profile failed', err));
   }, []);
 
-  // 每个tab对应的音乐类型
-  const musicTypesList = [
-    ["华语音乐（大陆）", "欧美音乐", "日韩音乐", "港台音乐", "其他"], // 古典音乐
-    ["港台流行", "港台摇滚", "港台其他"], // 流行音乐
-    ["欧美流行", "欧美摇滚", "欧美其他"], // 摇滚
-    ["日韩流行", "日韩其他"], // 电子音乐
-    ["其他类型1", "其他类型2"] // 说唱
-  ];
-  const musicTypes = musicTypesList[activeTab] || [];
-
-  useEffect(() => {
+  React.useEffect(() => {
+    // 根据选中的标签获取音乐列表
     const area = areaTabs[activeTab].label;
     fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
@@ -86,128 +78,221 @@
     fetch(`${API_BASE_URL}/api/search-seeds?tag=${encodeURIComponent(area)}&keyword=${encodeURIComponent(searchText)}`)
       .then(res => res.json())
       .then(data => {
+        console.log('搜索返回数据:', data);
         setMusicList(data);
       })
       .catch(() => setMusicList([]));
   };
 
+  const musicTypesList = [
+    ["华语流行", "华语摇滚", "华语民谣", "华语其他"], // 华语音乐
+    ["港台流行", "港台摇滚", "港台怀旧", "港台其他"], // 港台音乐
+    ["欧美流行", "欧美摇滚", "欧美电子", "欧美其他"], // 欧美音乐
+    ["日韩流行", "日韩摇滚", "日韩其他"], // 日韩音乐
+    ["古典音乐", "世界音乐", "其他类型"] // 其他音乐
+  ];
+  const musicTypes = musicTypesList[activeTab] || [];
   return (
-    <div className="container">
-      {/* 顶部空白与音乐界面一致，用户栏绝对定位在页面右上角 */}
-      <div style={{ height: 80 }} />
-      <div className="user-bar" style={{ position: 'fixed', top: 18, right: 42, zIndex: 100, display: 'flex', alignItems: 'center', background: '#e0f3ff', borderRadius: 12, padding: '6px 18px', boxShadow: '0 2px 8px #b2d8ea', minWidth: 320, minHeight: 48, width: 420 }}>
-        <div style={{ cursor: 'pointer', marginRight: 16 }} onClick={() => navigate('/user')}>
-          {userInfo.avatar_url ? (
-            <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
-          ) : (
-            <AccountCircleIcon style={{ fontSize: 38, color: '#1a237e', background: '#e0f3ff', borderRadius: '50%' }} />
-          )}
-        </div>
-        <div style={{ color: '#222', fontWeight: 500, marginRight: 24 }}>{userInfo.username || '用户栏'}</div>
-        <div style={{ display: 'flex', gap: 28, flex: 1, justifyContent: 'flex-end', alignItems: 'center' }}>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>魔力值: <b>{userPT.magic}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>分享率: <b>{userPT.ratio}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>上传量: <b>{userPT.upload}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>下载量: <b>{userPT.download}</b></span>
-        </div>
+    <div className="emerald-home-container">
+      {/* 流星雨背景效果 */}
+      <div className="meteor-shower">
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
       </div>
-      {/* 下方内容整体下移，留出与音乐界面一致的间距 */}
-      <div style={{ height: 32 }} />
-      <nav className="nav-bar card">
-        {navItems.map((item) => (
-          <div
-            key={item.label}
-            className={item.label === "音乐" ? "nav-item active" : "nav-item"}
-            onClick={() => navigate(item.path)}
-          >
-            {item.icon}
-            <span>{item.label}</span>
-          </div>
-        ))}
-      </nav>
-      <div className="search-section card">
-        <input
-          className="search-input"
-          placeholder="输入搜索关键词"
-          value={searchText}
-          onChange={e => setSearchText(e.target.value)}
-        />
-        <button className="search-btn" onClick={handleSearch}>
-          <span role="img" aria-label="search">🔍</span>
-        </button>
+
+      {/* 浮动园林装饰元素 */}
+      <div className="floating-garden-elements">
+        <div className="garden-element">🌿</div>
+        <div className="garden-element">🦋</div>
+        <div className="garden-element">🌺</div>
+        <div className="garden-element">🌸</div>
       </div>
-      <div className="area-tabs" style={{ display: 'flex', justifyContent: 'center', gap: 24, margin: '18px 0' }}>
-        {areaTabs.map((tab, idx) => (
-          <div
-            key={tab.label}
-            className={activeTab === idx ? "area-tab active" : "area-tab"}
-            onClick={() => setActiveTab(idx)}
-          >
-            {tab.icon} <span>{tab.label}</span>
-          </div>
-        ))}
-      </div>
-      <div className="table-section">
-        <table className="music-table">
-          <thead>
-            <tr>
-              <th>音乐类型</th>
-              <th>标题</th>
-              <th>发布者</th>
-              <th>大小</th>
-              <th>热度</th>
-              <th>折扣倍率</th>
-            </tr>
-          </thead>
-          <tbody>
-            {musicList.length > 0 ? (
-              musicList.map((item, index) => (
-                <tr key={item.id || index}>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.seedtag}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.title}
-                    </a>
-                  </td>
-                  <td>{item.username}</td>
-                  <td>{item.seedsize}</td>
-                  <td>{item.downloadtimes}</td>
-                  <td>{item.discount == null ? 1 : item.discount}</td>
-                </tr>
-              ))
+
+      <div className="emerald-content">
+        {/* NeuraFlux用户栏 */}
+        <div className="emerald-user-bar">
+          <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+            {userInfo.avatar_url ? (
+              <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
             ) : (
-              musicTypes.map((type, index) => (
-                <tr key={type}>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {type}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      种子{index + 1}
-                    </a>
-                  </td>
-                  <td>发布者{index + 1}</td>
-                  <td>--</td>
-                  <td>--</td>
-                  <td>1</td>
-                </tr>
-              ))
+              <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
             )}
-          </tbody>
-        </table>
+          </div>
+          <div className="emerald-brand-section">
+            <div className="emerald-brand-icon">⚡</div>
+            <div className="emerald-user-label">NeuraFlux</div>
+          </div>
+          <div className="emerald-user-stats">
+            <span className="emerald-stat-item">
+              魔力值: <span className="emerald-stat-value">{userPT.magic}</span>
+            </span>
+            <span className="emerald-stat-item">
+              分享率: <span className="emerald-stat-value">{userPT.ratio}</span>
+            </span>
+            <span className="emerald-stat-item">
+              上传: <span className="emerald-stat-value">{userPT.upload}GB</span>
+            </span>
+            <span className="emerald-stat-item">
+              下载: <span className="emerald-stat-value">{userPT.download}GB</span>
+            </span>
+          </div>
+        </div>
+
+        {/* NeuraFlux导航栏 */}
+        <nav className="emerald-nav-bar">
+          {navItems.map((item) => (
+            <div
+              key={item.label}
+              className={`emerald-nav-item ${item.label === "音乐" ? "active" : ""}`}
+              data-type={item.type}
+              onClick={() => navigate(item.path)}
+            >
+              {item.icon}
+              <span className="emerald-nav-label">{item.label}</span>
+            </div>
+          ))}
+        </nav>
+
+        {/* 音乐内容区域 */}
+        <div className="emerald-content-section">
+          <h1 className="emerald-page-title">🎵 音乐资源</h1>
+          <p style={{ textAlign: 'center', color: '#2d5016', fontSize: '18px', marginBottom: '30px' }}>
+            欢迎来到NeuraFlux音乐频道，这里有最新最热门的音乐资源
+          </p>
+          
+          {/* 搜索栏 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px'
+          }}>
+            <input
+              type="text"
+              placeholder="搜索音乐资源..."
+              value={searchText}
+              onChange={(e) => setSearchText(e.target.value)}
+              style={{
+                padding: '12px 20px',
+                borderRadius: '20px',
+                border: '2px solid rgba(144, 238, 144, 0.3)',
+                background: 'rgba(240, 255, 240, 0.5)',
+                fontSize: '16px',
+                width: '300px',
+                fontFamily: 'Lora, serif'
+              }}
+            />
+            <button
+              onClick={handleSearch}
+              style={{
+                padding: '12px 24px',
+                borderRadius: '20px',
+                border: 'none',
+                background: 'linear-gradient(135deg, #2d5016 0%, #90ee90 100%)',
+                color: 'white',
+                fontSize: '16px',
+                cursor: 'pointer',
+                fontFamily: 'Lora, serif'
+              }}
+            >
+              搜索
+            </button>
+          </div>
+
+          {/* 地区分类标签 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px',
+            flexWrap: 'wrap'
+          }}>
+            {areaTabs.map((tab, index) => (
+              <button
+                key={tab.value}
+                onClick={() => setActiveTab(index)}
+                style={{
+                  padding: '10px 20px',
+                  borderRadius: '15px',
+                  border: '2px solid rgba(144, 238, 144, 0.3)',
+                  background: activeTab === index 
+                    ? 'linear-gradient(135deg, #90ee90 0%, #2d5016 100%)' 
+                    : 'rgba(240, 255, 240, 0.3)',
+                  color: activeTab === index ? 'white' : '#2d5016',
+                  fontSize: '14px',
+                  cursor: 'pointer',
+                  fontFamily: 'Lora, serif',
+                  transition: 'all 0.3s ease'
+                }}
+              >
+                {tab.label}
+              </button>
+            ))}
+          </div>
+
+          {/* 音乐列表 */}
+          <div className="emerald-table-section">
+            <table className="emerald-table">
+              <thead>
+                <tr>
+                  <th>音乐类型</th>
+                  <th>标题</th>
+                  <th>发布者</th>
+                  <th>大小</th>
+                  <th>热度</th>
+                  <th>折扣倍率</th>
+                </tr>
+              </thead>
+              <tbody>
+                {musicList.length > 0 ? (
+                  musicList.map((item, index) => (
+                    <tr key={item.id || index}>
+                      <td>{item.seedtag}</td>
+                      <td>
+                        <a href={`/torrent/${item.seedid}`}>
+                          {item.title}
+                        </a>
+                      </td>
+                      <td>{item.username}</td>
+                      <td>{item.seedsize}</td>
+                      <td>{item.downloadtimes}</td>
+                      <td>{item.discount == null ? 1 : item.discount}</td>
+                    </tr>
+                  ))
+                ) : (
+                  musicTypes.map((type, index) => (
+                    <tr key={type}>
+                      <td>{type}</td>
+                      <td>
+                        <a href={`/torrent/${type}`}>
+                          种子{index + 1}
+                        </a>
+                      </td>
+                      <td>发布者{index + 1}</td>
+                      <td>--</td>
+                      <td>--</td>
+                      <td>1</td>
+                    </tr>
+                  ))
+                )}
+              </tbody>
+            </table>
+          </div>
+        </div>
       </div>
-      <div style={{ height: 32 }} />
-      <Pagination />
     </div>
   );
 }
 
+// Pagination组件暂时不使用
 function Pagination() {
   const [page, setPage] = React.useState(3);
   const total = 5;
diff --git a/front/src/PostDetailPage.js b/front/src/PostDetailPage.js
index fceaef8..aae1874 100644
--- a/front/src/PostDetailPage.js
+++ b/front/src/PostDetailPage.js
@@ -1,12 +1,70 @@
 import React, { useState, useEffect } from "react";
-import { useParams } from "react-router-dom";
+import { useParams, useNavigate } from "react-router-dom";
 import { API_BASE_URL } from "./config";
+import HomeIcon from "@mui/icons-material/Home";
+import MovieIcon from "@mui/icons-material/Movie";
+import TvIcon from "@mui/icons-material/Tv";
+import MusicNoteIcon from "@mui/icons-material/MusicNote";
+import AnimationIcon from "@mui/icons-material/Animation";
+import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
+import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
+import PersonIcon from "@mui/icons-material/Person";
+import AccountCircleIcon from "@mui/icons-material/AccountCircle";
+import ForumIcon from "@mui/icons-material/Forum";
+import HelpIcon from "@mui/icons-material/Help";
+import ArrowBackIcon from "@mui/icons-material/ArrowBack";
+import ReplyIcon from "@mui/icons-material/Reply";
+import VisibilityIcon from "@mui/icons-material/Visibility";
+import "./SharedStyles.css";
+
+const navItems = [
+  { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+  { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+  { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+  { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+  { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+  { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+  { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+  { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+  { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+  { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+  { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
+];
+
+// 论坛详情页文字雨内容
+const forumDetailTexts = [
+  "讨论", "回复", "交流", "观点", "见解", "思考", "分享", "互动",
+  "对话", "评论", "深度", "专业", "洞察", "分析", "探讨", "解答"
+];
 
 export default function PostDetailPage() {
     const { postId } = useParams();
+    const navigate = useNavigate();
     const [post, setPost] = useState(null);
     const [replies, setReplies] = useState([]);
     const [newReply, setNewReply] = useState('');
+    const [userInfo, setUserInfo] = useState({ avatar_url: '', username: '' });
+    const [userPT, setUserPT] = useState({ magic: 0, ratio: 0, upload: 0, download: 0 });
+
+    useEffect(() => {
+        // 获取用户信息
+        const match = document.cookie.match('(^|;)\\s*userId=([^;]+)');
+        const userId = match ? match[2] : null;
+        if (userId) {
+            fetch(`${API_BASE_URL}/api/get-userpt?userid=${encodeURIComponent(userId)}`)
+                .then(res => res.json())
+                .then(data => {
+                    setUserInfo({ avatar_url: data.user.avatar_url, username: data.user.username });
+                    setUserPT({
+                        magic: data.magic_value || data.magic || 0,
+                        ratio: data.share_ratio || data.share || 0,
+                        upload: data.upload_amount || data.upload || 0,
+                        download: data.download_amount || data.download || 0,
+                    });
+                })
+                .catch(err => console.error('Fetching user profile failed', err));
+        }
+    }, []);
 
     // function to load post details and its replies
     const fetchDetail = () => {
@@ -64,82 +122,190 @@
             .catch(err => console.error(err));
     };
 
-    if (!post) return <div>加载中...</div>;
-    return (
-        <div style={{ maxWidth: 700, margin: "40px auto" }}>
-            {/* 原帖 */}
-            <div style={{
-                background: "#fff",
-                borderRadius: 12,
-                boxShadow: "0 2px 8px #e0e7ff",
-                padding: 24,
-                marginBottom: 32,
-            }}>
-                <div style={{ fontSize: 15, color: "#1976d2", marginBottom: 6 }}>
-                    {post.author_name} · {post.created_at}
-                </div>
-                <div style={{ fontWeight: 600, fontSize: 20, marginBottom: 8, color: "#222" }}>
-                    {post.title}
-                </div>
-                <div style={{ fontSize: 16, color: "#444", marginBottom: 18 }}>
-                    {post.content}
-                </div>
-                <div style={{ display: "flex", justifyContent: "flex-start", gap: 32, fontSize: 14, color: "#888" }}>
-                    <span>回复数: {post.reply_count}</span>
-                    <span>观看数: {post.view_count}</span>
+    if (!post) return (
+        <div className="emerald-home-container">
+            <div className="emerald-content">
+                <div style={{ 
+                    textAlign: 'center', 
+                    padding: '100px 20px', 
+                    color: '#2d5016', 
+                    fontSize: '18px',
+                    background: 'rgba(255, 255, 255, 0.95)',
+                    borderRadius: '25px',
+                    margin: '50px auto',
+                    maxWidth: '600px'
+                }}>
+                    <ForumIcon style={{ fontSize: 64, marginBottom: '20px', color: '#90ee90' }} />
+                    <div>加载帖子详情中...</div>
                 </div>
             </div>
-            {/* 评论区 */}
-            <div>
-                {replies.map(reply => (
-                    <div key={reply.reply_id} style={{
-                        display: "flex",
-                        alignItems: "center",
-                        background: "#f8faff",
-                        borderRadius: 8,
-                        padding: "12px 18px",
-                        marginBottom: 16,
-                        fontSize: 15,
+        </div>
+    );
+
+    return (
+        <div className="emerald-home-container">
+            {/* 文字雨背景效果 */}
+            <div className="forum-text-rain">
+                {forumDetailTexts.map((text, index) => (
+                    <div key={index} className="text-drop" style={{
+                        left: `${(index * 3.5) % 100}%`,
+                        animationDelay: `${(index * 0.8) % 10}s`,
+                        animationDuration: `${8 + (index % 5)}s`
                     }}>
-                        <span style={{ color: "#1976d2", fontWeight: 500, minWidth: 80 }}>{reply.author_name}</span>
-                        <span style={{ flex: 1, marginLeft: 18 }}>{reply.content}</span>
-                        <span style={{ color: "#888", fontSize: 13, marginLeft: 18 }}>{reply.created_at}</span>
+                        {text}
                     </div>
                 ))}
             </div>
-            {/* 回复框 */}
-            <div style={{
-                marginTop: 32,
-                background: "#fff",
-                borderRadius: 8,
-                boxShadow: "0 2px 8px #e0e7ff",
-                padding: 18,
-                display: "flex",
-                gap: 12,
-                alignItems: "center"
-            }}>
-                <input
-                    type="text"
-                    placeholder="写下你的回复..."
-                    value={newReply}
-                    onChange={e => setNewReply(e.target.value)}
-                    style={{
-                        flex: 1,
-                        border: "1px solid #bfcfff",
-                        borderRadius: 6,
-                        padding: "8px 12px",
-                        fontSize: 15,
-                    }}
-                />
-                <button onClick={handleReply} style={{
-                    background: "#1976d2",
-                    color: "#fff",
-                    border: "none",
-                    borderRadius: 6,
-                    padding: "8px 24px",
-                    fontSize: 15,
-                    cursor: "pointer"
-                }}>回复</button>
+
+            {/* 浮动园林装饰元素 */}
+            <div className="floating-garden-elements">
+                <div className="garden-element">💭</div>
+                <div className="garden-element">📖</div>
+                <div className="garden-element">💡</div>
+                <div className="garden-element">✨</div>
+            </div>
+
+            <div className="emerald-content">
+                {/* NeuraFlux用户栏 */}
+                <div className="emerald-user-bar">
+                    <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+                        {userInfo.avatar_url ? (
+                            <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
+                        ) : (
+                            <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
+                        )}
+                    </div>
+                    <div className="emerald-brand-section">
+                        <div className="emerald-brand-icon">⚡</div>
+                        <div className="emerald-user-label">NeuraFlux</div>
+                    </div>
+                    <div className="emerald-user-stats">
+                        <span className="emerald-stat-item">
+                            魔力值: <span className="emerald-stat-value">{userPT.magic}</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            分享率: <span className="emerald-stat-value">{userPT.ratio}</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            上传: <span className="emerald-stat-value">{userPT.upload}GB</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            下载: <span className="emerald-stat-value">{userPT.download}GB</span>
+                        </span>
+                    </div>
+                </div>
+
+                {/* NeuraFlux导航栏 */}
+                <nav className="emerald-nav-bar">
+                    {navItems.map((item) => (
+                        <div
+                            key={item.label}
+                            className={`emerald-nav-item ${item.label === "论坛" ? "active" : ""}`}
+                            data-type={item.type}
+                            onClick={() => navigate(item.path)}
+                        >
+                            {item.icon}
+                            <span className="emerald-nav-label">{item.label}</span>
+                        </div>
+                    ))}
+                </nav>
+
+                {/* 返回按钮 */}
+                <div className="post-detail-header">
+                    <button className="back-to-forum-btn" onClick={() => navigate('/forum')}>
+                        <ArrowBackIcon style={{ marginRight: '8px', fontSize: '20px' }} />
+                        返回论坛
+                    </button>
+                </div>
+
+                {/* 帖子详情内容区域 */}
+                <div className="emerald-content-section">
+                    {/* 原帖内容 */}
+                    <div className="post-detail-main">
+                        <div className="post-detail-header-info">
+                            <div className="post-author-section">
+                                <div className="post-author-avatar">
+                                    <AccountCircleIcon style={{ fontSize: 48, color: '#2d5016' }} />
+                                </div>
+                                <div className="post-author-details">
+                                    <h2 className="post-author-name">{post.author_name}</h2>
+                                    <span className="post-publish-time">{post.created_at}</span>
+                                </div>
+                            </div>
+                            <div className="post-stats-section">
+                                <div className="stat-badge">
+                                    <VisibilityIcon style={{ fontSize: '18px', marginRight: '4px' }} />
+                                    <span>{post.view_count} 浏览</span>
+                                </div>
+                                <div className="stat-badge">
+                                    <ReplyIcon style={{ fontSize: '18px', marginRight: '4px' }} />
+                                    <span>{post.reply_count} 回复</span>
+                                </div>
+                            </div>
+                        </div>
+                        
+                        <div className="post-content-section">
+                            <h1 className="post-detail-title">{post.title}</h1>
+                            <div className="post-detail-content">
+                                {post.content}
+                            </div>
+                        </div>
+                    </div>
+
+                    {/* 回复列表 */}
+                    <div className="replies-section">
+                        <h3 className="replies-title">
+                            <ReplyIcon style={{ marginRight: '8px', color: '#2d5016' }} />
+                            全部回复 ({replies.length})
+                        </h3>
+                        
+                        {replies.length > 0 ? (
+                            <div className="replies-list">
+                                {replies.map((reply, index) => (
+                                    <div key={reply.reply_id} className="reply-card">
+                                        <div className="reply-index">#{index + 1}</div>
+                                        <div className="reply-content-wrapper">
+                                            <div className="reply-author-info">
+                                                <AccountCircleIcon style={{ fontSize: 24, color: '#2d5016', marginRight: '8px' }} />
+                                                <span className="reply-author-name">{reply.author_name}</span>
+                                                <span className="reply-time">{reply.created_at}</span>
+                                            </div>
+                                            <div className="reply-content">{reply.content}</div>
+                                        </div>
+                                    </div>
+                                ))}
+                            </div>
+                        ) : (
+                            <div className="no-replies">
+                                <ForumIcon style={{ fontSize: 48, color: '#90ee90', marginBottom: '16px' }} />
+                                <p>还没有人回复，快来抢沙发吧！</p>
+                            </div>
+                        )}
+                    </div>
+
+                    {/* 回复输入框 */}
+                    <div className="reply-input-section">
+                        <h3 className="reply-input-title">发表回复</h3>
+                        <div className="reply-input-wrapper">
+                            <textarea
+                                placeholder="写下你的想法和观点..."
+                                value={newReply}
+                                onChange={e => setNewReply(e.target.value)}
+                                className="reply-textarea"
+                                rows="4"
+                            />
+                            <div className="reply-actions">
+                                <div className="reply-tips">
+                                    💡 支持理性讨论，拒绝恶意灌水
+                                </div>
+                                <button onClick={handleReply} className="submit-reply-btn">
+                                    <ReplyIcon style={{ marginRight: '6px', fontSize: '18px' }} />
+                                    发布回复
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
             </div>
         </div>
     );
diff --git a/front/src/SharedStyles.css b/front/src/SharedStyles.css
new file mode 100644
index 0000000..730a76e
--- /dev/null
+++ b/front/src/SharedStyles.css
@@ -0,0 +1,1419 @@
+/* NeuraFlux - 共享欧式园林风格样式 */
+
+/* 引入Google字体 */
+@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Lora:wght@400;500;600&display=swap');
+
+/* 页面基础样式 */
+.emerald-home-container {
+  min-height: 100vh;
+  background: linear-gradient(135deg, #2d5016 0%, #4a7c59 20%, #8fbc8f 40%, #98fb98 60%, #f0fff0 100%);
+  position: relative;
+  font-family: 'Lora', serif;
+  overflow-x: hidden;
+}
+
+/* 背景装饰元素 */
+.emerald-home-container::before {
+  content: '';
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: 
+    radial-gradient(circle at 20% 80%, rgba(255, 255, 255, 0.08) 0%, transparent 50%),
+    radial-gradient(circle at 80% 20%, rgba(255, 255, 255, 0.06) 0%, transparent 50%),
+    radial-gradient(circle at 40% 40%, rgba(144, 238, 144, 0.08) 0%, transparent 50%);
+  animation: backgroundShift 25s ease-in-out infinite;
+  pointer-events: none;
+  z-index: 0;
+}
+
+/* 流星雨效果 */
+.meteor-shower {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  pointer-events: none;
+  overflow: hidden;
+  z-index: 1;
+}
+
+.meteor {
+  position: absolute;
+  font-size: 18px;
+  animation: meteorFall linear infinite;
+  opacity: 0.8;
+  filter: drop-shadow(0 0 6px rgba(144, 238, 144, 0.6));
+}
+
+.meteor:nth-child(1) { left: 5%; animation-duration: 12s; animation-delay: 0s; }
+.meteor:nth-child(2) { left: 15%; animation-duration: 8s; animation-delay: 3s; }
+.meteor:nth-child(3) { left: 25%; animation-duration: 15s; animation-delay: 1s; }
+.meteor:nth-child(4) { left: 35%; animation-duration: 10s; animation-delay: 5s; }
+.meteor:nth-child(5) { left: 45%; animation-duration: 13s; animation-delay: 2s; }
+.meteor:nth-child(6) { left: 55%; animation-duration: 9s; animation-delay: 6s; }
+.meteor:nth-child(7) { left: 65%; animation-duration: 14s; animation-delay: 0.5s; }
+.meteor:nth-child(8) { left: 75%; animation-duration: 11s; animation-delay: 4s; }
+.meteor:nth-child(9) { left: 85%; animation-duration: 16s; animation-delay: 1.5s; }
+.meteor:nth-child(10) { left: 95%; animation-duration: 7s; animation-delay: 3.5s; }
+
+/* 浮动装饰元素 */
+.floating-garden-elements {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  pointer-events: none;
+  z-index: 1;
+}
+
+.garden-element {
+  position: absolute;
+  font-size: 24px;
+  opacity: 0.4;
+  animation: gardenFloat 6s ease-in-out infinite;
+}
+
+.garden-element:nth-child(1) { top: 10%; left: 10%; animation-delay: 0s; }
+.garden-element:nth-child(2) { top: 20%; right: 15%; animation-delay: 2s; }
+.garden-element:nth-child(3) { bottom: 30%; left: 20%; animation-delay: 4s; }
+.garden-element:nth-child(4) { bottom: 15%; right: 25%; animation-delay: 1s; }
+
+/* 内容容器 */
+.emerald-content {
+  position: relative;
+  z-index: 10;
+  padding: 20px;
+  max-width: 1400px;
+  margin: 0 auto;
+}
+
+/* 用户栏样式 */
+.emerald-user-bar {
+  position: fixed;
+  top: 18px;
+  right: 42px;
+  z-index: 100;
+  display: flex;
+  align-items: center;
+  background: rgba(255, 255, 255, 0.95);
+  backdrop-filter: blur(15px);
+  border-radius: 20px;
+  padding: 8px 24px;
+  box-shadow: 
+    0 8px 32px rgba(45, 80, 22, 0.15),
+    0 4px 16px rgba(144, 238, 144, 0.1),
+    inset 0 1px 0 rgba(255, 255, 255, 0.7);
+  border: 2px solid rgba(144, 238, 144, 0.3);
+  min-width: 320px;
+  min-height: 48px;
+  width: 520px;
+  animation: userBarFloat 4s ease-in-out infinite;
+}
+
+.emerald-user-bar::before {
+  content: '';
+  position: absolute;
+  top: -2px;
+  left: -2px;
+  right: -2px;
+  bottom: -2px;
+  background: linear-gradient(45deg, 
+    #90ee90 0%, 
+    #98fb98 25%, 
+    #f0fff0 50%, 
+    #98fb98 75%, 
+    #90ee90 100%);
+  border-radius: 22px;
+  z-index: -1;
+  animation: borderGlow 3s ease-in-out infinite;
+}
+
+.emerald-user-avatar {
+  cursor: pointer;
+  margin-right: 16px;
+  transition: all 0.3s ease;
+  border-radius: 50%;
+  padding: 4px;
+  background: linear-gradient(135deg, #90ee90, #2d5016);
+}
+
+.emerald-user-avatar:hover {
+  transform: scale(1.1) rotate(5deg);
+  box-shadow: 0 4px 15px rgba(144, 238, 144, 0.4);
+}
+
+/* 品牌区域样式 */
+.emerald-brand-section {
+  display: flex;
+  align-items: center;
+  margin-right: 24px;
+}
+
+.emerald-brand-icon {
+  font-size: 24px;
+  margin-right: 8px;
+  animation: iconPulse 3s ease-in-out infinite;
+}
+
+.emerald-user-label {
+  color: #2d5016;
+  font-weight: 600;
+  font-family: 'Playfair Display', serif;
+  letter-spacing: 1px;
+}
+
+.emerald-user-stats {
+  display: flex;
+  gap: 24px;
+  flex: 1;
+  justify-content: flex-end;
+  align-items: center;
+}
+
+.emerald-stat-item {
+  color: #2d5016;
+  font-weight: 500;
+  font-size: 14px;
+  transition: all 0.3s ease;
+  padding: 4px 8px;
+  border-radius: 8px;
+}
+
+.emerald-stat-item:hover {
+  background: rgba(144, 238, 144, 0.2);
+  transform: translateY(-2px);
+}
+
+.emerald-stat-value {
+  font-weight: 700;
+  color: #1a5c1a;
+}
+
+/* 导航栏样式 */
+.emerald-nav-bar {
+  background: rgba(255, 255, 255, 0.95);
+  backdrop-filter: blur(20px);
+  border-radius: 25px;
+  padding: 20px 30px;
+  margin: 120px auto 30px;
+  box-shadow: 
+    0 15px 45px rgba(45, 80, 22, 0.12),
+    0 6px 20px rgba(144, 238, 144, 0.08),
+    inset 0 1px 0 rgba(255, 255, 255, 0.9);
+  border: 2px solid rgba(144, 238, 144, 0.2);
+  display: grid;
+  grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
+  gap: 10px;
+  justify-items: center;
+  position: relative;
+  overflow: hidden;
+}
+
+.emerald-nav-bar::before {
+  content: '';
+  position: absolute;
+  top: -2px;
+  left: -2px;
+  right: -2px;
+  bottom: -2px;
+  background: linear-gradient(45deg, 
+    #90ee90 0%, 
+    #98fb98 25%, 
+    #f0fff0 50%, 
+    #98fb98 75%, 
+    #90ee90 100%);
+  border-radius: 27px;
+  z-index: -1;
+  animation: borderGlow 5s ease-in-out infinite;
+}
+
+/* 导航项目样式 */
+.emerald-nav-item {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  padding: 16px 20px;
+  border-radius: 18px;
+  cursor: pointer;
+  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
+  background: rgba(240, 255, 240, 0.3);
+  border: 2px solid transparent;
+  position: relative;
+  overflow: hidden;
+  min-width: 90px;
+  font-family: 'Lora', serif;
+}
+
+.emerald-nav-item::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: -100%;
+  width: 100%;
+  height: 100%;
+  background: linear-gradient(90deg, transparent, rgba(144, 238, 144, 0.3), transparent);
+  transition: left 0.6s ease;
+}
+
+.emerald-nav-item:hover::before {
+  left: 100%;
+}
+
+.emerald-nav-item:hover {
+  transform: translateY(-8px) scale(1.05);
+  background: rgba(144, 238, 144, 0.2);
+  border-color: rgba(144, 238, 144, 0.4);
+  box-shadow: 
+    0 12px 35px rgba(45, 80, 22, 0.2),
+    0 6px 20px rgba(144, 238, 144, 0.15);
+}
+
+.emerald-nav-item.active {
+  background: linear-gradient(135deg, #90ee90 0%, #2d5016 100%);
+  color: white;
+  border-color: #2d5016;
+  transform: translateY(-4px);
+  box-shadow: 
+    0 8px 25px rgba(45, 80, 22, 0.3),
+    0 4px 15px rgba(144, 238, 144, 0.2);
+}
+
+/* 导航图标动画 */
+.emerald-nav-icon {
+  font-size: 28px !important;
+  margin-bottom: 8px;
+  transition: all 0.4s ease;
+  position: relative;
+}
+
+.emerald-nav-item:hover .emerald-nav-icon {
+  animation: iconDance 0.6s ease-in-out;
+  transform: scale(1.2);
+}
+
+.emerald-nav-item.active .emerald-nav-icon {
+  color: white;
+  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
+}
+
+/* 导航标签 */
+.emerald-nav-label {
+  font-size: 14px;
+  font-weight: 600;
+  letter-spacing: 0.5px;
+  color: #2d5016;
+  transition: all 0.3s ease;
+}
+
+.emerald-nav-item:hover .emerald-nav-label {
+  color: #1a5c1a;
+  transform: scale(1.05);
+}
+
+.emerald-nav-item.active .emerald-nav-label {
+  color: white;
+  font-weight: 700;
+}
+
+/* 内容区域样式 */
+.emerald-content-section {
+  background: rgba(255, 255, 255, 0.95);
+  backdrop-filter: blur(20px);
+  border-radius: 25px;
+  padding: 30px;
+  margin: 30px auto;
+  box-shadow: 
+    0 20px 60px rgba(45, 80, 22, 0.12),
+    0 8px 25px rgba(144, 238, 144, 0.08),
+    inset 0 1px 0 rgba(255, 255, 255, 0.9);
+  border: 2px solid rgba(144, 238, 144, 0.2);
+  position: relative;
+  overflow: hidden;
+}
+
+.emerald-content-section::before {
+  content: '';
+  position: absolute;
+  top: -2px;
+  left: -2px;
+  right: -2px;
+  bottom: -2px;
+  background: linear-gradient(45deg, 
+    #90ee90 0%, 
+    #98fb98 25%, 
+    #f0fff0 50%, 
+    #98fb98 75%, 
+    #90ee90 100%);
+  border-radius: 27px;
+  z-index: -1;
+  animation: borderGlow 4s ease-in-out infinite;
+}
+
+.emerald-page-title {
+  text-align: center;
+  color: #2d5016;
+  font-family: 'Playfair Display', serif;
+  font-weight: 700;
+  font-size: 32px;
+  margin-bottom: 30px;
+  letter-spacing: 2px;
+}
+
+/* 表格区域样式 */
+.emerald-table-section {
+  background: rgba(255, 255, 255, 0.95);
+  backdrop-filter: blur(20px);
+  border-radius: 25px;
+  padding: 30px;
+  margin: 30px auto;
+  box-shadow: 
+    0 20px 60px rgba(45, 80, 22, 0.12),
+    0 8px 25px rgba(144, 238, 144, 0.08),
+    inset 0 1px 0 rgba(255, 255, 255, 0.9);
+  border: 2px solid rgba(144, 238, 144, 0.2);
+  position: relative;
+  overflow: hidden;
+}
+
+.emerald-table-section::before {
+  content: '';
+  position: absolute;
+  top: -2px;
+  left: -2px;
+  right: -2px;
+  bottom: -2px;
+  background: linear-gradient(45deg, 
+    #90ee90 0%, 
+    #98fb98 25%, 
+    #f0fff0 50%, 
+    #98fb98 75%, 
+    #90ee90 100%);
+  border-radius: 27px;
+  z-index: -1;
+  animation: borderGlow 4s ease-in-out infinite;
+}
+
+/* 表格样式 */
+.emerald-table {
+  width: 100%;
+  border-collapse: collapse;
+  font-family: 'Lora', serif;
+  background: transparent;
+}
+
+.emerald-table thead {
+  background: linear-gradient(135deg, #2d5016 0%, #4a7c59 100%);
+}
+
+.emerald-table th {
+  padding: 16px 20px;
+  text-align: left;
+  color: white;
+  font-weight: 600;
+  font-size: 16px;
+  letter-spacing: 1px;
+  border-bottom: 3px solid #90ee90;
+  position: relative;
+}
+
+.emerald-table th:first-child {
+  border-radius: 15px 0 0 0;
+}
+
+.emerald-table th:last-child {
+  border-radius: 0 15px 0 0;
+}
+
+.emerald-table tbody tr {
+  transition: all 0.3s ease;
+  border-bottom: 1px solid rgba(144, 238, 144, 0.2);
+}
+
+.emerald-table tbody tr:hover {
+  background: rgba(144, 238, 144, 0.1);
+  transform: translateX(5px);
+  box-shadow: 0 4px 15px rgba(144, 238, 144, 0.15);
+}
+
+.emerald-table td {
+  padding: 14px 20px;
+  color: #2d5016;
+  font-size: 15px;
+  vertical-align: middle;
+  transition: all 0.3s ease;
+}
+
+.emerald-table tbody tr:hover td {
+  color: #1a5c1a;
+}
+
+/* 表格链接样式 */
+.emerald-table a {
+  color: #2d5016;
+  text-decoration: none;
+  font-weight: 500;
+  transition: all 0.3s ease;
+  padding: 4px 8px;
+  border-radius: 8px;
+  display: inline-block;
+}
+
+.emerald-table a:hover {
+  color: #1a5c1a;
+  background: rgba(144, 238, 144, 0.2);
+  transform: translateY(-2px);
+  box-shadow: 0 4px 12px rgba(144, 238, 144, 0.3);
+}
+
+/* 论坛页面专用样式 */
+
+/* 文字雨背景效果 */
+.forum-text-rain {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  pointer-events: none;
+  overflow: hidden;
+  z-index: 1;
+}
+
+.text-drop {
+  position: absolute;
+  top: -50px;
+  font-size: 14px;
+  color: rgba(45, 80, 22, 0.6);
+  font-family: 'Lora', serif;
+  font-weight: 500;
+  animation: textFall linear infinite;
+  filter: drop-shadow(0 0 4px rgba(144, 238, 144, 0.3));
+}
+
+@keyframes textFall {
+  0% {
+    top: -50px;
+    opacity: 0;
+    transform: translateX(0);
+  }
+  10% {
+    opacity: 1;
+  }
+  90% {
+    opacity: 1;
+  }
+  100% {
+    top: 100vh;
+    opacity: 0;
+    transform: translateX(20px);
+  }
+}
+
+/* 论坛工具栏样式 */
+.forum-toolbar {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 30px;
+  padding: 20px 30px;
+  background: rgba(255, 255, 255, 0.95);
+  backdrop-filter: blur(15px);
+  border-radius: 20px;
+  box-shadow: 
+    0 8px 32px rgba(45, 80, 22, 0.12),
+    0 4px 16px rgba(144, 238, 144, 0.08);
+  border: 2px solid rgba(144, 238, 144, 0.2);
+  gap: 20px;
+}
+
+.search-section {
+  display: flex;
+  align-items: center;
+  gap: 0;
+  flex: 1;
+  max-width: 500px;
+}
+
+.search-input-container {
+  position: relative;
+  flex: 1;
+  display: flex;
+  align-items: center;
+}
+
+.search-icon {
+  position: absolute;
+  left: 15px;
+  top: 50%;
+  transform: translateY(-50%);
+  color: rgba(45, 80, 22, 0.6);
+  font-size: 20px !important;
+}
+
+.forum-search-input {
+  width: 100%;
+  padding: 12px 20px 12px 50px;
+  border: 2px solid rgba(144, 238, 144, 0.3);
+  border-radius: 25px 0 0 25px;
+  background: rgba(240, 255, 240, 0.5);
+  font-size: 16px;
+  font-family: 'Lora', serif;
+  outline: none;
+  transition: all 0.3s ease;
+  border-right: none;
+}
+
+.forum-search-input:focus {
+  border-color: rgba(144, 238, 144, 0.6);
+  background: rgba(240, 255, 240, 0.8);
+  box-shadow: 0 0 15px rgba(144, 238, 144, 0.2);
+}
+
+.forum-search-btn {
+  padding: 14px 20px;
+  border: 2px solid rgba(144, 238, 144, 0.3);
+  border-left: none;
+  border-radius: 0 25px 25px 0;
+  background: linear-gradient(135deg, #2d5016 0%, #90ee90 100%);
+  color: white;
+  font-size: 16px;
+  font-family: 'Lora', serif;
+  font-weight: 500;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  box-shadow: 0 4px 15px rgba(45, 80, 22, 0.2);
+  white-space: nowrap;
+}
+
+.forum-search-btn:hover {
+  background: linear-gradient(135deg, #1a3d0e 0%, #7ddc7d 100%);
+  transform: translateY(-1px);
+  box-shadow: 0 6px 20px rgba(45, 80, 22, 0.3);
+}
+
+.forum-search-input:focus + .forum-search-btn {
+  border-color: rgba(144, 238, 144, 0.6);
+}
+
+.new-post-btn {
+  display: flex;
+  align-items: center;
+  padding: 12px 20px;
+  border: none;
+  border-radius: 20px;
+  background: linear-gradient(135deg, #90ee90 0%, #2d5016 100%);
+  color: white;
+  font-size: 16px;
+  font-family: 'Lora', serif;
+  font-weight: 500;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  box-shadow: 0 4px 15px rgba(144, 238, 144, 0.2);
+}
+
+.new-post-btn:hover {
+  transform: translateY(-2px) scale(1.02);
+  box-shadow: 0 6px 20px rgba(144, 238, 144, 0.3);
+}
+
+/* 论坛帖子容器 */
+.forum-posts-container {
+  display: flex;
+  flex-direction: column;
+  gap: 20px;
+}
+
+/* 论坛帖子卡片样式 */
+.forum-post-card {
+  background: rgba(255, 255, 255, 0.95);
+  backdrop-filter: blur(15px);
+  border-radius: 20px;
+  padding: 25px 30px;
+  border: 2px solid rgba(144, 238, 144, 0.2);
+  cursor: pointer;
+  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
+  position: relative;
+  overflow: hidden;
+  box-shadow: 0 8px 25px rgba(45, 80, 22, 0.1);
+}
+
+.forum-post-card::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: -100%;
+  width: 100%;
+  height: 100%;
+  background: linear-gradient(90deg, transparent, rgba(144, 238, 144, 0.1), transparent);
+  transition: left 0.6s ease;
+}
+
+.forum-post-card:hover::before {
+  left: 100%;
+}
+
+.forum-post-card:hover {
+  transform: translateY(-8px) scale(1.02);
+  border-color: rgba(144, 238, 144, 0.4);
+  box-shadow: 
+    0 15px 40px rgba(45, 80, 22, 0.15),
+    0 8px 25px rgba(144, 238, 144, 0.1);
+}
+
+/* 帖子头部信息 */
+.post-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 15px;
+}
+
+.post-author-info {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+}
+
+.author-avatar {
+  width: 40px;
+  height: 40px;
+  border-radius: 50%;
+  background: linear-gradient(135deg, #90ee90, #2d5016);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  box-shadow: 0 2px 10px rgba(45, 80, 22, 0.2);
+}
+
+.author-details {
+  display: flex;
+  flex-direction: column;
+  gap: 2px;
+}
+
+.author-name {
+  font-weight: 600;
+  color: #2d5016;
+  font-size: 16px;
+  font-family: 'Lora', serif;
+}
+
+.post-time {
+  font-size: 12px;
+  color: rgba(45, 80, 22, 0.7);
+}
+
+.post-stats {
+  display: flex;
+  gap: 15px;
+}
+
+.stat-item {
+  background: rgba(144, 238, 144, 0.2);
+  padding: 4px 10px;
+  border-radius: 12px;
+  font-size: 12px;
+  color: #2d5016;
+  font-weight: 500;
+}
+
+/* 帖子内容区域 */
+.post-content {
+  margin: 15px 0;
+}
+
+.post-title {
+  font-family: 'Playfair Display', serif;
+  font-size: 20px;
+  font-weight: 700;
+  color: #2d5016;
+  margin-bottom: 10px;
+  line-height: 1.3;
+}
+
+.post-preview {
+  font-size: 15px;
+  color: rgba(45, 80, 22, 0.8);
+  line-height: 1.5;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  line-clamp: 2;
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+}
+
+/* 帖子底部 */
+.post-footer {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-top: 15px;
+  padding-top: 15px;
+  border-top: 1px solid rgba(144, 238, 144, 0.2);
+}
+
+.post-tags {
+  display: flex;
+  gap: 8px;
+}
+
+.post-tag {
+  background: linear-gradient(135deg, #90ee90, #2d5016);
+  color: white;
+  padding: 4px 12px;
+  border-radius: 15px;
+  font-size: 12px;
+  font-weight: 500;
+}
+
+.post-actions {
+  display: flex;
+  gap: 10px;
+}
+
+.action-btn {
+  color: #2d5016;
+  font-size: 14px;
+  font-weight: 500;
+  transition: all 0.3s ease;
+}
+
+.action-btn:hover {
+  color: #90ee90;
+  transform: translateX(3px);
+}
+
+/* 帖子详情页面样式 */
+.post-detail-header {
+  margin: 20px 0;
+  display: flex;
+  justify-content: flex-start;
+}
+
+.back-to-forum-btn {
+  background: rgba(144, 238, 144, 0.2);
+  border: 2px solid rgba(144, 238, 144, 0.4);
+  border-radius: 20px;
+  padding: 12px 24px;
+  color: #2d5016;
+  font-weight: 600;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  display: flex;
+  align-items: center;
+  font-family: 'Lora', serif;
+  backdrop-filter: blur(10px);
+}
+
+.back-to-forum-btn:hover {
+  background: rgba(144, 238, 144, 0.3);
+  transform: translateY(-2px);
+  box-shadow: 0 8px 20px rgba(45, 80, 22, 0.15);
+}
+
+.post-detail-main {
+  background: rgba(255, 255, 255, 0.98);
+  border-radius: 20px;
+  padding: 30px;
+  margin-bottom: 30px;
+  border: 2px solid rgba(144, 238, 144, 0.2);
+  box-shadow: 0 15px 40px rgba(45, 80, 22, 0.08);
+  position: relative;
+  overflow: hidden;
+}
+
+.post-detail-main::before {
+  content: '';
+  position: absolute;
+  top: -2px;
+  left: -2px;
+  right: -2px;
+  bottom: -2px;
+  background: linear-gradient(45deg, 
+    #90ee90 0%, 
+    #98fb98 25%, 
+    #f0fff0 50%, 
+    #98fb98 75%, 
+    #90ee90 100%);
+  border-radius: 22px;
+  z-index: -1;
+  animation: borderGlow 6s ease-in-out infinite;
+}
+
+.post-detail-header-info {
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-start;
+  margin-bottom: 25px;
+  padding-bottom: 20px;
+  border-bottom: 2px solid rgba(144, 238, 144, 0.2);
+}
+
+.post-author-section {
+  display: flex;
+  align-items: center;
+  gap: 15px;
+}
+
+.post-author-avatar {
+  padding: 8px;
+  background: linear-gradient(135deg, rgba(144, 238, 144, 0.2), rgba(240, 255, 240, 0.6));
+  border-radius: 50%;
+  border: 2px solid rgba(144, 238, 144, 0.3);
+}
+
+.post-author-details h2.post-author-name {
+  margin: 0;
+  font-size: 22px;
+  color: #2d5016;
+  font-weight: 700;
+  font-family: 'Playfair Display', serif;
+}
+
+.post-publish-time {
+  color: #666;
+  font-size: 14px;
+  font-style: italic;
+}
+
+.post-stats-section {
+  display: flex;
+  gap: 15px;
+  align-items: center;
+}
+
+.stat-badge {
+  display: flex;
+  align-items: center;
+  background: rgba(144, 238, 144, 0.15);
+  padding: 8px 16px;
+  border-radius: 20px;
+  border: 1px solid rgba(144, 238, 144, 0.3);
+  color: #2d5016;
+  font-weight: 500;
+  font-size: 14px;
+  transition: all 0.3s ease;
+}
+
+.stat-badge:hover {
+  background: rgba(144, 238, 144, 0.25);
+  transform: translateY(-2px);
+}
+
+.post-content-section {
+  margin-top: 20px;
+}
+
+.post-detail-title {
+  font-size: 28px;
+  color: #2d5016;
+  font-weight: 700;
+  margin-bottom: 20px;
+  font-family: 'Playfair Display', serif;
+  line-height: 1.3;
+}
+
+.post-detail-content {
+  font-size: 16px;
+  line-height: 1.8;
+  color: #444;
+  background: rgba(240, 255, 240, 0.3);
+  padding: 25px;
+  border-radius: 15px;
+  border-left: 4px solid #90ee90;
+  font-family: 'Lora', serif;
+}
+
+/* 回复区域样式 */
+.replies-section {
+  margin-top: 30px;
+}
+
+.replies-title {
+  display: flex;
+  align-items: center;
+  font-size: 22px;
+  color: #2d5016;
+  font-weight: 600;
+  margin-bottom: 25px;
+  font-family: 'Playfair Display', serif;
+}
+
+.replies-list {
+  display: flex;
+  flex-direction: column;
+  gap: 20px;
+}
+
+.reply-card {
+  display: flex;
+  background: rgba(255, 255, 255, 0.95);
+  border-radius: 15px;
+  padding: 20px;
+  border: 1px solid rgba(144, 238, 144, 0.2);
+  transition: all 0.3s ease;
+  position: relative;
+  overflow: hidden;
+}
+
+.reply-card::before {
+  content: '';
+  position: absolute;
+  top: -1px;
+  left: -1px;
+  right: -1px;
+  bottom: -1px;
+  background: linear-gradient(45deg, 
+    transparent 0%, 
+    rgba(144, 238, 144, 0.1) 50%, 
+    transparent 100%);
+  border-radius: 16px;
+  z-index: -1;
+  opacity: 0;
+  transition: opacity 0.3s ease;
+}
+
+.reply-card:hover::before {
+  opacity: 1;
+}
+
+.reply-card:hover {
+  transform: translateY(-3px);
+  box-shadow: 0 10px 25px rgba(45, 80, 22, 0.1);
+}
+
+.reply-index {
+  background: linear-gradient(135deg, #90ee90, #2d5016);
+  color: white;
+  width: 35px;
+  height: 35px;
+  border-radius: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-weight: 700;
+  font-size: 14px;
+  margin-right: 20px;
+  flex-shrink: 0;
+  box-shadow: 0 4px 12px rgba(45, 80, 22, 0.2);
+}
+
+.reply-content-wrapper {
+  flex: 1;
+}
+
+.reply-author-info {
+  display: flex;
+  align-items: center;
+  margin-bottom: 12px;
+  gap: 8px;
+}
+
+.reply-author-name {
+  font-weight: 600;
+  color: #2d5016;
+  font-size: 16px;
+}
+
+.reply-time {
+  color: #888;
+  font-size: 13px;
+  font-style: italic;
+}
+
+.reply-content {
+  color: #444;
+  font-size: 15px;
+  line-height: 1.6;
+  font-family: 'Lora', serif;
+}
+
+.no-replies {
+  text-align: center;
+  padding: 60px 20px;
+  color: #666;
+  background: rgba(240, 255, 240, 0.3);
+  border-radius: 20px;
+  border: 2px dashed rgba(144, 238, 144, 0.3);
+}
+
+.no-replies p {
+  margin: 0;
+  font-size: 16px;
+  font-style: italic;
+}
+
+/* 回复输入区域样式 */
+.reply-input-section {
+  margin-top: 40px;
+  background: rgba(255, 255, 255, 0.98);
+  border-radius: 20px;
+  padding: 30px;
+  border: 2px solid rgba(144, 238, 144, 0.2);
+  position: relative;
+  overflow: hidden;
+}
+
+.reply-input-section::before {
+  content: '';
+  position: absolute;
+  top: -2px;
+  left: -2px;
+  right: -2px;
+  bottom: -2px;
+  background: linear-gradient(45deg, 
+    #90ee90 0%, 
+    #98fb98 25%, 
+    #f0fff0 50%, 
+    #98fb98 75%, 
+    #90ee90 100%);
+  border-radius: 22px;
+  z-index: -1;
+  animation: borderGlow 5s ease-in-out infinite;
+}
+
+.reply-input-title {
+  color: #2d5016;
+  font-size: 20px;
+  font-weight: 600;
+  margin-bottom: 20px;
+  font-family: 'Playfair Display', serif;
+}
+
+.reply-input-wrapper {
+  display: flex;
+  flex-direction: column;
+  gap: 15px;
+}
+
+.reply-textarea {
+  width: 100%;
+  border: 2px solid rgba(144, 238, 144, 0.3);
+  border-radius: 15px;
+  padding: 20px;
+  font-size: 15px;
+  font-family: 'Lora', serif;
+  line-height: 1.6;
+  background: rgba(240, 255, 240, 0.2);
+  resize: vertical;
+  min-height: 120px;
+  transition: all 0.3s ease;
+  box-sizing: border-box;
+}
+
+.reply-textarea:focus {
+  outline: none;
+  border-color: #90ee90;
+  background: rgba(240, 255, 240, 0.4);
+  box-shadow: 0 0 0 3px rgba(144, 238, 144, 0.2);
+}
+
+.reply-textarea::placeholder {
+  color: #999;
+  font-style: italic;
+}
+
+.reply-actions {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+.reply-tips {
+  color: #666;
+  font-size: 14px;
+  font-style: italic;
+}
+
+.submit-reply-btn {
+  background: linear-gradient(135deg, #90ee90, #2d5016);
+  color: white;
+  border: none;
+  border-radius: 20px;
+  padding: 12px 30px;
+  font-size: 16px;
+  font-weight: 600;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  display: flex;
+  align-items: center;
+  font-family: 'Lora', serif;
+  box-shadow: 0 6px 20px rgba(45, 80, 22, 0.2);
+}
+
+.submit-reply-btn:hover {
+  transform: translateY(-3px);
+  box-shadow: 0 10px 30px rgba(45, 80, 22, 0.3);
+  background: linear-gradient(135deg, #7dd87d, #1a4a1a);
+}
+
+.submit-reply-btn:active {
+  transform: translateY(-1px);
+}
+
+/* 动画定义 */
+@keyframes backgroundShift {
+  0%, 100% { opacity: 1; }
+  50% { opacity: 0.7; }
+}
+
+@keyframes meteorFall {
+  0% {
+    transform: translateY(-100vh) translateX(-50px) rotate(0deg);
+    opacity: 0;
+  }
+  10% {
+    opacity: 0.8;
+  }
+  90% {
+    opacity: 0.8;
+  }
+  100% {
+    transform: translateY(100vh) translateX(50px) rotate(360deg);
+    opacity: 0;
+  }
+}
+
+@keyframes gardenFloat {
+  0%, 100% {
+    transform: translateY(0px) rotate(0deg);
+    opacity: 0.4;
+  }
+  50% {
+    transform: translateY(-15px) rotate(180deg);
+    opacity: 0.6;
+  }
+}
+
+@keyframes userBarFloat {
+  0%, 100% {
+    transform: translateY(0px);
+  }
+  50% {
+    transform: translateY(-3px);
+  }
+}
+
+@keyframes borderGlow {
+  0%, 100% {
+    opacity: 0.6;
+  }
+  50% {
+    opacity: 1;
+  }
+}
+
+@keyframes iconDance {
+  0%, 100% {
+    transform: scale(1) rotate(0deg);
+  }
+  25% {
+    transform: scale(1.1) rotate(5deg);
+  }
+  50% {
+    transform: scale(1.2) rotate(0deg);
+  }
+  75% {
+    transform: scale(1.1) rotate(-5deg);
+  }
+}
+
+@keyframes iconPulse {
+  0%, 100% {
+    transform: scale(1);
+  }
+  50% {
+    transform: scale(1.1);
+  }
+}
+
+/* 响应式设计 */
+@media (max-width: 1200px) {
+  .emerald-user-bar {
+    width: 440px;
+    right: 20px;
+  }
+  
+  .emerald-nav-bar {
+    margin: 100px 20px 20px;
+    padding: 16px 20px;
+    grid-template-columns: repeat(6, 1fr);
+  }
+  
+  .emerald-nav-item {
+    min-width: 80px;
+    padding: 12px 16px;
+  }
+}
+
+@media (max-width: 768px) {
+  .emerald-user-bar {
+    position: relative;
+    top: 0;
+    right: 0;
+    width: 100%;
+    margin: 20px 0;
+    flex-direction: column;
+    gap: 16px;
+  }
+  
+  .emerald-brand-section {
+    margin-right: 0;
+    justify-content: center;
+  }
+  
+  .emerald-user-stats {
+    flex-direction: column;
+    gap: 8px;
+    width: 100%;
+  }
+  
+  .emerald-nav-bar {
+    margin: 20px 10px;
+    padding: 16px;
+    grid-template-columns: repeat(4, 1fr);
+    gap: 12px;
+  }
+  
+  .emerald-nav-item {
+    min-width: 70px;
+    padding: 10px 12px;
+  }
+  
+  .emerald-nav-icon {
+    font-size: 24px !important;
+  }
+  
+  .emerald-nav-label {
+    font-size: 12px;
+  }
+  
+  .emerald-content-section {
+    margin: 20px 10px;
+    padding: 20px 15px;
+  }
+  
+  .meteor {
+    font-size: 14px;
+  }
+  
+  .garden-element {
+    font-size: 20px;
+  }
+  
+  .forum-toolbar {
+    flex-direction: column;
+    gap: 15px;
+    padding: 15px 20px;
+  }
+  
+  .search-section {
+    width: 100%;
+    max-width: none;
+  }
+  
+  .search-input-container {
+    max-width: none;
+  }
+  
+  .forum-search-input {
+    border-radius: 25px 0 0 25px;
+  }
+  
+  .forum-search-btn {
+    border-radius: 0 25px 25px 0;
+    padding: 14px 16px;
+  }
+  
+  .forum-post-card {
+    padding: 20px;
+  }
+  
+  .post-header {
+    flex-direction: column;
+    align-items: flex-start;
+    gap: 10px;
+  }
+  
+  .post-footer {
+    flex-direction: column;
+    align-items: flex-start;
+    gap: 10px;
+  }
+}
+
+@media (max-width: 480px) {
+  .emerald-nav-bar {
+    grid-template-columns: repeat(3, 1fr);
+    gap: 8px;
+    padding: 12px;
+  }
+  
+  .emerald-nav-item {
+    min-width: 60px;
+    padding: 8px 10px;
+  }
+  
+  .emerald-nav-icon {
+    font-size: 20px !important;
+  }
+  
+  .emerald-nav-label {
+    font-size: 11px;
+  }
+  
+  .emerald-table-section {
+    margin: 20px 10px;
+    padding: 20px 15px;
+  }
+  
+  .emerald-table th,
+  .emerald-table td {
+    padding: 10px 12px;
+    font-size: 13px;
+  }
+  
+  .forum-toolbar {
+    padding: 12px 15px;
+  }
+  
+  .search-section {
+    flex-direction: column;
+    gap: 10px;
+  }
+  
+  .forum-search-input {
+    border-radius: 20px;
+    border: 2px solid rgba(144, 238, 144, 0.3);
+    border-bottom: none;
+  }
+  
+  .forum-search-btn {
+    border-radius: 20px;
+    border: 2px solid rgba(144, 238, 144, 0.3);
+    border-top: none;
+    width: 100%;
+  }
+  
+  .post-detail-title {
+    font-size: 24px;
+  }
+  
+  .post-detail-content {
+    font-size: 14px;
+  }
+  
+  .reply-textarea {
+    padding: 15px;
+  }
+  
+  .submit-reply-btn {
+    padding: 10px 20px;
+    font-size: 14px;
+  }
+}
diff --git a/front/src/SportPage.js b/front/src/SportPage.js
index 2874495..6fed422 100644
--- a/front/src/SportPage.js
+++ b/front/src/SportPage.js
@@ -1,39 +1,40 @@
 import React, { useState, useEffect } from "react";
 import HomeIcon from "@mui/icons-material/Home";
 import MovieIcon from "@mui/icons-material/Movie";
-import EmailIcon from "@mui/icons-material/Email";
+import TvIcon from "@mui/icons-material/Tv";
 import MusicNoteIcon from "@mui/icons-material/MusicNote";
-import EmojiPeopleIcon from "@mui/icons-material/EmojiPeople";
+import AnimationIcon from "@mui/icons-material/Animation";
 import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
 import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
 import PersonIcon from "@mui/icons-material/Person";
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import ForumIcon from "@mui/icons-material/Forum";
 import HelpIcon from "@mui/icons-material/Help";
-import "./App.css";
+import "./SharedStyles.css";
 import { useNavigate } from "react-router-dom";
 import { API_BASE_URL } from "./config";
 
 const navItems = [
-  { label: "首页", icon: <HomeIcon />, path: "/home" },
-  { label: "电影", icon: <MovieIcon />, path: "/movie" },
-  { label: "剧集", icon: <EmailIcon />, path: "/tv" },
-  { label: "音乐", icon: <MusicNoteIcon />, path: "/music" },
-  { label: "动漫", icon: <EmojiPeopleIcon />, path: "/anime" },
-  { label: "游戏", icon: <SportsEsportsIcon />, path: "/game" },
-  { label: "体育", icon: <SportsMartialArtsIcon />, path: "/sport" },
-  { label: "资料", icon: <PersonIcon />, path: "/info" },
-  { label: "论坛", icon: <ForumIcon />, path: "/forum" },
-  { label: "发布", icon: <AccountCircleIcon />, path: "/publish" },
-  { label: "求种", icon: <HelpIcon />, path: "/begseed" },
+  { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+  { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+  { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+  { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+  { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+  { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+  { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+  { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+  { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+  { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+  { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
 ];
 
+// 体育地区标签
 const areaTabs = [
-  { label: "篮球", icon: <MovieIcon fontSize="small" /> },
-  { label: "足球", icon: <EmailIcon fontSize="small" /> },
-  { label: "羽毛球", icon: <EmojiPeopleIcon fontSize="small" /> },
-  { label: "排球", icon: <PersonIcon fontSize="small" /> },
-  { label: "电竞", icon: <PersonIcon fontSize="small" /> },
+  { label: "篮球", value: "basketball" },
+  { label: "足球", value: "football" },
+  { label: "羽毛球", value: "badminton" },
+  { label: "排球", value: "volleyball" },
+  { label: "电竞", value: "esports" }
 ];
 
 export default function SportPage() {
@@ -72,8 +73,8 @@
     ["其他类型1", "其他类型2"] // 其他
   ];
   const sportTypes = sportTypesList[activeTab] || [];
-
   useEffect(() => {
+    // 根据选中的标签获取体育列表
     const area = areaTabs[activeTab].label;
     fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
@@ -87,128 +88,212 @@
     fetch(`${API_BASE_URL}/api/search-seeds?tag=${encodeURIComponent(area)}&keyword=${encodeURIComponent(searchText)}`)
       .then(res => res.json())
       .then(data => {
+        console.log('搜索返回数据:', data);
         setSportList(data);
       })
       .catch(() => setSportList([]));
   };
-
   return (
-    <div className="container">
-      {/* 顶部空白与体育界面一致，用户栏绝对定位在页面右上角 */}
-      <div style={{ height: 80 }} />
-      <div className="user-bar" style={{ position: 'fixed', top: 18, right: 42, zIndex: 100, display: 'flex', alignItems: 'center', background: '#e0f3ff', borderRadius: 12, padding: '6px 18px', boxShadow: '0 2px 8px #b2d8ea', minWidth: 320, minHeight: 48, width: 420 }}>
-        <div style={{ cursor: 'pointer', marginRight: 16 }} onClick={() => navigate('/user')}>
-          {userInfo.avatar_url ? (
-            <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
-          ) : (
-            <AccountCircleIcon style={{ fontSize: 38, color: '#1a237e', background: '#e0f3ff', borderRadius: '50%' }} />
-          )}
-        </div>
-        <div style={{ color: '#222', fontWeight: 500, marginRight: 24 }}>{userInfo.username || '用户栏'}</div>
-        <div style={{ display: 'flex', gap: 28, flex: 1, justifyContent: 'flex-end', alignItems: 'center' }}>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>魔力值: <b>{userPT.magic}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>分享率: <b>{userPT.ratio}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>上传量: <b>{userPT.upload}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>下载量: <b>{userPT.download}</b></span>
-        </div>
+    <div className="emerald-home-container">
+      {/* 流星雨背景效果 */}
+      <div className="meteor-shower">
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
       </div>
-      {/* 下方内容整体下移，留出与体育界面一致的间距 */}
-      <div style={{ height: 32 }} />
-      <nav className="nav-bar card">
-        {navItems.map((item) => (
-          <div
-            key={item.label}
-            className={item.label === "体育" ? "nav-item active" : "nav-item"}
-            onClick={() => navigate(item.path)}
-          >
-            {item.icon}
-            <span>{item.label}</span>
-          </div>
-        ))}
-      </nav>
-      <div className="search-section card">
-        <input
-          className="search-input"
-          placeholder="输入搜索关键词"
-          value={searchText}
-          onChange={e => setSearchText(e.target.value)}
-        />
-        <button className="search-btn" onClick={handleSearch}>
-          <span role="img" aria-label="search">🔍</span>
-        </button>
+
+      {/* 浮动园林装饰元素 */}
+      <div className="floating-garden-elements">
+        <div className="garden-element">🌿</div>
+        <div className="garden-element">🦋</div>
+        <div className="garden-element">🌺</div>
+        <div className="garden-element">🌸</div>
       </div>
-      <div className="area-tabs" style={{ display: 'flex', justifyContent: 'center', gap: 24, margin: '18px 0' }}>
-        {areaTabs.map((tab, idx) => (
-          <div
-            key={tab.label}
-            className={activeTab === idx ? "area-tab active" : "area-tab"}
-            onClick={() => setActiveTab(idx)}
-          >
-            {tab.icon} <span>{tab.label}</span>
-          </div>
-        ))}
-      </div>
-      <div className="table-section">
-        <table className="sport-table">
-          <thead>
-            <tr>
-              <th>体育类型</th>
-              <th>标题</th>
-              <th>发布者</th>
-              <th>大小</th>
-              <th>热度</th>
-              <th>折扣倍率</th>
-            </tr>
-          </thead>
-          <tbody>
-            {sportList.length > 0 ? (
-              sportList.map((item, index) => (
-                <tr key={item.id || index}>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: "#1a237e", textDecoration: "none" }}>
-                      {item.seedtag}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: "#1a237e", textDecoration: "none" }}>
-                      {item.title}
-                    </a>
-                  </td>
-                  <td>{item.username}</td>
-                  <td>{item.seedsize}</td>
-                  <td>{item.downloadtimes}</td>
-                  <td>{item.discount == null ? 1 : item.discount}</td>
-                </tr>
-              ))
+
+      <div className="emerald-content">
+        {/* NeuraFlux用户栏 */}
+        <div className="emerald-user-bar">
+          <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+            {userInfo.avatar_url ? (
+              <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
             ) : (
-              sportTypes.map((type, index) => (
-                <tr key={type}>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: "#1a237e", textDecoration: "none" }}>
-                      {type}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: "#1a237e", textDecoration: "none" }}>
-                      种子{index + 1}
-                    </a>
-                  </td>
-                  <td>发布者{index + 1}</td>
-                  <td>--</td>
-                  <td>--</td>
-                  <td>1</td>
-                </tr>
-              ))
+              <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
             )}
-          </tbody>
-        </table>
+          </div>
+          <div className="emerald-brand-section">
+            <div className="emerald-brand-icon">⚡</div>
+            <div className="emerald-user-label">NeuraFlux</div>
+          </div>
+          <div className="emerald-user-stats">
+            <span className="emerald-stat-item">
+              魔力值: <span className="emerald-stat-value">{userPT.magic}</span>
+            </span>
+            <span className="emerald-stat-item">
+              分享率: <span className="emerald-stat-value">{userPT.ratio}</span>
+            </span>
+            <span className="emerald-stat-item">
+              上传: <span className="emerald-stat-value">{userPT.upload}GB</span>
+            </span>
+            <span className="emerald-stat-item">
+              下载: <span className="emerald-stat-value">{userPT.download}GB</span>
+            </span>
+          </div>
+        </div>
+
+        {/* NeuraFlux导航栏 */}
+        <nav className="emerald-nav-bar">
+          {navItems.map((item) => (
+            <div
+              key={item.label}
+              className={`emerald-nav-item ${item.label === "体育" ? "active" : ""}`}
+              data-type={item.type}
+              onClick={() => navigate(item.path)}
+            >
+              {item.icon}
+              <span className="emerald-nav-label">{item.label}</span>
+            </div>
+          ))}
+        </nav>
+
+        {/* 体育内容区域 */}
+        <div className="emerald-content-section">
+          <h1 className="emerald-page-title">⚽ 体育资源</h1>
+          <p style={{ textAlign: 'center', color: '#2d5016', fontSize: '18px', marginBottom: '30px' }}>
+            欢迎来到NeuraFlux体育频道，这里有最新最热门的体育资源
+          </p>
+          
+          {/* 搜索栏 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px'
+          }}>
+            <input
+              type="text"
+              placeholder="搜索体育资源..."
+              value={searchText}
+              onChange={(e) => setSearchText(e.target.value)}
+              style={{
+                padding: '12px 20px',
+                borderRadius: '20px',
+                border: '2px solid rgba(144, 238, 144, 0.3)',
+                background: 'rgba(240, 255, 240, 0.5)',
+                fontSize: '16px',
+                width: '300px',
+                fontFamily: 'Lora, serif'
+              }}
+            />
+            <button
+              onClick={handleSearch}
+              style={{
+                padding: '12px 24px',
+                borderRadius: '20px',
+                border: 'none',
+                background: 'linear-gradient(135deg, #2d5016 0%, #90ee90 100%)',
+                color: 'white',
+                fontSize: '16px',
+                cursor: 'pointer',
+                fontFamily: 'Lora, serif'
+              }}
+            >
+              搜索
+            </button>
+          </div>
+
+          {/* 地区分类标签 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px',
+            flexWrap: 'wrap'
+          }}>
+            {areaTabs.map((tab, index) => (
+              <button
+                key={tab.value}
+                onClick={() => setActiveTab(index)}
+                style={{
+                  padding: '10px 20px',
+                  borderRadius: '15px',
+                  border: '2px solid rgba(144, 238, 144, 0.3)',
+                  background: activeTab === index 
+                    ? 'linear-gradient(135deg, #90ee90 0%, #2d5016 100%)' 
+                    : 'rgba(240, 255, 240, 0.3)',
+                  color: activeTab === index ? 'white' : '#2d5016',
+                  fontSize: '14px',
+                  cursor: 'pointer',
+                  fontFamily: 'Lora, serif',
+                  transition: 'all 0.3s ease'
+                }}
+              >
+                {tab.label}
+              </button>
+            ))}
+          </div>
+
+          {/* 体育列表 */}
+          <div className="emerald-table-section">
+            <table className="emerald-table">
+              <thead>
+                <tr>
+                  <th>体育类型</th>
+                  <th>标题</th>
+                  <th>发布者</th>
+                  <th>大小</th>
+                  <th>热度</th>
+                  <th>折扣倍率</th>
+                </tr>
+              </thead>
+              <tbody>
+                {sportList.length > 0 ? (
+                  sportList.map((item, index) => (
+                    <tr key={item.id || index}>
+                      <td>{item.seedtag}</td>
+                      <td>
+                        <a href={`/torrent/${item.seedid}`}>
+                          {item.title}
+                        </a>
+                      </td>
+                      <td>{item.username}</td>
+                      <td>{item.seedsize}</td>
+                      <td>{item.downloadtimes}</td>
+                      <td>{item.discount == null ? 1 : item.discount}</td>
+                    </tr>
+                  ))
+                ) : (
+                  sportTypes.map((type, index) => (
+                    <tr key={type}>
+                      <td>{type}</td>
+                      <td>
+                        <a href={`/torrent/${type}`}>
+                          种子{index + 1}
+                        </a>
+                      </td>
+                      <td>发布者{index + 1}</td>
+                      <td>--</td>
+                      <td>--</td>
+                      <td>1</td>
+                    </tr>
+                  ))
+                )}
+              </tbody>
+            </table>
+          </div>
+        </div>
       </div>
-      <div style={{ height: 32 }} />
-      <Pagination />
     </div>
   );
 }
 
+// Pagination组件暂时不使用
 function Pagination() {
   const [page, setPage] = React.useState(3);
   const total = 5;
diff --git a/front/src/TVPage.js b/front/src/TVPage.js
index d75a172..2d6a3a5 100644
--- a/front/src/TVPage.js
+++ b/front/src/TVPage.js
@@ -1,38 +1,40 @@
 import React, { useState, useEffect } from "react";
 import HomeIcon from "@mui/icons-material/Home";
 import MovieIcon from "@mui/icons-material/Movie";
-import EmailIcon from "@mui/icons-material/Email";
+import TvIcon from "@mui/icons-material/Tv";
 import MusicNoteIcon from "@mui/icons-material/MusicNote";
-import EmojiPeopleIcon from "@mui/icons-material/EmojiPeople";
+import AnimationIcon from "@mui/icons-material/Animation";
 import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
 import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
 import PersonIcon from "@mui/icons-material/Person";
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import ForumIcon from "@mui/icons-material/Forum";
 import HelpIcon from "@mui/icons-material/Help";
-import "./App.css";
+import "./SharedStyles.css";
 import { useNavigate } from "react-router-dom";
 import { API_BASE_URL } from "./config";
 
 const navItems = [
-  { label: "首页", icon: <HomeIcon />, path: "/home" },
-  { label: "电影", icon: <MovieIcon />, path: "/movie" },
-  { label: "剧集", icon: <EmailIcon />, path: "/tv" },
-  { label: "音乐", icon: <MusicNoteIcon />, path: "/music" },
-  { label: "动漫", icon: <EmojiPeopleIcon />, path: "/anime" },
-  { label: "游戏", icon: <SportsEsportsIcon />, path: "/game" },
-  { label: "体育", icon: <SportsMartialArtsIcon />, path: "/sport" },
-  { label: "资料", icon: <PersonIcon />, path: "/info" },
-  { label: "论坛", icon: <ForumIcon />, path: "/forum" },
-  { label: "发布", icon: <AccountCircleIcon />, path: "/publish" },
-  { label: "求种", icon: <HelpIcon />, path: "/begseed" },
+  { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+  { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+  { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+  { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+  { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+  { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+  { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+  { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+  { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+  { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+  { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
 ];
 
+// 剧集地区标签
 const areaTabs = [
-  { label: "国产电视剧", icon: <MovieIcon fontSize="small" /> },
-  { label: "港剧", icon: <EmailIcon fontSize="small" /> },
-  { label: "欧美剧", icon: <PersonIcon fontSize="small" /> },
-  { label: "日韩剧", icon: <EmojiPeopleIcon fontSize="small" /> },
+  { label: "华语剧集", value: "chinese" },
+  { label: "港台剧集", value: "hk_tw" },
+  { label: "欧美剧集", value: "western" },
+  { label: "日韩剧集", value: "jp_kr" },
+  { label: "其他剧集", value: "others" }
 ];
 
 export default function TVPage() {
@@ -90,124 +92,203 @@
     ["其他类型1", "其他类型2"] // 其他
   ];
   const tvTypes = tvTypesList[activeTab] || [];
-
   return (
-    <div className="container">
-      {/* 顶部空白与音乐界面一致，用户栏绝对定位在页面右上角 */}
-      <div style={{ height: 80 }} />
-      <div className="user-bar" style={{ position: 'fixed', top: 18, right: 42, zIndex: 100, display: 'flex', alignItems: 'center', background: '#e0f3ff', borderRadius: 12, padding: '6px 18px', boxShadow: '0 2px 8px #b2d8ea', minWidth: 320, minHeight: 48, width: 420 }}>
-        <div style={{ cursor: 'pointer', marginRight: 16 }} onClick={() => navigate('/user')}>
-          {userInfo.avatar_url ? (
-            <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
-          ) : (
-            <AccountCircleIcon style={{ fontSize: 38, color: '#1a237e', background: '#e0f3ff', borderRadius: '50%' }} />
-          )}
-        </div>
-        <div style={{ color: '#222', fontWeight: 500, marginRight: 24 }}>{userInfo.username || '用户栏'}</div>
-        <div style={{ display: 'flex', gap: 28, flex: 1, justifyContent: 'flex-end', alignItems: 'center' }}>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>魔力值: <b>{userPT.magic}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>分享率: <b>{userPT.ratio}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>上传量: <b>{userPT.upload}</b></span>
-          <span style={{ color: '#1976d2', fontWeight: 500 }}>下载量: <b>{userPT.download}</b></span>
-        </div>
+    <div className="emerald-home-container">
+      {/* 流星雨背景效果 */}
+      <div className="meteor-shower">
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
+        <div className="meteor">✨</div>
+        <div className="meteor">🌟</div>
+        <div className="meteor">💫</div>
+        <div className="meteor">⭐</div>
       </div>
-      {/* 下方内容整体下移，留出与音乐界面一致的间距 */}
-      <div style={{ height: 32 }} />
-      <nav className="nav-bar card">
-        {navItems.map((item) => (
-          <div
-            key={item.label}
-            className={item.label === "剧集" ? "nav-item active" : "nav-item"}
-            onClick={() => navigate(item.path)}
-          >
-            {item.icon}
-            <span>{item.label}</span>
-          </div>
-        ))}
-      </nav>
-      <div className="search-section card">
-        <input
-          className="search-input"
-          placeholder="输入搜索关键词"
-          value={searchText}
-          onChange={e => setSearchText(e.target.value)}
-        />
-        <button className="search-btn" onClick={handleSearch}>
-          <span role="img" aria-label="search">🔍</span>
-        </button>
+
+      {/* 浮动园林装饰元素 */}
+      <div className="floating-garden-elements">
+        <div className="garden-element">🌿</div>
+        <div className="garden-element">🦋</div>
+        <div className="garden-element">🌺</div>
+        <div className="garden-element">🌸</div>
       </div>
-      <div className="area-tabs" style={{ display: 'flex', justifyContent: 'center', gap: 24, margin: '18px 0' }}>
-        {areaTabs.map((tab, idx) => (
-          <div
-            key={tab.label}
-            className={activeTab === idx ? "area-tab active" : "area-tab"}
-            onClick={() => setActiveTab(idx)}
-          >
-            {tab.icon} <span>{tab.label}</span>
-          </div>
-        ))}
-      </div>
-      <div className="table-section">
-        <table className="movie-table">
-          <thead>
-            <tr>
-              <th>剧集类型</th>
-              <th>标题</th>
-              <th>发布者</th>
-              <th>大小</th>
-              <th>热度</th>
-              <th>折扣倍率</th>
-            </tr>
-          </thead>
-          <tbody>
-            {tvList.length > 0 ? (
-              tvList.map((item, index) => (
-                <tr key={item.id || index}>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.seedtag}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${item.seedid}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {item.title}
-                    </a>
-                  </td>
-                  <td>{item.username}</td>
-                  <td>{item.seedsize}</td>
-                  <td>{item.downloadtimes}</td>
-                  <td>{item.discount == null ? 1 : item.discount}</td>
-                </tr>
-              ))
+
+      <div className="emerald-content">
+        {/* NeuraFlux用户栏 */}
+        <div className="emerald-user-bar">
+          <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+            {userInfo.avatar_url ? (
+              <img src={userInfo.avatar_url} alt="用户头像" style={{ width: 38, height: 38, borderRadius: '50%', objectFit: 'cover' }} />
             ) : (
-              tvTypes.map((type, index) => (
-                <tr key={type}>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      {type}
-                    </a>
-                  </td>
-                  <td>
-                    <a href={`/torrent/${type}`} style={{ color: '#1a237e', textDecoration: 'none' }}>
-                      种子{index + 1}
-                    </a>
-                  </td>
-                  <td>发布者{index + 1}</td>
-                  <td>--</td>
-                  <td>--</td>
-                  <td>1</td>
-                </tr>
-              ))
+              <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
             )}
-          </tbody>
-        </table>
+          </div>
+          <div className="emerald-brand-section">
+            <div className="emerald-brand-icon">⚡</div>
+            <div className="emerald-user-label">NeuraFlux</div>
+          </div>
+          <div className="emerald-user-stats">
+            <span className="emerald-stat-item">
+              魔力值: <span className="emerald-stat-value">{userPT.magic}</span>
+            </span>
+            <span className="emerald-stat-item">
+              分享率: <span className="emerald-stat-value">{userPT.ratio}</span>
+            </span>
+            <span className="emerald-stat-item">
+              上传: <span className="emerald-stat-value">{userPT.upload}GB</span>
+            </span>
+            <span className="emerald-stat-item">
+              下载: <span className="emerald-stat-value">{userPT.download}GB</span>
+            </span>
+          </div>
+        </div>        {/* NeuraFlux导航栏 */}
+        <nav className="emerald-nav-bar">
+          {navItems.map((item) => (
+            <div
+              key={item.label}
+              className={`emerald-nav-item ${item.label === "剧集" ? "active" : ""}`}
+              data-type={item.type}
+              onClick={() => navigate(item.path)}
+            >
+              {item.icon}
+              <span className="emerald-nav-label">{item.label}</span>
+            </div>
+          ))}
+        </nav>
+
+        {/* 剧集内容区域 */}
+        <div className="emerald-content-section">
+          <h1 className="emerald-page-title">📺 剧集资源</h1>
+          <p style={{ textAlign: 'center', color: '#2d5016', fontSize: '18px', marginBottom: '30px' }}>
+            欢迎来到NeuraFlux剧集频道，这里有最新最热门的电视剧、综艺、纪录片资源
+          </p>
+          
+          {/* 搜索栏 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px'
+          }}>
+            <input
+              type="text"
+              placeholder="搜索剧集资源..."
+              value={searchText}
+              onChange={(e) => setSearchText(e.target.value)}
+              style={{
+                padding: '12px 20px',
+                borderRadius: '20px',
+                border: '2px solid rgba(144, 238, 144, 0.3)',
+                background: 'rgba(240, 255, 240, 0.5)',
+                fontSize: '16px',
+                width: '300px',
+                fontFamily: 'Lora, serif'
+              }}
+            />
+            <button
+              onClick={handleSearch}
+              style={{
+                padding: '12px 24px',
+                borderRadius: '20px',
+                border: 'none',
+                background: 'linear-gradient(135deg, #2d5016 0%, #90ee90 100%)',
+                color: 'white',
+                fontSize: '16px',
+                cursor: 'pointer',
+                fontFamily: 'Lora, serif'
+              }}
+            >
+              搜索
+            </button>
+          </div>          {/* 地区分类标签 */}
+          <div style={{ 
+            display: 'flex', 
+            justifyContent: 'center', 
+            marginBottom: '30px',
+            gap: '15px',
+            flexWrap: 'wrap'
+          }}>
+            {areaTabs.map((tab, index) => (
+              <button
+                key={tab.value}
+                onClick={() => setActiveTab(index)}
+                style={{
+                  padding: '10px 20px',
+                  borderRadius: '15px',
+                  border: '2px solid rgba(144, 238, 144, 0.3)',
+                  background: activeTab === index 
+                    ? 'linear-gradient(135deg, #90ee90 0%, #2d5016 100%)' 
+                    : 'rgba(240, 255, 240, 0.3)',
+                  color: activeTab === index ? 'white' : '#2d5016',
+                  fontSize: '14px',
+                  cursor: 'pointer',
+                  fontFamily: 'Lora, serif',
+                  transition: 'all 0.3s ease'
+                }}
+              >
+                {tab.label}
+              </button>
+            ))}
+          </div>
+
+          {/* 剧集列表 */}
+          <div className="emerald-table-section">
+            <table className="emerald-table">
+              <thead>
+                <tr>
+                  <th>剧集类型</th>
+                  <th>标题</th>
+                  <th>发布者</th>
+                  <th>大小</th>
+                  <th>热度</th>
+                  <th>折扣倍率</th>
+                </tr>
+              </thead>
+              <tbody>
+                {tvList.length > 0 ? (
+                  tvList.map((item, index) => (
+                    <tr key={item.id || index}>
+                      <td>{item.seedtag}</td>
+                      <td>
+                        <a href={`/torrent/${item.seedid}`}>
+                          {item.title}
+                        </a>
+                      </td>
+                      <td>{item.username}</td>
+                      <td>{item.seedsize}</td>
+                      <td>{item.downloadtimes}</td>
+                      <td>{item.discount == null ? 1 : item.discount}</td>
+                    </tr>
+                  ))
+                ) : (
+                  tvTypes.map((type, index) => (
+                    <tr key={type}>
+                      <td>{type}</td>
+                      <td>
+                        <a href={`/torrent/${type}`}>
+                          种子{index + 1}
+                        </a>
+                      </td>
+                      <td>发布者{index + 1}</td>
+                      <td>--</td>
+                      <td>--</td>
+                      <td>1</td>
+                    </tr>
+                  ))
+                )}
+              </tbody>
+            </table>
+          </div>
+        </div>
       </div>
-      <div style={{ height: 32 }} />
-      <Pagination />
     </div>
   );
 }
 
+// Pagination组件暂时不使用
 function Pagination() {
   const [page, setPage] = React.useState(3);
   const total = 5;
diff --git a/front/src/TvPage.js b/front/src/TvPage.js
new file mode 100644
index 0000000..5bac9f3
--- /dev/null
+++ b/front/src/TvPage.js
@@ -0,0 +1,284 @@
+import React, { useState, useEffect } from "react";
+import HomeIcon from "@mui/icons-material/Home";
+import MovieIcon from "@mui/icons-material/Movie";
+import TvIcon from "@mui/icons-material/Tv";
+import MusicNoteIcon from "@mui/icons-material/MusicNote";
+import AnimationIcon from "@mui/icons-material/Animation";
+import SportsEsportsIcon from "@mui/icons-material/SportsEsports";
+import SportsMartialArtsIcon from "@mui/icons-material/SportsMartialArts";
+import PersonIcon from "@mui/icons-material/Person";
+import AccountCircleIcon from "@mui/icons-material/AccountCircle";
+import ForumIcon from "@mui/icons-material/Forum";
+import HelpIcon from "@mui/icons-material/Help";
+import { useNavigate } from "react-router-dom";
+import "./SharedStyles.css";
+import { API_BASE_URL } from "./config";
+
+// 导航栏
+const navItems = [
+    { label: "首页", icon: <HomeIcon className="emerald-nav-icon" />, path: "/home", type: "home" },
+    { label: "电影", icon: <MovieIcon className="emerald-nav-icon" />, path: "/movie", type: "movie" },
+    { label: "剧集", icon: <TvIcon className="emerald-nav-icon" />, path: "/tv", type: "tv" },
+    { label: "音乐", icon: <MusicNoteIcon className="emerald-nav-icon" />, path: "/music", type: "music" },
+    { label: "动漫", icon: <AnimationIcon className="emerald-nav-icon" />, path: "/anime", type: "anime" },
+    { label: "游戏", icon: <SportsEsportsIcon className="emerald-nav-icon" />, path: "/game", type: "game" },
+    { label: "体育", icon: <SportsMartialArtsIcon className="emerald-nav-icon" />, path: "/sport", type: "sport" },
+    { label: "资料", icon: <PersonIcon className="emerald-nav-icon" />, path: "/info", type: "info" },
+    { label: "论坛", icon: <ForumIcon className="emerald-nav-icon" />, path: "/forum", type: "forum" },
+    { label: "发布", icon: <AccountCircleIcon className="emerald-nav-icon" />, path: "/publish", type: "publish" },
+    { label: "求种", icon: <HelpIcon className="emerald-nav-icon" />, path: "/begseed", type: "help" },
+];
+
+// 剧集地区标签
+const areaTabs = [
+    { label: "华语剧集", value: "chinese" },
+    { label: "港台剧集", value: "hk_tw" },
+    { label: "欧美剧集", value: "western" },
+    { label: "日韩剧集", value: "jp_kr" },
+    { label: "其他剧集", value: "others" }
+];
+
+export default function TvPage() {
+    const navigate = useNavigate();
+    const [searchText, setSearchText] = React.useState('');
+    const [userInfo, setUserInfo] = useState({ avatar_url: '', username: '' });
+    const [userPT, setUserPT] = useState({ magic: 0, ratio: 0, upload: 0, download: 0 });
+    const [activeTab, setActiveTab] = React.useState(0);
+    const [tvList, setTvList] = React.useState([]);
+
+    useEffect(() => {
+        const match = document.cookie.match('(^|;)\\s*userId=([^;]+)');
+        const userId = match ? match[2] : null;
+        if (!userId) return;
+        fetch(`${API_BASE_URL}/api/get-userpt?userid=${encodeURIComponent(userId)}`)
+            .then(res => res.json())
+            .then(data => {
+                setUserInfo({ avatar_url: data.user.avatar_url, username: data.user.username });
+                setUserPT({
+                    magic: data.magic_value || data.magic || 0,
+                    ratio: data.share_ratio || data.share || 0,
+                    upload: data.upload_amount || data.upload || 0,
+                    download: data.download_amount || data.download || 0,
+                });
+            })
+            .catch(err => console.error('Fetching user profile failed', err));
+    }, []);
+
+    // 每个tab对应的剧集类型
+    const tvTypesList = [
+        ["华语电视剧", "华语综艺", "华语纪录片", "华语其他"], // 华语
+        ["港台电视剧", "港台综艺", "港台其他"], // 港台
+        ["欧美电视剧", "欧美综艺", "欧美纪录片", "欧美其他"], // 欧美
+        ["日韩电视剧", "日韩综艺", "日韩其他"], // 日韩
+        ["其他类型1", "其他类型2"] // 其他
+    ];
+    const tvTypes = tvTypesList[activeTab] || [];
+
+    React.useEffect(() => {
+        const area = areaTabs[activeTab].label;
+        fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+            .then(res => res.json())
+            .then(data => {
+                setTvList(data);
+            })
+            .catch(() => setTvList([]));
+    }, [activeTab]);
+
+    // 搜索按钮处理
+    const handleSearch = () => {
+        const area = areaTabs[activeTab].label;
+        fetch(`${API_BASE_URL}/api/search-seeds?tag=${encodeURIComponent(area)}&keyword=${encodeURIComponent(searchText)}`)
+            .then(res => res.json())
+            .then(data => {
+                setTvList(data);
+            })
+            .catch(() => setTvList([]));
+    };
+
+    return (
+        <div className="emerald-home-container">
+            {/* 流星雨背景效果 */}
+            <div className="meteor-shower">
+                <div className="meteor">💫</div>
+                <div className="meteor">⭐</div>
+                <div className="meteor">✨</div>
+                <div className="meteor">🌟</div>
+                <div className="meteor">💫</div>
+                <div className="meteor">⭐</div>
+                <div className="meteor">✨</div>
+                <div className="meteor">🌟</div>
+                <div className="meteor">💫</div>
+                <div className="meteor">⭐</div>
+            </div>
+
+            {/* 浮动园林装饰元素 */}
+            <div className="floating-garden-elements">
+                <div className="garden-element">🌿</div>
+                <div className="garden-element">🦋</div>
+                <div className="garden-element">🌺</div>
+                <div className="garden-element">🌸</div>
+            </div>
+
+            <div className="emerald-content">
+                {/* NeuraFlux用户栏 */}
+                <div className="emerald-user-bar">
+                    <div className="emerald-user-avatar" onClick={() => navigate('/user')}>
+                        <AccountCircleIcon style={{ fontSize: 38, color: 'white' }} />
+                    </div>
+                    <div className="emerald-brand-section">
+                        <div className="emerald-brand-icon">⚡</div>
+                        <div className="emerald-user-label">NeuraFlux</div>
+                    </div>
+                    <div className="emerald-user-stats">
+                        <span className="emerald-stat-item">
+                            魔力值: <span className="emerald-stat-value">{userPT.magic}</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            分享率: <span className="emerald-stat-value">{userPT.ratio}</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            上传: <span className="emerald-stat-value">{userPT.upload}GB</span>
+                        </span>
+                        <span className="emerald-stat-item">
+                            下载: <span className="emerald-stat-value">{userPT.download}GB</span>
+                        </span>
+                    </div>
+                </div>
+
+                {/* NeuraFlux导航栏 */}
+                <nav className="emerald-nav-bar">
+                    {navItems.map((item) => (
+                        <div
+                            key={item.label}
+                            className={`emerald-nav-item ${item.label === "剧集" ? "active" : ""}`}
+                            data-type={item.type}
+                            onClick={() => navigate(item.path)}
+                        >
+                            {item.icon}
+                            <span className="emerald-nav-label">{item.label}</span>
+                        </div>
+                    ))}
+                </nav>
+
+                {/* 剧集内容区域 */}
+                <div className="emerald-content-section">
+                    <h1 className="emerald-page-title">📺 剧集资源</h1>
+                    <p style={{ textAlign: 'center', color: '#2d5016', fontSize: '18px', marginBottom: '30px' }}>
+                        欢迎来到NeuraFlux剧集频道，这里有最新最热门的电视剧、综艺、纪录片资源
+                    </p>
+                    
+                    {/* 搜索栏 */}
+                    <div style={{ 
+                        display: 'flex', 
+                        justifyContent: 'center', 
+                        marginBottom: '30px',
+                        gap: '15px'
+                    }}>
+                        <input
+                            type="text"
+                            placeholder="搜索剧集资源..."
+                            value={searchText}
+                            onChange={(e) => setSearchText(e.target.value)}
+                            style={{
+                                padding: '12px 20px',
+                                borderRadius: '20px',
+                                border: '2px solid rgba(144, 238, 144, 0.3)',
+                                background: 'rgba(240, 255, 240, 0.5)',
+                                fontSize: '16px',
+                                width: '300px',
+                                fontFamily: 'Lora, serif'
+                            }}
+                        />
+                        <button
+                            onClick={handleSearch}
+                            style={{
+                                padding: '12px 24px',
+                                borderRadius: '20px',
+                                border: 'none',
+                                background: 'linear-gradient(135deg, #2d5016 0%, #90ee90 100%)',
+                                color: 'white',
+                                fontSize: '16px',
+                                cursor: 'pointer',
+                                fontFamily: 'Lora, serif'
+                            }}
+                        >
+                            搜索
+                        </button>
+                    </div>
+
+                    {/* 地区分类标签 */}
+                    <div style={{ 
+                        display: 'flex', 
+                        justifyContent: 'center', 
+                        marginBottom: '30px',
+                        gap: '15px',
+                        flexWrap: 'wrap'
+                    }}>
+                        {areaTabs.map((tab, index) => (
+                            <button
+                                key={tab.value}
+                                onClick={() => setActiveTab(index)}
+                                style={{
+                                    padding: '10px 20px',
+                                    borderRadius: '15px',
+                                    border: '2px solid rgba(144, 238, 144, 0.3)',
+                                    background: activeTab === index 
+                                        ? 'linear-gradient(135deg, #90ee90 0%, #2d5016 100%)' 
+                                        : 'rgba(240, 255, 240, 0.3)',
+                                    color: activeTab === index ? 'white' : '#2d5016',
+                                    fontSize: '14px',
+                                    cursor: 'pointer',
+                                    fontFamily: 'Lora, serif',
+                                    transition: 'all 0.3s ease'
+                                }}
+                            >
+                                {tab.label}
+                            </button>
+                        ))}
+                    </div>
+
+                    {/* 剧集列表 */}
+                    <div className="emerald-table-section">
+                        <table className="emerald-table">
+                            <thead>
+                                <tr>
+                                    <th>分类标签</th>
+                                    <th>剧集标题</th>
+                                    <th>热门指数</th>
+                                    <th>发布者</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                {tvList.length > 0 ? (
+                                    tvList.map((tv, index) => (
+                                        <tr key={tv.id || index}>
+                                            <td>{tv.tags || areaTabs[activeTab].label}</td>
+                                            <td>
+                                                <a href={`/torrent/${tv.id || index}`}>
+                                                    {tv.title || `剧集资源 ${index + 1}`}
+                                                </a>
+                                            </td>
+                                            <td>{tv.popularity || Math.floor(Math.random() * 100) + 1}</td>
+                                            <td>{tv.user?.username || '匿名用户'}</td>
+                                        </tr>
+                                    ))
+                                ) : (
+                                    <tr>
+                                        <td colspan="4" style={{ 
+                                            textAlign: 'center', 
+                                            color: '#666', 
+                                            fontStyle: 'italic',
+                                            padding: '40px 20px'
+                                        }}>
+                                            暂无{areaTabs[activeTab].label}资源，请稍后再试
+                                        </td>
+                                    </tr>
+                                )}
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+            </div>
+        </div>
+    );
+}
