/* ============================================================ WordCloud Page — AI 词云生成 ============================================================ */ .wordcloud-page { min-height: 100vh; padding: 0 32rpx calc(24rpx + env(safe-area-inset-bottom)); box-sizing: border-box; } /* 顶部导航 */ .page-header.cloud-header { display: flex; align-items: center; gap: 16rpx; min-height: 88rpx; padding-left: 0; padding-right: 0; padding-bottom: 24rpx; margin: 0; background: transparent; } .cloud-header .back-btn { display: flex; align-items: center; justify-content: center; width: 88rpx; height: 88rpx; flex: 0 0 auto; border-radius: 50%; background: var(--bg-card); border: 1rpx solid var(--border-strong); box-shadow: var(--shadow-card); box-sizing: border-box; } .cloud-header .back-btn:active { transform: scale(0.96); } .cloud-header .back-arrow { font-size: 36rpx; line-height: 1; color: var(--text-primary); } .cloud-header .page-title { flex: 1; min-width: 0; text-align: center; font-size: 34rpx; font-weight: 600; color: var(--text-primary); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; letter-spacing: 0; } .header-spacer { width: 88rpx; flex: 0 0 auto; } /* 步骤指示器 */ .step-indicator { display: flex; align-items: stretch; justify-content: center; padding: 32rpx 16rpx; margin-bottom: 24rpx; } .step-item { position: relative; flex: 1; display: flex; flex-direction: column; align-items: center; min-width: 0; } .step-circle { display: flex; align-items: center; justify-content: center; width: 64rpx; height: 64rpx; border-radius: 50%; background: var(--bg-muted); border: 1rpx solid var(--border); box-sizing: border-box; margin-bottom: 12rpx; transition: background 160ms ease, border-color 160ms ease, box-shadow 160ms ease; } .step-circle.active { background: var(--accent-primary); border-color: var(--accent-primary); box-shadow: 0 0 0 8rpx var(--accent-primary-soft); } .step-num { font-size: 28rpx; font-weight: 700; line-height: 1; color: var(--text-muted); } .step-circle.active .step-num { color: var(--bg-page); } .step-label { max-width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 24rpx; color: var(--text-secondary); text-align: center; } .step-label.active { color: var(--accent-primary); font-weight: 600; } .step-line { position: absolute; top: 31rpx; left: 60%; width: 100%; height: 4rpx; background: var(--bg-input); border-radius: 999rpx; } .step-line.active { background: var(--accent-primary); } /* 步骤内容 */ .step-content { padding: 0 0 32rpx; } /* 上传底图 */ .upload-area { min-height: 420rpx; display: flex; align-items: center; justify-content: center; overflow: hidden; } .upload-placeholder { display: flex; flex-direction: column; align-items: center; padding: 64rpx 48rpx; text-align: center; } .upload-icon { width: 80rpx; height: 80rpx; margin-bottom: 24rpx; } .upload-title { font-size: 32rpx; font-weight: 600; color: var(--text-primary); margin-bottom: 12rpx; letter-spacing: 0; } .upload-desc { font-size: 26rpx; color: var(--text-secondary); margin-bottom: 24rpx; } .upload-tip { font-size: 22rpx; line-height: 1.5; color: var(--accent-secondary); background: var(--accent-secondary-soft); padding: 12rpx 24rpx; border-radius: 999rpx; } .preview-image { width: 100%; height: 420rpx; border-radius: 24rpx; } /* 按钮组 */ .action-btns { display: flex; flex-direction: column; gap: 20rpx; margin-top: 32rpx; } .action-btns .btn-primary, .action-btns .btn-secondary { display: flex; align-items: center; justify-content: center; height: 96rpx; font-size: 30rpx; font-weight: 600; box-sizing: border-box; } /* 输入名单 */ .input-section { padding: 32rpx; } .input-section .section-title { display: block; font-size: 32rpx; font-weight: 700; color: var(--text-primary); margin-bottom: 0; letter-spacing: 0; } .names-input { width: 100%; min-height: 320rpx; background: var(--bg-input); border: 1rpx solid var(--border); border-radius: 16rpx; padding: 24rpx; margin-top: 24rpx; box-sizing: border-box; font-size: 28rpx; line-height: 1.6; color: var(--text-primary); transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease; } .names-input:focus { border-color: var(--accent-primary); background: var(--bg-card); box-shadow: 0 0 0 6rpx var(--accent-primary-soft); } .names-input::placeholder { color: var(--text-muted); } .input-stats { display: block; text-align: right; font-size: 24rpx; color: var(--text-secondary); margin-top: 12rpx; } .input-tips { margin-top: 24rpx; padding: 24rpx; border-radius: 16rpx; background: var(--bg-muted); } .tip-item { display: block; font-size: 24rpx; line-height: 1.6; color: var(--text-secondary); margin-bottom: 8rpx; } .tip-item:last-child { margin-bottom: 0; } /* 生成中 */ .generating-panel { display: flex; flex-direction: column; align-items: center; padding: 96rpx 48rpx; background: var(--bg-card); border: 1rpx solid var(--border); border-radius: 24rpx; box-shadow: var(--shadow-card); } .generating-icon { width: 104rpx; height: 104rpx; animation: pulse 2s infinite; } @keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.12); opacity: 0.72; } } .generating-title { font-size: 36rpx; font-weight: 700; color: var(--text-primary); margin-top: 32rpx; letter-spacing: 0; } .generating-subtitle { font-size: 26rpx; color: var(--text-secondary); margin-top: 12rpx; margin-bottom: 40rpx; } .progress-bar { width: 100%; height: 12rpx; background: var(--bg-muted); border-radius: 999rpx; overflow: hidden; } .progress-fill { height: 100%; background: var(--accent-primary); border-radius: 999rpx; transition: width 0.5s ease; } .progress-text { font-size: 30rpx; font-weight: 700; color: var(--accent-primary); margin-top: 16rpx; font-variant: tabular-nums; } /* 结果预览 */ .result-panel { padding: 0; } .result-image-wrapper { position: relative; overflow: hidden; border-radius: 24rpx; } .result-image { width: 100%; height: 520rpx; background: var(--bg-muted); } .watermark-badge { position: absolute; right: 24rpx; bottom: 24rpx; padding: 10rpx 20rpx; border-radius: 999rpx; background: var(--glass); border: 1rpx solid var(--glass-line); font-size: 22rpx; color: var(--text-primary); backdrop-filter: blur(24rpx); -webkit-backdrop-filter: blur(24rpx); } .result-actions { display: flex; gap: 16rpx; margin: 24rpx 0 0; } .action-btn { flex: 1; min-width: 0; padding: 24rpx 8rpx; border-radius: 24rpx; background: var(--bg-card); border: 1rpx solid var(--border); box-shadow: var(--shadow-card); display: flex; flex-direction: column; align-items: center; gap: 10rpx; box-sizing: border-box; } .action-btn:active { transform: scale(0.98); } .action-icon { width: 44rpx; height: 44rpx; } .action-label { max-width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 22rpx; color: var(--text-secondary); } /* 跳转DIY卡片(保留旧样式,便于后续扩展) */ .diy-jump-card { display: flex; align-items: center; justify-content: space-between; margin-bottom: 32rpx; } .diy-jump-title { font-size: 32rpx; font-weight: 700; color: var(--text-primary); display: block; margin-bottom: 8rpx; } .diy-jump-desc { font-size: 24rpx; color: var(--text-secondary); display: block; } .diy-jump-arrow { font-size: 40rpx; color: var(--accent-primary); }