.onboard-page{ padding:0 var(--pad-x) 56rpx; min-height:100%; background: radial-gradient(circle at top right, rgba(245,169,71,.22), transparent 45%), var(--bg); } .step{animation:fade .24s ease} .skip-link{text-align:center;margin-top:var(--sp-4);color:var(--muted);font-size:var(--fs-md);padding:var(--sp-2)} @keyframes fade{from{opacity:0;transform:translateY(16rpx)}to{opacity:1;transform:none}} /* 冷启动闪屏 */ .boot{ position:fixed;inset:0;z-index:200; display:flex;flex-direction:column;align-items:center;justify-content:center; background: radial-gradient(circle at 50% 32%, rgba(253,179,92,.28), transparent 55%), var(--bg); transition:opacity .34s ease, transform .34s ease; } /* 收尾渐隐:整屏淡出 + 轻微放大,像走进 App,而不是硬切 */ .boot--out{opacity:0;transform:scale(1.06);pointer-events:none} /* 爪印小径:一串爪印从下往上、左右交替地一步步「踩」出来,走向 logo。 一次性踩完并留在屏上(不闪烁循环),走完 logo 再淡入 */ .paw-trail{position:relative;width:340rpx;height:560rpx;margin:0 auto} .paw-trail .pw{position:absolute;animation:paw-stamp .56s cubic-bezier(.2,.85,.3,1) both} .paw-trail .paw{width:100rpx;height:92rpx} .paw-trail .foot-l{transform:rotate(-13deg) scale(.68)} .paw-trail .foot-r{transform:rotate(13deg) scale(-.68,.68)} /* 负 X 缩放 = 镜像成另一只脚 */ /* 之字形落点(bottom 越大越靠上)+ 逐个延迟 .26s,节奏放慢一点,像一步一步走 */ .paw-trail .pw-0{left:96rpx;bottom:0;animation-delay:0s} .paw-trail .pw-1{left:196rpx;bottom:104rpx;animation-delay:.26s} .paw-trail .pw-2{left:96rpx;bottom:208rpx;animation-delay:.52s} .paw-trail .pw-3{left:196rpx;bottom:312rpx;animation-delay:.78s} .paw-trail .pw-4{left:96rpx;bottom:416rpx;animation-delay:1.04s} .paw-trail .pw-5{left:196rpx;bottom:520rpx;animation-delay:1.3s} /* logo 和文案等爪印快走到了再淡入,形成「走过来 → 到家」的收束感 */ .boot-name{ margin-top:var(--sp-4);font-size:var(--fs-2xl);font-weight:var(--fw-b);letter-spacing:-1rpx; animation:fade .5s ease both;animation-delay:1.5s; } .boot-tip{ margin-top:var(--sp-2);color:var(--muted);font-size:var(--fs-md); animation:fade .5s ease both;animation-delay:1.66s; } /* 每个爪印:从上方一点、缩着落下 → 踩实(轻微过冲、squash)→ 稳住并留在屏上 */ @keyframes paw-stamp{ 0%{opacity:0;transform:translateY(-20rpx) scale(.5)} 55%{opacity:1;transform:translateY(3rpx) scale(1.18)} 74%{transform:translateY(0) scale(.95)} 100%{opacity:1;transform:translateY(0) scale(1)} } .hero{text-align:center;padding:60rpx 0 var(--sp-5)} .pet-logo{ width:176rpx;height:176rpx;margin:0 auto var(--sp-5);border-radius:var(--r-lg); background:linear-gradient(135deg,#FFB865,#F5943E); display:flex;align-items:center;justify-content:center; box-shadow:var(--sd-2); } /* 肉垫(呼应「肉垫计划」)——奶白掌垫 + 四趾垫,闪屏和欢迎屏共用 */ .paw{position:relative;width:100rpx;height:92rpx} .paw .pad{ position:absolute;left:50%;bottom:0;transform:translateX(-50%); width:66rpx;height:54rpx;background:#FFF7EC; border-radius:48% 48% 44% 44%/62% 62% 40% 40%; } .paw .bean{position:absolute;background:#FFF7EC;border-radius:50%} .paw .bean-1{width:22rpx;height:30rpx;left:0;top:30rpx;transform:rotate(-20deg)} .paw .bean-2{width:24rpx;height:33rpx;left:27rpx;top:6rpx;transform:rotate(-7deg)} .paw .bean-3{width:24rpx;height:33rpx;right:27rpx;top:6rpx;transform:rotate(7deg)} .paw .bean-4{width:22rpx;height:30rpx;right:0;top:30rpx;transform:rotate(20deg)} .hero-h1{font-size:var(--fs-2xl);letter-spacing:-1.2rpx;font-weight:var(--fw-b)} .hero-sub{margin-top:var(--sp-3);line-height:1.65;color:var(--muted);font-size:var(--fs-md)} .proof-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3);margin:var(--sp-6) 0} .proof{background:#fff;border-radius:var(--r-md);padding:var(--sp-4) var(--sp-3);text-align:center;box-shadow:var(--sd-1)} .proof-b{display:block;font-size:var(--fs-lg);font-weight:var(--fw-b)} .proof-s{color:var(--muted);font-size:var(--fs-cap)} .step-title{font-size:var(--fs-2xl);letter-spacing:-.8rpx;line-height:1.24;margin:var(--sp-3) 0;font-weight:var(--fw-b)} .step-sub{color:var(--muted);line-height:1.6;font-size:var(--fs-md);margin-bottom:var(--sp-5)} .choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);margin-bottom:var(--sp-5)} .choice-card{ background:#fff;border:4rpx solid transparent;border-radius:var(--r-lg);min-height:248rpx; padding:var(--sp-5) var(--sp-4);box-shadow:var(--sd-1);transition:.18s ease; display:flex;flex-direction:column;align-items:flex-start; } .choice-card.selected{border-color:var(--primary);background:var(--primary-soft)} .choice-card .animal{ width:96rpx;height:96rpx;border-radius:var(--r-md);margin-bottom:var(--sp-3); display:flex;align-items:center;justify-content:center; background:var(--primary-soft);color:var(--primary-ink); } .choice-card.selected .animal{background:#fff} .choice-b{font-size:var(--fs-lg);font-weight:var(--fw-b)} .choice-s{display:block;color:var(--muted);font-size:var(--fs-sm);margin-top:var(--sp-2)} .form-card{background:#fff;border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sd-1);margin-bottom:var(--sp-5)} .stage-list{display:flex;flex-direction:column;gap:var(--sp-3);margin-bottom:var(--sp-5)} .stage-card{background:#fff;border-radius:var(--r-md);border:4rpx solid transparent;padding:var(--sp-4);box-shadow:var(--sd-1)} .stage-card.selected{border-color:var(--green);background:var(--green-soft)} .stage-b{font-size:var(--fs-lg);font-weight:var(--fw-b)} .stage-p{color:var(--muted);font-size:var(--fs-sm);margin-top:var(--sp-1)} .gen-card{margin-top:var(--sp-5);background:#fff;border-radius:var(--r-lg);padding:var(--sp-6);box-shadow:var(--sd-2)} .gen-line{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;color:var(--text-2);font-size:var(--fs-md)} .tick{ width:44rpx;height:44rpx;border-radius:50%;background:var(--green);color:#fff; display:flex;align-items:center;justify-content:center;flex:none; } .field-tip{margin-top:var(--sp-2);color:var(--muted);font-size:var(--fs-cap);line-height:1.5} .stage-auto{ display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3); padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md); background:var(--green-soft);color:var(--green-ink);font-size:var(--fs-sm); } .stage-hint{ margin-left:var(--sp-2);padding:2rpx var(--sp-2);border-radius:var(--r-full); background:var(--primary-soft);color:var(--primary-ink);font-size:var(--fs-cap);font-weight:var(--fw); }