feat: P1 合盘/星座/问答与测测完整设计包及模拟器取证工具

落地 synastry/star/ask API 与 H5 页面,补齐 cece-frontend-re complete-design 证据文档,并加入 Android 模拟器截图抓取脚本。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-03 11:37:53 +08:00
co-authored by Cursor
parent 15a9db374a
commit bd22d9dddd
248 changed files with 26309 additions and 842 deletions
+255 -3
View File
@@ -1,12 +1,264 @@
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body,#app{min-height:100%}
body{
font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
background:linear-gradient(180deg,var(--yxg-bg-start) 0%,var(--yxg-bg-end) 28%,#fff9f7 100%);
color:var(--yxg-text);
font-family:var(--font-sans);
font-size:14px;
line-height:1.65;
color:var(--color-text-primary);
-webkit-font-smoothing:antialiased;
background:
radial-gradient(120% 80% at 80% -10%, rgba(255,180,160,.45) 0%, transparent 55%),
radial-gradient(90% 60% at 10% 8%, rgba(255,210,190,.55) 0%, transparent 50%),
linear-gradient(180deg, var(--yxg-bg-start) 0%, var(--yxg-bg-end) 28%, var(--color-bg-sheet) 100%);
background-attachment:fixed;
}
.app-shell{
max-width:var(--yxg-max-w);margin:0 auto;min-height:100vh;
padding-bottom:calc(var(--yxg-nav-h) + env(safe-area-inset-bottom,0px) + 12px);
position:relative;
}
a{color:inherit;text-decoration:none}
/* ── Page shell (测测式:暖色洗底 + 白 sheet) ── */
.yxg-page{
padding:0 0 8px;
position:relative;
}
.yxg-page-pad{
padding:0 var(--spacing-md) 8px;
}
.yxg-hero{
padding:4px var(--spacing-md) 12px;
}
.yxg-sheet{
margin-top:8px;
background:var(--color-surface);
border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;
padding:8px 0 28px;
box-shadow:var(--shadow-sheet);
min-height:52vh;
animation:yxgSheetUp .45s cubic-bezier(.22,.8,.28,1) both;
}
.yxg-sheet-inset{
margin:0 var(--spacing-md);
border-radius:var(--radius-xl);
min-height:0;
padding:4px 0 20px;
box-shadow:var(--shadow-card);
}
@keyframes yxgSheetUp{
from{opacity:0;transform:translateY(16px)}
to{opacity:1;transform:translateY(0)}
}
.yxg-sec{
padding:0 var(--spacing-md);
margin-top:20px;
}
.yxg-sec:first-child{margin-top:12px}
.yxg-sec-head{
display:flex;justify-content:space-between;align-items:baseline;
margin-bottom:12px;
}
.yxg-sec-head .title{
font-size:17px;font-weight:700;color:#222;letter-spacing:.02em;
}
.yxg-sec-head .more{
font-size:12px;color:var(--color-text-tertiary);
}
.yxg-sec-head .more::after{content:" "}
/* ── Cards ── */
.yxg-card{
background:var(--color-surface);
border-radius:var(--radius-lg);
padding:16px;
margin:0 var(--spacing-md) 12px;
box-shadow:var(--shadow-card);
font-size:14px;color:#555;line-height:1.7;
}
/* sheet 内已有左右 padding 时,取消卡片/列表外边距 */
.yxg-sheet.sheet-pad .yxg-card,
.yxg-sheet.sheet-pad .yxg-list{
margin-left:0;margin-right:0;
}
.yxg-sheet.sheet-pad{
padding-left:var(--spacing-md);
padding-right:var(--spacing-md);
}
.yxg-card h2,.yxg-card .card-title{
font-size:16px;font-weight:700;color:#222;margin:0 0 8px;line-height:1.35;
}
.yxg-card.soft{background:#fafafa;box-shadow:none}
.yxg-hero-card{
margin:0 var(--spacing-md);
padding:18px 16px 16px;
background:var(--color-surface);
border-radius:var(--radius-xl);
box-shadow:var(--shadow-hero);
text-align:center;
animation:yxgFadeUp .5s ease both;
}
@keyframes yxgFadeUp{
from{opacity:0;transform:translateY(8px)}
to{opacity:1;transform:translateY(0)}
}
/* ── List (探索 / 我的) ── */
.yxg-list{
list-style:none;
margin:0 var(--spacing-md);
padding:4px 4px 4px 8px;
background:var(--color-surface);
border-radius:var(--radius-lg);
box-shadow:var(--shadow-card);
}
.yxg-list > li{
padding:14px 8px 14px 4px;
border-bottom:1px solid #f5f5f5;
}
.yxg-list > li:last-child{border-bottom:none}
.yxg-list a{
display:flex;align-items:flex-start;gap:12px;
color:inherit;text-decoration:none;
}
.yxg-list .yxg-body strong{
font-size:15px;font-weight:650;color:#222;line-height:1.35;
}
.yxg-list .yxg-body .desc,
.yxg-list .yxg-body .meta{
display:block;font-size:12px;color:var(--color-text-tertiary);
margin-top:4px;line-height:1.45;
}
.yxg-list .chev{
margin-left:auto;align-self:center;color:#d0d0d0;font-size:16px;flex-shrink:0;
}
/* ── Chips / filters ── */
.yxg-chips{
display:flex;gap:8px;padding:4px var(--spacing-md) 12px;
overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
}
.yxg-chips::-webkit-scrollbar{display:none}
.yxg-chip{
flex-shrink:0;padding:7px 14px;border-radius:var(--radius-pill);
background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.9);
font-size:12px;color:#666;cursor:pointer;
transition:background .15s,color .15s,box-shadow .15s;
}
.yxg-chip.on,.yxg-chip:active{
background:#fff;color:var(--yxg-pri);font-weight:600;
box-shadow:0 2px 8px rgba(0,0,0,.04);
}
.yxg-chip-solid{
background:#fff;border:1px solid var(--color-border);
}
.yxg-chip-solid.on{
border-color:var(--yxg-pri);color:var(--yxg-pri);
}
/* ── Buttons / forms ── */
.yxg-btn{
display:inline-flex;align-items:center;justify-content:center;
padding:11px 18px;border:none;border-radius:var(--radius-pill);
color:#fff;font-size:14px;font-weight:600;cursor:pointer;
background:linear-gradient(135deg,#ff7a6e,var(--yxg-pri));
box-shadow:0 6px 16px rgba(229,77,66,.28);
text-decoration:none;
}
.yxg-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
.yxg-btn:active:not(:disabled){opacity:.92}
.yxg-btn-block{width:100%}
.yxg-btn-ghost{
background:#fff;color:var(--yxg-pri);
border:1px solid #f0c0bc;box-shadow:none;
}
.yxg-btn-soft{
background:var(--color-accent-green);
box-shadow:0 6px 16px rgba(92,184,92,.25);
}
.yxg-input,.yxg-select,.yxg-textarea{
width:100%;padding:11px 12px;
border:1.5px solid var(--color-border-strong);
border-radius:var(--radius-md);
font:inherit;font-size:15px;color:var(--color-text-primary);
background:var(--color-input-bg);outline:none;
transition:border-color .15s,background .15s;
}
.yxg-input:focus,.yxg-select:focus,.yxg-textarea:focus{
border-color:#f0b8b0;background:#fff;
}
.yxg-textarea{resize:vertical;line-height:1.55;font-size:14px}
.yxg-label{
display:block;font-size:12px;color:var(--color-text-secondary);
margin:8px 0 4px;
}
.yxg-hint{font-size:13px;color:var(--color-text-secondary);line-height:1.5}
.yxg-err{color:var(--yxg-pri);font-size:13px;margin:8px 0}
.yxg-meta{font-size:12px;color:var(--color-text-tertiary)}
.yxg-lead{font-size:15px;color:#333;line-height:1.65;margin:0 0 12px}
.yxg-disc{font-size:11px;color:var(--color-text-tertiary);margin-top:20px;line-height:1.5}
.yxg-link{
background:none;border:none;color:var(--yxg-pri);
padding:0 4px;font-size:13px;text-decoration:underline;cursor:pointer;
}
.yxg-link-plain{
color:var(--yxg-pri);text-decoration:none;font-size:14px;
}
/* ── Icon tones (legacy home.css) ── */
.icon-pink{background:#FFE4E4;color:var(--yxg-pri)}
.icon-blue{background:#E3EEFF;color:#4A90E2}
.icon-purple{background:#EDE4FF;color:#8B5CF6}
.icon-orange{background:#FFE8D6;color:#E8985A}
.icon-green{background:#E0F6E4;color:#5CB85C}
.icon-rose{background:#FFE0EC;color:#E85A8C}
.icon-teal{background:#DDF6EF;color:#2EA88A}
.icon-gold{background:#FFF3D6;color:#C8923A}
.icon-night{background:#E8E2F4;color:#6B5B95}
.icon-mute{background:#F3F3F3;color:#aaa}
.yxg-row{
display:flex;align-items:flex-start;gap:12px;
}
.yxg-row .yxg-mark{
width:44px;height:44px;border-radius:14px;flex-shrink:0;
display:flex;align-items:center;justify-content:center;
font-size:18px;font-weight:600;
box-shadow:inset 0 -2px 0 rgba(0,0,0,.03);
}
.yxg-row .yxg-body{flex:1;min-width:0}
.yxg-chip-ico{
display:inline-flex;align-items:center;gap:8px;
}
.yxg-chip-ico .m{opacity:.9;font-size:13px}
/* ── Feed cards ── */
.yxg-feed{display:flex;flex-direction:column;gap:12px}
.yxg-feed-card{
display:flex;gap:14px;align-items:stretch;
padding:12px;background:#fafafa;border-radius:var(--radius-lg);
color:inherit;transition:transform .12s,background .12s;
position:relative;overflow:hidden;
}
.yxg-feed-card:active{transform:scale(.985);background:#f5f5f5}
.yxg-feed-cover{
width:72px;height:72px;border-radius:14px;flex-shrink:0;
display:flex;align-items:center;justify-content:center;
font-size:28px;position:relative;overflow:hidden;
}
.yxg-feed-cover::after{
content:"";position:absolute;inset:0;
background:linear-gradient(160deg,rgba(255,255,255,.35),transparent 50%);
}
.yxg-feed-body{
flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;padding:2px 0;
}
.yxg-feed-body .name{font-size:15px;font-weight:650;color:#222;line-height:1.35}
.yxg-feed-body .meta{font-size:12px;color:var(--color-text-secondary);margin-top:4px;line-height:1.4}
.fc-a .yxg-feed-cover{background:linear-gradient(145deg,#FFD0C8,#FFB0A4);color:#C23B32}
.fc-b .yxg-feed-cover{background:linear-gradient(145deg,#E4D8F8,#C9B6F0);color:#5B4A8A}
.fc-c .yxg-feed-cover{background:linear-gradient(145deg,#D6E8FF,#B0D0F5);color:#3A6FB0}
.fc-d .yxg-feed-cover{background:linear-gradient(145deg,#D8F0DC,#B5E0BE);color:#3A8A4A}
.fc-e .yxg-feed-cover{background:linear-gradient(145deg,#FFE6C8,#F5C98A);color:#B07A28}
)