page { background: #F4F6F0; } .badges-page { height: 100vh; display: flex; flex-direction: column; } .badges-scroll { flex: 1; padding: 32rpx; box-sizing: border-box; } /* Level Card */ .level-card-large { background: linear-gradient(135deg, #2c3e50 0%, #4ca1af 100%); border-radius: 40rpx; padding: 40rpx; color: white; margin-bottom: 48rpx; box-shadow: 0 20rpx 40rpx rgba(44, 62, 80, 0.2); position: relative; overflow: hidden; } .level-card-bg { position: absolute; top: -100rpx; right: -100rpx; width: 300rpx; height: 300rpx; background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%); border-radius: 50%; } .level-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 40rpx; position: relative; z-index: 2; } .level-info-large { display: flex; flex-direction: column; gap: 8rpx; } .level-label { font-size: 24rpx; opacity: 0.8; letter-spacing: 2rpx; text-transform: uppercase; } .level-value { font-size: 48rpx; font-weight: 800; } .level-progress-section { position: relative; z-index: 2; } .progress-text { display: flex; justify-content: space-between; font-size: 26rpx; margin-bottom: 16rpx; font-weight: 600; opacity: 0.9; } .level-progress-bar-bg { height: 16rpx; background: rgba(0,0,0,0.2); border-radius: 8rpx; margin-bottom: 24rpx; border: 2rpx solid rgba(255,255,255,0.1); } .level-progress-bar-fill { height: 100%; background: linear-gradient(90deg, #FFD700, #FDB931); border-radius: 8rpx; box-shadow: 0 0 12rpx rgba(255, 215, 0, 0.4); } .next-level-tip { font-size: 24rpx; color: rgba(255,255,255,0.7); display: block; text-align: right; } /* Click Hint */ .click-hint { text-align: right; font-size: 22rpx; color: rgba(255,255,255,0.7); margin-top: 24rpx; font-weight: 500; } .next-level-perk { font-size: 22rpx; color: #FFD700; margin-top: 8rpx; display: block; text-align: right; font-weight: 500; } /* Popup Styles */ .level-popup-content { background: white; border-radius: 24rpx 24rpx 0 0; padding: 32rpx 40rpx; max-height: 80vh; box-sizing: border-box; } .popup-title { display: flex; justify-content: space-between; align-items: center; font-size: 34rpx; font-weight: 700; margin-bottom: 32rpx; color: #333; } .level-list-scroll { max-height: 60vh; box-sizing: border-box; } .level-list-item { position: relative; background: #f9f9f9; border-radius: 16rpx; padding: 24rpx; margin-bottom: 20rpx; border: 2rpx solid transparent; } .level-list-item.achieved { background: #F1F8E9; border-color: #A5D6A7; } .level-item-top { display: flex; align-items: center; margin-bottom: 12rpx; } .level-tag-badge { background: #CFD8DC; color: #546E7A; font-size: 20rpx; padding: 4rpx 10rpx; border-radius: 8rpx; margin-right: 16rpx; font-weight: 700; } .achieved .level-tag-badge { background: #4CAF50; color: white; } .level-item-title { font-size: 28rpx; font-weight: 700; color: #333; } .level-spacer { flex: 1; } .level-item-req { font-size: 24rpx; color: #999; font-weight: 600; } .achieved .level-item-req { color: #4CAF50; } .level-item-desc { font-size: 24rpx; color: #666; line-height: 1.4; padding-top: 12rpx; border-top: 2rpx dashed #eee; } .achieved .level-item-desc { border-top-color: rgba(76, 175, 80, 0.2); color: #388E3C; } .level-achieve-icon { position: absolute; right: 24rpx; top: 24rpx; } .section-title-badges { font-size: 32rpx; font-weight: 700; color: #1F2937; margin-bottom: 32rpx; margin-left: 12rpx; } .badges-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20rpx; } .badge-item { background: #fff; border-radius: 24rpx; padding: 32rpx 16rpx; display: flex; flex-direction: column; align-items: center; text-align: center; box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.02); } .badge-item.locked { background: #F8F9FA; border: 2rpx dashed #E5E7EB; box-shadow: none; } .badge-icon-circle { width: 88rpx; height: 88rpx; border-radius: 30rpx; display: flex; align-items: center; justify-content: center; margin-bottom: 20rpx; } .badge-name { font-size: 26rpx; font-weight: 700; color: #374151; margin-bottom: 6rpx; } .badge-desc { font-size: 20rpx; color: #9CA3AF; } .badge-progress { margin-top: 12rpx; font-size: 20rpx; background: #F3F4F6; padding: 4rpx 12rpx; border-radius: 12rpx; color: #6B7280; }