/* pages/match/match.wxss */ .match-container { min-height: 100vh; position: relative; overflow: hidden; } /* 星空背景 */ .star-canvas { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 0; } /* 头部 */ .match-header { padding: 80rpx 48rpx 40rpx; text-align: center; position: relative; z-index: 1; } .match-title { font-size: 56rpx; font-weight: 700; color: #ffffff; margin-bottom: 16rpx; } .match-subtitle { font-size: 28rpx; color: rgba(255, 255, 255, 0.6); } /* 匹配状态区 */ .match-status-area { position: relative; z-index: 1; padding: 40rpx 32rpx; min-height: 800rpx; } /* 未匹配状态 */ .match-idle { display: flex; flex-direction: column; align-items: center; animation: fadeIn 0.5s ease-in-out; padding-top: 60rpx; } /* 中央大星球 */ .center-planet { position: relative; width: 460rpx; height: 460rpx; margin-bottom: 80rpx; cursor: pointer; } .planet-gradient { position: relative; width: 100%; height: 100%; background: linear-gradient(135deg, #00E5FF 0%, #7B61FF 50%, #E91E63 100%); border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 2; box-shadow: 0 0 60rpx rgba(0, 229, 255, 0.4), 0 0 120rpx rgba(123, 97, 255, 0.3), inset 0 0 80rpx rgba(255, 255, 255, 0.1); animation: planetFloat 3s ease-in-out infinite; } @keyframes planetFloat { 0%, 100% { transform: translateY(0) scale(1); } 50% { transform: translateY(-20rpx) scale(1.02); } } .planet-ring { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 540rpx; height: 540rpx; border: 3rpx solid rgba(0, 229, 255, 0.3); border-radius: 50%; z-index: 1; animation: ringPulse 2s ease-in-out infinite; } @keyframes ringPulse { 0%, 100% { opacity: 0.3; transform: translate(-50%, -50%) scale(1); } 50% { opacity: 0.6; transform: translate(-50%, -50%) scale(1.05); } } .planet-icon { width: 100rpx; height: 100rpx; margin-bottom: 20rpx; display: flex; align-items: center; justify-content: center; } .icon-mic { width: 80rpx; height: 80rpx; filter: brightness(0) invert(1); } .planet-text { font-size: 40rpx; font-weight: 700; color: #ffffff; margin-bottom: 12rpx; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.3); } .planet-subtitle { font-size: 26rpx; color: rgba(255, 255, 255, 0.9); text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.2); } /* 匹配提示 */ .match-tips { margin-bottom: 60rpx; display: flex; flex-direction: column; gap: 16rpx; } .tip-item { font-size: 28rpx; color: rgba(255, 255, 255, 0.7); text-align: center; } /* 匹配中状态 */ .match-loading { display: flex; flex-direction: column; align-items: center; animation: fadeIn 0.5s ease-in-out; } .loading-planet { position: relative; width: 400rpx; height: 400rpx; margin-bottom: 60rpx; } .rotating-planet { width: 100%; height: 100%; animation: rotate 3s linear infinite; } @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .loading-rings { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .ring { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); border: 4rpx solid rgba(255, 77, 79, 0.3); border-radius: 50%; animation: ringExpand 2s ease-out infinite; } .ring-1 { width: 300rpx; height: 300rpx; animation-delay: 0s; } .ring-2 { width: 300rpx; height: 300rpx; animation-delay: 0.6s; } .ring-3 { width: 300rpx; height: 300rpx; animation-delay: 1.2s; } @keyframes ringExpand { 0% { width: 300rpx; height: 300rpx; opacity: 1; } 100% { width: 600rpx; height: 600rpx; opacity: 0; } } .loading-text { font-size: 32rpx; color: #ffffff; margin-bottom: 16rpx; } .loading-progress { font-size: 24rpx; color: rgba(255, 255, 255, 0.5); margin-bottom: 48rpx; } .cancel-btn { width: 320rpx; } /* 匹配成功状态 */ .match-success { animation: fadeIn 0.5s ease-in-out; } .success-animation { text-align: center; margin-bottom: 40rpx; animation: bounceIn 0.6s ease-out; } @keyframes bounceIn { 0% { transform: scale(0); opacity: 0; } 50% { transform: scale(1.2); } 100% { transform: scale(1); opacity: 1; } } .success-icon { font-size: 120rpx; animation: sparkle 1s ease-in-out infinite; } @keyframes sparkle { 0%, 100% { opacity: 1; } 50% { opacity: 0.6; } } .match-user-card { display: flex; align-items: center; padding: 32rpx; margin-bottom: 24rpx; } .user-avatar { width: 120rpx; height: 120rpx; border-radius: 60rpx; margin-right: 24rpx; border: 4rpx solid rgba(255, 77, 79, 0.5); } .user-info { flex: 1; } .user-name { font-size: 36rpx; font-weight: 600; color: #ffffff; margin-bottom: 12rpx; } .user-tags { display: flex; flex-wrap: wrap; gap: 12rpx; } .tag { padding: 8rpx 16rpx; background: rgba(255, 77, 79, 0.2); color: #FF7875; font-size: 22rpx; border-radius: 8rpx; } .match-score { text-align: center; } .score-label { font-size: 22rpx; color: rgba(255, 255, 255, 0.5); margin-bottom: 8rpx; } .score-value { font-size: 40rpx; font-weight: 700; color: #FF4D4F; } /* 共同兴趣 */ .common-interests { margin-bottom: 32rpx; } .interests-title { font-size: 28rpx; color: rgba(255, 255, 255, 0.8); margin-bottom: 20rpx; } .interests-list { display: flex; flex-wrap: wrap; gap: 16rpx; } .interest-item { display: flex; align-items: center; gap: 8rpx; padding: 16rpx 24rpx; background: rgba(255, 255, 255, 0.05); border-radius: 16rpx; font-size: 26rpx; color: rgba(255, 255, 255, 0.8); } .interest-icon { font-size: 32rpx; } /* 核心理念 */ .core-concept { margin-bottom: 32rpx; padding: 32rpx; } .concept-title { font-size: 28rpx; color: rgba(255, 255, 255, 0.8); margin-bottom: 20rpx; } .concept-text { font-size: 26rpx; color: rgba(255, 255, 255, 0.7); line-height: 1.6; } /* 操作按钮 */ .match-actions { display: flex; gap: 24rpx; margin-bottom: 24rpx; } .action-btn { flex: 1; font-size: 28rpx; display: flex; align-items: center; justify-content: center; gap: 8rpx; } .btn-icon { font-size: 32rpx; } .next-btn { width: 100%; font-size: 28rpx; } /* 最近匹配 */ .recent-matches { padding: 40rpx 32rpx; position: relative; z-index: 1; } .section-title { font-size: 32rpx; font-weight: 600; color: #ffffff; margin-bottom: 24rpx; } .matches-scroll { white-space: nowrap; height: 200rpx; } .match-item { display: inline-block; width: 160rpx; margin-right: 24rpx; text-align: center; } .match-avatar { width: 120rpx; height: 120rpx; border-radius: 60rpx; margin-bottom: 12rpx; border: 3rpx solid rgba(255, 255, 255, 0.2); } .match-name { font-size: 24rpx; color: #ffffff; margin-bottom: 4rpx; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .match-time { font-size: 20rpx; color: rgba(255, 255, 255, 0.5); }