chore: seal Design Vision v1 and monorepo scaffold

Archive the differentiated YuXinGu product docs, AI engineering system,
design contract, and Go/Vue scaffold. Next execution prioritizes Cece-parity
over early innovation (see .ai/product/STRATEGY.md).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-02 16:00:44 +08:00
co-authored by Cursor
parent 2686866376
commit 2fb1dfee14
193 changed files with 8854 additions and 1851 deletions
+33
View File
@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
<title>私域活动 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/hub.css">
</head>
<body data-nav="activity">
<div class="page-header">
<img src="../logo.png" alt="愈心谷" style="height:28px">
<div class="sub">私域活动 · 社群陪伴</div>
</div>
<div class="hub-empty">
活动中心即将上线<br>
节气推送、社群共创、会员专属活动<br>
敬请期待
</div>
<script src="../js/shell.js"></script>
</body>
</html>
+61
View File
@@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,maximum-scale=1">
<title>愈心解码 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/decode.css">
</head>
<body class="app-page" data-nav="none" data-back="yuxingu.html" data-title="愈心解码 · 愈心谷">
<div class="wrap">
<div class="top">
<img src="../logo.png" alt="愈心谷" style="height:36px;margin-bottom:8px">
<div class="t">愈心解码</div>
<div class="s">一个生日,读懂你的身与心</div>
</div>
<div id="report"></div>
<div class="disc" id="disc" style="display:none">
📋 本页面内容为文化 + 心理测评 + 健康生活方式参考,<br>
体质部分参考国标《中医体质分类与判定》,不构成医疗建议。
</div>
</div>
<!-- 分享卡片弹层 -->
<div class="modal" id="shareModal">
<div class="m-box">
<canvas id="shareCanvas" width="540" height="720"></canvas>
<div class="m-tip">长按图片保存 · 分享给好友</div>
<div class="m-close" onclick="document.getElementById('shareModal').classList.remove('on')">关闭</div>
</div>
</div>
<!-- 支付弹窗 -->
<div class="pay-modal" id="payModal">
<div class="pm-box">
<div class="pm-icon">🔮</div>
<div class="pm-title">解锁完整深度报告</div>
<div class="pm-desc">一次解锁,永久查看所有解读</div>
<div class="pm-price">¥39.9</div>
<div class="pm-features">✨ 天赋优势深度解读<br>✨ 人生课题方向指引<br>✨ 12组联合码全解析<br>✨ 五行体质完整方案</div>
<button class="pm-btn" onclick="doUnlock()">立即解锁 →</button>
<button class="pm-cancel" onclick="document.getElementById('payModal').classList.remove('on')">暂不需要</button>
</div>
</div>
<script src="../js/shell.js"></script>
<script src="../js/common.js"></script>
<script src="../js/decode.js"></script>
</body>
</html>
+75
View File
@@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,maximum-scale=1">
<title>健康管理 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/health.css">
</head>
<body class="app-page" data-nav="health">
<div style="max-width:500px;margin:0 auto;padding:8px 14px;">
<a href="decode.html" style="color:#9b8a78;text-decoration:none;font-size:13px;">← 返回愈心解码</a>
</div>
<div class="container">
<div class="header">
<img src="../logo.png" alt="愈心谷" style="height:36px;margin-bottom:6px">
<div class="sub">易经 × 黄帝内经 × 五运六气</div>
</div>
<div class="tabs" id="tabs">
<div class="tab active" data-tab="profile">📋 先天档案</div>
<div class="tab" data-tab="weekly">📊 本周报告</div>
<div class="tab" data-tab="daily">☀️ 今日养生</div>
</div>
<!-- ===== PROFILE ===== -->
<div id="tab-profile">
<div class="card" id="formCard">
<h2>📝 建立先天健康档案</h2>
<p class="dim">仅需填写一次,系统自动推算八字、五行、体质,生成终身健康画像</p>
<div class="fg"><label>姓名</label><input id="fname" placeholder="请输入姓名"></div>
<div class="fg"><label>性别</label><select id="fgender"><option value="男"></option><option value="女"></option></select></div>
<div class="fg"><label>出生日期(公历)</label><input id="fbirth" type="date" value="1990-01-01"></div>
<div class="fr">
<div class="fg"><label>出生时间</label><input id="ftime" type="time" value="12:00"></div>
<div class="fg"><label>出生地</label><input id="fplace" placeholder="如:上海" value="上海"></div>
</div>
<button class="btn btn-pri" onclick="gen()">🧬 生成先天体质画像</button>
<p class="tip">数据仅存本地,不上传服务器</p>
</div>
<div id="profileResult" class="hidden">
<div class="card" id="baziCard"><h2>🔢 八字命盘</h2><div id="baziTable"></div></div>
<div class="card"><h2>🎨 五行画像</h2><div class="penta" id="pentagram"></div><div id="pentagramNote" style="font-size:12px;color:#999;text-align:center;margin-top:4px"></div></div>
<div class="card" id="constDetail"></div>
<div class="card" id="organDetail"></div>
<div class="card" id="emotionDetail"></div>
<div class="card" id="personalityCard"></div>
</div>
</div>
<!-- ===== WEEKLY ===== -->
<div id="tab-weekly" class="hidden"><div id="weeklyContent"></div></div>
<!-- ===== DAILY ===== -->
<div id="tab-daily" class="hidden"><div id="dailyContent"></div></div>
</div>
<script src="../js/shell.js"></script>
<script src="../js/common.js"></script>
<script src="../js/health.js"></script>
</body>
</html>
+60
View File
@@ -0,0 +1,60 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
<title>认识自己 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/hub.css">
</head>
<body data-nav="know">
<div class="page-header">
<img src="../logo.png" alt="愈心谷" style="height:28px">
<div class="sub">认识自己 · 性格 · 星盘 · 数字</div>
</div>
<div class="hub-list">
<a class="hub-item" href="decode.html">
<div class="hi hi-gold"></div>
<div><div class="ht">愈心解码</div><div class="hd">一个生日,读懂身与心</div></div>
<span class="ha"></span>
</a>
<a class="hub-item" href="xingjing.html">
<div class="hi hi-purple"></div>
<div><div class="ht">星镜</div><div class="hd">动态星盘 · AI 解读</div></div>
<span class="ha"></span>
</a>
<a class="hub-item" href="shuzi.html">
<div class="hi hi-blue"></div>
<div><div class="ht">数字心理学</div><div class="hd">生命数字三角解构</div></div>
<span class="ha"></span>
</a>
<a class="hub-item" href="scale-test.html?slug=mbti">
<div class="hi hi-rose"></div>
<div><div class="ht">MBTI 人格</div><div class="hd">16 种类型快速测评</div></div>
<span class="ha"></span>
</a>
<a class="hub-item" href="scale-test.html?slug=jxrg">
<div class="hi hi-purple"></div>
<div><div class="ht">九型人格</div><div class="hd">探索内在动机</div></div>
<span class="ha"></span>
</a>
<a class="hub-item" href="scales.html">
<div class="hi hi-green"></div>
<div><div class="ht">更多量表</div><div class="hd">进入专业测评库</div></div>
<span class="ha"></span>
</a>
</div>
<script src="../js/shell.js"></script>
</body>
</html>
+62
View File
@@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,maximum-scale=1">
<title>愈心脑图 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/mindmap.css">
</head>
<body class="app-page" data-nav="none" data-back="pages/mine.html" data-title="愈心脑图 · 愈心谷">
<!-- Mobile hamburger -->
<button class="hamburger" id="hamburger" onclick="toggleSidebar()"></button>
<div class="overlay" id="overlay" onclick="closeSidebar()"></div>
<!-- Sidebar -->
<div class="sidebar">
<div class="sh" style="display:flex;flex-direction:column;align-items:center;gap:6px">
<img src="../logo.png" alt="愈心谷" style="height:30px">
<span>📁 我的脑图</span>
</div>
<div class="slist" id="slist"></div>
<div class="sb">
<button class="primary" onclick="newMap()"> 新建</button>
<button onclick="goHome()">🏠</button>
</div>
</div>
<!-- Main -->
<div class="main">
<div class="toolbar">
<button onclick="renameMap()">✎ 重命名</button>
<button onclick="addChild()"></button>
<button onclick="addSibling()"> 同级</button>
<button onclick="delNode()">✕ 删除</button>
<span class="sep"></span>
<button onclick="zoomIn()">🔍+</button>
<button onclick="zoomOut()">🔍-</button>
<span class="sep"></span>
<span class="hint" id="saveHint">💾 已自动保存</span>
</div>
<canvas id="c"></canvas>
</div>
<!-- Plus buttons (HTML, positioned over canvas) -->
<div id="plusChild" onclick="addChild()" title="添加子节点">+</div>
<div id="plusSibling" onclick="addSibling()" title="添加同级节点">+</div>
<div id="editor"><input id="ei" onblur="commitEdit()" onkeydown="if(event.key==='Enter')commitEdit();if(event.key==='Escape')cancelEdit()"></div>
<script src="../js/shell.js"></script>
<script src="../js/mindmap.js"></script>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
<title>我的 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/hub.css">
</head>
<body data-nav="mine">
<div class="page-header">
<img src="../logo.png" alt="愈心谷" style="height:28px">
<div class="sub">我的 · 工具与记录</div>
</div>
<div class="hub-list">
<a class="hub-item" href="mindmap.html">
<div class="hi hi-purple"></div>
<div><div class="ht">愈心脑图</div><div class="hd">可视化编辑 · 架构梳理</div></div>
<span class="ha"></span>
</a>
<a class="hub-item" href="decode.html">
<div class="hi hi-gold"></div>
<div><div class="ht">我的解码</div><div class="hd">重新生成生日报告</div></div>
<span class="ha"></span>
</a>
<a class="hub-item" href="scales.html">
<div class="hi hi-rose"></div>
<div><div class="ht">测评记录</div><div class="hd">进入量表库查看与重测</div></div>
<span class="ha"></span>
</a>
</div>
<script src="../js/shell.js"></script>
</body>
</html>
+27
View File
@@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,maximum-scale=1">
<title>量表测试 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/scale-test.css">
</head>
<body class="app-page" data-nav="none" data-back="pages/scales.html" data-title="量表测试 · 愈心谷">
<div id="app"><div class="loading">加载中…</div></div>
<script src="../js/shell.js"></script>
<script src="../js/scale-test.js"></script>
</body>
</html>
+34
View File
@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,maximum-scale=1">
<title>专业测评 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/scales.css">
</head>
<body class="app-page" data-nav="scales">
<div class="header">
<a href="../yuxingu.html" class="logo"><img src="../logo.png" alt="愈心谷"></a>
<div class="sub">愈心谷数字解构 · 专业心理量表库</div>
</div>
<div class="categories" id="cats"></div>
<div id="content"></div>
<script src="../js/shell.js"></script>
<script src="../js/scales.js"></script>
</body>
</html>
+103
View File
@@ -0,0 +1,103 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,maximum-scale=1">
<title>数字心理学 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/shuzi.css">
</head>
<body class="app-page" data-nav="none" data-back="pages/know.html" data-title="数字心理学 · 愈心谷">
<div style="text-align:center;padding:20px 0 4px;">
<img src="../logo.png" alt="愈心谷" style="height:36px">
</div>
<div style="max-width:600px;margin:0 auto;padding:4px 14px;">
<a href="decode.html" style="color:rgba(255,255,255,0.8);text-decoration:none;font-size:13px;">← 返回愈心解码</a>
</div>
<div class="container">
<div style="text-align:center;margin-bottom:10px;">
<h1 style="font-size:1.4em;font-weight:800;letter-spacing:0.15em;color:#C8923A;margin:0 0 6px;">愈心谷数字解构</h1>
<div style="font-size:0.65em;color:#999;letter-spacing:0.12em;margin-top:2px;">✦ 输入公历出生年月日 ✦</div>
</div>
<div class="input-row">
<input type="number" id="inY" value="1986"><span class="lbl"></span>
<input type="number" id="inM" value="2"><span class="lbl"></span>
<input type="number" id="inD" value="17"><span class="lbl"></span>
<button class="btn-gen" id="goBtn">生成</button>
</div>
<div class="top-numbers">
<div class="num-top" id="valR">3</div>
<div class="num-mid-row"><span id="valQ">4</span><span id="valP">8</span></div>
</div>
<div class="triangle-wrapper">
<svg class="triangle-svg" viewBox="0 0 300 260">
<polygon points="150,10 290,250 10,250" class="triangle-path"/>
<line x1="85" y1="130" x2="215" y2="130" class="divider-line"/>
<line x1="55" y1="190" x2="245" y2="190" class="divider-line"/>
<line x1="150" y1="130" x2="150" y2="250" class="divider-line"/>
</svg>
<div class="inner-number red-num" id="valO" style="left:50%;transform:translateX(-50%)">7</div>
<div class="inner-number mid-left" id="valM">1</div>
<div class="inner-number mid-right" id="valN">6</div>
<div class="inner-number bot-1" id="valI">8</div>
<div class="inner-number bot-2" id="valJ">2</div>
<div class="inner-number bot-3" id="valK">1</div>
<div class="inner-number bot-4" id="valL">5</div>
<div class="side-decorations">
<div class="side-num left-group" style="display:flex;flex-direction:column;align-items:center;">
<div id="valU">3</div>
<div style="display:flex;gap:8px"><span id="valT">9</span><span id="valS">3</span></div>
</div>
<div class="side-num right-group" style="display:flex;flex-direction:column;align-items:center;">
<div id="valX">9</div>
<div style="display:flex;gap:8px"><span id="valV">7</span><span id="valW">2</span></div>
</div>
</div>
</div>
<div class="footer-date">
<span id="dateD">17</span><span id="dateM">02</span><span id="dateY">1986</span>
</div>
<div class="sections">
<div class="tabs-nav">
<button class="tab-btn active" data-tab="shuzi">✨ 数字报告</button>
<button class="tab-btn" data-tab="meihua">🪷 梅花易数</button>
<button class="tab-btn" data-tab="xiaoliuren">🔮 小六壬</button>
<button class="tab-btn" data-tab="daliuren">🌌 大六壬</button>
<button class="tab-btn" data-tab="qimen">🏯 奇门遁甲</button>
<button class="tab-btn" data-tab="xingzuo">⭐ 星座</button>
<button class="tab-btn" data-tab="wuxing">☯️ 五行八卦</button>
</div>
<div class="tab-panel active" id="shuzi-panel">
<div class="missing" id="missingBlock"></div>
<div class="missing-short" id="missingMsg"></div>
<hr class="divider">
<div class="codes" id="codesBlock"></div>
<div class="joint" id="jointBlock"></div>
</div>
<div class="tab-panel" id="meihua-panel"></div>
<div class="tab-panel" id="xiaoliuren-panel"></div>
<div class="tab-panel" id="daliuren-panel"></div>
<div class="tab-panel" id="qimen-panel"></div>
<div class="tab-panel" id="xingzuo-panel"></div>
<div class="tab-panel" id="wuxing-panel"></div>
<div class="footer">内在探索 · 心灵成长</div>
</div>
</div>
<div class="tooltip" id="tip"></div>
<script src="../js/shell.js"></script>
<script src="../js/common.js"></script>
<script src="../js/shuzi.js"></script>
</body>
</html>
+237
View File
@@ -0,0 +1,237 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LVVXH3TL04"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LVVXH3TL04');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no,maximum-scale=1">
<title>星镜 · 愈心谷</title>
<link rel="stylesheet" href="../css/app.css">
<link rel="stylesheet" href="../css/xingjing.css">
</head>
<body class="app-page" data-nav="none">
<div class="topbar" id="topbar">
<button class="back-btn" id="backBtn" onclick="goBack()"></button>
<img src="../logo.png" alt="愈心谷"><span class="tbt">星镜</span>
<div style="width:32px;flex-shrink:0"></div>
</div>
<!-- ═══════ PAGE: 首页 ═══════ -->
<div class="page active" id="page-home">
<div class="hero-card" id="homeHero">
<div class="h-stars"><span></span><span></span><span></span><span></span><span></span></div>
<div class="hlabel" id="hlMonth">今日星象</div>
<div class="hzodiac" id="hzEmoji">🔭</div>
<div class="hsign" id="hzSign">探索你的星盘</div>
<div class="hdate" id="hzDate">发现内在的宇宙</div>
<div class="haction" onclick="goTest()">✦ 开始星盘测试</div>
</div>
<div class="horo-card" id="horoCard">
<div class="hday"></div><div class="hstars">★★★★☆</div><div class="hmsg"></div>
<div style="font-size:10px;color:var(--sub);margin-top:6px">💛 幸运色:<span id="hlColor"></span> · 幸运数字:<span id="hlNum"></span></div>
</div>
<div class="quick-grid">
<div class="quick-item" onclick="goTest()"><div class="qi">🔮</div><div class="qt">星盘测试</div><div class="qd">生辰排盘 · 性格解读</div></div>
<div class="quick-item" onclick="switchTab('chart')"><div class="qi"></div><div class="qt">动态星盘</div><div class="qd">行星运转 · 实时动画</div></div>
<div class="quick-item" onclick="switchTab('community')"><div class="qi"></div><div class="qt">视频社区</div><div class="qd">达人解读 · 热门内容</div></div>
<div class="quick-item" onclick="switchTab('report')"><div class="qi">🎬</div><div class="qt">我的报告</div><div class="qd">历史记录 · 视频回放</div></div>
<div class="quick-item" onclick="openSchulte()"><div class="qi">🧊</div><div class="qt">舒尔特训练</div><div class="qd">3D魔方 · 前额叶激活</div></div>
<div class="quick-item" onclick="openSynastry()"><div class="qi">💫</div><div class="qt">合盘配对</div><div class="qd">双人星盘 · 缘分契合度</div></div>
</div>
<div class="sec-head"><span class="dot"></span>热门解读</div>
<div class="scroll-x" id="trendingRow"></div>
</div>
<!-- ═══════ PAGE: 测试-输入出生 ═══════ -->
<div class="page" id="page-test-birth">
<div class="back-row"><span class="bk" onclick="goHome()">← 返回首页</span></div>
<div class="card" style="text-align:center">
<div style="font-size:36px;margin-bottom:6px">🔭</div>
<div class="card-title">输入出生信息</div>
<div class="card-sub">解锁专属星盘与性格解读</div>
</div>
<div class="card">
<div class="input-row">
<input type="number" id="tYear" placeholder="1990" style="flex:1.2"><span class="lbl"></span>
<select id="tMonth" style="flex:0.9"><option value=""></option></select>
<select id="tDay" style="flex:0.9"><option value=""></option></select>
</div>
<div class="input-row">
<select id="tHour" style="flex:1"><option value="">时辰</option></select>
<span class="lbl"></span>
</div>
<div class="input-row">
<select id="tProv" style="flex:1" onchange="onProvChange()"><option value="">省份</option></select>
<select id="tCity" style="flex:1" onchange="onCityChange()"><option value="">市区</option></select>
<select id="tDist" style="flex:1"><option value="">县/区</option></select>
</div>
<button class="btn btn-pri btn-block" onclick="startQuiz()" style="margin-top:8px">下一步 →</button>
</div>
</div>
<!-- ═══════ PAGE: 测试-答题 ═══════ -->
<div class="page" id="page-test-quiz">
<div class="back-row"><span class="bk" onclick="goTest()">← 返回修改</span></div>
<div style="text-align:center;margin-bottom:8px">
<span style="font-size:11px;color:var(--sub)" id="quizHint"></span>
<div style="font-size:12px;color:var(--sub);margin-top:2px"><span id="qNow">1</span> / <span id="qTotal">10</span></div>
<div style="height:4px;background:#eee;border-radius:2px;overflow:hidden;margin-top:4px">
<div id="qBar" style="height:100%;background:var(--pri);border-radius:2px;transition:width 0.3s;width:10%"></div>
</div>
</div>
<div id="quizCard"></div>
</div>
<!-- ═══════ PAGE: 测试-结果 ═══════ -->
<div class="page" id="page-test-result">
<div class="back-row"><span class="bk" onclick="goHome()">← 返回首页</span></div>
<div id="resultContent"></div>
</div>
<!-- ═══════ PAGE: 星盘 ═══════ -->
<div class="page" id="page-chart">
<div style="text-align:center;padding:8px 0 4px;font-size:12px;color:var(--sub)" id="chartHint">点击行星查看详情</div>
<canvas id="chartCanvas"></canvas>
<div class="chart-info" id="chartInfo">
<span style="cursor:pointer;color:var(--pri);font-weight:600" onclick="toggleChartMode()" id="chartToggle">◎ 实时天象</span>
<span style="margin-left:8px;font-size:11px;color:var(--sub)">拖拽旋转 · 双指缩放 · 点击行星</span>
</div>
</div>
<!-- ═══════ PAGE: 报告 ═══════ -->
<div class="page" id="page-report">
<div class="sec-head"><span class="dot"></span>测试历史</div>
<div id="historyList"></div>
</div>
<!-- ═══════ PAGE: 社区 ═══════ -->
<div class="page" id="page-community">
<div class="feed-tabs" id="feedTabs"></div>
<div id="feedList"></div>
</div>
<!-- ═══════ PAGE: 我的 ═══════ -->
<div class="page" id="page-profile">
<div class="card" style="text-align:center">
<div style="width:56px;height:56px;border-radius:50%;margin:0 auto 8px;display:flex;align-items:center;justify-content:center" id="pAvatar"><span class="zodiac-dh earth" style="width:56px;height:56px;font-size:26px"></span></div>
<div class="card-title" id="pSign">探索者</div><div class="card-sub" id="pDetail">完成测试解锁完整档案</div>
</div>
<div class="sec-head"><span class="dot"></span>成就徽章</div>
<div class="badge-row" id="badgeRow"></div>
<div class="sec-head"><span class="dot"></span>会员订阅</div>
<div class="tier-card"><div class="t-name">免费版</div><div class="t-price">¥0<span class="unit"> /月</span></div><div class="t-feat">✓ 基础排盘 &nbsp; ✓ 30秒带水印报告 &nbsp; ✓ 每日运势 &nbsp; ✓ 社区浏览</div></div>
<div class="tier-card pro" onclick="openPurchase()"><div class="t-name">星镜会员</div><div class="t-price">¥24<span class="unit"> /月</span> <span style="font-size:11px;color:var(--sub);text-decoration:line-through">首月¥9.9</span></div><div class="t-feat">✓ 无水印完整视频报告 &nbsp; ✓ 高清3D星盘 &nbsp; ✓ AI数字人多风格 &nbsp; ✓ 专属课程库 &nbsp; ✓ 不限次数生成</div><button class="btn btn-pri btn-block btn-sm" style="margin-top:8px">立即开通</button></div>
<div class="tier-card" onclick="openPurchase()"><div class="t-name">年度会员</div><div class="t-price">¥168<span class="unit"> /年</span> <span style="font-size:11px;color:var(--teal)">省 ¥120</span></div><div class="t-feat">✓ 包含全部月会员权益 + 年度专属深度报告</div><button class="btn btn-outline btn-block btn-sm" style="margin-top:6px">开通年度</button></div>
<div class="sec-head"><span class="dot"></span>预约达人咨询</div>
<div class="card card-sm" style="margin-bottom:16px">
<select style="width:100%;padding:10px;border:1.5px solid #e8e0d8;border-radius:10px;font-size:13px;margin-bottom:8px;background:#fdfaf7"><option>选择咨询类型</option><option>视频一对一 · ¥199/30min</option><option>预制短视频解读 · ¥99/次</option><option>语音咨询 · ¥129/30min</option><option>图文咨询 · ¥49/次</option></select>
<textarea placeholder="简述你想咨询的问题..." style="width:100%;padding:10px;border:1.5px solid #e8e0d8;border-radius:10px;font-size:13px;resize:none;min-height:64px;font-family:inherit;background:#fdfaf7"></textarea>
<button class="btn btn-pri btn-block btn-sm" style="margin-top:8px" onclick="showToast('预约请求已提交,达人将在24小时内回复')">提交预约</button>
</div>
</div>
<!-- ═══════ PAGE: 舒尔特 ═══════ -->
<div class="page" id="page-schulte">
<div class="back-row"><span class="bk" onclick="goHome()">← 返回首页</span></div>
<div class="card" style="text-align:center;margin-bottom:12px">
<div style="font-size:28px">🧊</div>
<div class="card-title">舒尔特前额叶训练</div>
<div class="card-sub" id="schulteSub">按顺序点击 1→25,训练专注力与反应速度</div>
</div>
<div class="cube-scene" id="cubeScene">
<div class="cube" id="cubeEl">
<div class="cube-face cube-front"><div class="deco-face"><br>愈心谷</div></div>
<div class="cube-face cube-back"><div class="deco-face"><br>专注<br>前额叶</div></div>
<div class="cube-face cube-left"><div class="deco-face"><br>反应<br>速度</div></div>
<div class="cube-face cube-right"><div class="deco-face"><br>注意力</div></div>
<div class="cube-face cube-top"><div class="deco-face"><br>视觉<br>搜索</div></div>
<div class="cube-face cube-bottom"><div class="deco-face"><br>记忆</div></div>
</div>
<div class="cube-grid" id="cubeFront"></div>
</div>
<div class="schulte-timer" id="schulteTimer">00:00.0</div>
<div class="schulte-best" id="schulteBest"></div>
<button class="btn btn-pri schulte-cta" id="schulteBtn" onclick="startSchulte()">开始训练</button>
<div class="schulte-info">拖拽旋转 · 点击数字按序消除</div>
</div>
<!-- ═══════ PAGE: 合盘 ═══════ -->
<div class="page" id="page-synastry">
<div class="back-row"><span class="bk" onclick="goHome()">← 返回首页</span></div>
<div class="card" style="text-align:center">
<div style="font-size:36px" id="synIcon">💫</div>
<div class="card-title" id="synTitle">双人合盘 · 缘分配对</div>
<div class="card-sub" id="synSub">输入两人的出生信息,解锁星座契合度分析</div>
</div>
<div style="display:flex;gap:4px;margin-bottom:10px" id="synTabs">
<button class="syn-tab active" onclick="setSynMode('romance')" id="synTabRomance">❤️ 两性合盘</button>
<button class="syn-tab" onclick="setSynMode('friendship')" id="synTabFriend">🤝 缘分配对</button>
<button class="syn-tab" onclick="setSynMode('family')" id="synTabFamily">🏠 家庭合盘</button>
</div>
<div style="display:flex;gap:4px;margin-bottom:10px" id="synChartTabs">
<button class="syn-tab active" onclick="setSynChart('compare')">◎ 比较盘</button>
<button class="syn-tab" onclick="setSynChart('composite')">◉ 组合盘</button>
<button class="syn-tab" onclick="setSynChart('marksAB')">👁 马盘 A→B</button>
<button class="syn-tab" onclick="setSynChart('marksBA')">👁 马盘 B→A</button>
</div>
<div style="margin-bottom:8px">
<div class="card card-sm" style="background:linear-gradient(135deg,#fff5f5,#fff);border-left:3px solid #E54D42">
<div style="font-size:11px;color:var(--pri);font-weight:700;margin-bottom:6px" id="synLabel1">👤 你</div>
<div class="input-row"><input type="number" id="s1Year" placeholder="1990" style="flex:1.2"><span class="lbl"></span><select id="s1Month" style="flex:0.9"><option value=""></option></select><select id="s1Day" style="flex:0.9"><option value=""></option></select></div>
</div>
<div class="card card-sm" style="background:linear-gradient(135deg,#f5f0ff,#fff);border-left:3px solid #7B68EE;margin-top:8px">
<div style="font-size:11px;color:#7B68EE;font-weight:700;margin-bottom:6px;display:flex;align-items:center;gap:6px">
<span id="synLabel2">👤 TA</span>
<select id="synFamilyRel" style="display:none;padding:3px 6px;border:1px solid #7B68EE;border-radius:8px;font-size:11px;background:#fdfaf7;color:#7B68EE">
<option>父亲</option><option>母亲</option><option>兄弟</option><option>姐妹</option><option>子女</option><option>祖父母</option><option>其他家人</option>
</select>
</div>
<div class="input-row"><input type="number" id="s2Year" placeholder="1995" style="flex:1.2"><span class="lbl"></span><select id="s2Month" style="flex:0.9"><option value=""></option></select><select id="s2Day" style="flex:0.9"><option value=""></option></select></div>
</div>
</div>
<button class="btn btn-pri btn-block" onclick="runSynastry()" style="margin-bottom:12px" id="synBtn">💫 开始合盘分析</button>
<div id="synastryResult"></div>
</div>
<!-- ═══════ BOTTOM NAV ═══════ -->
<div class="nav" id="bottomNav" style="display:none" aria-hidden="true"></div>
<div class="nav-item" onclick="switchTab('chart')"><span class="ni"></span>星盘</div>
<div class="nav-item" onclick="switchTab('report')"><span class="ni"></span>报告</div>
<div class="nav-item" onclick="switchTab('community')"><span class="ni"></span>社区</div>
<div class="nav-item" onclick="switchTab('profile')"><span class="ni"></span>我的</div>
</div>
<!-- ═══════ VIDEO OVERLAY ═══════ -->
<div class="video-overlay" id="videoOverlay">
<button class="v-close" onclick="stopVideo()"></button>
<canvas class="v-canvas" id="videoCanvas"></canvas>
<div class="v-progress"><div class="v-bar" id="vBar" style="width:0%"></div></div>
<div class="v-watermark" id="vWatermark">星镜 · 预览版</div>
</div>
<div class="toast" id="toast"></div>
<div class="modal-overlay" id="purchaseModal">
<div class="modal-box">
<div class="m-icon"></div><div class="m-title">开通星镜会员</div>
<div class="m-desc">解锁无水印完整视频报告、高清3D星盘、专属课程等全部权益。<br>首月仅需 ¥9.9</div>
<button class="btn btn-pri btn-block" onclick="doPurchase()">¥9.9 立即开通</button>
<button class="btn btn-outline btn-block btn-sm" style="margin-top:6px" onclick="closePurchase()">暂不需要</button>
</div>
</div>
<script src="../js/shell.js"></script>
<script src="../js/xingjing.js"></script>
</body>
</html>