.page { padding: 28rpx; padding-bottom: 180rpx; } .detail-page { display: grid; gap: 16rpx; } .custom-header { padding: 20rpx 4rpx 0; } .header-title { font-size: 44rpx; font-weight: 800; color: #0f172a; } /* Status banner */ .status-banner { border-radius: 20rpx; padding: 28rpx; text-align: center; } .status-banner.pending { background: linear-gradient(135deg, rgba(245, 158, 11, 0.08) 0%, rgba(245, 158, 11, 0.15) 100%); border: 1rpx solid rgba(245, 158, 11, 0.2); } .status-banner.accepted { background: linear-gradient(135deg, rgba(37, 99, 235, 0.08) 0%, rgba(37, 99, 235, 0.15) 100%); border: 1rpx solid rgba(37, 99, 235, 0.2); } .status-banner.picked_up { background: linear-gradient(135deg, rgba(37, 99, 235, 0.08) 0%, rgba(37, 99, 235, 0.15) 100%); border: 1rpx solid rgba(37, 99, 235, 0.2); } .status-banner.delivered { background: linear-gradient(135deg, rgba(16, 185, 129, 0.08) 0%, rgba(16, 185, 129, 0.15) 100%); border: 1rpx solid rgba(16, 185, 129, 0.2); } .status-text { font-size: 34rpx; font-weight: 800; } .status-banner.pending .status-text { color: #d97706; } .status-banner.accepted .status-text, .status-banner.picked_up .status-text { color: #2563eb; } .status-banner.delivered .status-text { color: #059669; } .status-hint { font-size: 24rpx; color: #64748b; margin-top: 6rpx; } /* Address card */ .addr-card { padding: 24rpx; } .addr-row { display: flex; gap: 16rpx; align-items: flex-start; } .addr-dot { width: 20rpx; height: 20rpx; border-radius: 50%; margin-top: 6rpx; flex-shrink: 0; } .addr-dot.pickup { background: #2563eb; } .addr-dot.delivery { background: #059669; } .addr-line { width: 2rpx; height: 24rpx; background: #e2e8f0; margin: 6rpx 0 6rpx 9rpx; } .addr-label { font-size: 22rpx; color: #94a3b8; font-weight: 600; } .addr-text { font-size: 28rpx; color: #0f172a; font-weight: 600; margin-top: 4rpx; line-height: 1.5; } /* Cargo card */ .cargo-card { padding: 20rpx 24rpx; } .cargo-row { display: flex; justify-content: space-between; align-items: center; padding: 12rpx 0; border-bottom: 1rpx solid #f1f5f9; } .cargo-row:last-child { border-bottom: none; } .cargo-label { font-size: 24rpx; color: #94a3b8; font-weight: 600; } .cargo-value { font-size: 26rpx; color: #0f172a; font-weight: 600; } .cargo-value.highlight { color: #2563eb; font-size: 30rpx; } /* Photo card */ .photo-card { padding: 24rpx; } .section-title { font-size: 26rpx; color: #64748b; font-weight: 600; margin-bottom: 16rpx; } .required { color: #ef4444; } .photo-grid { display: flex; gap: 16rpx; flex-wrap: wrap; } .photo-item { width: 160rpx; height: 160rpx; border-radius: 16rpx; overflow: hidden; position: relative; } .photo-img { width: 100%; height: 100%; } .photo-remove { position: absolute; top: 4rpx; right: 4rpx; width: 36rpx; height: 36rpx; line-height: 36rpx; text-align: center; border-radius: 50%; background: rgba(0, 0, 0, 0.5); color: #ffffff; font-size: 20rpx; } .photo-add { width: 160rpx; height: 160rpx; border-radius: 16rpx; border: 2rpx dashed #cbd5e1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8rpx; } .add-icon { font-size: 48rpx; color: #94a3b8; line-height: 1; } .add-text { font-size: 22rpx; color: #94a3b8; } /* Trace */ .trace-card { padding: 20rpx 24rpx; } .trace-header { margin-bottom: 12rpx; } .trace-row { display: flex; gap: 16rpx; padding: 10rpx 0; } .trace-dot { width: 12rpx; height: 12rpx; border-radius: 50%; background: #cbd5e1; margin-top: 8rpx; flex-shrink: 0; } .trace-content { flex: 1; } .trace-time { font-size: 22rpx; color: #94a3b8; } .trace-desc { font-size: 26rpx; color: #0f172a; margin-top: 2rpx; } /* Sticky bottom action bar */ .action-bar { position: fixed; left: 0; right: 0; bottom: 0; padding: 16rpx 28rpx; padding-bottom: calc(16rpx + env(safe-area-inset-bottom)); background: #ffffff; border-top: 1rpx solid #e5eaf1; box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.06); z-index: 100; display: flex; flex-direction: column; gap: 12rpx; } .remark-input { padding: 14rpx 20rpx; border: 1rpx solid #dbe3ee; border-radius: 14rpx; font-size: 26rpx; background: #f8fbff; } .action-btn { width: 100%; height: 96rpx; line-height: 96rpx; font-size: 32rpx; border-radius: 20rpx; font-weight: 700; } .done-bar { align-items: center; padding: 24rpx; } .done-label { font-size: 30rpx; font-weight: 700; color: #059669; } .message { color: #047857; padding: 20rpx 24rpx; } .empty-card { padding: 40rpx; text-align: center; } .page-subtitle { font-size: 26rpx; color: #64748b; }