diff --git a/data/miniapp_v3.db b/data/miniapp_v3.db
index e2156b5..2d317c0 100644
Binary files a/data/miniapp_v3.db and b/data/miniapp_v3.db differ
diff --git a/static/css/desktop.css b/static/css/desktop.css
index 32455fc..b07d8a6 100644
--- a/static/css/desktop.css
+++ b/static/css/desktop.css
@@ -553,3 +553,18 @@ button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px so
.cc-card-name{font-size:13px;font-weight:600;color:#3A3632;margin-bottom:2px}
.cc-card-type{font-size:10px;color:#ABA6A1;letter-spacing:1px;margin-bottom:4px}
.cc-card-clan{font-size:10px;padding:2px 8px;border-radius:8px;display:inline-block}
+
+/* ========== 我的页面入口卡片 ========== */
+.mine-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
+@media(max-width:640px){.mine-grid{grid-template-columns:1fr}}
+.mine-entry{display:flex;align-items:center;gap:14px;padding:20px;border:1px solid #D6D1CA;border-radius:8px;background:#FDFCFA;cursor:pointer;transition:all .15s;font:inherit;text-align:left}
+.mine-entry:hover{border-color:#808C95;background:#F0EEEA;box-shadow:0 3px 12px rgba(0,0,0,.06)}
+.mine-entry-icon{width:46px;height:46px;border-radius:8px;background:#EAE7E2;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}
+.mine-entry-body{flex:1;min-width:0}
+.mine-entry-name{font-size:15px;font-weight:700;color:#3A3632;margin-bottom:3px}
+.mine-entry-desc{font-size:12px;color:#8A8580}
+.mine-entry-arrow{font-size:18px;color:#ABA6A1;font-weight:700}
+/* 数学人生页 · 葫芦侠行入口 */
+.ml-story-entry{border-color:#A8907E}
+.ml-story-entry:hover{background:#FBF8F3;border-color:#A8907E}
+.ml-story-entry .ml-alumni-entry-icon{background:#F5EDE4}
diff --git a/static/js/desktop.js b/static/js/desktop.js
index 583d9a1..982403f 100644
--- a/static/js/desktop.js
+++ b/static/js/desktop.js
@@ -7,7 +7,7 @@ let cardState={owned:[],draws:0,lastDaily:'',knowledgeRead:0,drawHistory:[]};
let _lang=localStorage.getItem('mb_lang')||'zh';
// ===== i18n =====
-const I18N={zh:{home:'首页',discover:'发现',toolbox:'工具箱',knowledge:'知识卡片',story:'葫芦侠行',simulator:'数学人生',favorites:'我的收藏',profile:'个人中心',search:'搜索内容...',guest:'游客用户',
+const I18N={zh:{home:'首页',discover:'发现',toolbox:'工具箱',knowledge:'知识卡片',story:'葫芦侠行',simulator:'数学人生',favorites:'我的收藏',profile:'个人中心',mine:'我的',search:'搜索内容...',guest:'游客用户',
heroTitle:'葫芦数学 · 用玩的方式打开数学',heroSub:'数学不是公式,是你理解世界的方式',heroCTA:'开始探索 →',
exploreTitle:'探索数学的万千可能',tryTitle:'试试这些',
mbtiName:'MathBTI 数学人格',mbtiDesc:'12题发现你的数学人格,领养专属数学小人 →',
@@ -66,7 +66,7 @@ const I18N={zh:{home:'首页',discover:'发现',toolbox:'工具箱',knowledge:'
staticAIToggleTitle:'AI数学助教',staticAIHeader:'💬 AI 数学助教',
staticAIWelcome:'你好!我是葫芦数学的AI助教 👋
试试问我:学数学对学医有什么用?',
staticAIPlaceholder:'输入问题...',staticMbtiTooltip:'测测你的数学人格'},
- en:{home:'Home',discover:'Discover',toolbox:'Toolbox',knowledge:'Cards',story:'HuLu Quest',simulator:'Math Life',favorites:'Favorites',profile:'Profile',search:'Search...',guest:'Guest',
+ en:{home:'Home',discover:'Discover',toolbox:'Toolbox',knowledge:'Cards',story:'HuLu Quest',simulator:'Math Life',favorites:'Favorites',profile:'Profile',mine:'Mine',search:'Search...',guest:'Guest',
heroTitle:'Hulu Math · Play your way into math',heroSub:'Math isn\'t formulas. It\'s how you make sense of things.',heroCTA:'Start Exploring →',
exploreTitle:'Explore Math',tryTitle:'Try These',
mbtiName:'MathBTI Personality Test',mbtiDesc:'12 questions. One math soul. Meet your sprite. →',
@@ -202,7 +202,7 @@ function navigateTo(p){
const t=document.getElementById('page-'+p);if(t)t.classList.add('active');
document.getElementById('mainContent').scrollTop=0;
if(p==='home')loadHome();else if(p==='discover')loadDiscover();else if(p==='toolbox')loadToolbox();
- else if(p==='knowledge')loadKnowledgePage();else if(p==='story')loadStory();else if(p==='simulator')loadSimulator();else if(p==='favorites')loadFavorites();else if(p==='profile')loadProfile();else if(p==='cards')loadCardsPage();
+ else if(p==='knowledge')loadKnowledgePage();else if(p==='story')loadStory();else if(p==='simulator')loadSimulator();else if(p==='favorites')loadFavorites();else if(p==='profile')loadProfile();else if(p==='cards')loadCardsPage();else if(p==='mine')loadMine();
}
// ===== Home (Desmos-style) =====
@@ -557,6 +557,29 @@ async function loadCardsPage(){
grid.innerHTML=h;
}
+// ===== Mine Page (我的 — 个人中心 + 收藏 + 卡册入口) =====
+async function loadMine(){
+ chatCtx={};
+ const c=document.getElementById('mineContent');
+ if(!c)return;
+ let p={nickname:'游客用户',avatar_emoji:'葫',avatar_color:'#5B6AF0'};
+ let s={watch_count:0,favorite_count:0};
+ try{
+ const[pr,sr]=await Promise.all([api('/api/user/profile?user_id='+USER_ID),api('/api/user/stats?user_id='+USER_ID)]);
+ if(pr.code===0&&pr.data)p=pr.data;
+ if(sr.code===0&&sr.data)s=sr.data;
+ }catch(e){}
+ c.innerHTML=
+ '