page { min-height: 100vh; background: #f8faff; color: #111827; font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif; } .gen-page { width: 750rpx; min-height: 100vh; margin: 0 auto; display: flex; flex-direction: column; box-sizing: border-box; background: radial-gradient(circle at 12% 0%, rgba(104, 126, 255, 0.08), transparent 34%), radial-gradient(circle at 88% 8%, rgba(130, 86, 255, 0.08), transparent 30%), linear-gradient(180deg, #fbfcff 0%, #f6f8ff 46%, #ffffff 100%); } .gen-nav { width: 100%; height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 16rpx; } .nav-back { width: 60rpx; height: 60rpx; display: flex; align-items: center; flex: 0 0 60rpx; } .nav-back text { width: 26rpx; height: 26rpx; display: block; border-left: 5rpx solid #111827; border-bottom: 5rpx solid #111827; transform: rotate(45deg); box-sizing: border-box; } .nav-title { flex: 1; min-width: 0; color: #111827; font-size: 34rpx; line-height: 42rpx; font-weight: 900; text-align: center; } .coin-pill { height: 50rpx; padding: 0 16rpx; display: flex; align-items: center; justify-content: center; gap: 8rpx; /* border: 2rpx solid #eef0fb; */ border-radius: 28rpx; /* background: rgba(255, 255, 255, 0.88); */ /* box-shadow: 0 8rpx 18rpx rgba(93, 102, 158, 0.12); */ color: #111827; font-size: 22rpx; line-height: 28rpx; font-weight: 800; flex: 0 0 auto; } .coin-icon { width: 30rpx; height: 30rpx; display: flex; align-items: center; justify-content: center; border-radius: 50%; color: #ffffff; background: linear-gradient(135deg, #ffd45d 0%, #ffa51f 100%); font-size: 17rpx; font-weight: 900; } .coin-count { color: #6657ff; } .gen-content { flex: 1; display: flex; flex-direction: column; gap: 18rpx; padding: 30rpx; box-sizing: border-box; justify-content: space-between; } .confirm-card, .cost-card { width: 100%; display: flex; flex-direction: column; border: 2rpx solid #e6e9ff; border-radius: 16rpx; background: rgba(255, 255, 255, 0.96); box-shadow: 0 14rpx 34rpx rgba(80, 92, 170, 0.08); box-sizing: border-box; } .confirm-card { padding: 22rpx 28rpx 10rpx; } .card-title { color: #111827; font-size: 27rpx; line-height: 34rpx; font-weight: 900; padding-bottom: 18rpx; border-bottom: 2rpx solid #edf0f8; } .info-list { display: flex; flex-direction: column; } .info-row { min-height: 62rpx; display: flex; align-items: center; justify-content: space-between; gap: 20rpx; border-bottom: 2rpx solid #edf0f8; } .info-row:last-child { border-bottom: 0; } .avatar-row { min-height: 72rpx; } .info-label { flex: 0 0 160rpx; color: #303748; font-size: 24rpx; line-height: 32rpx; font-weight: 900; } .info-value, .voice-value, .script-summary { flex: 1; min-width: 0; display: flex; align-items: center; justify-content: flex-end; color: #41495b; font-size: 24rpx; line-height: 32rpx; font-weight: 700; text-align: right; } .small-avatar { width: 58rpx; height: 58rpx; border-radius: 10rpx; background: radial-gradient(circle at 50% 33%, #ffe1d2 0 17rpx, transparent 18rpx), radial-gradient(circle at 50% 34%, #33201b 0 24rpx, transparent 25rpx), linear-gradient(180deg, #eef4ff 0%, #ffffff 100%); flex: 0 0 58rpx; } .voice-value { gap: 10rpx; } .voice-icon { width: 28rpx; height: 28rpx; display: flex; align-items: center; justify-content: center; color: #6d58ff; flex: 0 0 28rpx; } .voice-icon::before, .voice-icon::after, .voice-icon text { content: ''; width: 5rpx; border-radius: 5rpx; background: #6d58ff; } .voice-icon::before { height: 18rpx; } .voice-icon text { height: 28rpx; margin: 0 4rpx; display: block; } .voice-icon::after { height: 20rpx; } .script-row { align-items: flex-start; padding: 16rpx 0; } .script-summary { flex-direction: column; align-items: flex-end; gap: 10rpx; line-height: 34rpx; } .view-script { display: flex; align-items: center; gap: 10rpx; color: #7062ff; font-size: 23rpx; font-weight: 800; } .right-arrow { width: 14rpx; height: 14rpx; border-right: 4rpx solid #7062ff; border-top: 4rpx solid #7062ff; transform: rotate(45deg); box-sizing: border-box; } .cost-card { padding: 12rpx 24rpx 22rpx; background: linear-gradient(100deg, rgba(255, 255, 255, 0.98) 0%, rgba(239, 255, 248, 0.92) 100%); margin-bottom: calc(10rpx + env(safe-area-inset-bottom)); } .cost-row { min-height: 52rpx; display: flex; align-items: center; justify-content: space-between; border-bottom: 2rpx solid rgba(224, 229, 242, 0.75); color: #303748; font-size: 24rpx; line-height: 32rpx; font-weight: 900; } .amount, .balance-line, .enough { display: flex; align-items: center; } .amount { gap: 10rpx; color: #111827; } .amount text:first-child { font-size: 32rpx; line-height: 38rpx; font-weight: 900; } .amount text:last-child { font-size: 23rpx; font-weight: 800; } .balance-line { gap: 22rpx; } .enough { gap: 8rpx; color: #40bf83; font-size: 21rpx; line-height: 28rpx; font-weight: 900; } .enough-waring { gap: 8rpx; color: red; font-size: 21rpx; line-height: 28rpx; font-weight: 900; } .enough text:first-child { width: 26rpx; height: 26rpx; border-radius: 50%; background: #42c982; } .enough text:first-child::after { content: ''; width: 11rpx; height: 7rpx; margin: 7rpx auto 0; display: block; border-left: 3rpx solid #ffffff; border-bottom: 3rpx solid #ffffff; transform: rotate(-45deg); box-sizing: border-box; } .generate-action { height: 66rpx; margin-top: 14rpx; display: flex; align-items: center; justify-content: center; gap: 12rpx; border-radius: 12rpx; color: #ffffff; background: linear-gradient(100deg, #4e84ff 0%, #7d3ff3 100%); box-shadow: 0 12rpx 24rpx rgba(91, 86, 245, 0.22); font-size: 27rpx; line-height: 34rpx; font-weight: 900; } .sparkle { width: 28rpx; height: 28rpx; background: linear-gradient(90deg, transparent 42%, #ffffff 43% 57%, transparent 58%), linear-gradient(0deg, transparent 42%, #ffffff 43% 57%, transparent 58%); transform: rotate(45deg); } .result-title { margin-top: 14rpx; display: flex; align-items: center; gap: 10rpx; color: #3f4dff; font-size: 25rpx; line-height: 32rpx; font-weight: 900; } .result-icon { width: 25rpx; height: 25rpx; border: 4rpx solid #625aff; border-radius: 8rpx; box-sizing: border-box; } .video-preview { width: 100%; height: 274rpx; border-radius: 14rpx; overflow: hidden; box-shadow: 0 12rpx 30rpx rgba(83, 92, 151, 0.13); } .preview-bg { width: 100%; height: 100%; display: flex; align-items: flex-end; justify-content: center; background: linear-gradient(90deg, rgba(255,255,255,0.36) 0 3rpx, transparent 3rpx 64rpx), linear-gradient(180deg, #fff4e3 0%, #f1dcc3 58%, #d9b98f 100%); } .preview-plant { width: 86rpx; height: 126rpx; margin-bottom: 18rpx; border-radius: 50rpx 50rpx 12rpx 12rpx; background: radial-gradient(circle at 30% 24%, #79ad65 0 22rpx, transparent 23rpx), radial-gradient(circle at 66% 32%, #6aa05f 0 24rpx, transparent 25rpx), radial-gradient(circle at 50% 50%, #7eb86a 0 25rpx, transparent 26rpx), linear-gradient(180deg, transparent 0 82rpx, #a9794d 83rpx 100%); } .plant-left { margin-right: 76rpx; } .plant-right { margin-left: 76rpx; } .preview-avatar { width: 176rpx; height: 236rpx; margin-bottom: 0; display: flex; flex-direction: column; align-items: center; } .avatar-head { width: 116rpx; height: 130rpx; display: flex; align-items: flex-end; justify-content: center; border-radius: 60rpx 60rpx 42rpx 42rpx; background: linear-gradient(160deg, #241a18 0%, #604038 60%, #8a6258 100%); } .avatar-face { width: 78rpx; height: 92rpx; margin-bottom: 10rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12rpx; border-radius: 42rpx 42rpx 34rpx 34rpx; background: linear-gradient(180deg, #ffe6d9 0%, #ffd0c2 100%); } .avatar-eyes { width: 48rpx; display: flex; justify-content: space-between; } .avatar-eyes text { width: 8rpx; height: 8rpx; border-radius: 50%; background: #241a18; } .avatar-mouth { width: 26rpx; height: 8rpx; border-radius: 0 0 16rpx 16rpx; background: #ca6975; } .avatar-body { width: 160rpx; height: 106rpx; border-radius: 46rpx 46rpx 0 0; background: linear-gradient(120deg, #ffffff 0%, #f5f4f1 48%, #ffffff 100%); } .play-btn { width: 74rpx; height: 74rpx; margin-left: -126rpx; margin-bottom: 54rpx; display: flex; align-items: center; justify-content: center; border: 4rpx solid rgba(255, 255, 255, 0.82); border-radius: 50%; background: rgba(49, 43, 38, 0.48); box-sizing: border-box; } .play-btn text { width: 0; height: 0; margin-left: 6rpx; border-top: 16rpx solid transparent; border-bottom: 16rpx solid transparent; border-left: 24rpx solid #ffffff; } .bottom-actions { display: flex; gap: 18rpx; } .action-primary, .action-outline { height: 82rpx; display: flex; align-items: center; justify-content: center; gap: 12rpx; border-radius: 14rpx; font-size: 24rpx; line-height: 31rpx; font-weight: 900; box-sizing: border-box; flex: 1; } .action-primary { color: #ffffff; background: linear-gradient(100deg, #5a80ff 0%, #764df3 100%); box-shadow: 0 12rpx 24rpx rgba(91, 86, 245, 0.18); } .action-outline { color: #625aff; border: 2rpx solid #dce0f5; background: #ffffff; } .download-icon { width: 24rpx; height: 24rpx; border-left: 4rpx solid #ffffff; border-bottom: 4rpx solid #ffffff; transform: rotate(-45deg); box-sizing: border-box; } .refresh-icon { width: 24rpx; height: 24rpx; border: 4rpx solid #625aff; border-right-color: transparent; border-radius: 50%; box-sizing: border-box; } .home-icon { width: 25rpx; height: 22rpx; border: 4rpx solid #625aff; border-top: 0; border-radius: 4rpx; box-sizing: border-box; transform: translateY(4rpx); } .home-icon::before { content: ''; width: 18rpx; height: 18rpx; display: block; border-left: 4rpx solid #625aff; border-top: 4rpx solid #625aff; transform: rotate(45deg) translate(-4rpx, -13rpx); box-sizing: border-box; } .save-tip { display: flex; align-items: center; justify-content: center; gap: 10rpx; color: #8d94a5; font-size: 23rpx; line-height: 30rpx; font-weight: 600; margin-bottom: calc(10rpx + env(safe-area-inset-bottom)); } .tip-icon { width: 24rpx; height: 24rpx; display: flex; align-items: center; justify-content: center; border: 3rpx solid #9aa1b2; border-radius: 50%; font-size: 16rpx; line-height: 18rpx; font-weight: 900; box-sizing: border-box; } .icon-placeholder { display: block; flex-shrink: 0; background: none; border: 0; box-shadow: none; transform: none; }