/* 全局样式 */ page { background-color: #f7f8fa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; min-height: 100vh; } /* 容器样式 */ .checkin-container { padding: 20rpx; box-sizing: border-box; } /* 顶部信息区 */ .header { background-color: #51bdb6; border-radius: 20rpx; padding: 30rpx; color: #fff; margin-bottom: 30rpx; box-shadow: 0 8rpx 16rpx rgba(81, 189, 182, 0.2); } .month-info { font-size: 32rpx; font-weight: 500; margin-bottom: 20rpx; text-align: center; } .checkin-stats { display: flex; justify-content: space-around; align-items: center; } .stat-item { display: flex; flex-direction: column; align-items: center; } .stat-value { font-size: 48rpx; font-weight: bold; line-height: 1; margin-bottom: 10rpx; } .stat-label { font-size: 24rpx; opacity: 0.9; } /* 签到按钮区 */ .checkin-button-area { display: flex; flex-direction: column; align-items: center; margin-bottom: 40rpx; } .checkin-btn { width: 240rpx; height: 240rpx; border-radius: 50%; background-color: #51bdb6; color: #fff; font-size: 34rpx; font-weight: 500; display: flex; justify-content: center; align-items: center; margin-bottom: 20rpx; box-shadow: 0 10rpx 20rpx rgba(81, 189, 182, 0.3); transition: all 0.3s ease; border: none; padding: 0; } .checkin-btn.checked { background-color: #e6f7f6; color: #51bdb6; box-shadow: 0 5rpx 15rpx rgba(81, 189, 182, 0.2); } .checkin-btn.animating { animation: pulse 1s ease-in-out; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } .btn-content { display: flex; flex-direction: column; align-items: center; } /* 签到按钮内部的对勾图标样式控制 */ .checkin-btn .check-icon { width: 40rpx; height: auto; margin-top: 10rpx; display: none; /* 默认隐藏 */ } .checkin-btn.checked .check-icon { display: block; /* 仅在已签到状态下显示 */ } .checkin-tip { font-size: 26rpx; color: #666; text-align: center; line-height: 1.5; } /* 日历签到区 - 核心修复区域 */ .calendar-section { background-color: #fff; border-radius: 20rpx; padding: 30rpx; margin-bottom: 30rpx; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05); } .section-title { font-size: 30rpx; font-weight: 500; color: #333; margin-bottom: 25rpx; padding-left: 10rpx; border-left: 6rpx solid #51bdb6; } .weekdays { display: flex; margin-bottom: 15rpx; } .weekday { flex: 1; text-align: center; font-size: 26rpx; color: #999; padding: 10rpx 0; } .calendar-grid { display: flex; flex-wrap: wrap; width: 100%; } /* 日期格子容器 */ .calendar-day { width: 14.2857%; /* 7天平均分配宽度 */ aspect-ratio: 1; /* 宽高比1:1 */ display: flex; justify-content: center; align-items: center; position: relative; padding: 8rpx; box-sizing: border-box; } /* 日期数字和圆圈 - 重点修复 */ .day-number { width: 60rpx; height: 60rpx; border-radius: 50%; display: flex; justify-content: center; align-items: center; font-size: 28rpx; font-weight: 500; position: relative; line-height: 1; color: #333; /* 默认颜色 */ } /* 已签到状态 - 关键修复,确保数字可见 */ .calendar-day.checked .day-number { background-color: #51bdb6; /* 绿色背景 */ color: #ffffff; /* **纯白色文字,解决覆盖问题** */ font-weight: 600; box-shadow: 0 2rpx 8rpx rgba(81, 189, 182, 0.4); } /* 今日未签到状态 */ .calendar-day.today .day-number { border: 2rpx solid #51bdb6; color: #51bdb6; font-weight: 600; } /* 空日期(上月/下月) */ .calendar-day.empty .day-number { color: #eee; background: transparent; } /* 签到对勾 - 调整位置 */ .check-mark { position: absolute; /* 将对勾放在圆圈的右下角作为修饰 */ right: 15rpx; bottom: 10rpx; width: 24rpx !important; height: 24rpx !important; opacity: 0.9; z-index: 10; } /* 奖励区 */ .rewards-section { background-color: #fff; border-radius: 20rpx; padding: 30rpx; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05); } .rewards-list { display: flex; flex-direction: column; gap: 20rpx; } .reward-item { display: flex; align-items: center; padding: 25rpx; border-radius: 12rpx; background-color: #f7f8fa; transition: all 0.3s ease; } .reward-item.achieved { background-color: #e6f7f6; border-left: 6rpx solid #51bdb6; } .reward-days { font-size: 28rpx; color: #333; width: 160rpx; } .reward-separator { font-size: 24rpx; color: #ccc; margin: 0 10rpx; } .reward-content { font-size: 28rpx; color: #666; flex: 1; } .reward-status { display: flex; align-items: center; font-size: 24rpx; color: #51bdb6; gap: 8rpx; }