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:
@@ -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}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user