body { background-color: #F8F8F8; } /* 自定义导航标题栏(因navigationStyle:custom) */ .custom-nav-bar { padding: 2.5rem 0.9375rem 0.625rem; background-color: #fff; display: flex; align-items: center; justify-content: center; } .nav-title { font-size: 1.0625rem; font-weight: bold; color: #333; } /* 吸顶容器:状态tab + 搜索 + 筛选 */ .sticky-header { position: -webkit-sticky; position: sticky; top: 0; z-index: 999; background-color: #F8F8F8; } .container { background-color: #F8F8F8; display: flex; flex-direction: column; position: absolute; top: 0; left: 0; right: 0; bottom: 0; } /* 状态 Tabs */ .status-tabs { display: flex; background-color: #fff; padding: 0 0.9375rem; justify-content: space-between; } .tab-item { position: relative; padding: 0.625rem 0; font-size: 0.8125rem; color: #666; font-weight: 500; } .tab-item.active { color: #FF5722; font-weight: bold; } .indicator { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 1.25rem; height: 0.1875rem; background-color: #FF5722; border-radius: 0.09375rem; } /* 搜索栏 */ .search-bar { padding: 0.3125rem 0.9375rem; background-color: #fff; } .search-input-box { display: flex; align-items: center; background-color: #F8F8F8; height: 2rem; border-radius: 1rem; padding: 0 0.9375rem; } .search-input { flex: 1; font-size: 0.8125rem; color: #333; padding-left: 0.625rem; /* Give some left padding since icon is gone */ } .ph-style { font-size: 0.8125rem; color: #999; } /* 筛选栏 (改用 wrapper 进行相对定位) */ .filter-wrapper { position: relative; z-index: 998; } .filter-bar { display: flex; background-color: #fff; padding: 0.15625rem 0.9375rem 0.3125rem 0.9375rem; justify-content: space-between; position: relative; z-index: 998; } .filter-item { width: 48%; display: flex; align-items: center; justify-content: center; font-size: 0.8125rem; color: #666; background-color: #F8F8F8; height: 1.75rem; border-radius: 0.375rem; transition: all 0.2s; } .filter-item.active { background-color: #FFF3E0; } .active-text { color: #FF5722; /* Matches red triangle */ font-weight: 500; } .triangle { width: 0; height: 0; border-left: 0.25rem solid transparent; border-right: 0.25rem solid transparent; margin-left: 0.3125rem; transition: all 0.2s; } .triangle.down { border-top: 0.3125rem solid #dcdcdc; } .filter-item.active .triangle.down, .active-text+.triangle.down { border-top-color: #FF5722; } .triangle.up { border-bottom: 0.3125rem solid #FF5722; } /* 下拉面板 */ .dropdown-mask { position: absolute; top: 100%; left: 0; right: 0; height: 100vh; background-color: rgba(0, 0, 0, 0.4); z-index: 80; } .dropdown-panel { position: absolute; top: 100%; left: 0; right: 0; background-color: #fff; z-index: 90; border-radius: 0 0 0.625rem 0.625rem; box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.05); overflow: hidden; } .type-option { padding: 0.9375rem 1.25rem; font-size: 0.875rem; color: #333; border-bottom: 1px solid #f5f5f5; } .type-option:last-child { border-bottom: none; } .type-option.selected uni-text { color: #FF5722; font-weight: bold; } .calendar-panel { padding-bottom: 0.9375rem; } /* Custom Calendar Styles */ .custom-calendar-container { padding: 0.625rem 0.9375rem 0; } .cal-header { display: flex; justify-content: space-between; align-items: center; padding: 0.625rem 0; } .cal-title { font-size: 1rem; font-weight: bold; color: #333; } .cal-weekdays { display: flex; justify-content: space-around; padding: 0.625rem 0; border-bottom: 1px solid #f5f5f5; } .wk-item { font-size: 0.75rem; color: #999; width: 14.28%; text-align: center; } .cal-body { display: flex; flex-wrap: wrap; padding-top: 0.625rem; } .cal-day-box { width: 14.28%; height: 2.5rem; display: flex; align-items: center; justify-content: center; margin-bottom: 0.3125rem; position: relative; } .cal-day-text { width: 2rem; height: 2rem; line-height: 2rem; text-align: center; font-size: 0.875rem; color: #333; border-radius: 0.25rem; position: relative; z-index: 2; } /* Range styles matching Figure 2 */ .cal-day-box.is-start .cal-day-text, .cal-day-box.is-end .cal-day-text { background-color: #FF5722; color: #fff; font-weight: bold; } .cal-day-box.is-start::after { content: ''; position: absolute; right: 0; top: 0.25rem; bottom: 0.25rem; width: 50%; background-color: #FFF3E0; z-index: 1; } .cal-day-box.is-end::after { content: ''; position: absolute; left: 0; top: 0.25rem; bottom: 0.25rem; width: 50%; background-color: #FFF3E0; z-index: 1; } .cal-day-box.is-start.is-end::after { display: none; /* No range background if same day */ } .cal-day-box.is-between { background-color: #FFF3E0; /* reduce height slightly to match design */ margin-top: 0.25rem; height: 2rem; margin-bottom: 0.5625rem; } .cal-day-box.is-between .cal-day-text { color: #FF5722; } .calendar-actions { display: flex; justify-content: space-between; padding: 0 0.9375rem; margin-top: 0.625rem; } .cal-btn { width: 48%; height: 2.1875rem; line-height: 2.1875rem; text-align: center; border-radius: 0.3125rem; font-size: 0.875rem; margin: 0; } .cal-btn.reset { background-color: #f5f5f5; color: #666; } .cal-btn.confirm { background-color: #FF5722; color: #fff; } /* 订单列表 */ .order-list { padding: 0 0.9375rem; width: 100%; box-sizing: border-box; } .order-card { background-color: #fff; border-radius: 0.75rem; padding: 0.625rem 0.625rem; margin-bottom: 0.625rem; box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.03); } .order-card:first-child { margin-top: 0.625rem; } .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.46875rem; } .type-badge { display: flex; align-items: center; } .type-icon { width: 1.375rem; height: 1.375rem; margin-right: 0.46875rem; background-color: #FFF3E0; border-radius: 50%; padding: 0.1875rem; box-sizing: border-box; } .type-text { font-size: 0.9375rem; font-weight: bold; color: #333; } .status-badge { font-size: 0.875rem; } .status-badge.highlight { color: #FF5722; } .status-badge.processing { color: #2196F3; } .status-badge.finish { color: #4CAF50; } .status-badge.reject { color: #9E9E9E; } .time-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.78125rem; } .time-row .time-col { display: flex; align-items: center; font-size: 0.8125rem; color: #333; } .time-row .label { color: #666; margin-right: 0.3125rem; } .price { font-size: 1.125rem; font-weight: bold; color: #FF5722; } /* 宠物卡片 */ .pet-card { background-color: #FFF8F0; border-radius: 0.5rem; padding: 0.46875rem 0.625rem; display: flex; align-items: center; margin-bottom: 0.625rem; } .pet-avatar { width: 2.5rem; height: 2.5rem; border-radius: 50%; margin-right: 0.625rem; } .pet-info { flex: 1; display: flex; flex-direction: column; } .pet-name { font-size: 0.875rem; font-weight: bold; color: #333; margin-bottom: 0.15625rem; } .pet-breed { font-size: 0.75rem; color: #999; } .pet-profile-btn { font-size: 0.75rem; color: #FF9800; border: 1px solid #FF9800; padding: 0.1875rem 0.625rem; border-radius: 1.5625rem; background-color: #fff; } /* 路线信息 (复用) */ .route-info { margin-bottom: 0.78125rem; } .route-item { display: flex; align-items: flex-start; padding-bottom: 0.375rem; /* Radically reduced for compactness */ position: relative; width: 100%; } /* 路线项底部的间隔 */ .route-item:not(:last-child) { margin-bottom: 0.15625rem; /* Radically reduced for compactness */ } .route-item:last-child { padding-bottom: 0; margin-bottom: 0; } .route-line-vertical { position: absolute; left: 0.59375rem; top: 1.4375rem; bottom: -0.46875rem; /* Adjusted to connect the now-closer nodes */ border-left: 0.0625rem dashed #E0E0E0; width: 0; z-index: 0; } .icon-circle { width: 1.25rem; height: 1.25rem; border-radius: 50%; color: #fff; font-size: 0.6875rem; display: flex; align-items: center; justify-content: center; margin-right: 0.625rem; flex-shrink: 0; font-weight: bold; margin-top: 0.1875rem; position: relative; z-index: 1; } .icon-circle.service { background-color: #81C784; } .icon-circle.start { background-color: #FFB74D; } .icon-circle.end { background-color: #81C784; } .address-box { flex: 1; display: flex; flex-direction: column; margin-right: 0.625rem; } .addr-title { font-size: 0.875rem; font-weight: bold; color: #333; margin-bottom: 0.125rem; } .addr-desc { font-size: 0.75rem; color: #999; line-height: 1.4; } .distance-tag { display: flex; align-items: center; justify-content: flex-end; flex-shrink: 0; min-width: 2.5rem; } .distance-text { font-size: 0.75rem; color: #FF5722; margin-right: 0.46875rem; font-weight: 500; } .nav-icon-circle { width: 1.5rem; height: 1.5rem; background-color: #FFF3E0; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .nav-arrow { width: 0.75rem; height: 0.75rem; } .service-content { margin-top: -0.3125rem; /* Shifted up using negative margin for max compactness */ font-size: 0.75rem; color: #666; padding-left: 1.875rem; } .content-label { color: #999; margin-right: 0.3125rem; } /* 备注 */ .remark-box { background-color: #F8F8F8; padding: 0.46875rem 0.625rem; border-radius: 0.25rem; font-size: 0.8125rem; color: #666; margin-bottom: 0.9375rem; } /* 底部按钮 */ .action-btns { display: flex; justify-content: space-between; margin-top: 0.46875rem; } .action-left { display: flex; } .action-right { display: flex; } .btn { height: 1.875rem; line-height: 1.875rem; border-radius: 0.9375rem; font-size: 0.8125rem; padding: 0 0.9375rem; margin: 0; } .action-right .btn:not(:last-child) { margin-right: 0.625rem; } .btn::after { border: none; } .btn.normal { background-color: #F8F8F8; color: #666; border: none; } .btn.primary { background: linear-gradient(90deg, #FF9800 0%, #FF5722 100%); color: #fff; box-shadow: 0 0.125rem 0.375rem rgba(255, 87, 34, 0.2); border: none; } /* 宠物档案弹窗 */ .pet-modal-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.4); z-index: 1000; display: flex; align-items: center; justify-content: center; } .pet-modal-content { width: 21.25rem; height: 85vh; background-color: #fff; border-radius: 0.625rem; display: flex; flex-direction: column; overflow: hidden; } .pet-modal-header { display: flex; align-items: center; justify-content: space-between; padding: 0.9375rem; border-bottom: 0.03125rem solid #F0F0F0; } .pet-modal-title { font-size: 1.0625rem; font-weight: bold; color: #333; } .pet-modal-scroll { flex: 1; height: 0; padding: 0.9375rem; box-sizing: border-box; } .pet-base-info { display: flex; align-items: center; margin-bottom: 1.25rem; } .pm-avatar { width: 3.75rem; height: 3.75rem; border-radius: 50%; margin-right: 0.9375rem; border: 0.0625rem solid #f5f5f5; } .pm-info-text { flex: 1; display: flex; flex-direction: column; } .pm-name-row { display: flex; align-items: center; margin-bottom: 0.46875rem; } .pm-name { font-size: 1.125rem; font-weight: bold; color: #333; margin-right: 0.625rem; } .pm-gender { display: flex; align-items: center; background-color: #E3F2FD; padding: 0.125rem 0.375rem; border-radius: 0.625rem; } .pm-gender uni-text { font-size: 0.6875rem; color: #1E88E5; } .pm-gender .gender-icon { font-weight: bold; margin-right: 0.125rem; } .pm-gender.female { background-color: #FCE4EC; } .pm-gender.female uni-text { color: #D81B60; } .pm-breed { font-size: 0.8125rem; color: #999; } .pm-detail-grid { display: flex; flex-wrap: wrap; justify-content: space-between; } .pm-grid-item { background-color: #F8F8F8; border-radius: 0.5rem; padding: 0.75rem; margin-bottom: 0.625rem; display: flex; flex-direction: column; } .pm-grid-item.half { width: 48%; box-sizing: border-box; } .pm-grid-item.full { width: 100%; box-sizing: border-box; } .pm-label { font-size: 0.75rem; color: #999; margin-bottom: 0.3125rem; } .pm-val { font-size: 0.875rem; color: #333; font-weight: 500; } .pm-tags { display: flex; flex-wrap: wrap; gap: 0.625rem; margin-bottom: 1.25rem; } .pm-tag { background-color: #FFF8EB; border: 0.0625rem solid #FFCC80; color: #FF9800; font-size: 0.6875rem; padding: 0.25rem 0.75rem; border-radius: 0.9375rem; } .pm-section-title { display: flex; align-items: center; margin-bottom: 0.9375rem; padding-top: 0.9375rem; border-top: 0.0625rem dashed #F0F0F0; } .pm-section-title .orange-bar { width: 0.25rem; height: 1rem; background-color: #FF9800; margin-right: 0.5rem; border-radius: 0.125rem; } .pm-section-title uni-text { font-size: 0.9375rem; font-weight: bold; color: #333; } .pm-log-list { display: flex; flex-direction: column; } .pm-log-item { display: flex; flex-direction: column; padding: 0.75rem 0; border-bottom: 0.03125rem solid #F0F0F0; } .pm-log-item:last-child { border-bottom: none; } .pm-log-date { font-size: 0.75rem; color: #999; margin-bottom: 0.5rem; } .pm-log-text { font-size: 0.875rem; color: #333; line-height: 1.6; margin-bottom: 0.625rem; } .pm-log-recorder { font-size: 0.75rem; color: #FF9800; align-self: flex-end; } .pm-bottom-close { width: 100%; height: 2.5rem; line-height: 2.5rem; background-color: #F5F5F5; color: #666; border-radius: 1.25rem; font-size: 0.9375rem; font-weight: bold; margin: 0; } .pm-bottom-close::after { border: none; } .close-icon-btn { font-size: 1.5rem; color: #999; line-height: 1; padding: 0 0.3125rem; } /* 地图导航 Action Sheet */ .nav-modal-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); z-index: 1000; display: flex; flex-direction: column; justify-content: flex-end; } .nav-action-sheet { background-color: #fff; width: 100%; border-top-left-radius: 0.75rem; border-top-right-radius: 0.75rem; overflow: hidden; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } .nav-sheet-title { text-align: center; padding: 0.9375rem 0; font-size: 13px; color: #999; border-bottom: 0.03125rem solid #efefef; } .nav-sheet-item { text-align: center; padding: 0.9375rem 0; font-size: 13px; color: #333; background-color: #fff; border-bottom: 0.03125rem solid #efefef; } .nav-sheet-item.cancel { border-bottom: none; color: #666; } .nav-sheet-gap { height: 0.5rem; background-color: #F8F8F8; } /* 订单列表:填满剩余高度,实现只有列表内容滚动 */ .order-list { flex: 1; overflow-y: auto; width: 100%; padding: 0 0.9375rem; box-sizing: border-box; } .loading-text { text-align: center; font-size: 0.75rem; color: #999; padding: 0.9375rem 0; } /* 宠物档案弹窗头部操作区(备注按钮 + 关闭) */ .pm-header-actions { display: flex; align-items: center; gap: 0.5rem; } .pm-remark-btn { font-size: 0.75rem; color: #fff; background-color: #FF9800; padding: 0.1875rem 0.5625rem; border-radius: 0.625rem; } /* 备注输入遮罩与弹窗(图2居中样式) */ .remark-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); z-index: 3000; display: flex; align-items: center; justify-content: center; } .remark-sheet { width: 18.75rem; background-color: #fff; border-radius: 0.75rem; padding: 1.25rem; box-sizing: border-box; display: flex; flex-direction: column; align-items: center; } .remark-sheet-header { width: 100%; text-align: center; margin-bottom: 0.9375rem; position: relative; } .remark-sheet-header .close-icon-btn { position: absolute; right: 0; top: 50%; transform: translateY(-50%); } .remark-sheet-title { font-size: 1rem; font-weight: bold; color: #333; } .remark-textarea { width: 100%; height: 5rem; border: 0.03125rem solid #eee; border-radius: 0.375rem; padding: 0.625rem; font-size: 0.875rem; color: #333; box-sizing: border-box; margin-bottom: 1.25rem; } .remark-submit-btn { width: 100%; background-color: #FF5722; color: #fff; font-size: 1rem; font-weight: bold; text-align: center; padding: 0.75rem 0; border-radius: 0.5rem; } /* 一键拨号下拉面板 */ .action-left { position: relative; z-index: 10; } .action-left .btn.normal { font-size: 0.8125rem; } .call-popover { position: absolute; top: calc(100% + 0.3125rem); left: 0; background-color: #fff; border-radius: 0.375rem; box-shadow: 0 0.125rem 0.625rem rgba(0, 0, 0, 0.1); z-index: 999; display: flex; flex-direction: column; width: 6.25rem; } .call-pop-item { font-size: 0.8125rem; color: #333; text-align: center; padding: 0.75rem 0; border-bottom: 0.03125rem solid #eee; } .call-pop-item:last-child { border-bottom: none; } .call-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 900; background: transparent; }