/* 服务人员详情页样式 */ page { background: #F9FAFB; height: 100%; } .page-container { height: 100vh; display: flex; flex-direction: column; } /* ========== 固定导航栏 ========== */ .nav-container { position: fixed; top: 0; left: 0; right: 0; z-index: 999; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04); } .status-bar { background: transparent; } .nav-bar { display: flex; align-items: center; justify-content: center; padding: 0 32rpx; background: transparent; position: relative; } .nav-back { position: absolute; left: 32rpx; top: 50%; transform: translateY(-50%); width: 80rpx; height: 80rpx; display: flex; align-items: center; justify-content: center; z-index: 10; } .back-icon { width: 48rpx; height: 48rpx; } .nav-title { font-size: 36rpx; font-weight: 700; color: #1F2937; line-height: 1; } .nav-share { position: absolute; right: 32rpx; top: 50%; transform: translateY(-50%); width: 80rpx; height: 80rpx; display: flex; align-items: center; justify-content: center; z-index: 10; } .share-icon { width: 48rpx; height: 48rpx; } /* ========== 内容滚动区域 ========== */ .content-scroll { height: 100vh; box-sizing: border-box; padding-bottom: 240rpx; } /* ========== 服务人员信息卡片 ========== */ .provider-card { background: #fff; margin: 32rpx; border-radius: 32rpx; overflow: hidden; box-shadow: 0 8rpx 24rpx -8rpx rgba(0, 0, 0, 0.08), 0 20rpx 30rpx -6rpx rgba(0, 0, 0, 0.06); position: relative; } .card-header-bg { position: absolute; top: 0; left: 0; right: 0; height: 280rpx; background: linear-gradient(135deg, #FFF7ED 0%, #FEF3C7 50%, #FEE2E2 100%); opacity: 0.6; } .provider-info { position: relative; padding: 40rpx 32rpx 32rpx; display: flex; gap: 32rpx; } .avatar-section { flex-shrink: 0; } .avatar-wrap { width: 168rpx; height: 168rpx; position: relative; } .avatar-img { width: 168rpx; height: 168rpx; border-radius: 32rpx; border: 4rpx solid #fff; box-shadow: 0 8rpx 16rpx -4rpx rgba(0, 0, 0, 0.1); } .verified-badge { position: absolute; bottom: -16rpx; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 8rpx; padding: 6rpx 20rpx; background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%); border: 2rpx solid #FCD34D; border-radius: 100rpx; box-shadow: 0 4rpx 8rpx -2rpx rgba(0, 0, 0, 0.1); } .verified-icon { width: 24rpx; height: 24rpx; } .verified-text { font-size: 20rpx; font-weight: 700; color: #B45309; } .info-section { flex: 1; display: flex; flex-direction: column; gap: 16rpx; padding-top: 8rpx; } .name-row { display: flex; align-items: center; gap: 16rpx; } .provider-name { font-size: 44rpx; font-weight: 900; color: #101828; line-height: 1.2; } .provider-tag { padding: 6rpx 16rpx; background: linear-gradient(135deg, #914584 0%, #B066A3 100%); border-radius: 100rpx; font-size: 22rpx; font-weight: 700; color: #fff; } .experience-row { display: flex; align-items: center; gap: 24rpx; } .experience-item { display: flex; align-items: center; gap: 8rpx; } .exp-icon { width: 28rpx; height: 28rpx; } .exp-text { font-size: 28rpx; font-weight: 600; color: #4A5565; } .rating-item { display: flex; align-items: center; gap: 8rpx; } .star-icon { width: 28rpx; height: 28rpx; } .rating-text { font-size: 28rpx; font-weight: 700; color: #F59E0B; } .provider-desc { font-size: 28rpx; color: #6A7282; line-height: 1.5; } /* 统计数据 */ .stats-section { display: flex; justify-content: space-around; padding: 32rpx; border-top: 2rpx solid #F3F4F6; background: linear-gradient(180deg, rgba(255, 247, 237, 0.3) 0%, rgba(254, 243, 199, 0.3) 100%); } .stat-item { display: flex; flex-direction: column; align-items: center; gap: 8rpx; } .stat-value { font-size: 48rpx; font-weight: 900; color: #101828; line-height: 1; } .stat-label { font-size: 24rpx; color: #6A7282; } .stat-divider { width: 2rpx; height: 80rpx; background: #E5E7EB; } /* ========== 通用卡片样式 ========== */ .skills-card, .intro-card, .cases-card, .reviews-card { background: #fff; margin: 0 32rpx 32rpx; padding: 32rpx; border-radius: 24rpx; box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04); } .card-title { display: flex; align-items: center; gap: 16rpx; margin-bottom: 24rpx; } .title-dot { width: 8rpx; height: 8rpx; background: #914584; border-radius: 50%; } .title-text { font-size: 36rpx; font-weight: 900; color: #101828; } .card-title-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24rpx; } .review-count { font-size: 28rpx; color: #99A1AF; margin-left: 8rpx; } .view-all { display: flex; align-items: center; gap: 8rpx; } .view-all-text { font-size: 28rpx; color: #914584; } .arrow-icon { width: 32rpx; height: 32rpx; } /* ========== 服务技能 ========== */ .skills-list { display: flex; flex-wrap: wrap; gap: 20rpx; } .skill-tag { display: flex; align-items: center; gap: 12rpx; padding: 16rpx 24rpx; background: linear-gradient(135deg, #F0FDF4 0%, #DCFCE7 100%); border: 2rpx solid #86EFAC; border-radius: 100rpx; } .check-icon { width: 28rpx; height: 28rpx; } .skill-text { font-size: 28rpx; font-weight: 600; color: #166534; } /* ========== 服务介绍 ========== */ .intro-content { font-size: 30rpx; color: #4A5565; line-height: 1.8; } /* ========== 服务案例 ========== */ .cases-list { display: flex; gap: 24rpx; overflow-x: auto; } .case-item { flex-shrink: 0; width: 280rpx; } .case-image { width: 280rpx; height: 280rpx; border-radius: 16rpx; margin-bottom: 16rpx; } .case-title { font-size: 28rpx; color: #364153; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* ========== 用户评价 ========== */ .review-list { display: flex; flex-direction: column; gap: 32rpx; } .review-item { padding-bottom: 32rpx; border-bottom: 2rpx solid #F3F4F6; } .review-item:last-child { border-bottom: none; padding-bottom: 0; } .review-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 16rpx; } .user-info { display: flex; gap: 16rpx; } .user-avatar { width: 72rpx; height: 72rpx; border-radius: 50%; } .user-detail { display: flex; flex-direction: column; gap: 8rpx; } .user-name { font-size: 28rpx; font-weight: 600; color: #364153; } .review-stars { display: flex; gap: 4rpx; } .star-small { width: 24rpx; height: 24rpx; } .review-date { font-size: 24rpx; color: #99A1AF; } .review-content { font-size: 28rpx; color: #4A5565; line-height: 1.6; margin-bottom: 16rpx; } .review-tags { display: flex; flex-wrap: wrap; gap: 16rpx; } .review-tag { padding: 8rpx 20rpx; background: #FFF7ED; border-radius: 100rpx; } .tag-text { font-size: 24rpx; color: #EA580C; } /* ========== 底部占位 ========== */ .bottom-placeholder { height: 80rpx; } /* ========== 底部操作栏 ========== */ .bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; background: #fff; padding: 24rpx 32rpx; padding-bottom: calc(24rpx + env(safe-area-inset-bottom)); border-top: 2rpx solid #F3F4F6; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.04); z-index: 100; } .price-section { display: flex; flex-direction: column; gap: 4rpx; } .price-row { display: flex; align-items: baseline; } .price-symbol { font-size: 28rpx; font-weight: 700; color: #FF6B00; } .price-value { font-size: 56rpx; font-weight: 900; color: #FF6B00; line-height: 1; } .price-unit { font-size: 24rpx; color: #6A7282; margin-left: 8rpx; } .price-tip { font-size: 24rpx; color: #99A1AF; } .action-buttons { display: flex; gap: 16rpx; } .consult-btn { width: 120rpx; height: 88rpx; background: #F3F4F6; border-radius: 100rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4rpx; } .btn-icon { width: 36rpx; height: 36rpx; } .consult-btn .btn-text { font-size: 24rpx; color: #4A5565; } .book-btn { width: 240rpx; height: 88rpx; background: linear-gradient(135deg, #FF6B6B 0%, #FF8787 100%); border-radius: 100rpx; display: flex; align-items: center; justify-content: center; box-shadow: 0 8rpx 20rpx -6rpx rgba(255, 107, 107, 0.4); } .book-btn .btn-text { font-size: 32rpx; font-weight: 700; color: #fff; } /* ========== 预约弹窗 ========== */ .booking-modal-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); z-index: 1000; } .booking-modal { position: fixed; left: 0; right: 0; bottom: 0; background: #fff; border-radius: 32rpx 32rpx 0 0; z-index: 1001; max-height: 85vh; display: flex; flex-direction: column; transform: translateY(100%); transition: transform 0.3s ease; } .booking-modal.show { transform: translateY(0); } .modal-header { display: flex; justify-content: space-between; align-items: center; padding: 32rpx; border-bottom: 2rpx solid #F3F4F6; } .modal-title { font-size: 40rpx; font-weight: 900; color: #101828; } .modal-close { width: 64rpx; height: 64rpx; display: flex; align-items: center; justify-content: center; background: #F3F4F6; border-radius: 50%; } .close-icon { font-size: 48rpx; color: #6A7282; line-height: 1; } .modal-content { flex: 1; padding: 32rpx; overflow-y: auto; } /* 预约表单 */ .booking-provider { display: flex; align-items: center; gap: 24rpx; padding: 24rpx; background: #F9FAFB; border-radius: 16rpx; margin-bottom: 32rpx; } .provider-avatar-small { width: 96rpx; height: 96rpx; border-radius: 16rpx; } .provider-info-small { display: flex; flex-direction: column; gap: 8rpx; } .provider-name-small { font-size: 32rpx; font-weight: 700; color: #101828; } .provider-tag-small { font-size: 24rpx; color: #6A7282; } .form-section { margin-bottom: 32rpx; } .form-label { display: block; font-size: 28rpx; font-weight: 600; color: #364153; margin-bottom: 16rpx; } .service-type-list { display: flex; flex-direction: column; gap: 16rpx; } .type-item { display: flex; justify-content: space-between; align-items: center; padding: 24rpx; background: #F9FAFB; border: 2rpx solid #E5E7EB; border-radius: 16rpx; transition: all 0.2s; } .type-item.active { background: #FFF7ED; border-color: #FF6B00; } .type-name { font-size: 30rpx; font-weight: 600; color: #364153; } .type-price { font-size: 28rpx; font-weight: 700; color: #FF6B00; } .time-picker, .address-picker { display: flex; justify-content: space-between; align-items: center; padding: 24rpx; background: #F9FAFB; border: 2rpx solid #E5E7EB; border-radius: 16rpx; } .time-text, .address-text { font-size: 30rpx; color: #364153; } .calendar-icon, .location-icon { width: 40rpx; height: 40rpx; } .remark-input { width: 100%; min-height: 160rpx; padding: 24rpx; background: #F9FAFB; border: 2rpx solid #E5E7EB; border-radius: 16rpx; font-size: 28rpx; color: #364153; box-sizing: border-box; } .char-count { display: block; text-align: right; font-size: 24rpx; color: #99A1AF; margin-top: 8rpx; } .price-summary { padding: 24rpx; background: #F9FAFB; border-radius: 16rpx; margin-top: 32rpx; } .summary-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16rpx; } .summary-row:last-child { margin-bottom: 0; } .summary-label { font-size: 28rpx; color: #6A7282; } .summary-value { font-size: 32rpx; font-weight: 700; color: #364153; } .summary-row.total .summary-label { font-size: 32rpx; font-weight: 700; color: #101828; } .summary-row.total .summary-value { font-size: 40rpx; color: #FF6B00; } .summary-divider { height: 2rpx; background: #E5E7EB; margin: 16rpx 0; } .modal-footer { padding: 24rpx 32rpx; padding-bottom: calc(24rpx + env(safe-area-inset-bottom)); border-top: 2rpx solid #F3F4F6; } .confirm-btn { width: 100%; height: 96rpx; background: linear-gradient(135deg, #FF6B6B 0%, #FF8787 100%); border-radius: 100rpx; font-size: 32rpx; font-weight: 700; color: #fff; border: none; box-shadow: 0 8rpx 20rpx -6rpx rgba(255, 107, 107, 0.4); } .confirm-btn::after { border: none; } /* ========== 全部评价弹窗 ========== */ .all-reviews-modal-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); z-index: 1000; } .all-reviews-modal { position: fixed; left: 0; right: 0; bottom: 0; background: #fff; border-radius: 32rpx 32rpx 0 0; z-index: 1001; max-height: 85vh; display: flex; flex-direction: column; transform: translateY(100%); transition: transform 0.3s ease; } .all-reviews-modal.show { transform: translateY(0); } .review-summary { display: flex; justify-content: space-between; align-items: center; padding: 32rpx; border-bottom: 2rpx solid #F3F4F6; } .summary-left { display: flex; flex-direction: column; gap: 8rpx; } .summary-score { font-size: 72rpx; font-weight: 900; color: #101828; line-height: 1; } .summary-stars { display: flex; gap: 8rpx; } .summary-count { font-size: 24rpx; color: #99A1AF; } .summary-right { display: flex; flex-direction: column; align-items: flex-end; gap: 4rpx; } .good-rate { font-size: 56rpx; font-weight: 900; color: #FF6B00; line-height: 1; } .good-rate-label { font-size: 24rpx; color: #99A1AF; } .all-reviews-list { flex: 1; padding: 32rpx; overflow-y: auto; }