与牧同行-兽医端小程序
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.

1067 lines
18 KiB

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