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; } .badge-wall-entry { margin: 10rpx 0 40rpx; background: linear-gradient(120deg, #1976D2, #64B5F6); border-radius: 32rpx; padding: 32rpx 40rpx; display: flex; justify-content: space-between; align-items: center; position: relative; overflow: hidden; box-shadow: 0 16rpx 32rpx rgba(25, 118, 210, 0.25); } .entry-bg-bloom { position: absolute; right: -40rpx; top: -60rpx; width: 240rpx; height: 240rpx; background: radial-gradient(circle, rgba(255,255,255,0.15) 0%, transparent 70%); border-radius: 50%; z-index: 1; } .wall-entry-left { display: flex; align-items: center; gap: 24rpx; z-index: 2; } .entry-icon-box { width: 96rpx; height: 96rpx; background: rgba(255,255,255,0.2); border-radius: 24rpx; display: flex; align-items: center; justify-content: center; border: 2rpx solid rgba(255,255,255,0.1); } .wall-entry-text { display: flex; flex-direction: column; gap: 6rpx; } .entry-title { color: white; font-size: 32rpx; font-weight: 700; } .entry-desc { color: rgba(255,255,255,0.8); font-size: 24rpx; } .wall-entry-right { display: flex; align-items: center; gap: 8rpx; z-index: 2; } .entry-action { color: rgba(255,255,255,0.9); font-size: 26rpx; font-weight: 600; }