瀏覽代碼

Add 同趣U.html preview page

0225015 18 小時之前
父節點
當前提交
a8d99a3370
共有 1 個文件被更改,包括 1007 次插入0 次删除
  1. 1007 0
      同趣U.html

+ 1007 - 0
同趣U.html

@@ -0,0 +1,1007 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>大学生兴趣伙伴 App - 页面预览</title>
+    <style>
+        body {
+            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
+            margin: 0;
+            padding: 0;
+            background-color: #f0f2f5;
+            display: flex;
+            justify-content: center;
+            align-items: flex-start; /* Align items to the top */
+            padding-top: 20px; /* Add some top padding */
+            padding-bottom: 100px; /* Add padding to see all content */
+        }
+
+        .phone-mockup {
+            width: 375px; /* Typical phone width */
+            height: 750px; /* Typical phone height */
+            border: 10px solid #333;
+            border-radius: 40px;
+            background-color: #fff;
+            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
+            position: relative; /* Needed for absolute positioning of header/footer */
+            overflow: hidden; /* Hide content that overflows */
+            display: flex;
+            flex-direction: column;
+        }
+
+        .app-header {
+            background-color: #007bff;
+            color: white;
+            padding: 15px;
+            text-align: center;
+            font-weight: bold;
+            font-size: 1.1em;
+            flex-shrink: 0; /* Prevent header from shrinking */
+            position: sticky; /* Keep header visible when scrolling content */
+            top: 0;
+            z-index: 10;
+            display: flex;
+            align-items: center;
+            justify-content: space-between; /* Align items */
+        }
+        .app-header .icon, .app-header .back-button {
+            color: white;
+            text-decoration: none;
+            font-size: 1.2em;
+            padding: 0 10px;
+        }
+         .app-header .back-button {
+            font-size: 1.5em; /* Make back arrow slightly larger */
+         }
+
+
+        .app-content {
+            flex-grow: 1; /* Allow content to fill available space */
+            overflow-y: auto; /* Enable scrolling for content */
+            padding: 15px;
+        }
+
+        .app-footer {
+            display: flex;
+            justify-content: space-around;
+            padding: 10px 0;
+            border-top: 1px solid #eee;
+            background-color: #fff;
+            flex-shrink: 0; /* Prevent footer from shrinking */
+            position: sticky; /* Keep footer visible */
+            bottom: 0;
+            z-index: 10;
+        }
+
+        .tab-item {
+            text-align: center;
+            color: #888;
+            text-decoration: none;
+            font-size: 0.8em;
+        }
+        .tab-item.active {
+            color: #007bff;
+        }
+        .tab-item span { /* Icon placeholder */
+            display: block;
+            font-size: 1.5em;
+            margin-bottom: 3px;
+        }
+
+        /* Basic Element Styles */
+        h2, h3 { margin-top: 10px; margin-bottom: 10px; color: #333; }
+        p { color: #555; line-height: 1.5; margin-bottom: 10px; }
+        button, .button-link {
+            display: inline-block;
+            padding: 10px 15px;
+            background-color: #007bff;
+            color: white;
+            border: none;
+            border-radius: 20px;
+            cursor: pointer;
+            text-align: center;
+            font-size: 0.9em;
+            margin: 5px 0;
+            text-decoration: none;
+        }
+        button:hover, .button-link:hover { background-color: #0056b3; }
+        button.secondary, .button-link.secondary { background-color: #6c757d; }
+        button.secondary:hover, .button-link.secondary:hover { background-color: #5a6268; }
+        button.outline, .button-link.outline { background-color: transparent; border: 1px solid #007bff; color: #007bff; }
+        button.outline:hover, .button-link.outline:hover { background-color: rgba(0, 123, 255, 0.1); }
+
+
+        input[type="text"], input[type="password"], input[type="email"], textarea, select {
+            width: calc(100% - 22px); /* Adjust for padding and border */
+            padding: 10px;
+            margin-bottom: 10px;
+            border: 1px solid #ccc;
+            border-radius: 5px;
+            font-size: 1em;
+        }
+        textarea { height: 80px; resize: vertical; }
+
+        /* Component Styles */
+        .card {
+            background-color: #fff;
+            border: 1px solid #eee;
+            border-radius: 8px;
+            padding: 15px;
+            margin-bottom: 15px;
+            box-shadow: 0 2px 5px rgba(0,0,0,0.05);
+        }
+        .user-card, .message-item, .group-item, .event-item, .notification-item, .skill-item {
+            display: flex;
+            align-items: center;
+            margin-bottom: 15px;
+            padding-bottom: 10px;
+            border-bottom: 1px solid #f0f0f0;
+        }
+        .user-card:last-child, .message-item:last-child, .group-item:last-child, .event-item:last-child, .notification-item:last-child, .skill-item:last-child {
+             border-bottom: none;
+             margin-bottom: 0;
+             padding-bottom: 0;
+        }
+        .avatar {
+            width: 50px;
+            height: 50px;
+            border-radius: 50%;
+            background-color: #e0e0e0;
+            margin-right: 15px;
+            object-fit: cover; /* Make images fit well */
+            flex-shrink: 0;
+        }
+        .content-details { flex-grow: 1; }
+        .content-details h3 { margin: 0 0 5px 0; font-size: 1em; }
+        .content-details p { margin: 0; font-size: 0.9em; color: #777; }
+        .user-card .actions { margin-left: auto; }
+        .interest-tag {
+            display: inline-block;
+            background-color: #e7f3ff;
+            color: #007bff;
+            padding: 3px 8px;
+            border-radius: 15px;
+            font-size: 0.8em;
+            margin: 2px;
+            border: 1px solid #cce5ff;
+        }
+         .interest-category h3 { font-size: 1em; margin-bottom: 5px; border-bottom: 1px solid #eee; padding-bottom: 5px;}
+         .interest-category .tags { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 15px;}
+         .interest-category .tag-button {
+             background-color: #f0f0f0;
+             border: 1px solid #ddd;
+             color: #555;
+             padding: 5px 10px;
+             border-radius: 15px;
+             font-size: 0.9em;
+             cursor: pointer;
+         }
+          .interest-category .tag-button.selected {
+             background-color: #007bff;
+             color: white;
+             border-color: #007bff;
+          }
+
+        .chat-bubble {
+            max-width: 75%;
+            padding: 10px 15px;
+            border-radius: 18px;
+            margin-bottom: 10px;
+            line-height: 1.4;
+            word-wrap: break-word;
+        }
+        .chat-bubble.sent {
+            background-color: #007bff;
+            color: white;
+            margin-left: auto;
+            border-bottom-right-radius: 5px;
+        }
+        .chat-bubble.received {
+            background-color: #e9ecef;
+            color: #333;
+            margin-right: auto;
+            border-bottom-left-radius: 5px;
+        }
+        .chat-input {
+            display: flex;
+            padding: 10px;
+            border-top: 1px solid #eee;
+            background: #f8f9fa;
+        }
+        .chat-input input { flex-grow: 1; margin-right: 10px; margin-bottom: 0; }
+
+        .profile-header { text-align: center; margin-bottom: 20px; }
+        .profile-header .avatar { width: 100px; height: 100px; margin: 0 auto 10px auto; }
+        .profile-header h2 { margin: 5px 0; }
+        .profile-header p { color: #666; font-size: 0.9em; }
+
+        .section-title { font-weight: bold; margin-top: 20px; margin-bottom: 10px; border-bottom: 1px solid #eee; padding-bottom: 5px;}
+
+        .map-placeholder {
+            width: 100%;
+            height: 300px;
+            background-color: #e0e0e0;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            color: #999;
+            font-style: italic;
+            text-align: center;
+            border-radius: 8px;
+            border: 1px dashed #ccc;
+            position: relative;
+        }
+        .map-placeholder::after { /* Simple pin example */
+            content: '📍';
+            font-size: 2em;
+            position: absolute;
+            top: 40%;
+            left: 50%;
+            transform: translate(-50%, -50%);
+        }
+         .map-placeholder p { padding: 0 20px;}
+
+        /* Hide all pages initially */
+        .app-page { display: none; }
+        /* Show the default page (Home) */
+        #page-home { display: block; }
+
+    </style>
+</head>
+<body>
+
+    <div class="phone-mockup">
+        <!-- Dynamic Header will be controlled by JS in a real app -->
+        <!-- Placeholder Header -->
+        <div class="app-header" id="app-header">
+             <!-- Content changes based on active page -->
+        </div>
+
+        <!-- Content Area: Contains all pages -->
+        <div class="app-content">
+
+            <!-- PAGE: Home / Feed -->
+            <div class="app-page" id="page-home">
+                <script>document.getElementById('app-header').innerHTML = '<span>兴趣伙伴</span><a href="#page-notifications" class="icon">🔔</a>';</script>
+                <h2>为你推荐</h2>
+                <div class="card user-card">
+                    <img src="https://via.placeholder.com/50/FFA500/FFFFFF?text=U1" alt="User Avatar" class="avatar">
+                    <div class="content-details">
+                        <h3>张伟 <span style="font-size: 0.8em; color: #777;">(北京大学)</span></h3>
+                        <p>共同兴趣: <span class="interest-tag">摄影</span> <span class="interest-tag">爬山</span></p>
+                        <p style="font-size: 0.8em; color: #999;">"周末想找人一起去奥森拍照~"</p>
+                    </div>
+                    <div class="actions">
+                        <a href="#page-chat" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">打招呼</a>
+                    </div>
+                </div>
+                 <div class="card user-card">
+                    <img src="https://via.placeholder.com/50/4682B4/FFFFFF?text=U2" alt="User Avatar" class="avatar">
+                    <div class="content-details">
+                        <h3>李静 <span style="font-size: 0.8em; color: #777;">(清华大学)</span></h3>
+                        <p>共同兴趣: <span class="interest-tag">日语学习</span> <span class="interest-tag">看动漫</span></p>
+                         <p style="font-size: 0.8em; color: #999;">"寻找N1备考伙伴,互相监督!"</p>
+                    </div>
+                    <div class="actions">
+                        <a href="#page-chat" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">打招呼</a>
+                    </div>
+                </div>
+                <div class="card user-card">
+                    <img src="https://via.placeholder.com/50/32CD32/FFFFFF?text=U3" alt="User Avatar" class="avatar">
+                    <div class="content-details">
+                        <h3>王磊 <span style="font-size: 0.8em; color: #777;">(人民大学)</span></h3>
+                        <p>共同兴趣: <span class="interest-tag">篮球</span> <span class="interest-tag">说唱音乐</span></p>
+                         <p style="font-size: 0.8em; color: #999;">"下午东操场3v3,来不来?"</p>
+                    </div>
+                     <div class="actions">
+                        <a href="#page-chat" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">打招呼</a>
+                    </div>
+                </div>
+                 <h2>附近的活动</h2>
+                 <div class="card event-item">
+                    <img src="https://via.placeholder.com/50/FF6347/FFFFFF?text=E" alt="Event Icon" class="avatar" style="border-radius: 8px;">
+                    <div class="content-details">
+                        <h3>周末狼人杀局</h3>
+                        <p>时间: 周六 14:00</p>
+                        <p>地点: 学校咖啡厅</p>
+                    </div>
+                    <div class="actions">
+                        <a href="#page-event-detail" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">查看详情</a>
+                    </div>
+                </div>
+            </div>
+
+            <!-- PAGE: Discover / Search -->
+            <div class="app-page" id="page-discover">
+                 <script>document.getElementById('app-header').innerHTML = '<span>发现</span>';</script>
+                 <input type="text" placeholder="搜索用户、兴趣、小组、活动...">
+                 <button style="width: 100%; margin-bottom: 15px;">搜索</button>
+
+                 <h3>按兴趣浏览</h3>
+                 <div>
+                     <span class="interest-tag">摄影</span>
+                     <span class="interest-tag">篮球</span>
+                     <span class="interest-tag">吉他</span>
+                     <span class="interest-tag">Python</span>
+                     <span class="interest-tag">日语学习</span>
+                     <span class="interest-tag">电影</span>
+                     <span class="interest-tag">爬山</span>
+                     <span class="interest-tag">桌游</span>
+                     <a href="#page-interests" style="font-size: 0.9em; color: #007bff;">更多...</a>
+                 </div>
+
+                 <h3 style="margin-top: 20px;">推荐用户</h3>
+                 <!-- User cards like on home page -->
+                 <div class="card user-card">
+                    <img src="https://via.placeholder.com/50/8A2BE2/FFFFFF?text=U4" alt="User Avatar" class="avatar">
+                    <div class="content-details">
+                        <h3>赵敏 <span style="font-size: 0.8em; color: #777;">(北京师范大学)</span></h3>
+                        <p>兴趣: <span class="interest-tag">志愿者活动</span> <span class="interest-tag">阅读</span></p>
+                    </div>
+                    <div class="actions"> <a href="#page-profile-other" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">查看资料</a> </div>
+                </div>
+
+                 <h3 style="margin-top: 20px;">热门小组</h3>
+                 <div class="card group-item">
+                     <img src="https://via.placeholder.com/50/FFD700/000000?text=G1" alt="Group Icon" class="avatar" style="border-radius: 8px;">
+                     <div class="content-details">
+                        <h3>北邮吉他社</h3>
+                        <p>128 成员 | 活跃度高</p>
+                     </div>
+                      <div class="actions"> <a href="#page-group-detail" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">加入</a> </div>
+                 </div>
+                 <a href="#page-groups" class="button-link secondary" style="width: 100%; text-align: center; margin-top: 10px;">查看所有小组</a>
+
+                 <h3 style="margin-top: 20px;">推荐活动</h3>
+                  <div class="card event-item">
+                    <img src="https://via.placeholder.com/50/00CED1/FFFFFF?text=E2" alt="Event Icon" class="avatar" style="border-radius: 8px;">
+                    <div class="content-details">
+                        <h3>校园编程马拉松</h3>
+                        <p>时间: 下周五 9:00</p>
+                        <p>地点: 计算机学院楼</p>
+                    </div>
+                    <div class="actions"> <a href="#page-event-detail" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">感兴趣</a> </div>
+                </div>
+                 <a href="#page-events" class="button-link secondary" style="width: 100%; text-align: center; margin-top: 10px;">查看所有活动</a>
+
+                 <h3 style="margin-top: 20px;">技能交换</h3>
+                 <div class="card skill-item">
+                     <img src="https://via.placeholder.com/50/6495ED/FFFFFF?text=S1" alt="User Avatar" class="avatar">
+                     <div class="content-details">
+                        <h3>刘洋 <span style="font-size: 0.8em; color: #777;">(北京航空航天大学)</span></h3>
+                        <p><strong>提供:</strong> PPT美化 <span style="color: green;">|</span> <strong>需要:</strong> 英语口语练习</p>
+                     </div>
+                     <div class="actions"> <a href="#page-chat" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">联系Ta</a> </div>
+                 </div>
+                  <a href="#page-skills" class="button-link secondary" style="width: 100%; text-align: center; margin-top: 10px;">查看技能交换</a>
+
+                  <h3 style="margin-top: 20px;">附近的人 (地图)</h3>
+                  <a href="#page-map" class="button-link" style="width: 100%; text-align: center;">查看地图模式</a>
+
+
+            </div>
+
+            <!-- PAGE: Messages List -->
+            <div class="app-page" id="page-messages">
+                <script>document.getElementById('app-header').innerHTML = '<span>消息</span><a href="#page-chat" class="icon">+</a>';</script>
+                 <div class="message-item">
+                    <img src="https://via.placeholder.com/50/4682B4/FFFFFF?text=U2" alt="User Avatar" class="avatar">
+                    <div class="content-details">
+                        <h3>李静</h3>
+                        <p>好的,那我们周二晚上图书馆见!</p>
+                    </div>
+                    <span style="font-size: 0.8em; color: #999; margin-left: auto;">10:35</span>
+                 </div>
+                 <div class="message-item">
+                    <img src="https://via.placeholder.com/50/FFA500/FFFFFF?text=U1" alt="User Avatar" class="avatar">
+                    <div class="content-details">
+                        <h3>张伟</h3>
+                        <p>[图片]</p>
+                    </div>
+                    <span style="font-size: 0.8em; color: #999; margin-left: auto;">昨天</span>
+                 </div>
+                 <div class="message-item">
+                    <img src="https://via.placeholder.com/50/FFD700/000000?text=G1" alt="Group Icon" class="avatar" style="border-radius: 8px;">
+                    <div class="content-details">
+                        <h3>北邮吉他社 (群)</h3>
+                        <p>@所有人 周五晚上有迎新演出!</p>
+                    </div>
+                    <span style="font-size: 0.8em; color: red; background: red; color: white; border-radius: 50%; padding: 2px 6px; margin-left: auto;">3</span>
+                 </div>
+            </div>
+
+             <!-- PAGE: Chat / Direct Message -->
+            <div class="app-page" id="page-chat">
+                <script>document.getElementById('app-header').innerHTML = '<a href="#page-messages" class="back-button">‹</a><span>李静</span><a href="#" class="icon">···</a>';</script>
+                <div style="height: calc(100% - 60px); overflow-y: auto; display: flex; flex-direction: column-reverse; padding-bottom: 10px;"> <!-- Chat history area -->
+                    <!-- Messages would load here, newest at the bottom -->
+                     <div class="chat-bubble sent">好的,那我们周二晚上图书馆见!</div>
+                     <div class="chat-bubble received">太好了!我正好也在复习,可以一起。</div>
+                     <div class="chat-bubble sent">我看到你也选了高数,下周考试一起复习怎么样?地点图书馆?</div>
+                     <div class="chat-bubble received">你好,看到你也喜欢日语学习,我也是!😊</div>
+                     <div class="chat-bubble sent">[系统提示] 你们都对“日语学习”感兴趣,可以聊聊哦~</div>
+                </div>
+                 <div class="chat-input">
+                    <input type="text" placeholder="输入消息...">
+                    <button>发送</button>
+                 </div>
+            </div>
+
+
+            <!-- PAGE: User Profile (Self) -->
+            <div class="app-page" id="page-profile-self">
+                <script>document.getElementById('app-header').innerHTML = '<span>我的资料</span><a href="#page-settings" class="icon">⚙️</a>';</script>
+                <div class="profile-header">
+                    <img src="https://via.placeholder.com/100/007BFF/FFFFFF?text=ME" alt="My Avatar" class="avatar">
+                    <h2>你的昵称</h2>
+                    <p>北京邮电大学 | 计算机科学 | 大二</p>
+                    <p>"努力成为有趣的人 | Coding & Reading"</p>
+                     <a href="#page-interests" class="button-link outline" style="margin-top: 10px;">编辑兴趣标签</a>
+                </div>
+
+                <div class="section-title">我的兴趣</div>
+                <div class="card">
+                    <span class="interest-tag">Python</span>
+                    <span class="interest-tag">机器学习</span>
+                    <span class="interest-tag">科幻电影</span>
+                    <span class="interest-tag">羽毛球</span>
+                    <span class="interest-tag">独立音乐</span>
+                </div>
+
+                <div class="section-title">我的小组</div>
+                 <div class="card group-item">
+                     <img src="https://via.placeholder.com/50/20B2AA/FFFFFF?text=G2" alt="Group Icon" class="avatar" style="border-radius: 8px;">
+                     <div class="content-details">
+                        <h3>BUPT算法交流群</h3>
+                        <p>55 成员</p>
+                     </div>
+                 </div>
+                 <a href="#page-groups" class="button-link secondary" style="width: 100%; text-align: center;">查看所有小组</a>
+
+
+                <div class="section-title">我发布的活动</div>
+                <p style="text-align: center; color: #999;">暂无活动</p>
+                <a href="#page-event-post" class="button-link" style="width: 100%; text-align: center;">发布新活动</a>
+
+
+                 <div class="section-title">我的技能/需求</div>
+                  <div class="card skill-item">
+                     <img src="https://via.placeholder.com/50/007BFF/FFFFFF?text=ME" alt="User Avatar" class="avatar">
+                     <div class="content-details">
+                        <p><strong>提供:</strong> Python基础教学 <span style="color: green;">|</span> <strong>需要:</strong> 羽毛球球友</p>
+                     </div>
+                     <div class="actions"> <a href="#page-skills" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">编辑</a> </div>
+                 </div>
+                 <a href="#page-skills" class="button-link" style="width: 100%; text-align: center;">发布技能/需求</a>
+            </div>
+
+            <!-- PAGE: User Profile (Other) -->
+            <div class="app-page" id="page-profile-other">
+                <script>document.getElementById('app-header').innerHTML = '<a href="#page-discover" class="back-button">‹</a><span>用户资料</span><a href="#" class="icon">···</a>';</script>
+                 <div class="profile-header">
+                    <img src="https://via.placeholder.com/100/FFA500/FFFFFF?text=U1" alt="User Avatar" class="avatar">
+                    <h2>张伟</h2>
+                    <p>北京大学 | 艺术学院 | 大三</p>
+                     <p>"周末想找人一起去奥森拍照~"</p>
+                     <a href="#page-chat" class="button-link" style="margin-top: 10px;">发消息</a>
+                     <button class="secondary">关注</button>
+                </div>
+
+                <div class="section-title">Ta的兴趣</div>
+                 <div class="card">
+                    <span class="interest-tag">摄影</span>
+                    <span class="interest-tag">后期制作</span>
+                    <span class="interest-tag">爬山</span>
+                    <span class="interest-tag">纪录片</span>
+                </div>
+
+                 <div class="section-title">共同兴趣</div>
+                  <div class="card">
+                    <span class="interest-tag">摄影</span>
+                    <span class="interest-tag">爬山</span>
+                </div>
+
+                <div class="section-title">Ta的小组</div>
+                 <p style="text-align: center; color: #999;">用户尚未加入任何小组</p>
+
+                <div class="section-title">Ta发布的活动</div>
+                 <div class="card event-item">
+                    <img src="https://via.placeholder.com/50/FFA500/FFFFFF?text=U1" alt="Host Avatar" class="avatar">
+                    <div class="content-details">
+                        <h3>奥森公园外拍活动</h3>
+                        <p>时间: 本周六 10:00</p>
+                        <p>地点: 奥林匹克森林公园南门</p>
+                    </div>
+                     <div class="actions"> <a href="#page-event-detail" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">查看详情</a> </div>
+                </div>
+            </div>
+
+            <!-- PAGE: Interest Selection/Editing -->
+            <div class="app-page" id="page-interests">
+                <script>document.getElementById('app-header').innerHTML = '<a href="#page-profile-self" class="back-button">‹</a><span>选择我的兴趣</span><a href="#page-profile-self" class="icon" style="font-size: 0.9em;">保存</a>';</script>
+                <input type="text" placeholder="搜索兴趣标签...">
+
+                <div class="interest-category">
+                    <h3>运动</h3>
+                    <div class="tags">
+                        <button class="tag-button selected">羽毛球</button>
+                        <button class="tag-button">篮球</button>
+                        <button class="tag-button">跑步</button>
+                        <button class="tag-button">游泳</button>
+                        <button class="tag-button">健身</button>
+                        <button class="tag-button">瑜伽</button>
+                        <button class="tag-button">乒乓球</button>
+                        <button class="tag-button">爬山</button>
+                    </div>
+                </div>
+
+                 <div class="interest-category">
+                    <h3>音乐</h3>
+                    <div class="tags">
+                        <button class="tag-button selected">独立音乐</button>
+                        <button class="tag-button">摇滚</button>
+                        <button class="tag-button">流行</button>
+                        <button class="tag-button">古典</button>
+                        <button class="tag-button">吉他</button>
+                        <button class="tag-button">钢琴</button>
+                    </div>
+                </div>
+
+                 <div class="interest-category">
+                    <h3>学术/技术</h3>
+                    <div class="tags">
+                        <button class="tag-button selected">Python</button>
+                        <button class="tag-button selected">机器学习</button>
+                        <button class="tag-button">Web开发</button>
+                        <button class="tag-button">算法</button>
+                        <button class="tag-button">考研</button>
+                        <button class="tag-button">四六级</button>
+                    </div>
+                </div>
+
+                 <div class="interest-category">
+                    <h3>艺术/生活</h3>
+                    <div class="tags">
+                        <button class="tag-button selected">科幻电影</button>
+                        <button class="tag-button">摄影</button>
+                        <button class="tag-button">阅读</button>
+                        <button class="tag-button">绘画</button>
+                        <button class="tag-button">桌游</button>
+                        <button class="tag-button">美食探店</button>
+                    </div>
+                </div>
+                 <p style="color: #888; font-size: 0.9em;">找不到你的兴趣?可以尝试搜索或 <a href="#">创建新标签</a>。</p>
+            </div>
+
+             <!-- PAGE: Notifications -->
+            <div class="app-page" id="page-notifications">
+                 <script>document.getElementById('app-header').innerHTML = '<a href="#page-home" class="back-button">‹</a><span>通知</span>';</script>
+                 <div class="notification-item">
+                    <img src="https://via.placeholder.com/50/32CD32/FFFFFF?text=U3" alt="User Avatar" class="avatar">
+                    <div class="content-details">
+                        <p><strong>王磊</strong> 赞了你的动态。</p>
+                        <p style="font-size: 0.8em; color: #999;">5分钟前</p>
+                    </div>
+                 </div>
+                 <div class="notification-item">
+                     <img src="https://via.placeholder.com/50/FF6347/FFFFFF?text=E" alt="Event Icon" class="avatar" style="border-radius: 8px;">
+                    <div class="content-details">
+                        <p>你报名的活动 <strong>周末狼人杀局</strong> 将在1小时后开始。</p>
+                        <p style="font-size: 0.8em; color: #999;">15分钟前</p>
+                    </div>
+                 </div>
+                  <div class="notification-item">
+                    <img src="https://via.placeholder.com/50/8A2BE2/FFFFFF?text=U4" alt="User Avatar" class="avatar">
+                    <div class="content-details">
+                        <p><strong>赵敏</strong> 开始关注你了。</p>
+                         <p style="font-size: 0.8em; color: #999;">1小时前</p>
+                    </div>
+                      <div class="actions"> <a href="#page-profile-other" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">回关</a> </div>
+                 </div>
+                  <div class="notification-item">
+                    <img src="https://via.placeholder.com/50/FFD700/000000?text=G1" alt="Group Icon" class="avatar" style="border-radius: 8px;">
+                    <div class="content-details">
+                        <p><strong>北邮吉他社</strong> 有新公告。</p>
+                         <p style="font-size: 0.8em; color: #999;">3小时前</p>
+                    </div>
+                 </div>
+            </div>
+
+            <!-- PAGE: Settings -->
+            <div class="app-page" id="page-settings">
+                 <script>document.getElementById('app-header').innerHTML = '<a href="#page-profile-self" class="back-button">‹</a><span>设置</span>';</script>
+                 <ul style="list-style: none; padding: 0;">
+                     <li style="padding: 15px 0; border-bottom: 1px solid #eee;"><a href="#page-profile-self" style="text-decoration: none; color: #333;">编辑个人资料</a></li>
+                     <li style="padding: 15px 0; border-bottom: 1px solid #eee;"><a href="#" style="text-decoration: none; color: #333;">账号与安全</a></li>
+                     <li style="padding: 15px 0; border-bottom: 1px solid #eee;"><a href="#" style="text-decoration: none; color: #333;">隐私设置</a></li>
+                     <li style="padding: 15px 0; border-bottom: 1px solid #eee;"><a href="#page-notifications" style="text-decoration: none; color: #333;">通知设置</a></li>
+                     <li style="padding: 15px 0; border-bottom: 1px solid #eee;"><a href="#" style="text-decoration: none; color: #333;">关于我们</a></li>
+                     <li style="padding: 15px 0; border-bottom: 1px solid #eee;"><a href="#" style="text-decoration: none; color: #333;">帮助与反馈</a></li>
+                 </ul>
+                 <button style="width: 100%; background-color: #dc3545; margin-top: 30px;">退出登录</button>
+            </div>
+
+             <!-- PAGE: Group List -->
+            <div class="app-page" id="page-groups">
+                <script>document.getElementById('app-header').innerHTML = '<a href="#page-profile-self" class="back-button">‹</a><span>我的小组</span><a href="#" class="icon">+</a>';</script>
+                <!-- Add Tabs for My Groups / Discover Groups -->
+                 <div class="card group-item">
+                     <img src="https://via.placeholder.com/50/20B2AA/FFFFFF?text=G2" alt="Group Icon" class="avatar" style="border-radius: 8px;">
+                     <div class="content-details">
+                        <h3>BUPT算法交流群</h3>
+                        <p>55 成员</p>
+                     </div>
+                     <div class="actions"> <a href="#page-group-detail" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">进入</a> </div>
+                 </div>
+                 <div class="card group-item">
+                     <img src="https://via.placeholder.com/50/DAA520/FFFFFF?text=G3" alt="Group Icon" class="avatar" style="border-radius: 8px;">
+                     <div class="content-details">
+                        <h3>电影爱好者协会</h3>
+                        <p>210 成员</p>
+                     </div>
+                     <div class="actions"> <a href="#page-group-detail" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">进入</a> </div>
+                 </div>
+                 <p style="text-align: center; margin-top: 20px;"><a href="#page-discover" style="color: #007bff;">发现更多小组...</a></p>
+            </div>
+
+             <!-- PAGE: Group Detail -->
+            <div class="app-page" id="page-group-detail">
+                <script>document.getElementById('app-header').innerHTML = '<a href="#page-groups" class="back-button">‹</a><span>BUPT算法交流群</span><a href="#" class="icon">···</a>';</script>
+                 <div style="text-align: center; margin-bottom: 15px;">
+                    <img src="https://via.placeholder.com/80/20B2AA/FFFFFF?text=G2" alt="Group Icon" class="avatar" style="width: 80px; height: 80px; border-radius: 15px; margin: 0 auto 10px auto;">
+                    <h2>BUPT算法交流群</h2>
+                    <p>55 成员 | <a href="#">查看成员</a></p>
+                    <p style="font-size: 0.9em; color: #666;">欢迎对算法、数据结构、ACM竞赛感兴趣的同学加入讨论!</p>
+                    <button class="secondary">已加入</button>
+                 </div>
+                 <hr>
+                 <h3>小组动态</h3>
+                  <div class="card"> <!-- Post within group -->
+                     <div class="user-card" style="border-bottom: none; margin-bottom: 10px; padding-bottom: 0;">
+                         <img src="https://via.placeholder.com/40/CD5C5C/FFFFFF?text=U5" alt="User Avatar" class="avatar" style="width: 40px; height: 40px;">
+                         <div class="content-details">
+                             <h3 style="font-size: 0.9em;">陈晨</h3>
+                             <p style="font-size: 0.8em;">5小时前</p>
+                         </div>
+                     </div>
+                     <p>LeetCode今天这道Hard题有人AC了吗?求思路分享!#每日一题</p>
+                     <div style="font-size: 0.8em; color: #888;">👍 5    💬 2</div>
+                 </div>
+                  <div class="card"> <!-- Post within group -->
+                     <div class="user-card" style="border-bottom: none; margin-bottom: 10px; padding-bottom: 0;">
+                         <img src="https://via.placeholder.com/40/4682B4/FFFFFF?text=U2" alt="User Avatar" class="avatar" style="width: 40px; height: 40px;">
+                         <div class="content-details">
+                             <h3 style="font-size: 0.9em;">李静 (管理员)</h3>
+                             <p style="font-size: 0.8em;">昨天</p>
+                         </div>
+                     </div>
+                     <p>【公告】下周三晚上7点,邀请学长分享蓝桥杯备赛经验,地点教三201,欢迎参加!</p>
+                     <div style="font-size: 0.8em; color: #888;">👍 15    💬 1</div>
+                 </div>
+                 <button style="width: 100%; margin-top: 15px;">发布新动态</button>
+            </div>
+
+             <!-- PAGE: Event Listing -->
+            <div class="app-page" id="page-events">
+                <script>document.getElementById('app-header').innerHTML = '<a href="#page-discover" class="back-button">‹</a><span>活动广场</span><a href="#page-event-post" class="icon">+</a>';</script>
+                <!-- Add Tabs for Upcoming / My Events / Discover -->
+                <div class="card event-item">
+                    <img src="https://via.placeholder.com/50/FF6347/FFFFFF?text=E" alt="Event Icon" class="avatar" style="border-radius: 8px;">
+                    <div class="content-details">
+                        <h3>周末狼人杀局</h3>
+                        <p>时间: 周六 14:00</p>
+                        <p>地点: 学校咖啡厅 | 发起人: 王磊</p>
+                    </div>
+                    <div class="actions"> <a href="#page-event-detail" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">详情</a> </div>
+                </div>
+                <div class="card event-item">
+                    <img src="https://via.placeholder.com/50/00CED1/FFFFFF?text=E2" alt="Event Icon" class="avatar" style="border-radius: 8px;">
+                    <div class="content-details">
+                        <h3>校园编程马拉松</h3>
+                        <p>时间: 下周五 9:00 - 周日 17:00</p>
+                        <p>地点: 计算机学院楼 | 主办方: 计算机学院</p>
+                    </div>
+                    <div class="actions"> <a href="#page-event-detail" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">详情</a> </div>
+                </div>
+                 <div class="card event-item">
+                    <img src="https://via.placeholder.com/50/9370DB/FFFFFF?text=E3" alt="Event Icon" class="avatar" style="border-radius: 8px;">
+                    <div class="content-details">
+                        <h3>草坪音乐分享会</h3>
+                        <p>时间: 周日 16:00</p>
+                        <p>地点: 学校大草坪 | 发起人: 赵敏</p>
+                    </div>
+                    <div class="actions"> <a href="#page-event-detail" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">详情</a> </div>
+                </div>
+            </div>
+
+             <!-- PAGE: Event Detail -->
+            <div class="app-page" id="page-event-detail">
+                <script>document.getElementById('app-header').innerHTML = '<a href="#page-events" class="back-button">‹</a><span>活动详情</span><a href="#" class="icon">☆</a>';</script>
+                <img src="https://via.placeholder.com/345x150/FF6347/FFFFFF?text=Event+Banner" alt="Event Image" style="width: 100%; height: 150px; object-fit: cover; border-radius: 8px; margin-bottom: 15px;">
+                <h2>周末狼人杀局</h2>
+                <p><strong>时间:</strong> 本周六 14:00 - 18:00</p>
+                <p><strong>地点:</strong> 学校南门咖啡厅二楼</p>
+                <p><strong>发起人:</strong> <a href="#page-profile-other">王磊</a> (人民大学)</p>
+                <p><strong>活动介绍:</strong> 找个地方一起玩狼人杀,新手友好,欢迎各种板子!目前已有3人,还差5-7人。费用AA(场地费)。</p>
+                <p><strong>兴趣标签:</strong> <span class="interest-tag">桌游</span> <span class="interest-tag">狼人杀</span> <span class="interest-tag">线下聚会</span></p>
+                <p><strong>已报名 (3/10):</strong> <img src="https://via.placeholder.com/30/32CD32/FFFFFF?text=U3" class="avatar" style="width:30px; height:30px; margin-right: 5px;"> <img src="https://via.placeholder.com/30/1E90FF/FFFFFF?text=U6" class="avatar" style="width:30px; height:30px; margin-right: 5px;"> <img src="https://via.placeholder.com/30/FF4500/FFFFFF?text=U7" class="avatar" style="width:30px; height:30px; margin-right: 5px;"> <a href="#">查看全部</a></p>
+                <button style="width: 100%;">我要报名</button>
+                 <button class="secondary" style="width: 100%; margin-top: 10px;">分享活动</button>
+            </div>
+
+             <!-- PAGE: Event Posting -->
+            <div class="app-page" id="page-event-post">
+                 <script>document.getElementById('app-header').innerHTML = '<a href="#page-events" class="back-button">‹</a><span>发布新活动</span><a href="#page-events" class="icon" style="font-size: 0.9em;">发布</a>';</script>
+                 <label for="event-title">活动标题:</label>
+                 <input type="text" id="event-title" placeholder="如:周日图书馆约学习">
+                 <label for="event-desc">活动描述:</label>
+                 <textarea id="event-desc" placeholder="详细说明活动内容、目的、要求等..."></textarea>
+                 <label for="event-time">时间:</label>
+                 <input type="text" id="event-time" placeholder="如:本周日 下午2点-5点">
+                 <label for="event-loc">地点:</label>
+                 <input type="text" id="event-loc" placeholder="如:学校图书馆三楼自习室">
+                 <label for="event-tags">关联兴趣标签 (可选):</label>
+                 <input type="text" id="event-tags" placeholder="如:考研, 学习伙伴, 图书馆">
+                 <label for="event-limit">人数限制 (可选):</label>
+                 <input type="number" id="event-limit" placeholder="如:5 (留空表示不限)">
+                 <label for="event-cover">上传封面图 (可选):</label>
+                 <button class="outline">选择图片</button>
+            </div>
+
+
+            <!-- PAGE: Skill Exchange Listing -->
+            <div class="app-page" id="page-skills">
+                <script>document.getElementById('app-header').innerHTML = '<a href="#page-discover" class="back-button">‹</a><span>技能交换</span><a href="#page-skill-post" class="icon">+</a>';</script>
+                 <!-- Add Tabs: 提供 / 需求 / 浏览 -->
+                 <div class="card skill-item">
+                     <img src="https://via.placeholder.com/50/6495ED/FFFFFF?text=S1" alt="User Avatar" class="avatar">
+                     <div class="content-details">
+                        <h3>刘洋 <span style="font-size: 0.8em; color: #777;">(北航)</span></h3>
+                        <p><strong style="color: green;">提供:</strong> PPT美化, 海报设计</p>
+                        <p><strong style="color: orange;">需要:</strong> 英语口语练习</p>
+                     </div>
+                     <div class="actions"> <a href="#page-chat" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">联系Ta</a> </div>
+                 </div>
+                 <div class="card skill-item">
+                     <img src="https://via.placeholder.com/50/DC143C/FFFFFF?text=S2" alt="User Avatar" class="avatar">
+                     <div class="content-details">
+                        <h3>孙悦 <span style="font-size: 0.8em; color: #777;">(北理)</span></h3>
+                         <p><strong style="color: green;">提供:</strong> 日语N2辅导</p>
+                         <p><strong style="color: orange;">需要:</strong> Python爬虫教学</p>
+                     </div>
+                     <div class="actions"> <a href="#page-chat" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">联系Ta</a> </div>
+                 </div>
+                  <div class="card skill-item">
+                     <img src="https://via.placeholder.com/50/FF8C00/FFFFFF?text=S3" alt="User Avatar" class="avatar">
+                     <div class="content-details">
+                        <h3>周峰 <span style="font-size: 0.8em; color: #777;">(北交大)</span></h3>
+                         <p><strong style="color: green;">提供:</strong> 吉他弹唱教学 (入门)</p>
+                         <p><strong style="color: orange;">需要:</strong> 无</p>
+                     </div>
+                     <div class="actions"> <a href="#page-chat" class="button-link outline" style="padding: 5px 10px; font-size: 0.8em;">联系Ta</a> </div>
+                 </div>
+            </div>
+
+             <!-- PAGE: Skill Post/Edit -->
+            <div class="app-page" id="page-skill-post">
+                 <script>document.getElementById('app-header').innerHTML = '<a href="#page-skills" class="back-button">‹</a><span>发布技能/需求</span><a href="#page-skills" class="icon" style="font-size: 0.9em;">发布</a>';</script>
+                 <label for="skill-provide">我能提供的技能/帮助:</label>
+                 <textarea id="skill-provide" placeholder="详细描述你能提供的技能或帮助,如:Python数据分析入门、日语五十音教学..."></textarea>
+                 <label for="skill-need">我需要的技能/帮助:</label>
+                 <textarea id="skill-need" placeholder="详细描述你需要的技能或帮助,如:寻找英语口语语伴、求PS修图指导..."></textarea>
+                 <p style="font-size: 0.9em; color: #888;">可以只填写一项或两项都填。</p>
+            </div>
+
+            <!-- PAGE: Map View (Conceptual) -->
+            <div class="app-page" id="page-map">
+                <script>document.getElementById('app-header').innerHTML = '<a href="#page-discover" class="back-button">‹</a><span>附近 (<span style="color:red;">隐私保护模式</span>)</span><a href="#" class="icon">⚙️</a>';</script>
+                <p style="font-size: 0.85em; color: #dc3545; text-align: center; border: 1px solid #f5c6cb; background-color: #f8d7da; padding: 8px; border-radius: 5px; margin-bottom: 15px;">
+                    <strong>注意:</strong> 为保护隐私,地图仅显示模糊位置和共同兴趣,不会暴露精确坐标或个人身份。你需要明确授权才能使用此功能。
+                </p>
+                 <div class="map-placeholder">
+                    <p>模拟地图区域<br/>(显示附近有相同兴趣的用户或活动的大致位置)</p>
+                 </div>
+                 <div style="margin-top: 15px;">
+                     <label for="map-filter-interest">筛选兴趣:</label>
+                     <select id="map-filter-interest">
+                         <option>所有兴趣</option>
+                         <option>摄影</option>
+                         <option>篮球</option>
+                         <option>学习伙伴</option>
+                     </select>
+                     <label for="map-filter-radius">范围:</label>
+                     <select id="map-filter-radius">
+                         <option>1公里内</option>
+                         <option>3公里内</option>
+                         <option>5公里内</option>
+                     </select>
+                 </div>
+                 <!-- List nearby items below the map? -->
+                 <p style="text-align: center; color: #999; margin-top: 20px;">地图下方可列出匹配项</p>
+
+            </div>
+
+            <!-- PAGE: Login -->
+            <div class="app-page" id="page-login">
+                <script>document.getElementById('app-header').innerHTML = '<span>登录</span>';</script>
+                <h2 style="text-align: center; margin-top: 40px;">欢迎回来</h2>
+                 <label for="login-email">邮箱/手机号:</label>
+                 <input type="email" id="login-email" placeholder="输入你的注册邮箱或手机号">
+                 <label for="login-password">密码:</label>
+                 <input type="password" id="login-password" placeholder="输入密码">
+                 <button style="width: 100%; margin-top: 20px;">登录</button>
+                 <div style="display: flex; justify-content: space-between; margin-top: 15px; font-size: 0.9em;">
+                     <a href="#" style="color: #007bff;">忘记密码?</a>
+                     <a href="#page-signup" style="color: #007bff;">没有账号?去注册</a>
+                 </div>
+                 <p style="text-align: center; color: #aaa; margin: 30px 0 15px 0;">--- 第三方登录 ---</p>
+                 <div style="text-align: center;">
+                    <button class="outline" style="margin: 5px; border-radius: 50%; width: 50px; height: 50px; font-size: 1.5em;">微</button>
+                    <button class="outline" style="margin: 5px; border-radius: 50%; width: 50px; height: 50px; font-size: 1.5em;">Q</button>
+                     <button class="outline" style="margin: 5px; border-radius: 50%; width: 50px; height: 50px; font-size: 1.5em;"></button>
+                 </div>
+            </div>
+
+             <!-- PAGE: Signup -->
+            <div class="app-page" id="page-signup">
+                <script>document.getElementById('app-header').innerHTML = '<span>注册</span>';</script>
+                 <h2 style="text-align: center; margin-top: 20px;">创建新账号</h2>
+                  <label for="signup-school-email">学校邮箱 (.edu):</label>
+                 <input type="email" id="signup-school-email" placeholder="推荐使用edu邮箱验证身份">
+                  <label for="signup-nickname">昵称:</label>
+                 <input type="text" id="signup-nickname" placeholder="给自己取个名字吧">
+                  <label for="signup-password">设置密码:</label>
+                 <input type="password" id="signup-password" placeholder="至少8位,包含字母和数字">
+                  <label for="signup-password-confirm">确认密码:</label>
+                 <input type="password" id="signup-password-confirm" placeholder="再次输入密码">
+                 <button style="width: 100%; margin-top: 20px;">注册</button>
+                 <p style="font-size: 0.8em; color: #888; margin-top: 10px; text-align: center;">
+                    点击注册表示同意 <a href="#" style="color: #007bff;">用户协议</a> 和 <a href="#" style="color: #007bff;">隐私政策</a>
+                 </p>
+                  <p style="text-align: center; margin-top: 15px;">
+                     <a href="#page-login" style="color: #007bff;">已有账号?去登录</a>
+                 </p>
+            </div>
+
+        </div> <!-- End .app-content -->
+
+        <!-- Footer / Tab Bar -->
+        <div class="app-footer" id="app-footer">
+            <a href="#page-home" class="tab-item active" onclick="setActiveTab(this)"><span>🏠</span>首页</a>
+            <a href="#page-discover" class="tab-item" onclick="setActiveTab(this)"><span>🔍</span>发现</a>
+            <a href="#page-messages" class="tab-item" onclick="setActiveTab(this)"><span>💬</span>消息</a>
+            <a href="#page-profile-self" class="tab-item" onclick="setActiveTab(this)"><span>👤</span>我的</a>
+        </div>
+    </div> <!-- End .phone-mockup -->
+
+<script>
+    // Simple JavaScript for page navigation simulation and tab highlighting
+    const pages = document.querySelectorAll('.app-page');
+    const footerTabs = document.querySelectorAll('.app-footer .tab-item');
+    const header = document.getElementById('app-header');
+
+    function showPage(pageId) {
+        pages.forEach(page => {
+            page.style.display = 'none'; // Hide all pages
+        });
+        const targetPage = document.getElementById(pageId);
+        if (targetPage) {
+            targetPage.style.display = 'block'; // Show the target page
+             // Find the script inside the target page and run it to update the header
+            const headerScript = targetPage.querySelector('script');
+            if (headerScript) {
+                try {
+                    eval(headerScript.innerText); // Execute the script to set the header
+                } catch (e) {
+                    console.error("Error executing header script for page:", pageId, e);
+                    // Set a default header if script fails
+                     header.innerHTML = '<span>App Name</span>';
+                }
+            } else {
+                 // Set a default header if no script found
+                  header.innerHTML = '<span>App Name</span>';
+            }
+
+            // Scroll content to top when changing pages
+            targetPage.parentElement.scrollTop = 0;
+
+        } else {
+             console.warn("Page not found:", pageId);
+             document.getElementById('page-home').style.display = 'block'; // Fallback to home
+             header.innerHTML = '<span>兴趣伙伴</span><a href="#page-notifications" class="icon">🔔</a>';
+        }
+    }
+
+    function setActiveTab(selectedTab) {
+        footerTabs.forEach(tab => {
+            tab.classList.remove('active');
+        });
+        selectedTab.classList.add('active');
+        // Navigate to the page specified in the tab's href
+        const pageId = selectedTab.getAttribute('href').substring(1); // Remove #
+        showPage(pageId);
+    }
+
+    // Handle initial page load based on URL hash, or default to home
+    window.addEventListener('load', () => {
+        const hash = window.location.hash;
+        if (hash) {
+            const pageId = hash.substring(1);
+            showPage(pageId);
+            // Update active tab based on hash
+            footerTabs.forEach(tab => {
+                 if(tab.getAttribute('href') === hash) {
+                     setActiveTab(tab);
+                 } else {
+                      tab.classList.remove('active');
+                 }
+             });
+             // Ensure at least one tab is active if hash matches a main page
+             const activeTabs = document.querySelectorAll('.app-footer .tab-item.active');
+             if(activeTabs.length === 0 && ['page-home', 'page-discover', 'page-messages', 'page-profile-self'].includes(pageId)) {
+                 document.querySelector(`.app-footer .tab-item[href="#${pageId}"]`).classList.add('active');
+             } else if (activeTabs.length === 0) {
+                 document.querySelector('.app-footer .tab-item[href="#page-home"]').classList.add('active'); // Default active tab
+             }
+
+        } else {
+            showPage('page-home'); // Default page
+            document.querySelector('.app-footer .tab-item[href="#page-home"]').classList.add('active'); // Default active tab
+        }
+    });
+
+    // Optional: Handle browser back/forward navigation
+    window.addEventListener('hashchange', () => {
+         const hash = window.location.hash;
+         if (hash) {
+            const pageId = hash.substring(1);
+            showPage(pageId);
+             // Update active tab based on hash
+             footerTabs.forEach(tab => {
+                 if(tab.getAttribute('href') === hash) {
+                     setActiveTab(tab); // This already calls showPage
+                 } else {
+                     tab.classList.remove('active');
+                 }
+             });
+              // Ensure at least one tab is active if hash matches a main page
+             const activeTabs = document.querySelectorAll('.app-footer .tab-item.active');
+             if(activeTabs.length === 0 && ['page-home', 'page-discover', 'page-messages', 'page-profile-self'].includes(pageId)) {
+                 document.querySelector(`.app-footer .tab-item[href="#${pageId}"]`).classList.add('active');
+             } else if (activeTabs.length === 0) {
+                 document.querySelector('.app-footer .tab-item[href="#page-home"]').classList.add('active'); // Default active tab
+             }
+         } else {
+             showPage('page-home'); // Default to home if hash is empty
+             setActiveTab(document.querySelector('.app-footer .tab-item[href="#page-home"]'));
+         }
+    });
+
+    // Make internal links work for navigation
+    document.addEventListener('click', function(event) {
+        let target = event.target;
+        // Traverse up the DOM if the click was inside a link
+        while(target && target.tagName !== 'A') {
+            target = target.parentElement;
+        }
+
+        if (target && target.tagName === 'A' && target.getAttribute('href') && target.getAttribute('href').startsWith('#')) {
+            const href = target.getAttribute('href');
+            // Check if it's a tab bar link (already handled by setActiveTab)
+            if (!target.classList.contains('tab-item')) {
+                event.preventDefault(); // Prevent default anchor jump
+                const pageId = href.substring(1);
+                window.location.hash = pageId; // Change hash to trigger navigation
+            } else {
+                 // If it IS a tab item, ensure setActiveTab is called (covers cases where onclick might fail or be absent)
+                 setActiveTab(target);
+            }
+        }
+    });
+
+
+</script>
+
+</body>
+</html>