.rec-page { height: 100vh; display: flex; flex-direction: column; } .scroll-body { flex: 1; height: 0; } /* 生成中 */ .generating { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 0 64rpx; } .gen-ani { position: relative; width: 160rpx; height: 160rpx; display: flex; align-items: center; justify-content: center; } .gen-icon { width: 72rpx; height: 72rpx; color: #007AFF; } .gen-ring { position: absolute; width: 160rpx; height: 160rpx; border-radius: 50%; border: 4rpx solid #E5E5EA; border-top-color: #007AFF; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .gen-title { margin-top: 48rpx; font-size: 32rpx; font-weight: 600; color: #000; } .gen-desc { font-size: 24rpx; color: #8E8E93; margin-top: 12rpx; } /* 结果封面 */ .result-cover { margin: 24rpx; height: 420rpx; position: relative; overflow: hidden; } .rc-item { position: absolute; width: 180rpx; height: 240rpx; background: #F8F8FA; border-radius: 20rpx; border: 1rpx solid #E5E5EA; display: flex; align-items: center; justify-content: center; overflow: hidden; } .rc-0 { left: 30rpx; top: 70rpx; transform: rotate(-5deg); } .rc-1 { left: 130rpx; top: 130rpx; transform: rotate(3deg); } .rc-2 { left: 240rpx; top: 60rpx; transform: rotate(6deg); } .rc-3 { left: 350rpx; top: 140rpx; transform: rotate(-3deg); } .rc-4 { left: 460rpx; top: 80rpx; transform: rotate(8deg); } .rc-img { width: 100%; height: 100%; } .rc-placeholder { width: 64rpx; height: 64rpx; color: #C7C7CC; } /* 结果信息 */ .result-info { margin: 0 24rpx 24rpx; } .ri-title { font-size: 36rpx; font-weight: 700; color: #000; } .ri-desc { font-size: 28rpx; color: #3C3C43; margin-top: 16rpx; line-height: 1.6; } .tag-row { display: flex; gap: 12rpx; margin-top: 20rpx; } .items-title { font-size: 28rpx; font-weight: 600; color: #000; margin-top: 32rpx; } .items-scroll { margin-top: 20rpx; white-space: nowrap; } .items-row { display: inline-flex; } .item-chip { display: flex; flex-direction: column; align-items: center; width: 140rpx; margin-right: 20rpx; } .item-img { width: 120rpx; height: 120rpx; border-radius: 20rpx; background: #F2F2F7; } .item-img-empty { display: flex; align-items: center; justify-content: center; color: #C7C7CC; } .item-img-empty .icon { width: 56rpx; height: 56rpx; } .item-name { font-size: 20rpx; color: #8E8E93; margin-top: 8rpx; max-width: 140rpx; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .footer { padding: 16rpx 24rpx; padding-bottom: calc(40rpx + env(safe-area-inset-bottom)); } .reroll { margin-top: 20rpx; } .reroll-tip { text-align: center; font-size: 22rpx; color: #8E8E93; margin-top: 16rpx; } /* 场景弹窗 */ .mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.4); z-index: 200; } .sheet { position: absolute; left: 0; right: 0; bottom: 0; background: #fff; border-radius: 32rpx 32rpx 0 0; padding: 20rpx 32rpx; padding-bottom: calc(32rpx + env(safe-area-inset-bottom)); } .sheet-grabber { width: 72rpx; height: 10rpx; border-radius: 5rpx; background: #E5E5EA; margin: 0 auto 24rpx; } .sheet-title { font-size: 34rpx; font-weight: 600; color: #000; text-align: center; margin-bottom: 24rpx; } .scene-card { position: relative; border: 2rpx solid #E5E5EA; border-radius: 24rpx; padding: 28rpx; margin-bottom: 20rpx; } .scene-card.active { border-color: #007AFF; background: rgba(0, 122, 255, 0.04); } .scene-name { font-size: 30rpx; font-weight: 600; color: #000; } .scene-desc { font-size: 24rpx; color: #8E8E93; margin-top: 8rpx; } .scene-check { position: absolute; top: 28rpx; right: 28rpx; width: 36rpx; height: 36rpx; color: #007AFF; } .scene-input { margin-bottom: 20rpx; } .sheet-btn { width: 100%; } .sheet-skip { text-align: center; font-size: 26rpx; color: #8E8E93; margin-top: 20rpx; padding: 12rpx; }