page { background-color: #FAF6F1; } .container { min-height: 100vh; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } /* 服务图片 */ .service-image-wrap { width: 100%; height: 420rpx; overflow: hidden; } .service-image { width: 100%; height: 100%; } /* 信息卡片 */ .info-card { background: #FFFFFF; margin: -40rpx 24rpx 24rpx; border-radius: 20rpx; padding: 32rpx; position: relative; z-index: 10; box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.06); } .service-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 16rpx; } .service-title-wrap { display: flex; align-items: center; flex-wrap: wrap; gap: 12rpx; } .service-title { font-size: 36rpx; font-weight: 700; color: #1F2937; } .service-tag { background: linear-gradient(135deg, #FF9B33 0%, #FF8500 100%); color: #FFFFFF; font-size: 22rpx; padding: 4rpx 16rpx; border-radius: 8rpx; } .service-price-wrap { display: flex; align-items: baseline; } .price-symbol { font-size: 28rpx; color: #FF9B33; font-weight: 600; } .service-price { font-size: 44rpx; color: #FF9B33; font-weight: 700; } .price-unit { font-size: 24rpx; color: #9CA3AF; margin-left: 4rpx; } .service-subtitle { font-size: 26rpx; color: #6B7280; line-height: 1.5; } /* 详情卡片 */ .detail-card { background: #FFFFFF; margin: 0 24rpx 24rpx; border-radius: 20rpx; padding: 32rpx; box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.04); } .card-title { display: flex; align-items: center; font-size: 32rpx; font-weight: 600; color: #1F2937; margin-bottom: 24rpx; } .card-icon { color: #FF9B33; margin-right: 12rpx; } .detail-content { line-height: 1.8; } .detail-text { font-size: 28rpx; color: #4B5563; line-height: 1.8; } /* 服务流程 */ .flow-list { display: flex; flex-direction: column; gap: 24rpx; } .flow-item { display: flex; align-items: flex-start; gap: 20rpx; } .flow-number { width: 44rpx; height: 44rpx; background: linear-gradient(135deg, #FF9B33 0%, #FF8500 100%); color: #FFFFFF; font-size: 24rpx; font-weight: 600; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .flow-content { flex: 1; } .flow-title { display: block; font-size: 28rpx; font-weight: 600; color: #1F2937; margin-bottom: 8rpx; } .flow-desc { display: block; font-size: 26rpx; color: #6B7280; line-height: 1.5; } /* 注意事项 */ .notice-list { display: flex; flex-direction: column; gap: 16rpx; } .notice-item { display: flex; align-items: flex-start; gap: 16rpx; } .notice-dot { width: 12rpx; height: 12rpx; background: #FF9B33; border-radius: 50%; margin-top: 12rpx; flex-shrink: 0; } .notice-text { font-size: 28rpx; color: #4B5563; line-height: 1.6; flex: 1; } /* 底部占位 */ .bottom-placeholder { height: 140rpx; } /* 底部下单栏 */ .bottom-bar { position: fixed; bottom: 0; left: 0; right: 0; background: #FFFFFF; padding: 24rpx 32rpx; padding-bottom: calc(24rpx + constant(safe-area-inset-bottom)); padding-bottom: calc(24rpx + env(safe-area-inset-bottom)); display: flex; align-items: center; justify-content: space-between; box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.06); z-index: 100; } .price-info { display: flex; align-items: baseline; } .total-label { font-size: 28rpx; color: #6B7280; } .total-price { font-size: 40rpx; color: #FF9B33; font-weight: 700; } .order-btn { background: linear-gradient(135deg, #FF9B33 0%, #FF8500 100%); color: #FFFFFF; font-size: 30rpx; font-weight: 600; padding: 24rpx 56rpx; border-radius: 40rpx; border: none; line-height: 1.5; } .order-btn::after { border: none; } /* 弹窗遮罩 */ .popup-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); z-index: 200; opacity: 0; visibility: hidden; transition: opacity 0.3s, visibility 0.3s; } .popup-mask.show { opacity: 1; visibility: visible; } /* 弹窗内容 */ .popup-content { position: fixed; left: 0; right: 0; bottom: 0; background: #FFFFFF; border-radius: 24rpx 24rpx 0 0; z-index: 201; transform: translateY(100%); transition: transform 0.3s ease-out; display: flex; flex-direction: column; max-height: 85vh; } .popup-content.show { transform: translateY(0); } .popup-header { display: flex; align-items: center; justify-content: center; padding: 32rpx; position: relative; border-bottom: 1rpx solid #F3F4F6; flex-shrink: 0; } .popup-title { font-size: 32rpx; font-weight: 600; color: #1F2937; } .popup-close { position: absolute; right: 32rpx; top: 50%; transform: translateY(-50%); color: #9CA3AF; } .popup-body { flex: 1; overflow-y: auto; padding: 32rpx; max-height: 60vh; width: auto; } /* 弹窗内服务信息 */ .order-service-info { display: flex; align-items: center; gap: 20rpx; padding-bottom: 24rpx; border-bottom: 1rpx solid #F3F4F6; margin-bottom: 24rpx; } .order-service-image { width: 120rpx; height: 120rpx; border-radius: 12rpx; flex-shrink: 0; } .order-service-text { flex: 1; } .order-service-title { display: block; font-size: 30rpx; font-weight: 600; color: #1F2937; margin-bottom: 12rpx; } .order-service-price { display: block; font-size: 32rpx; color: #FF9B33; font-weight: 700; } /* 表单行 */ .order-row { display: flex; align-items: center; justify-content: space-between; padding: 20rpx 0; border-bottom: 1rpx solid #F3F4F6; } .order-row.column { flex-direction: column; align-items: flex-start; gap: 16rpx; } .order-label { font-size: 28rpx; color: #374151; font-weight: 500; flex-shrink: 0; } .order-input { flex: 1; text-align: right; font-size: 28rpx; color: #1F2937; margin-left: 24rpx; } .input-placeholder { color: #9CA3AF; } .picker-value { font-size: 28rpx; color: #1F2937; } .picker-value.placeholder { color: #9CA3AF; } /* 数量控制 */ .quantity-control { display: flex; align-items: center; gap: 16rpx; } .quantity-btn { width: 52rpx; height: 52rpx; background: #F3F4F6; border-radius: 8rpx; display: flex; align-items: center; justify-content: center; font-size: 32rpx; color: #1F2937; font-weight: 600; } .quantity-btn.disabled { color: #CCCCCC; background: #F9FAFB; } .quantity-value { font-size: 30rpx; color: #1F2937; font-weight: 600; min-width: 40rpx; text-align: center; } /* 文本域 */ .order-textarea { width: 100%; height: 160rpx; background: #F9FAFB; border-radius: 12rpx; padding: 20rpx; font-size: 28rpx; color: #1F2937; box-sizing: border-box; } .textarea-count { font-size: 24rpx; color: #9CA3AF; align-self: flex-end; } /* 弹窗底部 */ .popup-footer { display: flex; align-items: center; justify-content: space-between; padding: 24rpx 32rpx; padding-bottom: calc(24rpx + constant(safe-area-inset-bottom)); padding-bottom: calc(24rpx + env(safe-area-inset-bottom)); border-top: 1rpx solid #F3F4F6; background: #FFFFFF; flex-shrink: 0; } .popup-price { display: flex; align-items: baseline; } .popup-price-label { font-size: 28rpx; color: #6B7280; } .popup-price-value { font-size: 40rpx; color: #FF9B33; font-weight: 700; } .popup-submit-btn { background: linear-gradient(135deg, #FF9B33 0%, #FF8500 100%); color: #FFFFFF; font-size: 30rpx; font-weight: 600; padding: 24rpx 56rpx; border-radius: 40rpx; border: none; line-height: 1.5; } .popup-submit-btn::after { border: none; }