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:
+72
@@ -0,0 +1,72 @@
|
||||
/* 愈心谷共享壳 —— 品牌色、布局、底栏、二级顶栏 */
|
||||
:root{
|
||||
--pri:#E54D42; --blue:#4A90E2; --green:#5CB85C;
|
||||
--purple:#8B5CF6; --orange:#E8985A; --pink:#E0508C;
|
||||
--gold:#C8923A;
|
||||
--text:#333; --sub:#999;
|
||||
--hero-start:#FF9F80; --hero-end:#FFB8A6;
|
||||
--bg-start:#FFD1C7; --bg-end:#FFC8B5;
|
||||
--nav-h:56px;
|
||||
}
|
||||
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
|
||||
html,body{min-height:100%}
|
||||
body.app-body{
|
||||
font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif;
|
||||
background:linear-gradient(180deg,var(--bg-start) 0%,var(--bg-end) 30%,#fff5f0 100%);
|
||||
color:var(--text);max-width:430px;margin:0 auto;
|
||||
-webkit-font-smoothing:antialiased;
|
||||
padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom,0px) + 12px);
|
||||
}
|
||||
body.app-body.no-nav{padding-bottom:24px}
|
||||
|
||||
a{color:inherit}
|
||||
|
||||
/* ── 二级顶栏 ── */
|
||||
.app-topbar{
|
||||
display:flex;align-items:center;gap:10px;
|
||||
padding:12px 14px;position:sticky;top:0;z-index:50;
|
||||
background:linear-gradient(180deg,var(--bg-start) 0%,rgba(255,209,199,0.85) 100%);
|
||||
-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
|
||||
}
|
||||
.app-topbar .back{
|
||||
width:36px;height:36px;border:none;background:rgba(255,255,255,0.7);
|
||||
border-radius:10px;font-size:18px;color:#555;cursor:pointer;
|
||||
display:flex;align-items:center;justify-content:center;text-decoration:none;flex-shrink:0;
|
||||
}
|
||||
.app-topbar .title{
|
||||
flex:1;font-size:16px;font-weight:600;color:var(--text);
|
||||
white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;
|
||||
padding-right:36px;
|
||||
}
|
||||
|
||||
/* ── 底栏 ── */
|
||||
.app-nav{
|
||||
position:fixed;bottom:0;left:50%;transform:translateX(-50%);
|
||||
width:100%;max-width:430px;background:#fff;
|
||||
display:flex;justify-content:space-around;
|
||||
padding:6px 0 calc(10px + env(safe-area-inset-bottom,0));
|
||||
border-top:1px solid #f0f0f0;z-index:100;
|
||||
box-shadow:0 -2px 8px rgba(0,0,0,0.03);
|
||||
}
|
||||
.app-nav a{
|
||||
display:flex;flex-direction:column;align-items:center;gap:2px;
|
||||
font-size:10px;color:var(--sub);text-decoration:none;line-height:1;
|
||||
flex:1;padding:2px 0;
|
||||
}
|
||||
.app-nav a.active{color:var(--pri)}
|
||||
.app-nav .ni{
|
||||
width:20px;height:20px;display:flex;align-items:center;justify-content:center;
|
||||
font-size:16px;line-height:1;
|
||||
}
|
||||
|
||||
/* ── 通用卡片 ── */
|
||||
.app-card{
|
||||
background:#fff;border-radius:16px;padding:18px 16px;
|
||||
box-shadow:0 2px 10px rgba(0,0,0,0.04);
|
||||
}
|
||||
.app-section{padding:0 16px;margin-top:18px}
|
||||
.app-sec-title{font-size:16px;font-weight:600;color:var(--text);margin-bottom:10px}
|
||||
|
||||
.page-pad{padding:0 16px 20px}
|
||||
.page-header{text-align:center;padding:20px 16px 12px}
|
||||
.page-header .sub{font-size:13px;color:rgba(0,0,0,0.45);margin-top:4px}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
:root{
|
||||
--pri:#E54D42; --num:#C8923A; --num-d:#8a6d3b;
|
||||
--ys:#5CB85C; --ys-d:#3f8f45;
|
||||
--text:#333; --sub:#999;
|
||||
--bg-start:#FFD1C7; --bg-end:#FFC8B5;
|
||||
}
|
||||
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
|
||||
/* legacy body → scoped */
|
||||
.app-page{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
|
||||
color:var(--text);background:linear-gradient(160deg,var(--bg-start),var(--bg-end));
|
||||
min-height:100vh;padding-bottom:80px;}
|
||||
.wrap{max-width:430px;margin:0 auto;padding:0 14px;}
|
||||
.top{text-align:center;padding:22px 0 10px;}
|
||||
.top .t{font-size:24px;font-weight:800;letter-spacing:3px;color:#fff;
|
||||
text-shadow:0 2px 8px rgba(0,0,0,.15);}
|
||||
.top .s{font-size:12px;color:#fff;opacity:.9;margin-top:4px;}
|
||||
.card{background:#fff;border-radius:18px;padding:20px;margin:14px 0;
|
||||
box-shadow:0 8px 30px rgba(0,0,0,.08);}
|
||||
.tag{display:inline-block;font-size:11px;padding:3px 10px;border-radius:20px;
|
||||
color:#fff;font-weight:600;margin-bottom:10px;}
|
||||
.tag-num{background:var(--num);}
|
||||
.tag-ys{background:var(--ys);}
|
||||
|
||||
/* Part1 数字 */
|
||||
.hex{width:76px;height:76px;margin:6px auto 8px;display:flex;align-items:center;
|
||||
justify-content:center;font-size:34px;font-weight:800;color:#fff;
|
||||
background:linear-gradient(135deg,var(--num),var(--num-d));
|
||||
clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);}
|
||||
.p-title{text-align:center;font-size:19px;font-weight:700;color:var(--num-d);}
|
||||
.p-oneline{text-align:center;font-size:13px;color:var(--sub);margin-top:4px;}
|
||||
.pyr{text-align:center;margin:16px 0;}
|
||||
|
||||
/* Part2 体质 */
|
||||
.ys-type{text-align:center;font-size:20px;font-weight:700;color:var(--ys-d);margin:4px 0;}
|
||||
.ys-dir{text-align:center;font-size:13px;color:var(--sub);}
|
||||
.bars{margin:16px 0 6px;}
|
||||
.bar-row{display:flex;align-items:center;gap:8px;margin:7px 0;font-size:13px;}
|
||||
.bar-row .lab{width:20px;text-align:center;font-weight:700;}
|
||||
.bar-track{flex:1;height:14px;background:#f0f0f0;border-radius:8px;overflow:hidden;}
|
||||
.bar-fill{height:100%;border-radius:8px;transition:width .6s;}
|
||||
.bar-row .val{width:34px;text-align:right;color:var(--sub);}
|
||||
|
||||
/* 付费墙 */
|
||||
.lock{position:relative;margin-top:14px;border-radius:14px;overflow:hidden;
|
||||
border:1px solid #f2e6d0;}
|
||||
.lock .blur{filter:blur(10px);opacity:0.35;pointer-events:none;user-select:none;
|
||||
padding:16px;font-size:13px;line-height:1.9;color:#666;}
|
||||
.lock .cover{position:absolute;inset:0;background:linear-gradient(180deg,
|
||||
rgba(255,255,255,.4),rgba(255,255,255,.92));display:flex;flex-direction:column;
|
||||
align-items:center;justify-content:center;text-align:center;padding:16px;}
|
||||
.lock .cover .lk-t{font-size:15px;font-weight:700;color:var(--num-d);}
|
||||
.lock .cover .lk-d{font-size:12px;color:var(--sub);margin:6px 0 12px;}
|
||||
.unlock-btn{background:var(--pri);color:#fff;border:none;padding:11px 30px;
|
||||
border-radius:24px;font-size:15px;font-weight:700;cursor:pointer;
|
||||
box-shadow:0 4px 14px rgba(229,77,66,.35);}
|
||||
.unlocked .cover{display:none;}
|
||||
.unlocked .blur{filter:none;pointer-events:auto;user-select:auto;}
|
||||
|
||||
/* Part3 今日锦囊 */
|
||||
.jn h4{font-size:14px;color:var(--ys-d);margin-bottom:8px;}
|
||||
.jn .row{font-size:13px;line-height:2;color:#555;}
|
||||
.jn .row b{color:var(--ys-d);}
|
||||
.jn .st{font-size:12px;color:var(--sub);margin-bottom:6px;}
|
||||
|
||||
/* 契合度 / 分享 */
|
||||
.mini-form{display:flex;gap:6px;align-items:center;justify-content:center;
|
||||
flex-wrap:wrap;margin-top:10px;}
|
||||
.mini-form input{width:56px;padding:9px 4px;border:1.5px solid #eee;
|
||||
border-radius:9px;text-align:center;font-size:14px;}
|
||||
.mini-form button,.share-btn{background:var(--pri);color:#fff;border:none;
|
||||
padding:10px 20px;border-radius:22px;font-size:14px;font-weight:600;cursor:pointer;}
|
||||
.share-btn{display:block;width:100%;margin-top:6px;}
|
||||
.match-score{text-align:center;font-size:32px;font-weight:800;color:var(--pri);margin:8px 0 2px;}
|
||||
|
||||
/* 深度入口 */
|
||||
.deep{display:flex;gap:10px;margin:16px 0;}
|
||||
.deep a{flex:1;text-align:center;padding:13px 6px;border-radius:14px;
|
||||
color:#fff;text-decoration:none;font-size:13px;font-weight:600;}
|
||||
.deep .d-num{background:linear-gradient(135deg,var(--num),var(--num-d));}
|
||||
.deep .d-ys{background:linear-gradient(135deg,var(--ys),var(--ys-d));}
|
||||
|
||||
.disc{font-size:11px;color:#fff;opacity:.8;text-align:center;line-height:1.7;
|
||||
padding:14px 8px;}
|
||||
.err{text-align:center;color:#fff;padding:40px 20px;font-size:15px;}
|
||||
|
||||
/* 分享卡片 canvas 弹层 */
|
||||
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;
|
||||
align-items:center;justify-content:center;z-index:99;padding:20px;}
|
||||
.modal.on{display:flex;}
|
||||
.modal .m-box{background:#fff;border-radius:16px;padding:16px;max-width:340px;text-align:center;}
|
||||
.modal canvas{width:100%;border-radius:10px;}
|
||||
.modal .m-tip{font-size:12px;color:var(--sub);margin:10px 0;}
|
||||
.modal .m-close{color:var(--pri);font-size:14px;cursor:pointer;}
|
||||
|
||||
/* 支付弹窗 */
|
||||
.pay-modal{position:fixed;inset:0;background:rgba(0,0,0,.5);display:none;
|
||||
align-items:center;justify-content:center;z-index:100;padding:20px;}
|
||||
.pay-modal.on{display:flex;}
|
||||
.pay-modal .pm-box{background:#fff;border-radius:20px;padding:28px 24px 22px;
|
||||
max-width:300px;width:100%;text-align:center;box-shadow:0 16px 48px rgba(0,0,0,.15);}
|
||||
.pay-modal .pm-icon{font-size:36px;margin-bottom:10px;}
|
||||
.pay-modal .pm-title{font-size:18px;font-weight:700;color:#333;margin-bottom:4px;}
|
||||
.pay-modal .pm-desc{font-size:13px;color:var(--sub);margin-bottom:6px;line-height:1.6;}
|
||||
.pay-modal .pm-price{font-size:28px;font-weight:800;color:var(--pri);margin:8px 0;}
|
||||
.pay-modal .pm-price small{font-size:14px;font-weight:400;color:var(--sub);}
|
||||
.pay-modal .pm-features{font-size:12px;color:#888;margin:10px 0 14px;line-height:1.9;}
|
||||
.pay-modal .pm-btn{display:block;width:100%;background:var(--pri);color:#fff;border:none;
|
||||
padding:12px;border-radius:24px;font-size:15px;font-weight:700;cursor:pointer;
|
||||
box-shadow:0 4px 14px rgba(229,77,66,.35);margin-bottom:8px;}
|
||||
.pay-modal .pm-cancel{font-size:12px;color:#aaa;cursor:pointer;background:none;border:none;}
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
:root{--pri:#E54D42;--gold:#C8923A;--wd:#5CB85C;--fr:#E54D42;--ea:#E8985A;--mt:#C8923A;--wt:#4A90E2;--bg0:#FFD1C7;--bg1:#FFC8B5;--bg2:#FFF8F0;--bg3:#fff5f0}
|
||||
*{box-sizing:border-box;margin:0;padding:0}
|
||||
/* legacy body → scoped */
|
||||
.app-page{
|
||||
font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
|
||||
background:linear-gradient(180deg,var(--bg0) 0%,var(--bg1) 30%,var(--bg2) 60%,var(--bg3) 100%);
|
||||
min-height:100vh;color:#333;-webkit-font-smoothing:antialiased;
|
||||
}
|
||||
.container{max-width:500px;margin:0 auto;padding:20px 14px 40px}
|
||||
.header{text-align:center;padding:24px 0 16px}
|
||||
.header .sub{font-size:12px;color:rgba(0,0,0,0.35);margin-top:4px}
|
||||
.card{
|
||||
background:#fff;border-radius:16px;padding:20px;margin-bottom:14px;
|
||||
box-shadow:0 2px 12px rgba(0,0,0,0.04);
|
||||
}
|
||||
.card h2{font-size:16px;font-weight:600;margin-bottom:12px;color:#333;display:flex;align-items:center;gap:8px}
|
||||
.card h3{font-size:14px;font-weight:600;margin:14px 0 8px;color:#555}
|
||||
.card h4{font-size:13px;font-weight:600;color:#333;margin-bottom:4px}
|
||||
.card p.dim{font-size:12px;color:#aaa;margin-bottom:14px}
|
||||
|
||||
/* Tabs */
|
||||
.tabs{display:flex;gap:0;margin-bottom:14px;background:#f5f0eb;border-radius:10px;padding:3px}
|
||||
.tab{flex:1;text-align:center;padding:10px 0;border-radius:8px;font-size:13px;cursor:pointer;color:#888;transition:all 0.15s}
|
||||
.tab.active{background:#fff;color:var(--pri);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,0.06)}
|
||||
|
||||
/* Form */
|
||||
.fg{margin-bottom:12px}
|
||||
.fg label{display:block;font-size:12px;color:#999;margin-bottom:4px;font-weight:500}
|
||||
.fg input,.fg select{width:100%;padding:12px 14px;border:1.5px solid #e8e0d8;border-radius:10px;font-size:15px;outline:none;background:#fdfaf7}
|
||||
.fg input:focus,.fg select:focus{border-color:var(--pri)}
|
||||
.fr{display:flex;gap:10px}.fr .fg{flex:1}
|
||||
.btn{width:100%;padding:14px;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer}
|
||||
.btn-pri{background:var(--pri);color:#fff}.btn-pri:active{opacity:0.85}
|
||||
|
||||
/* Pentagram */
|
||||
.penta{display:flex;justify-content:center;gap:8px;margin:16px 0;flex-wrap:wrap}
|
||||
.pb{text-align:center;min-width:44px}
|
||||
.pb .f{height:120px;width:28px;border-radius:14px;margin:0 auto 6px;position:relative;background:#f0ebe5;overflow:hidden}
|
||||
.pb .fi{position:absolute;bottom:0;left:0;right:0;border-radius:14px;transition:height 0.6s ease}
|
||||
.pb .l{font-size:11px;color:#888}
|
||||
.pb .v{font-size:13px;font-weight:700;margin-top:2px}
|
||||
|
||||
/* Stats */
|
||||
.stats2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}
|
||||
.st2{padding:14px 10px;border-radius:10px;background:#fdf8f5;text-align:center}
|
||||
.st2 .v{font-size:20px;font-weight:700}
|
||||
.st2 .l{font-size:11px;color:#999;margin-top:2px}
|
||||
.st2 .d{font-size:11px;color:#bbb;margin-top:2px;line-height:1.5}
|
||||
|
||||
/* Bazi table */
|
||||
.bzt{width:100%;border-collapse:collapse;font-size:13px;margin:10px 0}
|
||||
.bzt th{background:#fdf8f5;padding:10px 6px;font-weight:600;font-size:11px;color:#999}
|
||||
.bzt td{text-align:center;padding:10px 6px;border-bottom:1px solid #f5f0eb}
|
||||
.bzt td strong{font-size:16px}
|
||||
.bzt .el{font-size:11px;color:#aaa}
|
||||
|
||||
/* Tags */
|
||||
.tags{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
|
||||
.tag{padding:4px 12px;border-radius:20px;font-size:12px;font-weight:500}
|
||||
.tg{background:#E6FFE8;color:#388E3C}
|
||||
.tw{background:#FFECEC;color:var(--pri)}
|
||||
.tb{background:#E6F0FF;color:var(--wt)}
|
||||
.to{background:#FFF8E6;color:var(--ea)}
|
||||
|
||||
/* Risk */
|
||||
.rk{padding:14px;border-radius:12px;margin-bottom:10px;border-left:4px solid}
|
||||
.rk.r1{background:#FFF0ED;border-color:var(--fr)}
|
||||
.rk.r2{background:#FFF8E6;border-color:var(--ea)}
|
||||
.rk.r3{background:#E6F0FF;border-color:var(--wt)}
|
||||
.rk h4{font-size:14px;margin-bottom:6px}
|
||||
.rk p.x{font-size:12px;color:#888;margin-bottom:6px;line-height:1.6}
|
||||
.rk ul{list-style:none;padding:0}
|
||||
.rk li{font-size:12px;color:#666;padding:2px 0}
|
||||
.rk li::before{content:'· ';color:var(--pri)}
|
||||
|
||||
/* Suggest */
|
||||
.sr{display:flex;gap:8px;margin-bottom:10px}
|
||||
.si{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
|
||||
.sb{flex:1}
|
||||
.sb .t{font-size:14px;font-weight:600;margin-bottom:4px}
|
||||
.sb .i{font-size:12px;color:#666;line-height:1.8}
|
||||
.sb .r{font-size:11px;color:#aaa;margin-top:2px}
|
||||
.sg{background:#E6FFE8}.sr2{background:#FFECEC}.sbl{background:#E6F0FF}.so{background:#FFF8E6}
|
||||
|
||||
/* Score */
|
||||
.sc{display:flex;align-items:center;gap:10px;padding:8px 0}
|
||||
.sl{font-size:13px;width:40px;text-align:right}
|
||||
.sb2{flex:1;height:8px;border-radius:4px;background:#f0ebe5;overflow:hidden}
|
||||
.sf{height:100%;border-radius:4px;transition:width 0.4s ease}
|
||||
.sv{font-size:13px;font-weight:600;width:32px}
|
||||
|
||||
/* Quote */
|
||||
.qt{background:linear-gradient(135deg,#FFF8F0,#FFECEC);border-radius:12px;padding:16px;text-align:center;margin:10px 0}
|
||||
.qt .t{font-size:15px;font-weight:600;color:var(--pri);font-style:italic}
|
||||
.qt .e{font-size:12px;color:#888;margin-top:6px;line-height:1.6}
|
||||
|
||||
/* Organ stars */
|
||||
.or{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid #f5f0eb}
|
||||
.or:last-child{border-bottom:none}
|
||||
.on{font-size:13px;width:30px}
|
||||
.os2{color:var(--gold);font-size:14px;letter-spacing:2px}
|
||||
.os2 .off{color:#ddd}
|
||||
|
||||
/* Meridian */
|
||||
.mer{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:10px 0}
|
||||
.mi{font-size:11px;padding:6px 8px;border-radius:8px;background:#fdf8f5;text-align:center}
|
||||
.mi .t2{font-weight:600;font-size:12px}
|
||||
.mi .o2{font-size:10px;color:#999;margin-top:1px}
|
||||
|
||||
/* WYLQ table */
|
||||
.wlt{width:100%;border-collapse:collapse;font-size:12px;margin:8px 0}
|
||||
.wlt td{padding:8px 6px;border-bottom:1px solid #f5f0eb}
|
||||
.wlt td:first-child{color:#999;white-space:nowrap}
|
||||
.wlt td:last-child{font-weight:500}
|
||||
|
||||
/* Interaction */
|
||||
.inter{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
|
||||
.iv{padding:6px 12px;border-radius:8px;font-size:12px;font-weight:500}
|
||||
.iv.good{background:#E6FFE8;color:#388E3C}
|
||||
.iv.bad{background:#FFECEC;color:var(--pri)}
|
||||
.iv.neut{background:#f5f0eb;color:#888}
|
||||
|
||||
.hidden{display:none!important}
|
||||
.tip{font-size:11px;color:#ccc;text-align:center;margin-top:8px}
|
||||
+213
@@ -0,0 +1,213 @@
|
||||
/* 首页 · 测测式信息流(愈心谷品牌色) */
|
||||
|
||||
body.app-body[data-nav="home"]{
|
||||
background:
|
||||
radial-gradient(120% 80% at 80% -10%, rgba(255,180,160,.55) 0%, transparent 55%),
|
||||
radial-gradient(90% 60% at 10% 8%, rgba(255,210,190,.7) 0%, transparent 50%),
|
||||
linear-gradient(180deg, #FFD6CC 0%, #FFE8E0 28%, #FFF6F2 55%, #FFF9F7 100%);
|
||||
overflow-x:hidden;
|
||||
}
|
||||
|
||||
/* ── 品牌顶区 ── */
|
||||
.home-brand{
|
||||
text-align:center;padding:18px 20px 6px;position:relative;z-index:2;
|
||||
}
|
||||
.home-brand img{height:28px;vertical-align:middle}
|
||||
.home-brand .word{
|
||||
margin-top:10px;
|
||||
font-family:"Noto Serif SC","Songti SC","PingFang SC",serif;
|
||||
font-size:28px;font-weight:700;letter-spacing:0.18em;
|
||||
color:#2a2a2a;line-height:1.2;
|
||||
}
|
||||
.home-brand .word em{
|
||||
font-style:normal;color:var(--pri);
|
||||
}
|
||||
.home-brand .tagline{
|
||||
margin-top:6px;font-size:12px;color:rgba(0,0,0,.38);letter-spacing:0.12em;
|
||||
}
|
||||
|
||||
/* 装饰光斑 */
|
||||
.home-glow{
|
||||
position:absolute;pointer-events:none;border-radius:50%;filter:blur(2px);z-index:0;
|
||||
}
|
||||
.home-glow.g1{width:140px;height:140px;top:40px;right:-30px;background:rgba(255,255,255,.45)}
|
||||
.home-glow.g2{width:90px;height:90px;top:100px;left:-20px;background:rgba(255,200,180,.4)}
|
||||
|
||||
/* ── 愈心解码(顶区主入口) ── */
|
||||
.decode-hero{
|
||||
margin:14px 16px 0;position:relative;z-index:2;
|
||||
padding:18px 16px 16px;background:#fff;border-radius:20px;
|
||||
box-shadow:0 8px 28px rgba(229,77,66,.12);
|
||||
text-align:center;
|
||||
animation:bdayIn .5s ease both;
|
||||
}
|
||||
.decode-hero .di-title{
|
||||
font-family:"Noto Serif SC","Songti SC",serif;
|
||||
font-size:17px;font-weight:700;color:#C8923A;letter-spacing:0.1em;
|
||||
}
|
||||
.decode-hero .di-sub{font-size:12px;color:#aaa;margin:4px 0 14px}
|
||||
.decode-hero .di-inputs{
|
||||
display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:wrap;
|
||||
}
|
||||
.decode-hero input{
|
||||
padding:11px 6px;border:1.5px solid #eee;border-radius:12px;
|
||||
font-size:15px;text-align:center;outline:none;background:#fdfaf8;
|
||||
transition:border-color .15s;
|
||||
}
|
||||
.decode-hero input:focus{border-color:#F0B8B0;background:#fff}
|
||||
.decode-hero input.dc-y{width:64px}
|
||||
.decode-hero input.dc-md{width:48px}
|
||||
.decode-hero .dc-sep{font-size:12px;color:#bbb}
|
||||
.decode-hero button{
|
||||
padding:11px 18px;background:linear-gradient(135deg,#FF7A6E,var(--pri));
|
||||
color:#fff;border:none;border-radius:22px;font-size:14px;font-weight:600;
|
||||
cursor:pointer;box-shadow:0 6px 16px rgba(229,77,66,.28);
|
||||
}
|
||||
.decode-hero button:active{opacity:.9}
|
||||
@keyframes bdayIn{
|
||||
from{opacity:0;transform:translateY(8px)}
|
||||
to{opacity:1;transform:translateY(0)}
|
||||
}
|
||||
|
||||
/* ── 分类 chips ── */
|
||||
.chips{
|
||||
display:flex;gap:8px;padding:14px 16px 4px;
|
||||
overflow-x:auto;-webkit-overflow-scrolling:touch;
|
||||
scrollbar-width:none;position:relative;z-index:2;
|
||||
}
|
||||
.chips::-webkit-scrollbar{display:none}
|
||||
.chip{
|
||||
flex-shrink:0;padding:7px 14px;border-radius:999px;
|
||||
background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.9);
|
||||
font-size:12px;color:#666;text-decoration:none;
|
||||
backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
|
||||
transition:background .15s,color .15s;
|
||||
}
|
||||
.chip:active,.chip.on{background:#fff;color:var(--pri);font-weight:600;box-shadow:0 2px 8px rgba(0,0,0,.04)}
|
||||
|
||||
/* ── 白色内容面板(测测式上浮 sheet) ── */
|
||||
.home-sheet{
|
||||
margin-top:14px;background:#fff;
|
||||
border-radius:22px 22px 0 0;
|
||||
padding:8px 0 28px;
|
||||
box-shadow:0 -4px 24px rgba(180,100,80,.06);
|
||||
position:relative;z-index:3;
|
||||
animation:sheetUp .55s cubic-bezier(.22,.8,.28,1) both;
|
||||
}
|
||||
@keyframes sheetUp{
|
||||
from{opacity:0;transform:translateY(24px)}
|
||||
to{opacity:1;transform:translateY(0)}
|
||||
}
|
||||
|
||||
.section{padding:0 16px;margin-top:20px}
|
||||
.sec-head{
|
||||
display:flex;justify-content:space-between;align-items:baseline;
|
||||
margin-bottom:12px;
|
||||
}
|
||||
.sec-head .title{
|
||||
font-size:17px;font-weight:700;color:#222;letter-spacing:0.02em;
|
||||
}
|
||||
.sec-head .more{
|
||||
font-size:12px;color:#bbb;text-decoration:none;
|
||||
}
|
||||
|
||||
/* ── 图标宫格 ── */
|
||||
.test-grid{
|
||||
display:grid;grid-template-columns:repeat(4,1fr);gap:14px 8px;
|
||||
padding:4px 2px 2px;
|
||||
}
|
||||
.test-item{
|
||||
display:flex;flex-direction:column;align-items:center;gap:8px;
|
||||
text-decoration:none;color:var(--text);position:relative;
|
||||
transition:transform .15s;
|
||||
}
|
||||
.test-item:active{transform:scale(0.92)}
|
||||
.test-item .icon{
|
||||
width:54px;height:54px;border-radius:18px;
|
||||
display:flex;align-items:center;justify-content:center;
|
||||
font-size:22px;flex-shrink:0;
|
||||
box-shadow:inset 0 -2px 0 rgba(0,0,0,.03);
|
||||
}
|
||||
.test-item .label{
|
||||
font-size:11px;color:#555;text-align:center;line-height:1.25;
|
||||
max-width:68px;word-break:keep-all;
|
||||
}
|
||||
.test-item .badge{
|
||||
position:absolute;top:-4px;right:6px;
|
||||
font-size:9px;background:linear-gradient(135deg,#FF7A6E,var(--pri));
|
||||
color:#fff;padding:1px 5px;border-radius:6px;line-height:1.4;
|
||||
box-shadow:0 2px 6px rgba(229,77,66,.3);
|
||||
}
|
||||
|
||||
.icon-pink{background:#FFE4E4;color:var(--pri)}
|
||||
.icon-blue{background:#E3EEFF;color:var(--blue)}
|
||||
.icon-purple{background:#EDE4FF;color:var(--purple)}
|
||||
.icon-orange{background:#FFE8D6;color:var(--orange)}
|
||||
.icon-green{background:#E0F6E4;color:var(--green)}
|
||||
.icon-rose{background:#FFE0EC;color:var(--pink)}
|
||||
.icon-teal{background:#DDF6EF;color:#2EA88A}
|
||||
.icon-gold{background:#FFF3D6;color:#C8923A}
|
||||
.icon-night{background:#E8E2F4;color:#6B5B95}
|
||||
.icon-mute{background:#F3F3F3;color:#aaa}
|
||||
|
||||
/* ── 热门信息流卡片(测测 feed) ── */
|
||||
.feed{display:flex;flex-direction:column;gap:12px}
|
||||
.feed-card{
|
||||
display:flex;gap:14px;align-items:stretch;
|
||||
padding:12px;background:#FAFAFA;border-radius:16px;
|
||||
text-decoration:none;color:var(--text);
|
||||
transition:transform .12s, background .12s;
|
||||
position:relative;overflow:hidden;
|
||||
}
|
||||
.feed-card:active{transform:scale(0.985);background:#F5F5F5}
|
||||
.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;
|
||||
}
|
||||
.feed-cover::after{
|
||||
content:"";position:absolute;inset:0;
|
||||
background:linear-gradient(160deg,rgba(255,255,255,.35),transparent 50%);
|
||||
}
|
||||
.feed-body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;padding:2px 0}
|
||||
.feed-body .name{font-size:15px;font-weight:650;color:#222;line-height:1.35}
|
||||
.feed-body .meta{font-size:12px;color:#999;margin-top:4px;line-height:1.4}
|
||||
.feed-body .stat{font-size:11px;color:#c4c4c4;margin-top:6px}
|
||||
.feed-tag{
|
||||
position:absolute;top:10px;right:10px;
|
||||
font-size:10px;color:#fff;background:var(--pri);
|
||||
padding:2px 7px;border-radius:8px;
|
||||
}
|
||||
|
||||
.fc-a .feed-cover{background:linear-gradient(145deg,#FFD0C8,#FFB0A4);color:#C23B32}
|
||||
.fc-b .feed-cover{background:linear-gradient(145deg,#E4D8F8,#C9B6F0);color:#5B4A8A}
|
||||
.fc-c .feed-cover{background:linear-gradient(145deg,#D6E8FF,#B0D0F5);color:#3A6FB0}
|
||||
.fc-d .feed-cover{background:linear-gradient(145deg,#D8F0DC,#B5E0BE);color:#3A8A4A}
|
||||
.fc-e .feed-cover{background:linear-gradient(145deg,#FFE6C8,#F5C98A);color:#B07A28}
|
||||
|
||||
/* ── 快捷入口横滑 ── */
|
||||
.scroll-row{
|
||||
display:flex;gap:10px;overflow-x:auto;padding:2px 0 4px;
|
||||
-webkit-overflow-scrolling:touch;scrollbar-width:none;
|
||||
}
|
||||
.scroll-row::-webkit-scrollbar{display:none}
|
||||
.mini-card{
|
||||
flex:0 0 148px;padding:14px 14px 16px;border-radius:16px;
|
||||
text-decoration:none;color:#333;position:relative;overflow:hidden;
|
||||
transition:transform .12s;
|
||||
}
|
||||
.mini-card:active{transform:scale(0.97)}
|
||||
.mini-card .mi{font-size:22px;margin-bottom:8px}
|
||||
.mini-card .mt{font-size:14px;font-weight:650}
|
||||
.mini-card .md{font-size:11px;color:rgba(0,0,0,.4);margin-top:3px;line-height:1.35}
|
||||
.mc-coral{background:linear-gradient(160deg,#FFE8E2,#FFD4CA)}
|
||||
.mc-mint{background:linear-gradient(160deg,#E4F6EA,#D0EDD8)}
|
||||
.mc-sky{background:linear-gradient(160deg,#E6F0FF,#D4E4FF)}
|
||||
.mc-sand{background:linear-gradient(160deg,#FFF3E0,#FFE4C2)}
|
||||
|
||||
@media(max-width:380px){
|
||||
.home-brand .word{font-size:24px}
|
||||
.test-item .icon{width:48px;height:48px;font-size:20px;border-radius:16px}
|
||||
.test-item .label{font-size:10px}
|
||||
.feed-cover{width:64px;height:64px}
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
/* 一级聚合页:认识自己 / 私域活动 / 我的 */
|
||||
.hub-list{display:flex;flex-direction:column;gap:10px;padding:0 16px 20px}
|
||||
.hub-item{
|
||||
display:flex;align-items:center;gap:14px;padding:16px;
|
||||
background:#fff;border-radius:14px;text-decoration:none;color:var(--text);
|
||||
box-shadow:0 2px 10px rgba(0,0,0,0.04);transition:transform .12s;
|
||||
}
|
||||
.hub-item:active{transform:scale(0.98)}
|
||||
.hub-item .hi{
|
||||
width:48px;height:48px;border-radius:12px;
|
||||
display:flex;align-items:center;justify-content:center;
|
||||
font-size:22px;flex-shrink:0;
|
||||
}
|
||||
.hub-item .ht{font-size:16px;font-weight:600}
|
||||
.hub-item .hd{font-size:12px;color:var(--sub);margin-top:3px}
|
||||
.hub-item .ha{margin-left:auto;color:#ccc;font-size:18px}
|
||||
.hi-gold{background:#FFF8E6;color:#C8923A}
|
||||
.hi-blue{background:#E6F0FF;color:#4A90E2}
|
||||
.hi-purple{background:#F0E6FF;color:#8B5CF6}
|
||||
.hi-green{background:#E6FFE8;color:#5CB85C}
|
||||
.hi-rose{background:#FFECEC;color:#E54D42}
|
||||
.hub-empty{
|
||||
margin:24px 16px;padding:28px 20px;text-align:center;
|
||||
background:#fff;border-radius:16px;color:var(--sub);font-size:14px;line-height:1.7;
|
||||
box-shadow:0 2px 10px rgba(0,0,0,0.04);
|
||||
}
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
:root{--pri:#E54D42;--hero-start:#FF9F80;--bg-start:#FFD1C7;--bg-end:#FFC8B5}
|
||||
*{box-sizing:border-box;margin:0;padding:0}
|
||||
/* legacy body → scoped */
|
||||
.app-page{
|
||||
font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
|
||||
background:linear-gradient(180deg,var(--bg-start),var(--bg-end) 50%,#fff5f0);
|
||||
height:100vh;display:flex;overflow:hidden;
|
||||
}
|
||||
|
||||
/* ── Sidebar ── */
|
||||
.sidebar{
|
||||
width:200px;background:#fff;border-right:1px solid #f0e0d8;display:flex;flex-direction:column;
|
||||
flex-shrink:0;box-shadow:2px 0 8px rgba(0,0,0,0.03);z-index:10;
|
||||
}
|
||||
.sidebar .sh{
|
||||
padding:16px 14px 10px;font-size:15px;font-weight:600;color:#333;
|
||||
border-bottom:1px solid #f5f0eb;
|
||||
}
|
||||
.sidebar .slist{flex:1;overflow-y:auto;padding:8px 0}
|
||||
.sidebar .slist .item{
|
||||
padding:10px 14px;cursor:pointer;font-size:13px;color:#555;
|
||||
display:flex;align-items:center;justify-content:space-between;
|
||||
border-left:3px solid transparent;transition:background 0.1s;
|
||||
}
|
||||
.sidebar .slist .item:hover{background:#fdf8f5}
|
||||
.sidebar .slist .item.active{background:#fff0ed;border-left-color:var(--pri);color:var(--pri);font-weight:600}
|
||||
.sidebar .slist .item .del{font-size:11px;color:#ccc;visibility:hidden;cursor:pointer}
|
||||
.sidebar .slist .item:hover .del{visibility:visible}
|
||||
.sidebar .slist .item .del:hover{color:var(--pri)}
|
||||
.sidebar .sb{display:flex;gap:6px;padding:10px 12px;border-top:1px solid #f5f0eb}
|
||||
.sidebar .sb button{
|
||||
flex:1;padding:8px 0;border:1px solid #ddd;border-radius:6px;
|
||||
background:#fff;font-size:12px;cursor:pointer;color:#555;
|
||||
}
|
||||
.sidebar .sb button.primary{background:var(--pri);color:#fff;border-color:var(--pri)}
|
||||
.sidebar .sb button:active{opacity:0.8}
|
||||
|
||||
/* ── Main ── */
|
||||
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
|
||||
.toolbar{
|
||||
display:flex;align-items:center;gap:6px;padding:8px 12px;
|
||||
background:rgba(255,255,255,0.9);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
|
||||
border-bottom:1px solid #f0e0d8;flex-shrink:0;flex-wrap:wrap;z-index:10;
|
||||
}
|
||||
.toolbar button{
|
||||
padding:6px 12px;border:1px solid #ddd;border-radius:6px;
|
||||
background:#fff;font-size:13px;cursor:pointer;color:#555;
|
||||
}
|
||||
.toolbar button:active{background:#f0ebe5}
|
||||
.toolbar button.primary{background:var(--pri);color:#fff;border-color:var(--pri)}
|
||||
.toolbar .sep{width:1px;height:20px;background:#ddd;margin:0 2px}
|
||||
.toolbar .hint{font-size:11px;color:#aaa;margin-left:auto}
|
||||
canvas{flex:1;display:block;cursor:grab}
|
||||
canvas:active{cursor:grabbing}
|
||||
#editor{position:absolute;display:none;z-index:20}
|
||||
#editor input{
|
||||
padding:4px 8px;border:2px solid var(--pri);border-radius:4px;
|
||||
font-size:13px;outline:none;min-width:80px;background:#fff;
|
||||
}
|
||||
/* Plus buttons */
|
||||
#plusChild,#plusSibling{
|
||||
position:absolute;display:none;z-index:25;
|
||||
width:20px;height:20px;border-radius:50%;
|
||||
color:#fff;font-size:14px;font-weight:bold;line-height:20px;
|
||||
text-align:center;cursor:pointer;user-select:none;
|
||||
pointer-events:auto;
|
||||
}
|
||||
|
||||
/* Mobile */
|
||||
@media(max-width:600px){
|
||||
.sidebar{
|
||||
position:fixed;left:0;top:0;bottom:0;width:240px;z-index:30;
|
||||
transform:translateX(-100%);transition:transform 0.25s ease;
|
||||
box-shadow:4px 0 20px rgba(0,0,0,0.1);
|
||||
}
|
||||
.sidebar.open{transform:translateX(0)}
|
||||
.sidebar .sh{font-size:16px;padding:18px 16px 12px}
|
||||
.sidebar .slist .item{font-size:14px;padding:12px 16px}
|
||||
.sidebar .sb button{padding:10px 0;font-size:13px}
|
||||
/* hamburger */
|
||||
.hamburger{
|
||||
display:flex!important;position:fixed;top:8px;left:8px;z-index:40;
|
||||
width:36px;height:36px;align-items:center;justify-content:center;
|
||||
background:rgba(255,255,255,0.9);border-radius:8px;
|
||||
border:1px solid #e0d5cf;font-size:18px;cursor:pointer;
|
||||
-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
|
||||
}
|
||||
/* overlay backdrop */
|
||||
.overlay{
|
||||
display:none;position:fixed;inset:0;z-index:25;
|
||||
background:rgba(0,0,0,0.25);
|
||||
}
|
||||
.overlay.show{display:block}
|
||||
/* toolbar compact */
|
||||
.toolbar{gap:3px;padding:6px 6px 6px 50px;min-height:42px}
|
||||
.toolbar button{padding:6px 10px;font-size:12px;border-radius:8px}
|
||||
.toolbar .sep{margin:0 1px}
|
||||
.toolbar .hint{font-size:10px;display:none}
|
||||
/* canvas */
|
||||
canvas{flex:1}
|
||||
/* editor bigger for touch */
|
||||
#editor input{font-size:16px!important;padding:8px 12px;min-width:100px;border-radius:6px}
|
||||
/* node hit area larger on mobile */
|
||||
.mobile .toolbar button{min-height:32px}
|
||||
}
|
||||
/* Desktop: hide hamburger */
|
||||
.hamburger{display:none}
|
||||
@@ -0,0 +1,58 @@
|
||||
:root{--pri:#E54D42;--bg-start:#FFD1C7;--bg-end:#FFC8B5}
|
||||
*{box-sizing:border-box;margin:0;padding:0}
|
||||
/* legacy body → scoped */
|
||||
.app-page{
|
||||
font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
|
||||
background:linear-gradient(180deg,var(--bg-start) 0%,var(--bg-end) 50%,#fff5f0 100%);
|
||||
min-height:100vh;-webkit-font-smoothing:antialiased;
|
||||
display:flex;flex-direction:column;
|
||||
}
|
||||
|
||||
.top-bar{display:flex;align-items:center;padding:14px 16px;gap:12px;max-width:500px;margin:0 auto}
|
||||
.top-bar .back{font-size:22px;text-decoration:none;color:#666;line-height:1}
|
||||
.top-bar .title{flex:1;font-size:16px;font-weight:600;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
|
||||
.top-bar .qnum{font-size:13px;color:#999}
|
||||
.progress{height:3px;background:rgba(0,0,0,0.08);max-width:500px;margin:0 auto}
|
||||
.progress .bar{height:100%;background:var(--pri);transition:width 0.3s}
|
||||
|
||||
.main{flex:1;display:flex;flex-direction:column;padding:20px;max-width:500px;width:100%;margin:0 auto}
|
||||
|
||||
.qcard{background:#fff;border-radius:14px;padding:28px 22px;box-shadow:0 2px 10px rgba(0,0,0,0.04);flex:1}
|
||||
.qcard .qtext{font-size:17px;color:#333;line-height:1.7;margin-bottom:24px}
|
||||
.qcard .qtext .qidx{color:var(--pri);font-weight:600;margin-right:6px}
|
||||
|
||||
.options{display:flex;flex-direction:column;gap:10px}
|
||||
.option{
|
||||
padding:14px 18px;border-radius:10px;border:1.5px solid #eee;
|
||||
font-size:15px;color:#444;cursor:pointer;transition:all 0.15s;text-align:left;background:#fafafa;
|
||||
}
|
||||
.option:hover{border-color:var(--pri);background:#fff5f3}
|
||||
.option.selected{border-color:var(--pri);background:#fff0ed;color:var(--pri);font-weight:500}
|
||||
|
||||
.btns{display:flex;gap:12px;padding:16px 0 30px;max-width:500px;width:100%;margin:0 auto}
|
||||
.btns button{
|
||||
flex:1;padding:14px;border-radius:10px;border:none;font-size:15px;cursor:pointer;
|
||||
font-weight:500;transition:all 0.15s;
|
||||
}
|
||||
.btn-prev{background:#f0f0f0;color:#666}
|
||||
.btn-next{background:var(--pri);color:#fff}
|
||||
.btn-submit{background:#4CAF50;color:#fff}
|
||||
button:disabled{opacity:0.4;cursor:not-allowed}
|
||||
|
||||
.submit-area{text-align:center;padding:40px 20px}
|
||||
.submit-area p{font-size:14px;color:#888;margin-bottom:20px}
|
||||
.submit-area button{
|
||||
padding:14px 40px;border-radius:10px;background:var(--pri);color:#fff;
|
||||
border:none;font-size:16px;cursor:pointer;font-weight:500;
|
||||
}
|
||||
|
||||
.result-card{background:#fff;border-radius:14px;padding:32px 22px;box-shadow:0 2px 10px rgba(0,0,0,0.04);text-align:center;max-width:500px;width:100%;margin:0 auto}
|
||||
.result-card .score{font-size:48px;font-weight:700;color:var(--pri);margin:12px 0}
|
||||
.result-card .level{font-size:18px;color:#666;margin-bottom:20px}
|
||||
.result-card .detail{font-size:14px;color:#999;line-height:1.6;text-align:left}
|
||||
.result-card .back-btn{
|
||||
display:inline-block;margin-top:20px;padding:12px 30px;background:var(--pri);color:#fff;
|
||||
border-radius:10px;text-decoration:none;font-size:15px;
|
||||
}
|
||||
|
||||
.loading{text-align:center;padding:80px 20px;color:#999}
|
||||
@@ -0,0 +1,48 @@
|
||||
:root{--pri:#E54D42;--bg-start:#FFD1C7;--bg-end:#FFC8B5}
|
||||
*{box-sizing:border-box;margin:0;padding:0}
|
||||
/* legacy body → scoped */
|
||||
.app-page{
|
||||
font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
|
||||
background:linear-gradient(180deg,var(--bg-start) 0%,var(--bg-end) 50%,#fff5f0 100%);
|
||||
min-height:100vh;-webkit-font-smoothing:antialiased;
|
||||
}
|
||||
.header{padding:24px 20px 16px;text-align:center}
|
||||
.logo img{height:36px;margin-bottom:4px}
|
||||
.header .sub{font-size:13px;color:rgba(0,0,0,0.45);margin-top:4px}
|
||||
|
||||
.categories{display:flex;flex-wrap:wrap;gap:8px;padding:0 20px 12px;justify-content:center;max-width:600px;margin:0 auto}
|
||||
.cat-btn{
|
||||
padding:7px 16px;border-radius:20px;border:1px solid rgba(0,0,0,0.12);
|
||||
background:#fff;font-size:13px;color:#555;cursor:pointer;
|
||||
transition:all 0.2s;white-space:nowrap;
|
||||
}
|
||||
.cat-btn.active{background:var(--pri);color:#fff;border-color:var(--pri)}
|
||||
|
||||
.scales{max-width:600px;margin:0 auto;padding:0 20px 40px}
|
||||
.scale-card{
|
||||
display:flex;align-items:center;gap:12px;padding:16px;
|
||||
background:#fff;border-radius:12px;margin-bottom:10px;
|
||||
box-shadow:0 1px 6px rgba(0,0,0,0.05);cursor:pointer;
|
||||
transition:transform 0.12s;text-decoration:none;color:inherit;
|
||||
}
|
||||
.scale-card:active{transform:scale(0.98)}
|
||||
.scale-card .icon{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}
|
||||
.scale-card .icon.cat-综合{background:#FFECEC;color:var(--pri)}
|
||||
.scale-card .icon.cat-人格{background:#E6F0FF;color:#4A90E2}
|
||||
.scale-card .icon.cat-抑郁{background:#E6E0FF;color:#7C5CF2}
|
||||
.scale-card .icon.cat-焦虑{background:#FFF0E6;color:#E8985A}
|
||||
.scale-card .icon.cat-强迫{background:#E6FFE8;color:#5CB85C}
|
||||
.scale-card .icon.cat-躁狂{background:#FFF8E6;color:#E8985A}
|
||||
.scale-card .icon.cat-双相{background:#FFE6F0;color:#E0508C}
|
||||
.scale-card .icon.cat-恐惧{background:#E6F5FF;color:#4A90E2}
|
||||
.scale-card .icon.cat-智商{background:#F3E8FF;color:#8B5CF6}
|
||||
.scale-card .icon.cat-情商{background:#FFF5EC;color:#C8923A}
|
||||
.scale-card .icon.cat-其他{background:#F0F0F0;color:#888}
|
||||
.scale-card .info{flex:1;min-width:0}
|
||||
.scale-card .info .name{font-size:15px;font-weight:600;color:#333}
|
||||
.scale-card .info .desc{font-size:12px;color:#999;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
.scale-card .count{font-size:12px;color:#aaa;flex-shrink:0}
|
||||
|
||||
.loading{text-align:center;padding:60px 20px;color:#999}
|
||||
.empty{text-align:center;padding:40px 20px;color:#ccc;font-size:14px}
|
||||
.back{display:inline-block;padding:8px 16px;color:var(--pri);text-decoration:none;font-size:14px;margin:8px 0 0 20px}
|
||||
@@ -0,0 +1,78 @@
|
||||
@font-face { font-family:'TriangleDigits'; src:url(data:font/woff2;base64,d09GMgABAAAAAAUAAA4AAAAACHwAAASsAAIZmQAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbbBxIBmAANBEQCocshhEBNgIkAxoLGAAEIAWDIgcgG9QGKC4G7Ib6hm2MRajDYhGiDhrol2EQYF1VSXrYswJPkJb83g+eA7l2QeKDmZzBKY+S2Y6GNNvdREZSoL/sv5IIQxUu06If+FX4/z+X49/WsztrTAw5kRt099ubOm5NXEAFHuBcGvAGSjDAgLDn2bZk6fIVBBISV5n1GLNAADYApcVbCydXozYtkTdtbu8OvEOS0PEgPgIdEQfiY0OwiSCOBmAPsl4AYswwdCJQA1FoSBQqZkProGuMIFPAPhuoa8oSVYX8YAQSAZpDCmDZcIkm/ZAjI0LR3A1KzY56XmlDxUYMYNhtcBARzR51kKE7KkxKozJobFeXdNJlKY3czMCYMrUMa/83F2mmEHEHkFJnDXn9YBwBCSjAHYUA3NEIBjQ0BFDLHki2t3+KqVZYkbggAFQ26ho8RWcQ3tl/htql/UbHN70BAoXUbXpAnK4F+eoWL5vNxzpnKT0L1CrUld9zyZWVebLzdRVOGASMYohloBiiuziLHrm5uQI5VmbV7EqrcnVlszArq2tWV6c5C0+s7O5L1+3WqS7Q2737TCeTufqRH9o1O3uOtCpHMUc36sxupMOcNaesYEbpnGdwwlHmrs8VKBTmstgNaLvfBrx5PQ/wj1yzJd01+3LOm+/CzOY4zhHWtXYr5PbIyREYwJnHeFm4pXu2IcxByHzZVWJ3Er3bMQkX9snibM6Y1aTyc3rkXNUJPXpz8SR3SFeH84FFWYV9bzibJvHlL0bRde6KYc9cmiIKk5+FN+NThqtvc8aBGfnF6WzIqLk1ON06sNXy3bLFuIJ8DQT/QGhPY9JrsRk3RddPID33rzz9cLGnXZjvNNQR4659v7m7f0qW1qex/MqwciHDfdsqBnOLCispr6nWU0/DmAXZBdjkTA0M/4LXawb7VDhbjduWNPaWsM25jxyH1ENRUmejPPOk33dOKZ+v4BRLNZQeriawC/Nzxb0nr7/lPdzfGvGf3kgW0N6/tXYq1Si9RA/v58kV3DTY5DgaxwV1Uw5++lzxouLrgNYX82rdHtlWXSn61Di0UAxfhc2HeamcDnfrnVra3xecFNc61xtZhSxqUlFZFQ62rTQ+w3YS4S9Z4bNHHUB7y/fxoxt9pVAyqdOZ66cPKs7Oz8sYj5f2lIpvQPQfX3t4++1V80/rnFtRkIspHBjC5WXnpReTvuTiMVkJsZFp5SVhxARkdDKQhx19XV78vjqr1UAXlvCfnhUiz41CK/6P8dI6eIab2nlH17ap48+X3P/67iJUpWdlq6vNFAQABCB9dmU3fPxwgFPdb2YhMwAvzT++ByhOmZz+3/9vizVMBYAZOVthCvnfDK9OI6rfpSMQ1O8ljbVAg/Zm6S2UNDN4K6A9UySALjrjrgTjPKoUNdG7bdIswFkQgyCYswaJI28NikwKujXQYMBXOC8yEihiaSpGlAKsZbII4YSJENhVwgyBgJQEXSDaUphohpCxTCWZFJKhBY+AiHgRfBMjhobUGOI+OYREilhp4gmpjs63SFuCvHUricIo0nYoVERiSqyLCF+MnFdHwYlnbI0JjLBYonBsPGESCHYCTx5NXJ+7DhJpNTCDOrOPjGrLzlAAAAA) format('woff2'); }
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
/* legacy body → scoped */
|
||||
.app-page{ background:linear-gradient(160deg,#FFD1C7,#FFC8B5); font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; display:flex; flex-direction:column; justify-content:center; align-items:center; min-height:100vh; color:#333; padding:10px 10px 20px; -webkit-user-select:none; user-select:none; -webkit-touch-callout:none; }
|
||||
.container { position:relative; width:600px; max-width:95%; padding:12px 40px 40px; display:flex; flex-direction:column; align-items:center; background:#fff; border-radius:18px; box-shadow:0 8px 30px rgba(0,0,0,.08); margin-bottom:30px; }
|
||||
.input-row { display:flex; gap:5px; align-items:center; margin-bottom:24px; font-family:sans-serif; }
|
||||
.input-row input { width:56px; padding:6px 4px; border:1px solid #d9ccb6; border-radius:3px; font-size:14px; text-align:center; color:#6b5b4e; background:#fff; outline:none; }
|
||||
.input-row input:focus { border-color:#a89580; }
|
||||
.input-row .lbl { font-size:0.75em; color:#9b8a78; }
|
||||
.btn-gen { padding:6px 12px; background:#8b7a68; color:#fff; border:none; border-radius:3px; font-size:0.75em; cursor:pointer; margin-left:2px; }
|
||||
.btn-gen:active { opacity:0.8; }
|
||||
.top-numbers { display:flex; flex-direction:column; align-items:center; margin-bottom:-20px; z-index:2; font-family:'TriangleDigits','Georgia','Times New Roman',serif; }
|
||||
.top-numbers .num-top { font-size:2.2rem; font-weight:normal; }
|
||||
.top-numbers .num-mid-row { display:flex; gap:60px; font-size:2.2rem; font-weight:normal; }
|
||||
.triangle-wrapper { position:relative; width:300px; height:260px; margin:20px 0; display:flex; justify-content:center; align-items:center; overflow:visible; }
|
||||
.triangle-svg { position:absolute; top:0; left:0; width:100%; height:100%; z-index:0; }
|
||||
.triangle-path { fill:#f2ebdd; stroke:#d9ccb6; stroke-width:2; }
|
||||
.divider-line { stroke:#d9ccb6; stroke-width:2; }
|
||||
.inner-number { position:absolute; z-index:1; font-size:2.2rem; font-weight:bold; cursor:pointer; font-family:'TriangleDigits','Georgia','Times New Roman',serif; color:#5a4636; }
|
||||
.red-num { color:#c47a78; top:25%; }
|
||||
.mid-left { top:55%; left:30%; } .mid-right { top:55%; right:30%; }
|
||||
.bot-1 { bottom:10%; left:18%; } .bot-2 { bottom:10%; left:38%; }
|
||||
.bot-3 { bottom:10%; right:38%; } .bot-4 { bottom:10%; right:18%; }
|
||||
.side-decorations { position:absolute; width:100%; height:100%; top:0; left:0; font-family:'TriangleDigits','Georgia','Times New Roman',serif; }
|
||||
.side-num { position:absolute; font-size:2.2rem; opacity:0.65; cursor:pointer; font-family:'TriangleDigits','Georgia','Times New Roman',serif; font-weight:normal; color:#8b7e6e; }
|
||||
.left-group { top:30%; left:-40px; text-align:right; line-height:1.5; }
|
||||
.right-group { top:30%; right:-40px; text-align:left; line-height:1.5; }
|
||||
.footer-date { margin-top:0; display:flex; gap:40px; font-size:1.8rem; letter-spacing:2px; color:#5a4636; font-family:'TriangleDigits','Georgia','Times New Roman',serif; }
|
||||
.sections { width:100%; max-width:360px; margin-top:24px; font-family:sans-serif; font-size:1em; color:#6b5b4e; }
|
||||
.divider { border:none; border-top:1px solid #e0d5c4; margin:12px 0; opacity:0.6; }
|
||||
.codes .r { display:flex; justify-content:space-between; border-bottom:1px dotted rgba(168,144,112,0.15); padding:2px 4px; }
|
||||
.codes .k { color:#9b8a78; } .codes .v { color:#6b5b4e; }
|
||||
.joint-age { font-size:0.9em; color:#a89070; font-weight:600; text-align:center; margin:8px 0 2px; border-bottom:1px solid rgba(168,144,112,0.2); padding-bottom:2px; }
|
||||
.joint-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:2px 10px; }
|
||||
.joint-grid .jc { font-weight:700; color:#5a4636; } .joint-grid .jm { color:#9b8a78; }
|
||||
.tooltip { position:fixed; padding:5px 10px; background:#6b5b4e; color:#fff; border-radius:4px; font-size:0.7em; pointer-events:none; opacity:0; transition:opacity 0.12s; z-index:999; max-width:200px; line-height:1.5; font-family:sans-serif; }
|
||||
.tooltip.on { opacity:1; }
|
||||
.footer { text-align:center; font-size:0.6em; color:#9b8a78; margin-top:10px; }
|
||||
/* 付费墙 */
|
||||
.shuzi-lock { position:relative; border-radius:10px; overflow:hidden; border:1px solid #f2e6d0; }
|
||||
.shuzi-lock > .blur { filter:blur(10px); opacity:0.35; pointer-events:none; user-select:none; }
|
||||
.shuzi-lock .cover { position:absolute; inset:0; z-index:2; background:linear-gradient(180deg, rgba(250,247,242,.5), rgba(250,247,242,.95)); display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:20px; }
|
||||
.shuzi-lock .cover .lk-t { font-size:1.05em; font-weight:700; color:#c47a78; }
|
||||
.shuzi-lock .cover .lk-d { font-size:0.75em; color:#9b8a78; margin:8px 0 14px; }
|
||||
.shuzi-lock .cover .lk-btn { background:#c47a78; color:#fff; border:none; padding:10px 28px; border-radius:20px; font-size:0.85em; font-weight:600; cursor:pointer; }
|
||||
.shuzi-lock.unlocked .cover { display:none; }
|
||||
.shuzi-lock.unlocked .blur { filter:none; pointer-events:auto; user-select:auto; }
|
||||
.scene-3d { position:relative; display:flex; justify-content:center; margin:8px 0; cursor:grab; }
|
||||
.scene-3d:active { cursor:grabbing; }
|
||||
.scene-3d canvas { display:block; touch-action:none; }
|
||||
.scene-hint { position:absolute; bottom:2px; left:50%; transform:translateX(-50%); font-size:0.55em; color:#b8a898; pointer-events:none; opacity:0.7; }
|
||||
.freq-label { text-align:center; font-size:0.7em; color:#6b5b4e; margin-top:2px; line-height:1.8; }
|
||||
.tabs-nav { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:18px; justify-content:center; padding:0 4px; }
|
||||
.tab-btn { padding:5px 10px; border:1px solid #d9ccb6; border-radius:3px; background:#fff; color:#9b8a78; font-size:0.7em; cursor:pointer; font-family:sans-serif; transition:all 0.15s; white-space:nowrap; }
|
||||
.tab-btn:hover { border-color:#c47a78; color:#c47a78; }
|
||||
.tab-btn.active { background:#c47a78; color:#fff; border-color:#c47a78; }
|
||||
.tab-panel { display:none; }
|
||||
.tab-panel.active { display:block; }
|
||||
.tab-panel .module-title { font-size:0.82em; font-weight:600; color:#5a4636; text-align:center; margin-bottom:8px; }
|
||||
.tab-panel .module-desc { font-size:0.68em; color:#9b8a78; text-align:center; margin-bottom:10px; line-height:1.6; }
|
||||
.tab-panel .module-section { font-size:0.72em; color:#6b5b4e; line-height:1.75; padding:0 4px; margin-bottom:10px; }
|
||||
.tab-panel .module-section b { color:#5a4636; }
|
||||
.bagua-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; text-align:center; margin:8px 0; }
|
||||
.bagua-cell { padding:6px 4px; border-radius:4px; font-size:0.68em; line-height:1.5; }
|
||||
@media (max-width:600px) {
|
||||
.triangle-wrapper { width:220px; height:190px; margin:10px auto 0; }
|
||||
.triangle-wrapper svg { width:220px; height:190px; }
|
||||
.inner-number { font-size:1.6rem; }
|
||||
.red-num { top:22%; }
|
||||
.mid-left { top:52%; left:28%; } .mid-right { top:52%; right:28%; }
|
||||
.bot-1 { bottom:10%; left:14%; } .bot-2 { bottom:10%; left:35%; }
|
||||
.bot-3 { bottom:10%; right:35%; } .bot-4 { bottom:10%; right:14%; }
|
||||
.side-num { font-size:1.6rem; }
|
||||
.left-group { left:-32px; top:26%; } .right-group { right:-32px; top:26%; }
|
||||
.top-numbers .num-top { font-size:1.6rem; }
|
||||
.top-numbers .num-mid-row { font-size:1.6rem; gap:40px; }
|
||||
.footer-date { gap:14px; font-size:1.2rem; letter-spacing:0; }
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
html{overflow-y:auto;-webkit-overflow-scrolling:touch}
|
||||
:root{
|
||||
--pri:#E54D42; --blue:#4A90E2; --teal:#0D9488; --gold:#C8923A;
|
||||
--text:#333; --sub:#999; --bg-start:#FFD1C7; --bg-end:#FFC8B5; --dark:#1a1a2e;
|
||||
}
|
||||
*{box-sizing:border-box;margin:0;padding:0}
|
||||
/* legacy body → scoped */
|
||||
.app-page{
|
||||
font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif;
|
||||
background:linear-gradient(180deg,var(--bg-start) 0%,var(--bg-end) 40%,#fff5f0 100%);
|
||||
color:var(--text);max-width:430px;margin:0 auto;min-height:100vh;
|
||||
-webkit-font-smoothing:antialiased;overflow-x:hidden;
|
||||
overflow-y:auto;-webkit-overflow-scrolling:touch;
|
||||
}
|
||||
.topbar{
|
||||
display:flex;align-items:center;justify-content:center;gap:8px;
|
||||
padding:10px 16px 6px;position:sticky;top:0;z-index:20;
|
||||
background:linear-gradient(180deg,var(--bg-start) 0%,rgba(255,209,199,0.7) 100%);
|
||||
-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
|
||||
}
|
||||
.topbar .tbt{font-size:15px;font-weight:700;color:var(--text);flex:1;text-align:center}
|
||||
.topbar .back-btn{
|
||||
width:32px;height:32px;border-radius:50%;border:none;background:rgba(255,255,255,0.6);
|
||||
font-size:16px;cursor:pointer;display:none;align-items:center;justify-content:center;
|
||||
flex-shrink:0;color:var(--text);
|
||||
}
|
||||
.topbar .back-btn.show{display:flex}
|
||||
.topbar img{height:22px;flex-shrink:0}
|
||||
|
||||
.page{display:none;padding:0 16px 85px;animation:fadeIn 0.25s}
|
||||
.page.active{display:block}
|
||||
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
|
||||
|
||||
.nav{
|
||||
position:fixed;bottom:0;left:50%;transform:translateX(-50%);
|
||||
width:100%;max-width:430px;background:#fff;display:flex;justify-content:space-around;
|
||||
padding:4px 0 calc(6px + env(safe-area-inset-bottom,0));
|
||||
border-top:1px solid #f0f0f0;z-index:100;box-shadow:0 -2px 8px rgba(0,0,0,0.03);
|
||||
}
|
||||
.nav-item{display:flex;flex-direction:column;align-items:center;gap:1px;font-size:9px;color:var(--sub);cursor:pointer;line-height:1;transition:color 0.15s}
|
||||
.nav-item .ni{font-size:17px}
|
||||
.nav-item.active{color:var(--pri)}
|
||||
|
||||
.card{background:#fff;border-radius:14px;padding:16px;margin-bottom:10px;box-shadow:0 2px 8px rgba(0,0,0,0.04)}
|
||||
.card-sm{padding:12px;border-radius:12px}
|
||||
.card-title{font-size:15px;font-weight:700;margin-bottom:4px}
|
||||
.card-sub{font-size:11px;color:var(--sub);line-height:1.5}
|
||||
|
||||
.hero-card{
|
||||
background:linear-gradient(135deg,var(--dark),#16213e,#0f3460);
|
||||
border-radius:18px;padding:24px 18px 20px;margin-bottom:12px;color:#fff;position:relative;overflow:hidden;
|
||||
}
|
||||
.hero-card .h-stars{position:absolute;inset:0;pointer-events:none}
|
||||
.hero-card .h-stars span{position:absolute;background:#fff;border-radius:50%;animation:twinkle 3s ease-in-out infinite}
|
||||
.hero-card .h-stars span:nth-child(1){width:3px;height:3px;top:12%;left:20%}
|
||||
.hero-card .h-stars span:nth-child(2){width:2px;height:2px;top:25%;right:22%}
|
||||
.hero-card .h-stars span:nth-child(3){width:3px;height:3px;top:50%;left:65%}
|
||||
.hero-card .h-stars span:nth-child(4){width:2px;height:2px;bottom:30%;left:15%}
|
||||
.hero-card .h-stars span:nth-child(5){width:3px;height:3px;bottom:20%;right:30%}
|
||||
@keyframes twinkle{0%,100%{opacity:0.2}50%{opacity:1}}
|
||||
.hero-card .hzodiac{margin-bottom:4px}
|
||||
.hero-card .hlabel{font-size:11px;opacity:0.6;margin-bottom:2px}
|
||||
/* Dunhuang zodiac badge */
|
||||
.zodiac-dh{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:#F5E6D3;border:2px solid;font-size:22px;font-weight:700;line-height:1;box-shadow:0 2px 8px rgba(0,0,0,0.1);flex-shrink:0}
|
||||
.hero-card .zodiac-dh{width:56px;height:56px;font-size:26px;border-width:2.5px;margin:0 auto}
|
||||
.result-hero .zodiac-dh{width:64px;height:64px;font-size:30px;border-width:3px;margin:0 auto}
|
||||
.zodiac-dh.fire{border-color:#C04030;color:#8B2020;background:#FDF2EC}
|
||||
.zodiac-dh.earth{border-color:#A0855B;color:#6B4F3A;background:#F8F2EA}
|
||||
.zodiac-dh.air{border-color:#5B8FA8;color:#3A6070;background:#F0F5F8}
|
||||
.zodiac-dh.water{border-color:#6B5B95;color:#4A3570;background:#F2F0F8}
|
||||
#pAvatar .zodiac-dh{width:56px;height:56px;font-size:26px;box-shadow:none}
|
||||
.hist-item .zodiac-dh{width:40px;height:40px;font-size:18px}
|
||||
.hero-card .hsign{font-size:24px;font-weight:800}
|
||||
.hero-card .hdate{font-size:11px;opacity:0.5;margin-top:2px}
|
||||
.hero-card .haction{display:inline-block;margin-top:12px;padding:8px 20px;background:rgba(255,255,255,0.15);color:#fff;border-radius:20px;font-size:13px;font-weight:600;cursor:pointer;transition:transform 0.15s}
|
||||
.hero-card .haction:active{transform:scale(0.95)}
|
||||
|
||||
.input-row{display:flex;gap:6px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
|
||||
.input-row input,.input-row select{padding:10px 8px;border:1.5px solid #e8e0d8;border-radius:10px;font-size:14px;outline:none;background:#fdfaf7;text-align:center;flex:1;min-width:0}
|
||||
.input-row input:focus,.input-row select:focus{border-color:var(--pri)}
|
||||
.input-row .lbl{font-size:12px;color:var(--sub);white-space:nowrap}
|
||||
|
||||
.btn{display:inline-block;padding:10px 20px;border:none;border-radius:22px;font-size:13px;font-weight:600;cursor:pointer;transition:transform 0.15s}
|
||||
.btn:active{transform:scale(0.96)}
|
||||
.btn-pri{background:var(--pri);color:#fff;box-shadow:0 3px 10px rgba(229,77,66,.2)}
|
||||
.btn-outline{background:#fff;color:var(--pri);border:1.5px solid var(--pri)}
|
||||
.btn-sm{padding:6px 14px;font-size:11px}
|
||||
.btn-block{display:block;width:100%;text-align:center}
|
||||
|
||||
.quiz-q{margin-bottom:14px}
|
||||
.quiz-q .q-num{font-size:10px;color:var(--sub);margin-bottom:2px}
|
||||
.quiz-q .q-text{font-size:15px;font-weight:600;margin-bottom:8px;line-height:1.4}
|
||||
.quiz-opt{display:block;width:100%;padding:12px 14px;margin-bottom:6px;background:#fafafa;border:1.5px solid #eee;border-radius:12px;font-size:13px;text-align:left;cursor:pointer;transition:all 0.15s;line-height:1.4}
|
||||
.quiz-opt:active,.quiz-opt.sel{background:#FFF5F0;border-color:var(--pri);color:var(--pri)}
|
||||
|
||||
.result-hero{background:linear-gradient(135deg,var(--dark),#16213e,#0f3460);border-radius:18px;padding:28px 20px;text-align:center;color:#fff;margin-bottom:12px}
|
||||
.result-hero .rzodiac{margin-bottom:6px}
|
||||
.result-hero .rsign{font-size:22px;font-weight:800;margin-bottom:2px}
|
||||
.result-hero .rmbti{font-size:13px;opacity:0.7;margin-bottom:8px}
|
||||
.result-tag{display:inline-block;padding:3px 10px;border-radius:20px;font-size:10px;margin:2px;background:rgba(255,255,255,0.12);color:rgba(255,255,255,0.85)}
|
||||
|
||||
.elem-bar{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:11px}
|
||||
.elem-bar .el{width:40px;text-align:right;color:var(--sub)}
|
||||
.elem-bar .eb{flex:1;height:8px;border-radius:4px;background:#eee;overflow:hidden}
|
||||
.elem-bar .ebf{height:100%;border-radius:4px;transition:width 0.6s}
|
||||
.elem-bar .ev{width:28px;text-align:right;font-weight:600;font-size:10px}
|
||||
|
||||
.dim-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:11px}
|
||||
.dim-row .dl{width:24px;text-align:right;color:var(--sub);font-weight:600}
|
||||
.dim-row .dbar{flex:1;height:18px;background:#f5f5f5;border-radius:9px;position:relative;overflow:hidden}
|
||||
.dim-row .dfill{height:100%;border-radius:9px;transition:width 0.8s;display:flex;align-items:center;padding-left:8px;color:#fff;font-size:9px;font-weight:600}
|
||||
.dim-row .dr{width:24px;font-weight:600;font-size:10px}
|
||||
|
||||
#chartCanvas{display:block;width:100%;border-radius:16px;background:var(--dark);cursor:grab}
|
||||
#chartCanvas:active{cursor:grabbing}
|
||||
.chart-info{text-align:center;padding:10px;font-size:12px;color:var(--sub);background:#fff;border-radius:12px;margin-top:8px;box-shadow:0 2px 6px rgba(0,0,0,0.03)}
|
||||
.chart-info .pn{font-weight:700;color:var(--pri);font-size:14px}
|
||||
|
||||
.horo-card{background:linear-gradient(135deg,#fff8f0,#fff5f0);border-radius:14px;padding:14px;margin-bottom:10px;border:1px solid rgba(229,77,66,0.08)}
|
||||
.horo-card .hday{font-size:11px;color:var(--sub)}
|
||||
.horo-card .hmsg{font-size:13px;font-weight:600;color:var(--text);margin:4px 0;line-height:1.5}
|
||||
.horo-card .hstars{color:#FFD700;font-size:12px}
|
||||
|
||||
.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
|
||||
.quick-item{background:#fff;border-radius:12px;padding:16px 12px;text-align:center;box-shadow:0 2px 6px rgba(0,0,0,0.03);cursor:pointer;transition:transform 0.15s}
|
||||
.quick-item:active{transform:scale(0.96)}
|
||||
.quick-item .qi{font-size:26px;margin-bottom:4px}
|
||||
.quick-item .qt{font-size:12px;font-weight:600;color:var(--text)}
|
||||
.quick-item .qd{font-size:10px;color:var(--sub);margin-top:2px}
|
||||
|
||||
.feed-tabs{display:flex;gap:8px;margin-bottom:10px;overflow-x:auto}
|
||||
.feed-tab{padding:6px 14px;border-radius:20px;font-size:11px;white-space:nowrap;background:#fff;color:var(--sub);cursor:pointer;transition:all 0.15s;border:1px solid #eee}
|
||||
.feed-tab.active{background:var(--pri);color:#fff;border-color:var(--pri)}
|
||||
.feed-item{background:#fff;border-radius:14px;margin-bottom:10px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,0.04)}
|
||||
.feed-item .f-thumb{position:relative;height:180px;display:flex;align-items:center;justify-content:center;cursor:pointer}
|
||||
.feed-item .f-thumb .play-btn{width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,0.2);display:flex;align-items:center;justify-content:center;font-size:16px;color:#fff}
|
||||
.feed-item .f-thumb .f-dur{position:absolute;bottom:8px;right:8px;background:rgba(0,0,0,0.6);color:#fff;font-size:10px;padding:2px 6px;border-radius:4px}
|
||||
.feed-item .f-avatar{position:absolute;bottom:8px;left:8px;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,0.3);display:flex;align-items:center;justify-content:center;font-size:14px}
|
||||
.feed-item .f-info{padding:12px}
|
||||
.feed-item .f-info .f-title{font-size:13px;font-weight:600;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
.feed-item .f-info .f-meta{font-size:10px;color:var(--sub);display:flex;gap:10px}
|
||||
.feed-item .f-tags{display:flex;gap:5px;padding:0 12px 8px;flex-wrap:wrap}
|
||||
.feed-tag{font-size:9px;padding:2px 7px;border-radius:10px;background:#FFF5F0;color:var(--pri)}
|
||||
|
||||
.video-overlay{position:fixed;inset:0;z-index:200;background:#000;display:none;flex-direction:column;justify-content:center;align-items:center}
|
||||
.video-overlay.on{display:flex}
|
||||
.video-overlay .v-canvas{display:block;width:100%;max-width:430px}
|
||||
.video-overlay .v-close{position:absolute;top:16px;right:16px;z-index:210;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,0.12);color:#fff;border:none;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center}
|
||||
.video-overlay .v-progress{position:absolute;bottom:40px;left:50%;transform:translateX(-50%);width:70%;max-width:280px;height:3px;background:rgba(255,255,255,0.15);border-radius:3px;z-index:210}
|
||||
.video-overlay .v-progress .v-bar{height:100%;background:var(--pri);border-radius:3px;transition:width 0.1s linear}
|
||||
.video-overlay .v-watermark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-20deg);color:rgba(255,255,255,0.06);font-size:32px;font-weight:800;pointer-events:none;z-index:205;white-space:nowrap}
|
||||
|
||||
.tier-card{background:#fff;border-radius:14px;padding:16px;margin-bottom:8px;box-shadow:0 2px 8px rgba(0,0,0,0.04);position:relative;overflow:hidden}
|
||||
.tier-card.pro{border:2px solid var(--gold)}
|
||||
.tier-card.pro::after{content:"推荐";position:absolute;top:0;right:0;background:var(--gold);color:#fff;font-size:10px;padding:3px 10px;border-radius:0 12px 0 12px;font-weight:600}
|
||||
.tier-card .t-name{font-size:15px;font-weight:700;margin-bottom:2px}
|
||||
.tier-card .t-price{font-size:20px;font-weight:800;color:var(--pri);margin-bottom:6px}
|
||||
.tier-card .t-price .unit{font-size:12px;font-weight:400}
|
||||
.tier-card .t-feat{font-size:11px;color:var(--sub);line-height:1.8}
|
||||
|
||||
.badge-row{display:flex;gap:8px;overflow-x:auto;padding:4px 0;margin-bottom:6px}
|
||||
.badge-item{flex-shrink:0;width:56px;text-align:center;font-size:9px;color:var(--sub)}
|
||||
.badge-item .bi{width:44px;height:44px;border-radius:50%;margin:0 auto 4px;display:flex;align-items:center;justify-content:center;font-size:20px}
|
||||
.badge-item .bi.locked{background:#f0f0f0;filter:grayscale(1);opacity:0.5}
|
||||
|
||||
.hist-item{display:flex;align-items:center;gap:10px;padding:12px;background:#fff;border-radius:12px;margin-bottom:8px;box-shadow:0 1px 4px rgba(0,0,0,0.03);cursor:pointer}
|
||||
.hist-item .hi{flex-shrink:0;display:flex;align-items:center}
|
||||
.hist-item .hc{flex:1;min-width:0}
|
||||
.hist-item .hc .hn{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
.hist-item .hc .hd{font-size:10px;color:var(--sub)}
|
||||
|
||||
.toast{position:fixed;top:60px;left:50%;transform:translateX(-50%);z-index:300;background:var(--dark);color:#fff;padding:10px 20px;border-radius:20px;font-size:13px;opacity:0;transition:opacity 0.3s;pointer-events:none}
|
||||
.toast.show{opacity:1}
|
||||
|
||||
/* Purchase modal - simple overlay kept for membership */
|
||||
.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:250;background:rgba(0,0,0,0.5);display:none;align-items:center;justify-content:center}
|
||||
.modal-overlay.on{display:flex}
|
||||
.modal-box{background:#fff;border-radius:16px;padding:24px;width:calc(100% - 48px);max-width:360px;text-align:center}
|
||||
.modal-box .m-icon{font-size:40px;margin-bottom:6px}
|
||||
.modal-box .m-title{font-size:17px;font-weight:700;margin-bottom:4px}
|
||||
.modal-box .m-desc{font-size:12px;color:var(--sub);margin-bottom:14px;line-height:1.6}
|
||||
|
||||
.sec-head{font-size:14px;font-weight:700;margin:14px 0 8px;display:flex;align-items:center;gap:6px}
|
||||
.sec-head .dot{width:6px;height:6px;border-radius:50%;background:var(--pri);flex-shrink:0}
|
||||
.scroll-x{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
|
||||
.scroll-x::-webkit-scrollbar{display:none}
|
||||
|
||||
/* Back button container */
|
||||
.back-row{display:flex;align-items:center;gap:6px;margin-bottom:10px}
|
||||
.back-row .bk{cursor:pointer;font-size:13px;color:var(--pri);font-weight:600;display:flex;align-items:center;gap:2px}
|
||||
|
||||
/* ═══ SCHULTE 3D CUBE ═══ */
|
||||
.cube-scene{perspective:900px;width:300px;height:300px;margin:20px auto;position:relative}
|
||||
.cube-scene.paused .cube{animation-play-state:paused}
|
||||
.cube{width:100%;height:100%;position:relative;transform-style:preserve-3d;transform:rotateX(-15deg) rotateY(25deg)}
|
||||
.cube-face{position:absolute;width:300px;height:300px;border-radius:10px;backface-visibility:hidden}
|
||||
.cube-front{transform:translateZ(150px);background:linear-gradient(135deg,#1a1a2e,#16213e)}
|
||||
.cube-back{transform:rotateY(180deg) translateZ(150px);background:linear-gradient(135deg,#16213e,#0f3460)}
|
||||
.cube-left{transform:rotateY(-90deg) translateZ(150px);background:linear-gradient(135deg,#0f3460,#1a1a2e)}
|
||||
.cube-right{transform:rotateY(90deg) translateZ(150px);background:linear-gradient(135deg,#1a1a2e,#2d1b69)}
|
||||
.cube-top{transform:rotateX(90deg) translateZ(150px);background:linear-gradient(135deg,#2d1b69,#16213e)}
|
||||
.cube-bottom{transform:rotateX(-90deg) translateZ(150px);background:linear-gradient(135deg,#16213e,#1a1a2e)}
|
||||
.cube-face .deco-face{font-size:32px;opacity:.2;text-align:center;line-height:1.3;pointer-events:none;position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
|
||||
.cube-grid{position:absolute;top:0;left:0;width:300px;height:300px;border-radius:10px;display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(5,1fr);gap:2px;padding:4px;z-index:10;background:rgba(26,26,46,.85);box-shadow:0 0 30px rgba(0,0,0,.4),inset 0 0 20px rgba(0,0,0,.2);perspective:400px}
|
||||
.cube-grid .cs{display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;border-radius:6px;cursor:pointer;transition:transform .15s,box-shadow .15s;user-select:none;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,.92);color:var(--text);box-shadow:0 4px 14px rgba(0,0,0,.15);animation:cellFloat 3s ease-in-out infinite;transform-style:preserve-3d}
|
||||
@keyframes cellFloat{0%,100%{transform:translateY(0) scale(1);box-shadow:0 4px 12px rgba(0,0,0,.18)}50%{transform:translateY(-12px) scale(1.06);box-shadow:0 18px 32px rgba(0,0,0,.42)}}
|
||||
.cube-grid .cs:active{transform:scale(.9)!important;animation:none}
|
||||
.cube-grid .cs.done{background:rgba(255,255,255,.12);color:transparent;box-shadow:none;pointer-events:none;opacity:0;animation:none}
|
||||
.cube-grid .cs.next{animation:cellFloat 3s ease-in-out infinite,csPulse .8s ease-in-out infinite}
|
||||
@keyframes csPulse{0%,100%{box-shadow:0 0 8px rgba(229,77,66,.3)}50%{box-shadow:0 0 24px rgba(229,77,66,.85)}}
|
||||
.schulte-info{text-align:center;padding:8px 0;color:var(--sub);font-size:12px}
|
||||
.schulte-timer{font-size:28px;font-weight:800;color:var(--pri);text-align:center;margin:8px 0}
|
||||
.schulte-best{font-size:11px;color:var(--sub);text-align:center}
|
||||
.schulte-cta{display:block;margin:10px auto;width:160px}
|
||||
.schulte-result{text-align:center;padding:20px 0}
|
||||
.schulte-result .sr-time{font-size:36px;font-weight:800;color:var(--pri)}
|
||||
.schulte-result .sr-rank{font-size:13px;color:var(--sub);margin-top:4px}
|
||||
|
||||
/* Synastry tabs */
|
||||
.syn-tab{flex:1;padding:8px 4px;border:none;border-radius:20px;background:#f0f0f0;font-size:11px;font-weight:600;cursor:pointer;transition:all .2s;color:var(--sub)}
|
||||
.syn-tab.active{background:var(--pri);color:#fff;box-shadow:0 2px 8px rgba(229,77,66,.2)}
|
||||
Reference in New Issue
Block a user