.xqbox { background: linear-gradient(180deg, #F8FBFF 0%, #F0F7FF 100%); min-height: 100vh; } /* 页面内容 */ .page-content { height: calc(100vh - 120rpx); box-sizing: border-box; } /* 动画效果 */ @keyframes cardEnter { 0% { opacity: 0; transform: translateY(40rpx) scale(0.95); } 100% { opacity: 1; transform: translateY(0) scale(1); } } @keyframes fadeInUp { 0% { opacity: 0; transform: translateY(30rpx); } 100% { opacity: 1; transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10rpx); } } .card-enter { animation: cardEnter 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; } .fade-in-up { animation: fadeInUp 0.5s ease-out forwards; opacity: 0; } .fade-in { animation: fadeIn 0.8s ease-out forwards; opacity: 0; } .pulse { animation: pulse 2s infinite; } .hover-effect { transition: all 0.3s ease; } .hover-effect:active { transform: scale(0.95); } /* 渐变背景 */ .gradient-blue { background: linear-gradient(135deg, #6D9EFF 0%, #4A7CFF 100%); color: white !important; } .gradient-orange { background: linear-gradient(135deg, #FF9500 0%, #FF7F00 100%); color: white !important; } .gradient-pink { background: linear-gradient(135deg, #FF6B9D 0%, #FF4081 100%); color: white !important; } .gradient-purple { background: linear-gradient(135deg, #9D4BFF 0%, #7C3AED 100%); color: white !important; } .gradient-gold { background: linear-gradient(135deg, #FFD700 0%, #FFB300 100%); color: white !important; } /* 用户问诊卡片 */ .user-query-card { background: #FFFFFF; margin: 24rpx; border-radius: 28rpx; box-shadow: 0 12rpx 48rpx rgba(74, 144, 226, 0.15); border: 2rpx solid #FFFFFF; overflow: hidden; position: relative; backdrop-filter: blur(20rpx); } /* 卡片装饰 */ .card-decoration { position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; z-index: 1; } .decoration-dot { position: absolute; border-radius: 50%; background: linear-gradient(135deg, rgba(109, 158, 255, 0.1) 0%, rgba(74, 124, 255, 0.1) 100%); } .dot-1 { width: 120rpx; height: 120rpx; top: -40rpx; right: -40rpx; } .dot-2 { width: 80rpx; height: 80rpx; bottom: 60rpx; left: -20rpx; } .dot-3 { width: 60rpx; height: 60rpx; bottom: -20rpx; right: 80rpx; } /* 用户信息区域 */ .user-info-section { padding: 40rpx 32rpx 32rpx; display: flex; align-items: flex-start; position: relative; z-index: 2; } .avatar-wrapper { position: relative; margin-right: 24rpx; flex-shrink: 0; } .user-avatar { width: 88rpx; height: 88rpx; border-radius: 50%; border: 3rpx solid #FFFFFF; box-shadow: 0 8rpx 24rpx rgba(74, 144, 226, 0.3); } .user-details { flex: 1; } .user-name-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16rpx; } .user-name { font-size: 34rpx; font-weight: 700; color: #1A1A1A; line-height: 1.2; text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1); } .status-badge { padding: 10rpx 24rpx; border-radius: 24rpx; font-size: 26rpx; font-weight: 700; min-width: 88rpx; text-align: center; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1); } .status-replied { background: linear-gradient(135deg, #2ECC71 0%, #27AE60 100%); color: white; } .status-pending { background: linear-gradient(135deg, #FF9500 0%, #F39C12 100%); color: white; } .pet-info { display: flex; flex-direction: column; gap: 16rpx; } .pet-info-tags { display: flex; gap: 12rpx; flex-wrap: wrap; } .pet-tag { padding: 6rpx 20rpx; border-radius: 20rpx; font-size: 24rpx; font-weight: 600; box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1); } .time-info { display: flex; align-items: center; gap: 8rpx; background: rgba(109, 158, 255, 0.08); padding: 8rpx 16rpx; border-radius: 20rpx; align-self: flex-start; } .time-text { font-size: 24rpx; color: #6D9EFF; font-weight: 500; } /* 症状描述区域 - 调整到最左边 */ .symptom-section { padding: 32rpx; position: relative; z-index: 2; } .section-header { display: flex; align-items: center; margin-bottom: 28rpx; } .section-title { font-size: 32rpx; font-weight: 700; color: #1A1A1A; position: relative; padding-right: 16rpx; } .title-decoration { flex: 1; height: 2rpx; background: linear-gradient(90deg, #E5F0FF 0%, #6D9EFF 50%, #E5F0FF 100%); margin-left: 16rpx; border-radius: 1rpx; } .symptom-content { background: #F8FBFF; border-radius: 24rpx; padding: 36rpx 32rpx; border: 2rpx solid #E5F0FF; position: relative; box-shadow: 0 4rpx 16rpx rgba(74, 144, 226, 0.1); transition: all 0.3s ease; } .symptom-content:active { transform: translateY(-2rpx); box-shadow: 0 8rpx 24rpx rgba(74, 144, 226, 0.15); } .quote-left { position: absolute; top: 20rpx; left: 20rpx; font-size: 48rpx; color: #6D9EFF; font-weight: 700; opacity: 0.3; } .symptom-text { font-size: 30rpx; color: #333; line-height: 1.8; font-weight: 400; text-align: left; } /* 图片展示区域 */ .image-section { padding: 32rpx; position: relative; z-index: 2; } .image-count { margin-left: auto; padding: 6rpx 16rpx; border-radius: 20rpx; font-size: 24rpx; font-weight: 600; } .images-scroll { width: 100%; } .images-container { display: flex; padding: 8rpx 0; } .image-wrapper { margin-right: 20rpx; position: relative; border-radius: 20rpx; overflow: hidden; box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.15); transition: all 0.3s ease; } .image-wrapper:last-child { margin-right: 0; } .image-wrapper:active { transform: scale(0.98); } .symptom-image { width: 220rpx; height: 220rpx; border-radius: 20rpx; } /* 兽医回复区域 */ .replies-section { margin: 24rpx; } .reply-count { margin-left: auto; padding: 8rpx 20rpx; border-radius: 24rpx; display: flex; align-items: center; gap: 4rpx; box-shadow: 0 4rpx 12rpx rgba(157, 75, 255, 0.3); } .count-number { font-size: 30rpx; font-weight: 700; } .count-text { font-size: 24rpx; font-weight: 500; opacity: 0.9; } /* 回复列表 */ .replies-list { display: flex; flex-direction: column; gap: 24rpx; } .vet-reply-card { background: #FFFFFF; border-radius: 28rpx; padding: 36rpx; box-shadow: 0 12rpx 48rpx rgba(74, 144, 226, 0.15); border: 2rpx solid #FFFFFF; position: relative; overflow: hidden; backdrop-filter: blur(20rpx); } /* 兽医信息 */ .vet-info { display: flex; align-items: center; margin-bottom: 32rpx; } .vet-avatar { width: 80rpx; height: 80rpx; border-radius: 50%; border: 3rpx solid #FFFFFF; box-shadow: 0 8rpx 24rpx rgba(255, 215, 0, 0.3); margin-right: 20rpx; flex-shrink: 0; } .vet-verified { position: absolute; bottom: 2rpx; right: 2rpx; width: 20rpx; height: 20rpx; background: #2ECC71; border: 2rpx solid white; border-radius: 50%; } .vet-details { flex: 1; } .vet-name-row { display: flex; align-items: center; margin-bottom: 12rpx; } .vet-name { font-size: 32rpx; font-weight: 700; color: #1A1A1A; margin-right: 16rpx; text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1); } .vet-badge { padding: 2rpx 10rpx; border-radius: 20rpx; box-shadow: 0 4rpx 12rpx rgba(255, 215, 0, 0.3); } .vet-title { font-size: 24rpx; font-weight: 700; letter-spacing: 0.5rpx; } .vet-meta { display: flex; align-items: center; gap: 20rpx; } .meta-item { display: flex; align-items: center; gap: 6rpx; background: rgba(109, 158, 255, 0.08); padding: 6rpx 12rpx; border-radius: 16rpx; } .vet-hospital, .vet-experience { font-size: 24rpx; color: #6D9EFF; font-weight: 500; } /* 回复内容 */ .reply-content { margin-bottom: 28rpx; } .reply-bubble { background: #F8FBFF; border-radius: 24rpx; padding: 32rpx; border: 2rpx solid #E5F0FF; position: relative; box-shadow: 0 4rpx 16rpx rgba(74, 144, 226, 0.1); } .reply-bubble::before { content: ''; position: absolute; top: -12rpx; left: 40rpx; width: 0; height: 0; border-left: 12rpx solid transparent; border-right: 12rpx solid transparent; border-bottom: 12rpx solid #F8FBFF; } .reply-text { font-size: 28rpx; color: #333; line-height: 1.8; font-weight: 400; } /* 回复底部 */ .reply-footer { display: flex; justify-content: space-between; align-items: center; padding-top: 24rpx; border-top: 2rpx dashed #E5F0FF; } .reply-time { display: flex; align-items: center; gap: 10rpx; background: rgba(109, 158, 255, 0.1); padding: 8rpx 20rpx; border-radius: 20rpx; } /* 无回复状态 */ .no-replies { background: #FFFFFF; border-radius: 28rpx; padding: 80rpx 40rpx; text-align: center; box-shadow: 0 12rpx 48rpx rgba(74, 144, 226, 0.15); border: 2rpx solid #FFFFFF; position: relative; overflow: hidden; } .no-replies-icon { width: 200rpx; height: 150rpx; margin-bottom: 32rpx; opacity: 0.6; filter: hue-rotate(200deg); } .no-replies-title { font-size: 32rpx; color: #333; font-weight: 700; margin-bottom: 16rpx; display: block; text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1); } .no-replies-desc { font-size: 26rpx; color: #999; line-height: 1.4; max-width: 400rpx; margin: 0 auto; } .waiting-animation { display: flex; justify-content: center; gap: 12rpx; margin-top: 40rpx; } .loading-dot { width: 16rpx; height: 16rpx; border-radius: 50%; background: #6D9EFF; animation: pulse 1.5s infinite ease-in-out; } .loading-dot.dot-1 { animation-delay: 0s; } .loading-dot.dot-2 { animation-delay: 0.2s; } .loading-dot.dot-3 { animation-delay: 0.4s; } /* 页面底部安全区域 */ .page-bottom { height: 60rpx; }