/* ========================================== 比赛记录页面 - 浅色高级感设计 ========================================== */ .page-container { min-height: 100vh; background: var(--bg-page); position: relative; } /* 顶部装饰背景 */ .hero-bg { position: absolute; top: 0; left: 0; right: 0; height: 300rpx; background: linear-gradient(180deg, #FFF5F0 0%, var(--bg-page) 100%); pointer-events: none; } .hero-pattern { position: absolute; top: -60rpx; right: -40rpx; width: 240rpx; height: 240rpx; background: radial-gradient(circle, rgba(255, 107, 53, 0.08) 0%, transparent 70%); border-radius: 50%; } /* 页面标题 */ .page-header { position: relative; z-index: 1; text-align: center; padding: 32rpx 24rpx 24rpx; animation: fadeInUp 0.5s cubic-bezier(0.4, 0, 0.2, 1); } .page-title { display: block; font-size: 40rpx; font-weight: 700; color: var(--text-primary); margin-bottom: 8rpx; letter-spacing: 2rpx; } .page-subtitle { display: block; font-size: 26rpx; color: var(--text-muted); } /* 筛选标签栏 */ .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.1s backwards; } .filter-item { flex: 1; display: flex; align-items: center; justify-content: center; padding: 20rpx; background: var(--bg-white); border-radius: var(--radius-full); box-shadow: var(--shadow-sm); font-size: 26rpx; color: var(--text-secondary); 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); } /* 比赛列表 */ .match-list { position: relative; z-index: 1; padding: 0 24rpx; } .match-card { background: var(--bg-white); border-radius: var(--radius-lg); margin-bottom: 20rpx; box-shadow: var(--shadow-card); overflow: hidden; 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; } .match-card:nth-child(1) { animation-delay: 0.15s; } .match-card:nth-child(2) { animation-delay: 0.2s; } .match-card:nth-child(3) { animation-delay: 0.25s; } .match-card:nth-child(4) { animation-delay: 0.3s; } .match-card:nth-child(5) { animation-delay: 0.35s; } .match-card:active { transform: scale(0.98); } .match-card.win { border-left: 6rpx solid var(--accent); } .match-card.lose { border-left: 6rpx solid #FF6B6B; } /* 比赛头部 */ .match-header { display: flex; align-items: center; justify-content: space-between; padding: 20rpx 24rpx; background: linear-gradient(90deg, #FAFBFC, var(--bg-white)); border-bottom: 1rpx solid var(--border-soft); } .match-type { display: flex; align-items: center; gap: 8rpx; } .type-badge { padding: 6rpx 14rpx; border-radius: var(--radius-full); font-size: 22rpx; font-weight: 600; } .type-badge.ladder { background: var(--primary-soft); color: var(--primary); } .type-badge.friendly { background: var(--accent-light); color: var(--accent); } .result-badge { padding: 6rpx 14rpx; border-radius: var(--radius-full); font-size: 22rpx; font-weight: 600; } .result-badge.win { background: var(--accent-light); color: var(--accent); } .result-badge.lose { background: #FFF1F0; color: #FF4D4F; } .match-time { font-size: 24rpx; color: var(--text-muted); } /* 比赛内容 */ .match-content { padding: 24rpx; } .match-players { display: flex; align-items: center; justify-content: space-between; } .player-card { flex: 1; display: flex; flex-direction: column; align-items: center; } .player-card.self { position: relative; } .player-card.self::before { content: '我'; position: absolute; top: -8rpx; right: 20%; padding: 2rpx 10rpx; background: var(--primary); color: #FFF; font-size: 18rpx; border-radius: var(--radius-full); } .player-avatar { width: 80rpx; height: 80rpx; border-radius: 50%; margin-bottom: 12rpx; border: 3rpx solid var(--bg-white); box-shadow: var(--shadow-sm); } .player-name { font-size: 26rpx; font-weight: 600; color: var(--text-primary); margin-bottom: 6rpx; } .player-level { padding: 4rpx 12rpx; border-radius: var(--radius-full); font-size: 20rpx; font-weight: 600; } .player-level.lv1 { background: #E8F5E9; color: #2E7D32; } .player-level.lv2 { background: #E3F2FD; color: #1565C0; } .player-level.lv3 { background: #FFF3E0; color: #E65100; } .player-level.lv4 { background: #FCE4EC; color: #C2185B; } .player-level.lv5 { background: #F3E5F5; color: #7B1FA2; } /* 比分区域 */ .score-area { display: flex; flex-direction: column; align-items: center; padding: 0 16rpx; } .vs-text { font-size: 24rpx; color: var(--text-hint); font-weight: 600; } .score-display { display: flex; align-items: center; gap: 12rpx; margin-top: 8rpx; } .score-value { font-size: 44rpx; font-weight: 700; color: var(--text-primary); } .score-colon { font-size: 32rpx; color: var(--text-hint); } /* 比赛详情 */ .match-details { display: flex; align-items: center; justify-content: space-between; margin-top: 20rpx; padding-top: 20rpx; border-top: 1rpx solid var(--border-soft); } .detail-item { display: flex; align-items: center; gap: 8rpx; } .detail-label { font-size: 24rpx; color: var(--text-muted); } .detail-value { font-size: 26rpx; font-weight: 600; } .detail-value.positive { color: var(--accent); } .detail-value.positive::before { content: '+'; } .detail-value.negative { color: #FF4D4F; } /* 空状态 */ .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); text-align: center; line-height: 1.6; } /* 加载状态 */ .loading-state { display: flex; align-items: center; justify-content: center; padding: 48rpx; color: var(--text-muted); font-size: 26rpx; } /* 底部安全区域 */ .safe-bottom { height: 80rpx; } /* 加载更多 */ .load-more { text-align: center; padding: 32rpx; color: var(--text-muted); font-size: 26rpx; }