detail.css 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194
  1. /* 页面背景 */
  2. body {
  3. background-color: #F8F8F8;
  4. }
  5. .detail-container {
  6. padding-bottom: 6.25rem;
  7. }
  8. /* 顶部动态状态区 */
  9. .detail-header {
  10. background: linear-gradient(135deg, #FF9800 0%, #FF5722 100%);
  11. padding: 1.25rem 1.25rem 1.5625rem 1.25rem;
  12. color: #fff;
  13. border-radius: 0.625rem;
  14. margin: 0.9375rem 0.9375rem 0.78125rem 0.9375rem;
  15. box-shadow: 0 0.15625rem 0.46875rem rgba(255, 87, 34, 0.2);
  16. }
  17. .status-row {
  18. display: flex;
  19. justify-content: space-between;
  20. align-items: center;
  21. margin-bottom: 1.25rem;
  22. }
  23. .status-title {
  24. font-size: 0.875rem;
  25. font-weight: bold;
  26. }
  27. .status-price {
  28. font-size: 1.25rem;
  29. font-weight: bold;
  30. }
  31. /* 进度条 */
  32. .progress-bar {
  33. display: flex;
  34. justify-content: space-between;
  35. align-items: flex-start;
  36. padding: 0 0.3125rem;
  37. }
  38. .step-item {
  39. display: flex;
  40. flex-direction: column;
  41. align-items: center;
  42. flex: 1;
  43. position: relative;
  44. opacity: 0.6;
  45. }
  46. .step-item.active {
  47. opacity: 1;
  48. }
  49. .step-circle-wrapper {
  50. position: relative;
  51. width: 100%;
  52. display: flex;
  53. justify-content: center;
  54. margin-bottom: 0.3125rem;
  55. }
  56. .step-circle {
  57. width: 1.25rem;
  58. height: 1.25rem;
  59. border-radius: 50%;
  60. background-color: rgba(255, 255, 255, 0.3);
  61. color: #fff;
  62. font-size: 0.625rem;
  63. display: flex;
  64. justify-content: center;
  65. align-items: center;
  66. position: relative;
  67. z-index: 2;
  68. }
  69. .step-item.active .step-circle {
  70. background-color: #fff;
  71. color: #FF5722;
  72. font-weight: bold;
  73. }
  74. .step-line {
  75. position: absolute;
  76. top: 50%;
  77. right: calc(50% + 0.625rem);
  78. width: calc(100% - 1.25rem);
  79. height: 0.0625rem;
  80. background-color: rgba(255, 255, 255, 0.3);
  81. z-index: 1;
  82. transform: translateY(-50%);
  83. }
  84. .step-line.active-line {
  85. background-color: #fff;
  86. }
  87. .step-text {
  88. font-size: 0.75rem;
  89. }
  90. /* 内容区通用卡片 */
  91. .detail-content {
  92. width: 100%;
  93. box-sizing: border-box;
  94. padding: 0 0.9375rem;
  95. position: relative;
  96. z-index: 10;
  97. }
  98. .white-card {
  99. background-color: #fff;
  100. border-radius: 0.625rem;
  101. padding: 0.9375rem;
  102. margin-bottom: 0.78125rem;
  103. box-shadow: 0 0.15625rem 0.625rem rgba(0, 0, 0, 0.03);
  104. }
  105. /* 宠物信息条 */
  106. .pet-bar {
  107. display: flex;
  108. align-items: center;
  109. }
  110. .pb-avatar {
  111. width: 3.125rem;
  112. height: 3.125rem;
  113. border-radius: 50%;
  114. margin-right: 0.625rem;
  115. }
  116. .pb-info {
  117. flex: 1;
  118. display: flex;
  119. flex-direction: column;
  120. }
  121. .pb-name-row {
  122. margin-bottom: 0.3125rem;
  123. }
  124. .pb-name {
  125. font-size: 1rem;
  126. font-weight: bold;
  127. color: #333;
  128. margin-right: 0.46875rem;
  129. }
  130. .pb-breed {
  131. font-size: 0.8125rem;
  132. color: #999;
  133. }
  134. .pb-tags {
  135. display: flex;
  136. }
  137. .pb-tag {
  138. background-color: #FFF3E0;
  139. color: #FF9800;
  140. font-size: 0.6875rem;
  141. padding: 0.125rem 0.5rem;
  142. border-radius: 0.25rem;
  143. }
  144. .pb-actions {
  145. display: flex;
  146. align-items: center;
  147. }
  148. .pb-btn {
  149. display: flex;
  150. align-items: center;
  151. justify-content: center;
  152. }
  153. .profile-btn {
  154. border: 0.0625rem solid #FF9800;
  155. color: #FF9800;
  156. font-size: 0.75rem;
  157. padding: 0.25rem 0.625rem;
  158. border-radius: 0.9375rem;
  159. margin-right: 0.625rem;
  160. }
  161. .phone-btn {
  162. width: 1.875rem;
  163. height: 1.875rem;
  164. border-radius: 50%;
  165. background-color: #FFF3E0;
  166. }
  167. .phone-icon {
  168. width: 1rem;
  169. height: 1rem;
  170. }
  171. /* 服务及路线信息 */
  172. .si-row {
  173. display: flex;
  174. align-items: flex-start;
  175. margin-bottom: 0.9375rem;
  176. }
  177. .si-row:last-child {
  178. margin-bottom: 0;
  179. }
  180. .si-icon {
  181. width: 1.125rem;
  182. height: 1.125rem;
  183. margin-right: 0.625rem;
  184. margin-top: 0.125rem;
  185. }
  186. .si-icon-uni {
  187. margin-right: 0.625rem;
  188. margin-top: 0.125rem;
  189. display: flex;
  190. align-items: center;
  191. justify-content: center;
  192. }
  193. .si-content {
  194. flex: 1;
  195. display: flex;
  196. flex-direction: column;
  197. }
  198. .si-label {
  199. font-size: 0.75rem;
  200. color: #999;
  201. margin-bottom: 0.1875rem;
  202. }
  203. .icon-bg {
  204. width: 1.375rem;
  205. height: 1.375rem;
  206. border-radius: 0.25rem;
  207. display: flex;
  208. justify-content: center;
  209. align-items: center;
  210. margin-right: 0.625rem;
  211. margin-top: 0.125rem;
  212. flex-shrink: 0;
  213. }
  214. .icon-bg.grey-bg {
  215. background-color: #F8F8F8;
  216. }
  217. .custom-icon {
  218. width: 0.875rem;
  219. height: 0.875rem;
  220. }
  221. .custom-icon-file {
  222. width: 1.125rem;
  223. height: 1.125rem;
  224. }
  225. .si-val {
  226. font-size: 0.875rem;
  227. color: #333;
  228. }
  229. .record-btn {
  230. font-size: 0.75rem;
  231. color: #FF5722;
  232. display: flex;
  233. align-items: center;
  234. }
  235. .record-arrow {
  236. width: 0.75rem;
  237. height: 0.75rem;
  238. margin-left: 0.1875rem;
  239. }
  240. /* 地址展现复用图标逻辑 */
  241. .addr-row {
  242. position: relative;
  243. align-items: stretch;
  244. }
  245. .icon-circle {
  246. width: 1.25rem;
  247. height: 1.25rem;
  248. border-radius: 50%;
  249. color: #fff;
  250. font-size: 0.6875rem;
  251. display: flex;
  252. align-items: center;
  253. justify-content: center;
  254. margin-right: 0.625rem;
  255. flex-shrink: 0;
  256. font-weight: bold;
  257. margin-top: 0.1875rem;
  258. position: relative;
  259. z-index: 1;
  260. }
  261. .icon-circle.start {
  262. background-color: #FFB74D;
  263. }
  264. .icon-circle.end {
  265. background-color: #81C784;
  266. }
  267. .icon-circle.service {
  268. background-color: #81C784;
  269. }
  270. .route-line-vertical {
  271. position: absolute;
  272. left: 0.59375rem;
  273. top: 1.4375rem;
  274. bottom: -0.1875rem;
  275. border-left: 0.0625rem dashed #E0E0E0;
  276. width: 0;
  277. z-index: 0;
  278. }
  279. .si-addr-title {
  280. font-size: 0.9375rem;
  281. font-weight: bold;
  282. color: #333;
  283. margin-bottom: 0.1875rem;
  284. }
  285. .si-addr-desc {
  286. font-size: 0.75rem;
  287. color: #999;
  288. }
  289. .nav-btn-circle {
  290. width: 1.5625rem;
  291. height: 1.5625rem;
  292. background-color: #FFF3E0;
  293. border-radius: 50%;
  294. display: flex;
  295. align-items: center;
  296. justify-content: center;
  297. margin-top: 0.1875rem;
  298. }
  299. .nav-arrow {
  300. width: 0.875rem;
  301. height: 0.875rem;
  302. }
  303. /* 打卡任务区 */
  304. .task-card {
  305. display: flex;
  306. flex-direction: column;
  307. }
  308. .tc-title {
  309. font-size: 0.9375rem;
  310. font-weight: bold;
  311. color: #333;
  312. margin-bottom: 0.46875rem;
  313. }
  314. .tc-desc {
  315. font-size: 0.6875rem;
  316. color: #666;
  317. margin-bottom: 0.375rem;
  318. }
  319. .media-grid {
  320. display: flex;
  321. flex-wrap: wrap;
  322. gap: 0.625rem;
  323. margin-bottom: 0.625rem;
  324. }
  325. .media-item {
  326. width: 5rem;
  327. height: 5rem;
  328. position: relative;
  329. border-radius: 0.375rem;
  330. }
  331. .media-preview {
  332. width: 100%;
  333. height: 100%;
  334. border-radius: 0.375rem;
  335. }
  336. .media-del {
  337. position: absolute;
  338. top: -0.3125rem;
  339. right: -0.3125rem;
  340. width: 1.125rem;
  341. height: 1.125rem;
  342. background-color: rgba(0, 0, 0, 0.5);
  343. color: #fff;
  344. border-radius: 50%;
  345. display: flex;
  346. align-items: center;
  347. justify-content: center;
  348. font-size: 0.75rem;
  349. z-index: 2;
  350. }
  351. .media-add {
  352. width: 5rem;
  353. height: 5rem;
  354. border: 0.0625rem dashed #ccc;
  355. border-radius: 0.375rem;
  356. display: flex;
  357. flex-direction: column;
  358. align-items: center;
  359. justify-content: center;
  360. background-color: #FAFAFA;
  361. box-sizing: border-box;
  362. }
  363. .upload-icon-small {
  364. width: 1.25rem;
  365. height: 1.25rem;
  366. margin-bottom: 0.3125rem;
  367. }
  368. .upload-text-small {
  369. font-size: 0.6875rem;
  370. color: #999;
  371. }
  372. .full-media-add {
  373. width: 100%;
  374. height: 4.375rem;
  375. background-color: #FAFAFA;
  376. border: 0.0625rem dashed #E0E0E0;
  377. border-radius: 0.375rem;
  378. display: flex;
  379. flex-direction: column;
  380. justify-content: center;
  381. align-items: center;
  382. margin-top: 0.3125rem;
  383. }
  384. .upload-icon-large {
  385. width: 1.5625rem;
  386. height: 1.5625rem;
  387. margin-bottom: 0.3125rem;
  388. opacity: 0.5;
  389. }
  390. .upload-text-large {
  391. font-size: 0.75rem;
  392. color: #999;
  393. }
  394. /* 基础信息区 */
  395. .bi-row {
  396. display: flex;
  397. align-items: flex-start;
  398. margin-bottom: 0.78125rem;
  399. }
  400. .bi-row:last-child {
  401. margin-bottom: 0;
  402. }
  403. .bi-icon {
  404. width: 1rem;
  405. height: 1rem;
  406. margin-right: 0.625rem;
  407. margin-top: 0.125rem;
  408. }
  409. .bi-icon-uni {
  410. margin-right: 0.625rem;
  411. margin-top: 0.125rem;
  412. display: flex;
  413. align-items: center;
  414. justify-content: center;
  415. }
  416. .bi-content {
  417. flex: 1;
  418. display: flex;
  419. flex-direction: column;
  420. }
  421. .bi-label {
  422. font-size: 0.75rem;
  423. color: #999;
  424. margin-bottom: 0.1875rem;
  425. }
  426. .bi-val-row {
  427. display: flex;
  428. align-items: center;
  429. }
  430. .bi-val {
  431. font-size: 0.875rem;
  432. color: #333;
  433. }
  434. .bi-copy {
  435. background-color: #F0F0F0;
  436. color: #666;
  437. font-size: 0.625rem;
  438. padding: 0.0625rem 0.3125rem;
  439. border-radius: 0.1875rem;
  440. margin-left: 0.46875rem;
  441. }
  442. /* 订单进度 */
  443. .tl-title-row {
  444. display: flex;
  445. align-items: center;
  446. margin-bottom: 0.9375rem;
  447. }
  448. .orange-bar {
  449. width: 0.25rem;
  450. height: 1rem;
  451. background-color: #FF9800;
  452. margin-right: 0.5rem;
  453. border-radius: 0.125rem;
  454. }
  455. .tl-title {
  456. font-size: 0.9375rem;
  457. font-weight: bold;
  458. color: #333;
  459. }
  460. .tl-list {
  461. display: flex;
  462. flex-direction: column;
  463. padding-left: 0.3125rem;
  464. }
  465. .tl-item {
  466. display: flex;
  467. position: relative;
  468. padding-bottom: 1.25rem;
  469. }
  470. .tl-item:last-child {
  471. padding-bottom: 0;
  472. }
  473. .tl-marker {
  474. width: 0.5rem;
  475. height: 0.5rem;
  476. border-radius: 50%;
  477. background-color: #E0E0E0;
  478. position: absolute;
  479. left: 0;
  480. top: 0.1875rem;
  481. z-index: 2;
  482. display: flex;
  483. justify-content: center;
  484. align-items: center;
  485. }
  486. .tl-marker.active {
  487. background-color: #fff;
  488. border: 0.09375rem solid #FF9800;
  489. width: 0.5625rem;
  490. height: 0.5625rem;
  491. left: -0.03125rem;
  492. /* offset for border width */
  493. }
  494. .tl-dot-inner {
  495. width: 0.3125rem;
  496. height: 0.3125rem;
  497. border-radius: 50%;
  498. background-color: #FF9800;
  499. }
  500. .tl-item:not(:last-child)::after {
  501. content: '';
  502. position: absolute;
  503. left: 0.21875rem;
  504. top: 0.75rem;
  505. bottom: -0.1875rem;
  506. width: 0.0625rem;
  507. background-color: #FFE0B2;
  508. z-index: 1;
  509. }
  510. .tl-content-row {
  511. margin-left: 1.25rem;
  512. display: flex;
  513. flex-direction: column;
  514. width: 100%;
  515. }
  516. .tl-header {
  517. display: flex;
  518. justify-content: space-between;
  519. align-items: center;
  520. width: 100%;
  521. margin-bottom: 0.3125rem;
  522. }
  523. .tl-status {
  524. font-size: 0.875rem;
  525. color: #333;
  526. font-weight: 500;
  527. }
  528. .tl-time {
  529. font-size: 0.75rem;
  530. color: #999;
  531. }
  532. .tl-medias {
  533. display: flex;
  534. flex-wrap: wrap;
  535. gap: 0.46875rem;
  536. margin-bottom: 0.46875rem;
  537. }
  538. .tl-img {
  539. width: 4.375rem;
  540. height: 4.375rem;
  541. border-radius: 0.25rem;
  542. }
  543. .tl-remark {
  544. font-size: 0.75rem;
  545. color: #666;
  546. background-color: #F9F9F9;
  547. padding: 0.46875rem;
  548. border-radius: 0.25rem;
  549. line-height: 1.5;
  550. }
  551. /* 底部操作栏 */
  552. .bottom-action-bar {
  553. position: fixed;
  554. bottom: 0;
  555. left: 0;
  556. width: 100%;
  557. height: 3.75rem;
  558. background-color: #fff;
  559. display: flex;
  560. align-items: center;
  561. justify-content: space-between;
  562. padding: 0 0.9375rem;
  563. box-shadow: 0 -0.15625rem 0.625rem rgba(0, 0, 0, 0.05);
  564. box-sizing: border-box;
  565. padding-bottom: constant(safe-area-inset-bottom);
  566. padding-bottom: env(safe-area-inset-bottom);
  567. z-index: 100;
  568. }
  569. .action-left,
  570. .action-right {
  571. display: flex;
  572. align-items: center;
  573. }
  574. .action-btn {
  575. height: 2rem;
  576. line-height: 2rem;
  577. border-radius: 1rem;
  578. font-size: 0.8125rem;
  579. padding: 0 1.09375rem;
  580. margin: 0;
  581. }
  582. .action-left .action-btn:first-child {
  583. margin-right: 0.625rem;
  584. }
  585. .action-btn.grey-outline {
  586. background-color: #fff;
  587. color: #666;
  588. border: 1px solid #E0E0E0;
  589. }
  590. .action-btn.orange-outline {
  591. background-color: #FFF8F0;
  592. color: #FF9800;
  593. border: 1px solid #FF9800;
  594. }
  595. .action-btn.primary {
  596. background: linear-gradient(90deg, #FF9800 0%, #FF5722 100%);
  597. color: #fff;
  598. box-shadow: 0 0.125rem 0.375rem rgba(255, 87, 34, 0.2);
  599. border: none;
  600. }
  601. .action-btn.grey-bg {
  602. background: #E0E0E0;
  603. color: #999;
  604. box-shadow: none;
  605. border: none;
  606. }
  607. .action-btn::after {
  608. border: none;
  609. }
  610. /* 上传图片视频弹窗 */
  611. .upload-modal-mask {
  612. position: fixed;
  613. top: 0;
  614. left: 0;
  615. width: 100%;
  616. height: 100%;
  617. background-color: rgba(0, 0, 0, 0.4);
  618. z-index: 999;
  619. display: flex;
  620. justify-content: center;
  621. align-items: center;
  622. }
  623. .upload-modal-content {
  624. width: 18.75rem;
  625. background-color: #ffffff;
  626. border-radius: 0.625rem;
  627. padding: 1.25rem;
  628. box-sizing: border-box;
  629. display: flex;
  630. flex-direction: column;
  631. }
  632. .um-header {
  633. text-align: center;
  634. margin-bottom: 1.25rem;
  635. }
  636. .um-title {
  637. font-size: 1rem;
  638. font-weight: bold;
  639. color: #333;
  640. }
  641. .um-grid {
  642. display: flex;
  643. flex-wrap: wrap;
  644. margin-bottom: 0.9375rem;
  645. }
  646. .um-item {
  647. width: 4.0625rem;
  648. height: 4.0625rem;
  649. border-radius: 0.25rem;
  650. margin-right: 0.625rem;
  651. margin-bottom: 0.625rem;
  652. position: relative;
  653. background-color: #f5f5f5;
  654. overflow: hidden;
  655. }
  656. .um-item:nth-child(4n) {
  657. margin-right: 0;
  658. }
  659. .um-preview {
  660. width: 100%;
  661. height: 100%;
  662. }
  663. .um-del {
  664. position: absolute;
  665. top: 0.125rem;
  666. right: 0.125rem;
  667. width: 1.125rem;
  668. height: 1.125rem;
  669. line-height: 1rem;
  670. text-align: center;
  671. background-color: rgba(0, 0, 0, 0.5);
  672. color: #fff;
  673. border-radius: 50%;
  674. font-size: 0.875rem;
  675. }
  676. .um-add {
  677. width: 4.0625rem;
  678. height: 4.0625rem;
  679. border-radius: 0.25rem;
  680. border: 1px dashed #e5e5e5;
  681. display: flex;
  682. flex-direction: column;
  683. justify-content: center;
  684. align-items: center;
  685. box-sizing: border-box;
  686. margin-bottom: 0.625rem;
  687. }
  688. .um-add-icon {
  689. width: 1.375rem;
  690. height: 1.375rem;
  691. margin-bottom: 0.3125rem;
  692. opacity: 0.4;
  693. }
  694. .um-add-text {
  695. font-size: 0.75rem;
  696. color: #ccc;
  697. }
  698. .um-textarea {
  699. width: 100%;
  700. height: 5rem;
  701. background-color: #ffffff;
  702. border-radius: 0.375rem;
  703. padding: 0.75rem;
  704. font-size: 0.875rem;
  705. color: #333;
  706. box-sizing: border-box;
  707. border: 1px solid #f0f0f0;
  708. }
  709. .um-footer {
  710. margin-top: 1.25rem;
  711. display: flex;
  712. justify-content: center;
  713. }
  714. .um-submit-btn {
  715. width: 100%;
  716. height: 2.75rem;
  717. line-height: 2.75rem;
  718. border-radius: 1.375rem;
  719. font-size: 1rem;
  720. background-color: #E0E0E0;
  721. color: #fff;
  722. border: none;
  723. text-align: center;
  724. }
  725. .um-submit-btn.active {
  726. background: linear-gradient(90deg, #FF9800 0%, #FF5722 100%);
  727. color: #fff;
  728. box-shadow: 0 0.125rem 0.3125rem rgba(255, 87, 34, 0.3);
  729. }
  730. .um-submit-btn::after {
  731. border: none;
  732. }
  733. /* 宠物档案弹窗 */
  734. .pet-modal-mask {
  735. position: fixed;
  736. top: 0;
  737. left: 0;
  738. width: 100%;
  739. height: 100%;
  740. background-color: rgba(0, 0, 0, 0.5);
  741. z-index: 999;
  742. display: flex;
  743. justify-content: center;
  744. align-items: center;
  745. }
  746. .pet-modal-content {
  747. width: 21.25rem;
  748. max-height: 85vh;
  749. background-color: #fff;
  750. border-radius: 0.625rem;
  751. display: flex;
  752. flex-direction: column;
  753. overflow: hidden;
  754. box-shadow: 0 0.25rem 1rem rgba(0, 0, 0, 0.15);
  755. }
  756. .pet-modal-header {
  757. display: flex;
  758. align-items: center;
  759. padding: 0.875rem 0.9375rem 0.625rem;
  760. border-bottom: 1px solid #f5f5f5;
  761. flex-shrink: 0;
  762. }
  763. .pet-modal-title {
  764. font-size: 1rem;
  765. font-weight: bold;
  766. color: #333;
  767. }
  768. .close-icon-btn {
  769. width: 1.625rem;
  770. height: 1.625rem;
  771. line-height: 1.625rem;
  772. text-align: center;
  773. font-size: 1.125rem;
  774. color: #999;
  775. border-radius: 50%;
  776. background-color: #f5f5f5;
  777. flex-shrink: 0;
  778. }
  779. .pm-remark-btn {
  780. height: 1.625rem;
  781. line-height: 1.625rem;
  782. padding: 0 0.75rem;
  783. background: linear-gradient(90deg, #FF9800 0%, #FF5722 100%);
  784. color: #fff;
  785. font-size: 0.8125rem;
  786. border-radius: 0.8125rem;
  787. margin-right: 0.5rem;
  788. font-weight: bold;
  789. flex-shrink: 0;
  790. }
  791. .pet-modal-scroll {
  792. flex: 1;
  793. height: 65vh;
  794. overflow: auto;
  795. }
  796. .pet-base-info {
  797. display: flex;
  798. align-items: center;
  799. padding: 0.75rem 0.9375rem;
  800. border-bottom: 1px solid #f9f9f9;
  801. }
  802. .pm-avatar {
  803. width: 3.125rem;
  804. height: 3.125rem;
  805. border-radius: 50%;
  806. margin-right: 0.625rem;
  807. flex-shrink: 0;
  808. }
  809. .pm-info-text {
  810. flex: 1;
  811. display: flex;
  812. flex-direction: column;
  813. }
  814. .pm-name-row {
  815. display: flex;
  816. align-items: center;
  817. margin-bottom: 0.25rem;
  818. }
  819. .pm-name {
  820. font-size: 1rem;
  821. font-weight: bold;
  822. color: #333;
  823. margin-right: 0.375rem;
  824. }
  825. .pm-gender {
  826. display: flex;
  827. align-items: center;
  828. background-color: #E3F2FD;
  829. color: #1976D2;
  830. font-size: 0.6875rem;
  831. padding: 0.0625rem 0.3125rem;
  832. border-radius: 0.3125rem;
  833. }
  834. .pm-gender.female {
  835. background-color: #FCE4EC;
  836. color: #C2185B;
  837. }
  838. .gender-icon {
  839. font-size: 0.6875rem;
  840. margin-right: 0.125rem;
  841. }
  842. .pm-breed {
  843. font-size: 0.8125rem;
  844. color: #999;
  845. }
  846. .pm-detail-grid {
  847. padding: 0.625rem 0.9375rem;
  848. display: flex;
  849. flex-wrap: wrap;
  850. gap: 0.5rem;
  851. border-bottom: 1px solid #f9f9f9;
  852. }
  853. .pm-grid-item {
  854. background-color: #FAFAFA;
  855. border-radius: 0.375rem;
  856. padding: 0.5rem 0.625rem;
  857. display: flex;
  858. flex-direction: column;
  859. }
  860. .pm-grid-item.half {
  861. width: calc(50% - 0.25rem);
  862. }
  863. .pm-grid-item.full {
  864. width: 100%;
  865. }
  866. .pm-label {
  867. font-size: 0.75rem;
  868. color: #999;
  869. margin-bottom: 0.25rem;
  870. }
  871. .pm-val {
  872. font-size: 0.875rem;
  873. color: #333;
  874. line-height: 1.5;
  875. }
  876. .pm-tags-row {
  877. display: flex;
  878. flex-wrap: wrap;
  879. padding: 0.5rem 0.9375rem;
  880. gap: 0.5rem;
  881. border-bottom: 1px solid #f9f9f9;
  882. }
  883. .pm-tag-chip {
  884. background-color: #FFF3E0;
  885. border: 1px solid #FFB74D;
  886. border-radius: 0.625rem;
  887. padding: 0.1875rem 0.625rem;
  888. }
  889. .pm-tag-chip-text {
  890. font-size: 0.75rem;
  891. color: #FF9800;
  892. }
  893. .pm-log-section {
  894. padding: 0.625rem 0.9375rem;
  895. }
  896. .pm-log-header {
  897. display: flex;
  898. align-items: center;
  899. margin-bottom: 0.625rem;
  900. }
  901. .pm-log-section-title {
  902. font-size: 0.875rem;
  903. font-weight: bold;
  904. color: #333;
  905. }
  906. .pm-log-item {
  907. padding: 0.5625rem 0;
  908. border-bottom: 0.03125rem solid #f5f5f5;
  909. display: flex;
  910. flex-direction: column;
  911. }
  912. .pm-log-date {
  913. font-size: 0.75rem;
  914. color: #999;
  915. margin-bottom: 0.25rem;
  916. }
  917. .pm-log-text {
  918. font-size: 0.875rem;
  919. color: #333;
  920. line-height: 1.6;
  921. margin-bottom: 0.1875rem;
  922. }
  923. .pm-log-recorder {
  924. font-size: 0.6875rem;
  925. color: #FF9800;
  926. text-align: right;
  927. }
  928. .pm-log-recorder.system {
  929. color: #999;
  930. }
  931. .pm-bottom-close {
  932. margin: 0.5rem 0.9375rem;
  933. height: 2.25rem;
  934. line-height: 2.25rem;
  935. border-radius: 1.125rem;
  936. font-size: 0.875rem;
  937. background-color: #f5f5f5;
  938. color: #666;
  939. border: none;
  940. }
  941. .pm-bottom-close::after {
  942. border: none;
  943. }
  944. /* 宠护小结底部弹窗 */
  945. .sum-modal-mask {
  946. position: fixed;
  947. top: 0;
  948. left: 0;
  949. width: 100%;
  950. height: 100%;
  951. background-color: rgba(0, 0, 0, 0.50);
  952. z-index: 999;
  953. display: flex;
  954. align-items: flex-end;
  955. }
  956. .sum-modal-sheet {
  957. width: 100%;
  958. max-height: 90vh;
  959. background-color: #fff;
  960. border-radius: 0.75rem 0.75rem 0 0;
  961. display: flex;
  962. flex-direction: column;
  963. overflow: hidden;
  964. }
  965. .sum-modal-scroll {
  966. flex: 1;
  967. overflow: hidden;
  968. }
  969. .sum-modal-inner {
  970. padding: 1rem 1.125rem 0;
  971. }
  972. .sum-modal-title {
  973. display: block;
  974. font-size: 1.0625rem;
  975. font-weight: bold;
  976. color: #333;
  977. text-align: center;
  978. margin-bottom: 0.9375rem;
  979. }
  980. .sum-meta-row {
  981. display: flex;
  982. margin-bottom: 0.5rem;
  983. align-items: flex-start;
  984. }
  985. .sum-meta-label {
  986. font-size: 0.8125rem;
  987. color: #999;
  988. flex-shrink: 0;
  989. width: 4.375rem;
  990. }
  991. .sum-meta-val {
  992. font-size: 0.75rem;
  993. color: #333;
  994. flex: 1;
  995. }
  996. .sum-section-title {
  997. font-size: 0.8125rem;
  998. font-weight: bold;
  999. color: #333;
  1000. padding-left: 0.375rem;
  1001. border-left: 0.1875rem solid #FF9800;
  1002. margin-top: 0.75rem;
  1003. margin-bottom: 0.5rem;
  1004. }
  1005. .sum-pet-card {
  1006. background-color: #FAFAFA;
  1007. border-radius: 0.375rem;
  1008. padding: 0.625rem;
  1009. display: flex;
  1010. align-items: center;
  1011. }
  1012. .sum-pet-avatar {
  1013. width: 2.5rem;
  1014. height: 2.5rem;
  1015. border-radius: 50%;
  1016. margin-right: 0.625rem;
  1017. flex-shrink: 0;
  1018. }
  1019. .sum-pet-info {
  1020. flex: 1;
  1021. display: flex;
  1022. flex-direction: column;
  1023. }
  1024. .sum-pet-name-row {
  1025. display: flex;
  1026. align-items: center;
  1027. margin-bottom: 0.25rem;
  1028. }
  1029. .sum-pet-name {
  1030. font-size: 0.8125rem;
  1031. font-weight: bold;
  1032. color: #333;
  1033. margin-right: 0.375rem;
  1034. }
  1035. .sum-pet-breed {
  1036. font-size: 0.75rem;
  1037. color: #999;
  1038. }
  1039. .sum-pet-remark {
  1040. font-size: 0.75rem;
  1041. color: #666;
  1042. line-height: 1.5;
  1043. }
  1044. .sum-textarea {
  1045. width: 100%;
  1046. min-height: 6.875rem;
  1047. background-color: #fff;
  1048. border: 1px solid #eeeeee;
  1049. border-radius: 0.375rem;
  1050. padding: 0.5625rem;
  1051. font-size: 0.8125rem;
  1052. color: #333;
  1053. box-sizing: border-box;
  1054. line-height: 1.8;
  1055. }
  1056. .sum-sign-row {
  1057. display: flex;
  1058. align-items: center;
  1059. margin-top: 0.9375rem;
  1060. padding: 0.5rem 0;
  1061. border-top: 1px solid #f5f5f5;
  1062. }
  1063. .sum-sign-label {
  1064. font-size: 0.8125rem;
  1065. color: #999;
  1066. margin-right: 0.3125rem;
  1067. }
  1068. .sum-sign-val {
  1069. font-size: 0.8125rem;
  1070. color: #333;
  1071. }
  1072. .sum-footer {
  1073. padding: 0.625rem 1.125rem 1.125rem;
  1074. padding-bottom: max(1.125rem, constant(safe-area-inset-bottom));
  1075. padding-bottom: max(1.125rem, env(safe-area-inset-bottom));
  1076. background-color: #fff;
  1077. }
  1078. .sum-submit-btn {
  1079. width: 100%;
  1080. height: 2.625rem;
  1081. line-height: 2.625rem;
  1082. border-radius: 1.3125rem;
  1083. font-size: 0.9375rem;
  1084. background: linear-gradient(90deg, #FF9800 0%, #FF5722 100%);
  1085. color: #fff;
  1086. border: none;
  1087. box-shadow: 0 0.125rem 0.5rem rgba(255, 87, 34, 0.25);
  1088. }
  1089. .sum-submit-btn::after {
  1090. border: none;
  1091. }
  1092. /* 宠护小结 - 居中白卡样式 */
  1093. .sum-modal-mask {
  1094. position: fixed;
  1095. top: 0;
  1096. left: 0;
  1097. width: 100%;
  1098. height: 100%;
  1099. background-color: rgba(0, 0, 0, 0.5);
  1100. z-index: 999;
  1101. display: flex;
  1102. justify-content: center;
  1103. align-items: center;
  1104. }
  1105. .sum-modal-card {
  1106. width: 20.625rem;
  1107. max-height: 80vh;
  1108. background-color: #fff;
  1109. border-radius: 0.625rem;
  1110. display: flex;
  1111. flex-direction: column;
  1112. overflow: hidden;
  1113. box-shadow: 0 0.25rem 1rem rgba(0, 0, 0, 0.15);
  1114. }
  1115. .sum-modal-scroll {
  1116. flex: 1;
  1117. overflow: hidden;
  1118. }
  1119. /* 宠物档案 - 备注按钮 */
  1120. .pet-modal-header {
  1121. display: flex;
  1122. align-items: center;
  1123. padding: 0.9375rem 0.9375rem 0.625rem;
  1124. border-bottom: 1px solid #f5f5f5;
  1125. }
  1126. .pm-remark-btn {
  1127. height: 1.625rem;
  1128. line-height: 1.625rem;
  1129. padding: 0 0.75rem;
  1130. background: linear-gradient(90deg, #FF9800 0%, #FF5722 100%);
  1131. color: #fff;
  1132. font-size: 0.8125rem;
  1133. border-radius: 0.8125rem;
  1134. margin-right: 0.5rem;
  1135. font-weight: bold;
  1136. }
  1137. /* 标签芯片 */
  1138. .pm-tags-row {
  1139. display: flex;
  1140. flex-wrap: wrap;
  1141. padding: 0 0.75rem 0.625rem;
  1142. gap: 0.5rem;
  1143. }
  1144. .pm-tag-chip {
  1145. background-color: #FFF3E0;
  1146. border: 1px solid #FFB74D;
  1147. border-radius: 0.625rem;
  1148. padding: 0.1875rem 0.625rem;
  1149. }
  1150. .pm-tag-chip-text {
  1151. font-size: 0.75rem;
  1152. color: #FF9800;
  1153. }
  1154. /* 备注日志 */
  1155. .pm-log-section {
  1156. padding: 0.625rem 0.75rem;
  1157. border-top: 1px solid #f5f5f5;
  1158. margin-top: 0.3125rem;
  1159. }
  1160. .pm-log-header {
  1161. display: flex;
  1162. align-items: center;
  1163. margin-bottom: 0.625rem;
  1164. }
  1165. .pm-log-section-title {
  1166. font-size: 0.875rem;
  1167. font-weight: bold;
  1168. color: #333;
  1169. }
  1170. .pm-log-item {
  1171. padding: 0.5rem 0;
  1172. border-bottom: 1px solid #f9f9f9;
  1173. display: flex;
  1174. flex-direction: column;
  1175. }
  1176. .pm-log-date {
  1177. font-size: 0.75rem;
  1178. color: #999;
  1179. margin-bottom: 0.25rem;
  1180. }
  1181. .pm-log-text {
  1182. font-size: 0.875rem;
  1183. color: #333;
  1184. line-height: 1.6;
  1185. margin-bottom: 0.1875rem;
  1186. }
  1187. .pm-log-recorder {
  1188. font-size: 0.6875rem;
  1189. color: #FF9800;
  1190. text-align: right;
  1191. }
  1192. .pm-log-recorder.system {
  1193. color: #999;
  1194. }