与牧同行-小程序用户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1055 lines
18 KiB

  1. .xqbox {
  2. background: linear-gradient(180deg, #F8FBFF 0%, #F0F7FF 100%);
  3. min-height: 100vh;
  4. height: 100vh;
  5. display: flex;
  6. flex-direction: column;
  7. overflow: hidden;
  8. }
  9. /* 页面内容 */
  10. .page-content {
  11. height: 100vh;
  12. padding-bottom: 40rpx;
  13. box-sizing: border-box;
  14. }
  15. /* iOS 底部安全区域适配 */
  16. @supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) {
  17. .page-content {
  18. padding-bottom: calc(40rpx + constant(safe-area-inset-bottom));
  19. padding-bottom: calc(40rpx + env(safe-area-inset-bottom));
  20. }
  21. }
  22. /* 动画效果 */
  23. @keyframes cardEnter {
  24. 0% {
  25. opacity: 0;
  26. transform: translateY(40rpx) scale(0.95);
  27. }
  28. 100% {
  29. opacity: 1;
  30. transform: translateY(0) scale(1);
  31. }
  32. }
  33. @keyframes fadeInUp {
  34. 0% {
  35. opacity: 0;
  36. transform: translateY(30rpx);
  37. }
  38. 100% {
  39. opacity: 1;
  40. transform: translateY(0);
  41. }
  42. }
  43. @keyframes fadeIn {
  44. from { opacity: 0; }
  45. to { opacity: 1; }
  46. }
  47. @keyframes pulse {
  48. 0% { transform: scale(1); }
  49. 50% { transform: scale(1.05); }
  50. 100% { transform: scale(1); }
  51. }
  52. @keyframes slideUp {
  53. 0% {
  54. opacity: 0;
  55. transform: translateY(100rpx) scale(0.9);
  56. }
  57. 100% {
  58. opacity: 1;
  59. transform: translateY(0) scale(1);
  60. }
  61. }
  62. .card-enter {
  63. animation: cardEnter 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
  64. }
  65. .fade-in-up {
  66. animation: fadeInUp 0.5s ease-out forwards;
  67. opacity: 0;
  68. }
  69. .fade-in {
  70. animation: fadeIn 0.8s ease-out forwards;
  71. opacity: 0;
  72. }
  73. .pulse {
  74. animation: pulse 2s infinite;
  75. }
  76. /* 渐变背景 */
  77. .gradient-blue {
  78. background: linear-gradient(135deg, #6D9EFF 0%, #4A7CFF 100%);
  79. color: white !important;
  80. }
  81. .gradient-orange {
  82. background: linear-gradient(135deg, #FF9500 0%, #FF7F00 100%);
  83. color: white !important;
  84. }
  85. .gradient-pink {
  86. background: linear-gradient(135deg, #FF6B9D 0%, #FF4081 100%);
  87. color: white !important;
  88. }
  89. .gradient-purple {
  90. background: linear-gradient(135deg, #9D4BFF 0%, #7C3AED 100%);
  91. color: white !important;
  92. }
  93. .gradient-gold {
  94. background: linear-gradient(135deg, #FFD700 0%, #FFB300 100%);
  95. color: white !important;
  96. }
  97. /* 用户问诊卡片 */
  98. .user-query-card {
  99. background: #FFFFFF;
  100. margin: 24rpx;
  101. border-radius: 28rpx;
  102. box-shadow: 0 12rpx 48rpx rgba(74, 144, 226, 0.15);
  103. border: 2rpx solid #FFFFFF;
  104. overflow: hidden;
  105. position: relative;
  106. backdrop-filter: blur(20rpx);
  107. }
  108. /* 卡片装饰 */
  109. .card-decoration {
  110. position: absolute;
  111. top: 0;
  112. left: 0;
  113. right: 0;
  114. bottom: 0;
  115. pointer-events: none;
  116. z-index: 1;
  117. }
  118. .decoration-dot {
  119. position: absolute;
  120. border-radius: 50%;
  121. background: linear-gradient(135deg, rgba(109, 158, 255, 0.1) 0%, rgba(74, 124, 255, 0.1) 100%);
  122. }
  123. .dot-1 {
  124. width: 120rpx;
  125. height: 120rpx;
  126. top: -40rpx;
  127. right: -40rpx;
  128. }
  129. .dot-2 {
  130. width: 80rpx;
  131. height: 80rpx;
  132. bottom: 60rpx;
  133. left: -20rpx;
  134. }
  135. .dot-3 {
  136. width: 60rpx;
  137. height: 60rpx;
  138. bottom: -20rpx;
  139. right: 80rpx;
  140. }
  141. /* 用户信息区域 */
  142. .user-info-section {
  143. padding: 40rpx 32rpx 32rpx;
  144. display: flex;
  145. align-items: flex-start;
  146. position: relative;
  147. z-index: 2;
  148. }
  149. .avatar-wrapper {
  150. position: relative;
  151. margin-right: 24rpx;
  152. flex-shrink: 0;
  153. }
  154. .user-avatar {
  155. width: 88rpx;
  156. height: 88rpx;
  157. border-radius: 50%;
  158. border: 3rpx solid #FFFFFF;
  159. box-shadow: 0 8rpx 24rpx rgba(74, 144, 226, 0.3);
  160. }
  161. .user-details {
  162. flex: 1;
  163. }
  164. .user-name-row {
  165. display: flex;
  166. align-items: center;
  167. justify-content: space-between;
  168. margin-bottom: 16rpx;
  169. }
  170. .user-name {
  171. font-size: 34rpx;
  172. font-weight: 700;
  173. color: #1A1A1A;
  174. line-height: 1.2;
  175. text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1);
  176. }
  177. .status-badge {
  178. padding: 10rpx 24rpx;
  179. border-radius: 24rpx;
  180. font-size: 26rpx;
  181. font-weight: 700;
  182. min-width: 88rpx;
  183. text-align: center;
  184. box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
  185. }
  186. .status-replied {
  187. background: linear-gradient(135deg, #2ECC71 0%, #27AE60 100%);
  188. color: white;
  189. }
  190. .status-pending {
  191. background: linear-gradient(135deg, #FF9500 0%, #F39C12 100%);
  192. color: white;
  193. }
  194. .pet-info {
  195. display: flex;
  196. flex-direction: column;
  197. gap: 16rpx;
  198. }
  199. .pet-info-tags {
  200. display: flex;
  201. gap: 12rpx;
  202. flex-wrap: wrap;
  203. }
  204. .pet-tag {
  205. padding: 6rpx 20rpx;
  206. border-radius: 20rpx;
  207. font-size: 24rpx;
  208. font-weight: 600;
  209. box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
  210. }
  211. .time-info {
  212. display: flex;
  213. align-items: center;
  214. gap: 8rpx;
  215. background: rgba(109, 158, 255, 0.08);
  216. padding: 8rpx 16rpx;
  217. border-radius: 20rpx;
  218. align-self: flex-start;
  219. }
  220. .time-text {
  221. font-size: 24rpx;
  222. color: #6D9EFF;
  223. font-weight: 500;
  224. }
  225. /* 症状描述区域 */
  226. .symptom-section {
  227. padding: 32rpx;
  228. position: relative;
  229. z-index: 2;
  230. }
  231. .section-header {
  232. display: flex;
  233. align-items: center;
  234. margin-bottom: 28rpx;
  235. }
  236. .section-title {
  237. font-size: 32rpx;
  238. font-weight: 700;
  239. color: #1A1A1A;
  240. position: relative;
  241. padding-right: 16rpx;
  242. }
  243. .title-decoration {
  244. flex: 1;
  245. height: 2rpx;
  246. background: linear-gradient(90deg, #E5F0FF 0%, #6D9EFF 50%, #E5F0FF 100%);
  247. margin-left: 16rpx;
  248. border-radius: 1rpx;
  249. }
  250. .symptom-content {
  251. background: #F8FBFF;
  252. border-radius: 24rpx;
  253. padding: 36rpx 32rpx;
  254. border: 2rpx solid #E5F0FF;
  255. position: relative;
  256. box-shadow: 0 4rpx 16rpx rgba(74, 144, 226, 0.1);
  257. transition: all 0.3s ease;
  258. }
  259. .symptom-content:active {
  260. transform: translateY(-2rpx);
  261. box-shadow: 0 8rpx 24rpx rgba(74, 144, 226, 0.15);
  262. }
  263. .quote-left {
  264. position: absolute;
  265. top: 20rpx;
  266. left: 20rpx;
  267. font-size: 48rpx;
  268. color: #6D9EFF;
  269. font-weight: 700;
  270. opacity: 0.3;
  271. }
  272. .symptom-text {
  273. font-size: 30rpx;
  274. color: #333;
  275. line-height: 1.8;
  276. font-weight: 400;
  277. text-align: left;
  278. }
  279. /* 图片展示区域 */
  280. .image-section {
  281. padding: 32rpx;
  282. position: relative;
  283. z-index: 2;
  284. }
  285. .image-count {
  286. margin-left: auto;
  287. padding: 6rpx 16rpx;
  288. border-radius: 20rpx;
  289. font-size: 24rpx;
  290. font-weight: 600;
  291. }
  292. .images-scroll {
  293. width: 100%;
  294. }
  295. .images-container {
  296. display: flex;
  297. padding: 8rpx 0;
  298. }
  299. .image-wrapper {
  300. margin-right: 20rpx;
  301. position: relative;
  302. border-radius: 20rpx;
  303. overflow: hidden;
  304. box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.15);
  305. transition: all 0.3s ease;
  306. }
  307. .image-wrapper:last-child {
  308. margin-right: 0;
  309. }
  310. .image-wrapper:active {
  311. transform: scale(0.98);
  312. }
  313. .symptom-image {
  314. width: 220rpx;
  315. height: 220rpx;
  316. border-radius: 20rpx;
  317. }
  318. /* 兽医回复区域 */
  319. .replies-section {
  320. margin: 24rpx;
  321. }
  322. .reply-count {
  323. margin-left: auto;
  324. padding: 8rpx 20rpx;
  325. border-radius: 24rpx;
  326. display: flex;
  327. align-items: center;
  328. gap: 4rpx;
  329. box-shadow: 0 4rpx 12rpx rgba(157, 75, 255, 0.3);
  330. }
  331. .count-number {
  332. font-size: 30rpx;
  333. font-weight: 700;
  334. }
  335. .count-text {
  336. font-size: 24rpx;
  337. font-weight: 500;
  338. opacity: 0.9;
  339. }
  340. /* 回复列表 */
  341. .replies-list {
  342. display: flex;
  343. flex-direction: column;
  344. gap: 24rpx;
  345. }
  346. .vet-reply-card {
  347. background: #FFFFFF;
  348. border-radius: 28rpx;
  349. padding: 36rpx;
  350. box-shadow: 0 12rpx 48rpx rgba(74, 144, 226, 0.15);
  351. border: 2rpx solid #FFFFFF;
  352. position: relative;
  353. overflow: hidden;
  354. backdrop-filter: blur(20rpx);
  355. }
  356. /* 兽医信息 */
  357. .vet-info {
  358. display: flex;
  359. align-items: center;
  360. margin-bottom: 32rpx;
  361. }
  362. .vet-avatar {
  363. width: 80rpx;
  364. height: 80rpx;
  365. border-radius: 50%;
  366. border: 3rpx solid #FFFFFF;
  367. box-shadow: 0 8rpx 24rpx rgba(255, 215, 0, 0.3);
  368. margin-right: 20rpx;
  369. flex-shrink: 0;
  370. }
  371. .vet-verified {
  372. position: absolute;
  373. bottom: 2rpx;
  374. right: 2rpx;
  375. width: 20rpx;
  376. height: 20rpx;
  377. background: #2ECC71;
  378. border: 2rpx solid white;
  379. border-radius: 50%;
  380. }
  381. .vet-details {
  382. flex: 1;
  383. }
  384. .vet-name-row {
  385. display: flex;
  386. align-items: center;
  387. margin-bottom: 12rpx;
  388. }
  389. .vet-name {
  390. font-size: 32rpx;
  391. font-weight: 700;
  392. color: #1A1A1A;
  393. margin-right: 16rpx;
  394. text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1);
  395. }
  396. .vet-badge {
  397. padding: 2rpx 10rpx;
  398. border-radius: 20rpx;
  399. box-shadow: 0 4rpx 12rpx rgba(255, 215, 0, 0.3);
  400. }
  401. .vet-title {
  402. font-size: 24rpx;
  403. font-weight: 700;
  404. letter-spacing: 0.5rpx;
  405. }
  406. .vet-meta {
  407. display: flex;
  408. align-items: center;
  409. gap: 20rpx;
  410. }
  411. .meta-item {
  412. display: flex;
  413. align-items: center;
  414. gap: 6rpx;
  415. background: rgba(109, 158, 255, 0.08);
  416. padding: 6rpx 12rpx;
  417. border-radius: 16rpx;
  418. }
  419. .vet-hospital,
  420. .vet-experience {
  421. font-size: 24rpx;
  422. color: #6D9EFF;
  423. font-weight: 500;
  424. }
  425. /* 回复内容 */
  426. .reply-content {
  427. margin-bottom: 28rpx;
  428. }
  429. .reply-bubble {
  430. background: #F8FBFF;
  431. border-radius: 24rpx;
  432. padding: 32rpx;
  433. border: 2rpx solid #E5F0FF;
  434. position: relative;
  435. box-shadow: 0 4rpx 16rpx rgba(74, 144, 226, 0.1);
  436. }
  437. .reply-bubble::before {
  438. content: '';
  439. position: absolute;
  440. top: -12rpx;
  441. left: 40rpx;
  442. width: 0;
  443. height: 0;
  444. border-left: 12rpx solid transparent;
  445. border-right: 12rpx solid transparent;
  446. border-bottom: 12rpx solid #F8FBFF;
  447. }
  448. .reply-text {
  449. font-size: 28rpx;
  450. color: #333;
  451. line-height: 1.8;
  452. font-weight: 400;
  453. }
  454. /* 回复底部 */
  455. .reply-footer {
  456. display: flex;
  457. justify-content: space-between;
  458. align-items: center;
  459. padding-top: 24rpx;
  460. border-top: 2rpx dashed #E5F0FF;
  461. }
  462. .reply-time {
  463. display: flex;
  464. align-items: center;
  465. gap: 10rpx;
  466. background: rgba(109, 158, 255, 0.1);
  467. padding: 8rpx 20rpx;
  468. border-radius: 20rpx;
  469. }
  470. /* 无回复状态 */
  471. .no-replies {
  472. background: #FFFFFF;
  473. border-radius: 28rpx;
  474. padding: 80rpx 40rpx;
  475. text-align: center;
  476. box-shadow: 0 12rpx 48rpx rgba(74, 144, 226, 0.15);
  477. border: 2rpx solid #FFFFFF;
  478. position: relative;
  479. overflow: hidden;
  480. }
  481. .no-replies-title {
  482. font-size: 32rpx;
  483. color: #333;
  484. font-weight: 700;
  485. margin-bottom: 16rpx;
  486. display: block;
  487. text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1);
  488. }
  489. .no-replies-desc {
  490. font-size: 26rpx;
  491. color: #999;
  492. line-height: 1.4;
  493. max-width: 400rpx;
  494. margin: 0 auto;
  495. }
  496. .waiting-animation {
  497. display: flex;
  498. justify-content: center;
  499. gap: 12rpx;
  500. margin-top: 40rpx;
  501. }
  502. .loading-dot {
  503. width: 16rpx;
  504. height: 16rpx;
  505. border-radius: 50%;
  506. background: #6D9EFF;
  507. animation: pulse 1.5s infinite ease-in-out;
  508. }
  509. .fazd {
  510. width: 100%;
  511. display: flex;
  512. justify-content: flex-end;
  513. }
  514. .zdnr {
  515. display: inline-block;
  516. background-color: #5587FF;
  517. color: #fff;
  518. margin: 20rpx;
  519. padding: 10rpx 20rpx;
  520. border-radius: 10rpx;
  521. font-size: 28rpx;
  522. }
  523. .loading-dot.dot-1 { animation-delay: 0s; }
  524. .loading-dot.dot-2 { animation-delay: 0.2s; }
  525. .loading-dot.dot-3 { animation-delay: 0.4s; }
  526. /* 底部安全区域 */
  527. .page-bottom-safe {
  528. padding: 30rpx 0 40rpx;
  529. margin-top: 20rpx;
  530. text-align: center;
  531. }
  532. .bottom-content {
  533. display: flex;
  534. align-items: center;
  535. justify-content: center;
  536. padding: 20rpx 0;
  537. }
  538. .bottom-text {
  539. font-size: 24rpx;
  540. color: #999;
  541. opacity: 0.8;
  542. letter-spacing: 2rpx;
  543. }
  544. /* 兽医回复图片预览 */
  545. .reply-images-section {
  546. margin-top: 24rpx;
  547. padding: 0 8rpx;
  548. }
  549. .reply-images-grid {
  550. display: grid;
  551. gap: 12rpx;
  552. width: 100%;
  553. }
  554. .reply-images-grid.grid-1 {
  555. grid-template-columns: repeat(1, minmax(200rpx, 320rpx));
  556. justify-content: start;
  557. }
  558. .reply-images-grid.grid-2 {
  559. grid-template-columns: repeat(2, 1fr);
  560. }
  561. .reply-images-grid.grid-3,
  562. .reply-images-grid.grid-4,
  563. .reply-images-grid:not(.grid-1):not(.grid-2) {
  564. grid-template-columns: repeat(2, 1fr);
  565. }
  566. .reply-image-wrapper {
  567. position: relative;
  568. border-radius: 16rpx;
  569. overflow: hidden;
  570. background-color: #f5f5f5;
  571. aspect-ratio: 1 / 1;
  572. box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
  573. transition: transform 0.2s ease;
  574. }
  575. .reply-image-wrapper:active {
  576. transform: scale(0.98);
  577. }
  578. .reply-image {
  579. width: 100%;
  580. height: 100%;
  581. border-radius: 16rpx;
  582. object-fit: cover;
  583. }
  584. /* 图片数量遮罩 */
  585. .image-more-mask {
  586. position: absolute;
  587. top: 0;
  588. left: 0;
  589. width: 100%;
  590. height: 100%;
  591. background-color: rgba(0, 0, 0, 0.5);
  592. display: flex;
  593. align-items: center;
  594. justify-content: center;
  595. border-radius: 16rpx;
  596. }
  597. .more-count {
  598. color: #fff;
  599. font-size: 36rpx;
  600. font-weight: 700;
  601. text-shadow: 0 2rpx 4rpx rgba(0,0,0,0.3);
  602. }
  603. .modal-mask {
  604. position: fixed;
  605. top: 0;
  606. left: 0;
  607. right: 0;
  608. bottom: 0;
  609. background-color: rgba(0, 0, 0, 0.6);
  610. display: flex;
  611. align-items: center;
  612. justify-content: center;
  613. z-index: 1000;
  614. animation: fadeIn 0.3s ease;
  615. backdrop-filter: blur(8rpx);
  616. /* 确保在 iOS 上正确显示 */
  617. -webkit-backdrop-filter: blur(8rpx);
  618. }
  619. /* 弹框内容 - 优化高度计算 */
  620. .modal-content {
  621. width: 700rpx;
  622. max-height: 80vh;
  623. background: linear-gradient(135deg, #FFFFFF 0%, #F8FBFF 100%);
  624. border-radius: 40rpx;
  625. overflow: hidden;
  626. box-shadow: 0 40rpx 80rpx rgba(0, 0, 0, 0.3);
  627. animation: slideUp 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
  628. /* 优化显示 */
  629. display: flex;
  630. flex-direction: column;
  631. }
  632. /* 弹框头部 - 固定在顶部 */
  633. .modal-header {
  634. padding: 30rpx 40rpx;
  635. display: flex;
  636. align-items: center;
  637. justify-content: space-between;
  638. border-bottom: 2rpx solid #E5F0FF;
  639. background: linear-gradient(90deg, #6D9EFF 0%, #4A7CFF 100%);
  640. flex-shrink: 0;
  641. }
  642. .modal-title {
  643. font-size: 36rpx;
  644. font-weight: 700;
  645. color: #FFFFFF;
  646. text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.2);
  647. letter-spacing: 1rpx;
  648. }
  649. .modal-close {
  650. width: 48rpx;
  651. height: 48rpx;
  652. background: rgba(255, 255, 255, 0.3);
  653. border-radius: 50%;
  654. display: flex;
  655. align-items: center;
  656. justify-content: center;
  657. transition: all 0.3s ease;
  658. flex-shrink: 0;
  659. }
  660. .modal-close:active {
  661. background: rgba(255, 255, 255, 0.5);
  662. transform: scale(0.9);
  663. }
  664. .close-icon {
  665. color: #FFFFFF;
  666. font-size: 36rpx;
  667. font-weight: 500;
  668. line-height: 1;
  669. }
  670. /* 弹框主体*/
  671. .modal-body {
  672. flex: 1;
  673. overflow-y: scroll;
  674. -webkit-overflow-scrolling: touch;
  675. padding: 0;
  676. box-sizing: border-box;
  677. /* 优化滚动条 */
  678. scrollbar-width: thin;
  679. scrollbar-color: #6D9EFF #E5F0FF;
  680. }
  681. /* 自定义滚动条样式 */
  682. .modal-body::-webkit-scrollbar {
  683. width: 6rpx;
  684. }
  685. .modal-body::-webkit-scrollbar-track {
  686. background: #E5F0FF;
  687. border-radius: 3rpx;
  688. }
  689. .modal-body::-webkit-scrollbar-thumb {
  690. background: #6D9EFF;
  691. border-radius: 3rpx;
  692. }
  693. .modal-body::-webkit-scrollbar-thumb:hover {
  694. background: #4A7CFF;
  695. }
  696. /* 方案列表容器 */
  697. .plan-list {
  698. display: flex;
  699. flex-direction: column;
  700. gap: 24rpx;
  701. padding: 30rpx;
  702. }
  703. /* 方案卡片 */
  704. .plan-card {
  705. background: #FFFFFF;
  706. border-radius: 28rpx;
  707. padding: 30rpx;
  708. box-shadow: 0 8rpx 24rpx rgba(74, 144, 226, 0.15);
  709. border: 2rpx solid #E5F0FF;
  710. position: relative;
  711. overflow: hidden;
  712. transition: all 0.3s ease;
  713. }
  714. .plan-card:last-child {
  715. margin-bottom: 0;
  716. }
  717. .plan-card:active {
  718. transform: translateY(-4rpx);
  719. box-shadow: 0 16rpx 40rpx rgba(74, 144, 226, 0.25);
  720. }
  721. /* 兽医信息行 */
  722. .plan-vet-row {
  723. display: flex;
  724. align-items: center;
  725. margin-bottom: 24rpx;
  726. padding-bottom: 20rpx;
  727. border-bottom: 2rpx dashed #E5F0FF;
  728. }
  729. .plan-avatar {
  730. width: 72rpx;
  731. height: 72rpx;
  732. border-radius: 50%;
  733. margin-right: 20rpx;
  734. border: 3rpx solid #FFFFFF;
  735. box-shadow: 0 4rpx 12rpx rgba(74, 144, 226, 0.3);
  736. flex-shrink: 0;
  737. }
  738. .plan-vet-info {
  739. flex: 1;
  740. display: flex;
  741. flex-direction: column;
  742. gap: 6rpx;
  743. }
  744. .plan-user-name {
  745. font-size: 32rpx;
  746. font-weight: 700;
  747. color: #1A1A1A;
  748. line-height: 1.2;
  749. }
  750. .plan-title-tag {
  751. font-size: 22rpx;
  752. background: linear-gradient(135deg, #FFD700 0%, #FFB300 100%);
  753. color: #FFFFFF;
  754. padding: 4rpx 16rpx;
  755. border-radius: 20rpx;
  756. display: inline-block;
  757. align-self: flex-start;
  758. font-weight: 600;
  759. box-shadow: 0 4rpx 12rpx rgba(255, 215, 0, 0.3);
  760. }
  761. /* 方案条目 */
  762. .plan-item {
  763. margin-bottom: 24rpx;
  764. background: #F8FBFF;
  765. border-radius: 20rpx;
  766. padding: 20rpx;
  767. border: 2rpx solid #E5F0FF;
  768. }
  769. .plan-item:last-child {
  770. margin-bottom: 0;
  771. }
  772. .item-label {
  773. font-size: 26rpx;
  774. font-weight: 600;
  775. color: #4A7CFF;
  776. margin-bottom: 12rpx;
  777. display: flex;
  778. align-items: center;
  779. gap: 8rpx;
  780. }
  781. .item-value {
  782. font-size: 28rpx;
  783. color: #333;
  784. line-height: 1.6;
  785. word-break: break-word;
  786. }
  787. .diagnosis-text {
  788. font-weight: 500;
  789. color: #1A1A1A;
  790. background: rgba(109, 158, 255, 0.1);
  791. padding: 16rpx;
  792. border-radius: 16rpx;
  793. }
  794. .precautions-text {
  795. color: #FF6B6B;
  796. background: rgba(255, 107, 107, 0.05);
  797. padding: 16rpx;
  798. border-radius: 16rpx;
  799. }
  800. /* 方案图片 */
  801. .plan-images {
  802. margin-top: 24rpx;
  803. padding-top: 20rpx;
  804. border-top: 2rpx solid #E5F0FF;
  805. }
  806. .plan-images-scroll {
  807. width: 100%;
  808. white-space: nowrap;
  809. overflow-x: auto;
  810. -webkit-overflow-scrolling: touch;
  811. padding-bottom: 4rpx;
  812. }
  813. .plan-images-scroll::-webkit-scrollbar {
  814. height: 4rpx;
  815. }
  816. .plan-images-scroll::-webkit-scrollbar-track {
  817. background: #E5F0FF;
  818. border-radius: 2rpx;
  819. }
  820. .plan-images-scroll::-webkit-scrollbar-thumb {
  821. background: #6D9EFF;
  822. border-radius: 2rpx;
  823. }
  824. .plan-images-container {
  825. display: flex;
  826. gap: 16rpx;
  827. padding: 8rpx 0;
  828. }
  829. .plan-thumb {
  830. width: 160rpx;
  831. height: 160rpx;
  832. border-radius: 16rpx;
  833. box-shadow: 0 8rpx 16rpx rgba(0, 0, 0, 0.15);
  834. transition: all 0.3s ease;
  835. flex-shrink: 0;
  836. }
  837. .plan-thumb:active {
  838. transform: scale(0.95);
  839. }
  840. /* 加载更多提示 */
  841. .plan-loading-more,
  842. .plan-no-more {
  843. padding: 30rpx 0 20rpx;
  844. text-align: center;
  845. }
  846. .loading-more-text {
  847. font-size: 26rpx;
  848. color: #6D9EFF;
  849. font-weight: 500;
  850. padding: 10rpx 30rpx;
  851. background: rgba(109, 158, 255, 0.1);
  852. border-radius: 40rpx;
  853. display: inline-block;
  854. }
  855. .no-more-text {
  856. font-size: 24rpx;
  857. color: #999;
  858. opacity: 0.6;
  859. }
  860. /* 底部填充区域 */
  861. .modal-bottom-fill {
  862. height: 20rpx;
  863. width: 100%;
  864. }
  865. /* 空状态 */
  866. .plan-empty {
  867. padding: 80rpx 0;
  868. text-align: center;
  869. background: #F8FBFF;
  870. border-radius: 28rpx;
  871. }
  872. .empty-icon {
  873. font-size: 80rpx;
  874. display: block;
  875. margin-bottom: 20rpx;
  876. opacity: 0.5;
  877. }
  878. .empty-text {
  879. font-size: 28rpx;
  880. color: #999;
  881. font-weight: 500;
  882. }
  883. /* iOS 底部安全区域适配 */
  884. @supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) {
  885. .modal-footer {
  886. padding-bottom: calc(20rpx + constant(safe-area-inset-bottom));
  887. padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
  888. }
  889. }
  890. .fazd {
  891. width: 100%;
  892. display: flex;
  893. justify-content: flex-end;
  894. cursor: pointer;
  895. }
  896. .zdnr {
  897. display: inline-block;
  898. background: linear-gradient(135deg, #5587FF 0%, #3A6AFF 100%);
  899. color: #fff;
  900. margin: 20rpx;
  901. padding: 16rpx 32rpx;
  902. border-radius: 40rpx;
  903. font-size: 28rpx;
  904. font-weight: 600;
  905. box-shadow: 0 8rpx 24rpx rgba(85, 135, 255, 0.4);
  906. transition: all 0.3s ease;
  907. }
  908. .zdnr:active {
  909. transform: scale(0.95);
  910. box-shadow: 0 4rpx 12rpx rgba(85, 135, 255, 0.3);
  911. }