/* ========================================== 积分记录页面 - 浅色高级感设计 ========================================== */ .page-container { min-height: 100vh; background: var(--bg-page); position: relative; } /* 顶部装饰背景 */ .hero-bg { position: absolute; top: 0; left: 0; right: 0; height: 280rpx; background: transparent; pointer-events: none; } .hero-pattern { display: none; } /* 页面标题 */ .page-header { position: relative; z-index: 1; text-align: center; padding: 48rpx 24rpx 32rpx; animation: fadeInUp 0.5s cubic-bezier(0.4, 0, 0.2, 1); border-bottom: 1rpx solid rgba(0, 0, 0, 0.04); } .page-title { display: block; font-size: 52rpx; font-weight: 700; color: #1a1a1a; margin-bottom: 8rpx; letter-spacing: 1rpx; } .page-subtitle { display: block; font-size: 26rpx; color: #999; font-weight: 400; letter-spacing: 0.5rpx; } /* 积分概览卡片 */ .points-overview { position: relative; z-index: 1; margin: 0 24rpx 24rpx; padding: 28rpx; background: var(--bg-white); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); overflow: hidden; animation: fadeInScale 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s backwards; } .overview-accent { position: absolute; top: 0; left: 0; right: 0; height: 4rpx; background: var(--primary-gradient); } .overview-content { display: flex; align-items: center; justify-content: space-around; } .overview-item { text-align: center; } .overview-value { display: block; font-size: 44rpx; font-weight: 700; color: var(--text-primary); margin-bottom: 6rpx; } .overview-value.income { color: var(--accent); } .overview-value.expense { color: var(--primary); } .overview-label { font-size: 24rpx; color: var(--text-muted); } .overview-divider { width: 1rpx; height: 64rpx; background: var(--border-light); } /* 筛选标签 */ .filter-bar { position: relative; z-index: 1; display: flex; gap: 16rpx; padding: 0 24rpx 24rpx; animation: fadeInUp 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.15s backwards; } .filter-item { flex: 1; padding: 18rpx; background: var(--bg-white); border-radius: var(--radius-full); text-align: center; font-size: 26rpx; color: var(--text-secondary); box-shadow: var(--shadow-sm); transition: all 0.3s ease; } .filter-item.active { background: var(--primary-gradient); color: var(--text-white); box-shadow: var(--shadow-primary); } .filter-item:active { transform: scale(0.96); } /* 记录列表 */ .records-section { position: relative; z-index: 1; padding: 0 24rpx; } .records-list { } .record-item { display: flex; align-items: center; padding: 24rpx; background: var(--bg-white); border-radius: var(--radius-lg); margin-bottom: 12rpx; box-shadow: var(--shadow-sm); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); animation: fadeInUp 0.5s cubic-bezier(0.4, 0, 0.2, 1) backwards; } .record-item:nth-child(1) { animation-delay: 0.2s; } .record-item:nth-child(2) { animation-delay: 0.25s; } .record-item:nth-child(3) { animation-delay: 0.3s; } .record-item:nth-child(4) { animation-delay: 0.35s; } .record-item:nth-child(5) { animation-delay: 0.4s; } .record-item:active { transform: scale(0.98); } .record-icon { width: 72rpx; height: 72rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-right: 16rpx; } .record-icon.income { background: linear-gradient(135deg, #E6FBF7, #CCEFE8); } .record-icon.expense { background: linear-gradient(135deg, #FFF0EB, #FFE4D9); } .record-icon-text { font-size: 32rpx; } .record-info { flex: 1; overflow: hidden; display: flex; flex-direction: column; gap: 6rpx; } .record-info .action-name { font-size: 28rpx; font-weight: 600; color: var(--text-primary); } .record-store { font-size: 24rpx; color: var(--text-muted); } .record-info .record-time { font-size: 24rpx; color: var(--text-muted); } .record-title { display: block; font-size: 28rpx; font-weight: 600; color: var(--text-primary); margin-bottom: 6rpx; } .record-desc { display: block; font-size: 24rpx; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .record-value { text-align: right; } .value-number { display: block; font-size: 32rpx; font-weight: 700; margin-bottom: 4rpx; } .value-number.income { color: var(--accent); } .value-number.income::before { content: '+'; } .value-number.expense { color: var(--primary); } .value-number.expense::before { content: '-'; } .value-time { font-size: 22rpx; color: var(--text-muted); } /* 日期分组 */ .date-group { margin-bottom: 24rpx; } .date-header { display: flex; align-items: center; gap: 12rpx; margin-bottom: 16rpx; padding-left: 8rpx; } .date-dot { width: 10rpx; height: 10rpx; border-radius: 50%; background: var(--primary); } .date-text { font-size: 26rpx; font-weight: 600; color: var(--text-secondary); } /* 空状态 */ .empty-state { display: flex; flex-direction: column; align-items: center; padding: 100rpx 48rpx; animation: fadeInUp 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.2s backwards; } .empty-icon { width: 180rpx; height: 180rpx; margin-bottom: 32rpx; opacity: 0.7; } .empty-title { font-size: 30rpx; font-weight: 600; color: var(--text-secondary); margin-bottom: 12rpx; } .empty-desc { font-size: 26rpx; color: var(--text-muted); } /* 加载状态 */ .loading-state { display: flex; align-items: center; justify-content: center; padding: 48rpx; color: var(--text-muted); font-size: 26rpx; } /* 加载更多 */ .load-more { text-align: center; padding: 32rpx; color: var(--text-muted); font-size: 26rpx; } /* 底部安全区域 */ .safe-bottom { height: 80rpx; }