blob: 49c13e64166cef3b6286660c1d9fa7931cf306cc [file] [log] [blame]
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001/* NeuraFlux - 共享欧式园林风格样式 */
2
3/* 引入Google字体 */
4@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Lora:wght@400;500;600&display=swap');
5
6/* 页面基础样式 */
7.emerald-home-container {
8 min-height: 100vh;
9 background: linear-gradient(135deg, #2d5016 0%, #4a7c59 20%, #8fbc8f 40%, #98fb98 60%, #f0fff0 100%);
10 position: relative;
11 font-family: 'Lora', serif;
12 overflow-x: hidden;
13}
14
15/* 背景装饰元素 */
16.emerald-home-container::before {
17 content: '';
18 position: fixed;
19 top: 0;
20 left: 0;
21 right: 0;
22 bottom: 0;
23 background:
24 radial-gradient(circle at 20% 80%, rgba(255, 255, 255, 0.08) 0%, transparent 50%),
25 radial-gradient(circle at 80% 20%, rgba(255, 255, 255, 0.06) 0%, transparent 50%),
26 radial-gradient(circle at 40% 40%, rgba(144, 238, 144, 0.08) 0%, transparent 50%);
27 animation: backgroundShift 25s ease-in-out infinite;
28 pointer-events: none;
29 z-index: 0;
30}
31
32/* 流星雨效果 */
33.meteor-shower {
34 position: fixed;
35 top: 0;
36 left: 0;
37 width: 100%;
38 height: 100%;
39 pointer-events: none;
40 overflow: hidden;
41 z-index: 1;
42}
43
44.meteor {
45 position: absolute;
46 font-size: 18px;
47 animation: meteorFall linear infinite;
48 opacity: 0.8;
49 filter: drop-shadow(0 0 6px rgba(144, 238, 144, 0.6));
50}
51
52.meteor:nth-child(1) { left: 5%; animation-duration: 12s; animation-delay: 0s; }
53.meteor:nth-child(2) { left: 15%; animation-duration: 8s; animation-delay: 3s; }
54.meteor:nth-child(3) { left: 25%; animation-duration: 15s; animation-delay: 1s; }
55.meteor:nth-child(4) { left: 35%; animation-duration: 10s; animation-delay: 5s; }
56.meteor:nth-child(5) { left: 45%; animation-duration: 13s; animation-delay: 2s; }
57.meteor:nth-child(6) { left: 55%; animation-duration: 9s; animation-delay: 6s; }
58.meteor:nth-child(7) { left: 65%; animation-duration: 14s; animation-delay: 0.5s; }
59.meteor:nth-child(8) { left: 75%; animation-duration: 11s; animation-delay: 4s; }
60.meteor:nth-child(9) { left: 85%; animation-duration: 16s; animation-delay: 1.5s; }
61.meteor:nth-child(10) { left: 95%; animation-duration: 7s; animation-delay: 3.5s; }
62
63/* 浮动装饰元素 */
64.floating-garden-elements {
65 position: fixed;
66 top: 0;
67 left: 0;
68 width: 100%;
69 height: 100%;
70 pointer-events: none;
71 z-index: 1;
72}
73
74.garden-element {
75 position: absolute;
76 font-size: 24px;
77 opacity: 0.4;
78 animation: gardenFloat 6s ease-in-out infinite;
79}
80
81.garden-element:nth-child(1) { top: 10%; left: 10%; animation-delay: 0s; }
82.garden-element:nth-child(2) { top: 20%; right: 15%; animation-delay: 2s; }
83.garden-element:nth-child(3) { bottom: 30%; left: 20%; animation-delay: 4s; }
84.garden-element:nth-child(4) { bottom: 15%; right: 25%; animation-delay: 1s; }
85
86/* 内容容器 */
87.emerald-content {
88 position: relative;
89 z-index: 10;
90 padding: 20px;
91 max-width: 1400px;
92 margin: 0 auto;
93}
94
95/* 用户栏样式 */
96.emerald-user-bar {
97 position: fixed;
98 top: 18px;
99 right: 42px;
100 z-index: 100;
101 display: flex;
102 align-items: center;
103 background: rgba(255, 255, 255, 0.95);
104 backdrop-filter: blur(15px);
105 border-radius: 20px;
106 padding: 8px 24px;
107 box-shadow:
108 0 8px 32px rgba(45, 80, 22, 0.15),
109 0 4px 16px rgba(144, 238, 144, 0.1),
110 inset 0 1px 0 rgba(255, 255, 255, 0.7);
111 border: 2px solid rgba(144, 238, 144, 0.3);
112 min-width: 320px;
113 min-height: 48px;
114 width: 520px;
115 animation: userBarFloat 4s ease-in-out infinite;
116}
117
118.emerald-user-bar::before {
119 content: '';
120 position: absolute;
121 top: -2px;
122 left: -2px;
123 right: -2px;
124 bottom: -2px;
125 background: linear-gradient(45deg,
126 #90ee90 0%,
127 #98fb98 25%,
128 #f0fff0 50%,
129 #98fb98 75%,
130 #90ee90 100%);
131 border-radius: 22px;
132 z-index: -1;
133 animation: borderGlow 3s ease-in-out infinite;
134}
135
136.emerald-user-avatar {
137 cursor: pointer;
138 margin-right: 16px;
139 transition: all 0.3s ease;
140 border-radius: 50%;
141 padding: 4px;
142 background: linear-gradient(135deg, #90ee90, #2d5016);
143}
144
145.emerald-user-avatar:hover {
146 transform: scale(1.1) rotate(5deg);
147 box-shadow: 0 4px 15px rgba(144, 238, 144, 0.4);
148}
149
150/* 品牌区域样式 */
151.emerald-brand-section {
152 display: flex;
153 align-items: center;
154 margin-right: 24px;
155}
156
157.emerald-brand-icon {
158 font-size: 24px;
159 margin-right: 8px;
160 animation: iconPulse 3s ease-in-out infinite;
161}
162
163.emerald-user-label {
164 color: #2d5016;
165 font-weight: 600;
166 font-family: 'Playfair Display', serif;
167 letter-spacing: 1px;
168}
169
170.emerald-user-stats {
171 display: flex;
172 gap: 24px;
173 flex: 1;
174 justify-content: flex-end;
175 align-items: center;
176}
177
178.emerald-stat-item {
179 color: #2d5016;
180 font-weight: 500;
181 font-size: 14px;
182 transition: all 0.3s ease;
183 padding: 4px 8px;
184 border-radius: 8px;
185}
186
187.emerald-stat-item:hover {
188 background: rgba(144, 238, 144, 0.2);
189 transform: translateY(-2px);
190}
191
192.emerald-stat-value {
193 font-weight: 700;
194 color: #1a5c1a;
195}
196
197/* 导航栏样式 */
198.emerald-nav-bar {
199 background: rgba(255, 255, 255, 0.95);
200 backdrop-filter: blur(20px);
201 border-radius: 25px;
202 padding: 20px 30px;
203 margin: 120px auto 30px;
204 box-shadow:
205 0 15px 45px rgba(45, 80, 22, 0.12),
206 0 6px 20px rgba(144, 238, 144, 0.08),
207 inset 0 1px 0 rgba(255, 255, 255, 0.9);
208 border: 2px solid rgba(144, 238, 144, 0.2);
209 display: grid;
210 grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
211 gap: 10px;
212 justify-items: center;
213 position: relative;
214 overflow: hidden;
215}
216
217.emerald-nav-bar::before {
218 content: '';
219 position: absolute;
220 top: -2px;
221 left: -2px;
222 right: -2px;
223 bottom: -2px;
224 background: linear-gradient(45deg,
225 #90ee90 0%,
226 #98fb98 25%,
227 #f0fff0 50%,
228 #98fb98 75%,
229 #90ee90 100%);
230 border-radius: 27px;
231 z-index: -1;
232 animation: borderGlow 5s ease-in-out infinite;
233}
234
235/* 导航项目样式 */
236.emerald-nav-item {
237 display: flex;
238 flex-direction: column;
239 align-items: center;
240 padding: 16px 20px;
241 border-radius: 18px;
242 cursor: pointer;
243 transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
244 background: rgba(240, 255, 240, 0.3);
245 border: 2px solid transparent;
246 position: relative;
247 overflow: hidden;
248 min-width: 90px;
249 font-family: 'Lora', serif;
250}
251
252.emerald-nav-item::before {
253 content: '';
254 position: absolute;
255 top: 0;
256 left: -100%;
257 width: 100%;
258 height: 100%;
259 background: linear-gradient(90deg, transparent, rgba(144, 238, 144, 0.3), transparent);
260 transition: left 0.6s ease;
261}
262
263.emerald-nav-item:hover::before {
264 left: 100%;
265}
266
267.emerald-nav-item:hover {
268 transform: translateY(-8px) scale(1.05);
269 background: rgba(144, 238, 144, 0.2);
270 border-color: rgba(144, 238, 144, 0.4);
271 box-shadow:
272 0 12px 35px rgba(45, 80, 22, 0.2),
273 0 6px 20px rgba(144, 238, 144, 0.15);
274}
275
276.emerald-nav-item.active {
277 background: linear-gradient(135deg, #90ee90 0%, #2d5016 100%);
278 color: white;
279 border-color: #2d5016;
280 transform: translateY(-4px);
281 box-shadow:
282 0 8px 25px rgba(45, 80, 22, 0.3),
283 0 4px 15px rgba(144, 238, 144, 0.2);
284}
285
286/* 导航图标动画 */
287.emerald-nav-icon {
288 font-size: 28px !important;
289 margin-bottom: 8px;
290 transition: all 0.4s ease;
291 position: relative;
292}
293
294.emerald-nav-item:hover .emerald-nav-icon {
295 animation: iconDance 0.6s ease-in-out;
296 transform: scale(1.2);
297}
298
299.emerald-nav-item.active .emerald-nav-icon {
300 color: white;
301 filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
302}
303
304/* 导航标签 */
305.emerald-nav-label {
306 font-size: 14px;
307 font-weight: 600;
308 letter-spacing: 0.5px;
309 color: #2d5016;
310 transition: all 0.3s ease;
311}
312
313.emerald-nav-item:hover .emerald-nav-label {
314 color: #1a5c1a;
315 transform: scale(1.05);
316}
317
318.emerald-nav-item.active .emerald-nav-label {
319 color: white;
320 font-weight: 700;
321}
322
323/* 内容区域样式 */
324.emerald-content-section {
325 background: rgba(255, 255, 255, 0.95);
326 backdrop-filter: blur(20px);
327 border-radius: 25px;
328 padding: 30px;
329 margin: 30px auto;
330 box-shadow:
331 0 20px 60px rgba(45, 80, 22, 0.12),
332 0 8px 25px rgba(144, 238, 144, 0.08),
333 inset 0 1px 0 rgba(255, 255, 255, 0.9);
334 border: 2px solid rgba(144, 238, 144, 0.2);
335 position: relative;
336 overflow: hidden;
337}
338
339.emerald-content-section::before {
340 content: '';
341 position: absolute;
342 top: -2px;
343 left: -2px;
344 right: -2px;
345 bottom: -2px;
346 background: linear-gradient(45deg,
347 #90ee90 0%,
348 #98fb98 25%,
349 #f0fff0 50%,
350 #98fb98 75%,
351 #90ee90 100%);
352 border-radius: 27px;
353 z-index: -1;
354 animation: borderGlow 4s ease-in-out infinite;
355}
356
357.emerald-page-title {
358 text-align: center;
359 color: #2d5016;
360 font-family: 'Playfair Display', serif;
361 font-weight: 700;
362 font-size: 32px;
363 margin-bottom: 30px;
364 letter-spacing: 2px;
365}
366
367/* 表格区域样式 */
368.emerald-table-section {
369 background: rgba(255, 255, 255, 0.95);
370 backdrop-filter: blur(20px);
371 border-radius: 25px;
372 padding: 30px;
373 margin: 30px auto;
374 box-shadow:
375 0 20px 60px rgba(45, 80, 22, 0.12),
376 0 8px 25px rgba(144, 238, 144, 0.08),
377 inset 0 1px 0 rgba(255, 255, 255, 0.9);
378 border: 2px solid rgba(144, 238, 144, 0.2);
379 position: relative;
380 overflow: hidden;
381}
382
383.emerald-table-section::before {
384 content: '';
385 position: absolute;
386 top: -2px;
387 left: -2px;
388 right: -2px;
389 bottom: -2px;
390 background: linear-gradient(45deg,
391 #90ee90 0%,
392 #98fb98 25%,
393 #f0fff0 50%,
394 #98fb98 75%,
395 #90ee90 100%);
396 border-radius: 27px;
397 z-index: -1;
398 animation: borderGlow 4s ease-in-out infinite;
399}
400
401/* 表格样式 */
402.emerald-table {
403 width: 100%;
404 border-collapse: collapse;
405 font-family: 'Lora', serif;
406 background: transparent;
407}
408
409.emerald-table thead {
410 background: linear-gradient(135deg, #2d5016 0%, #4a7c59 100%);
411}
412
413.emerald-table th {
414 padding: 16px 20px;
415 text-align: left;
416 color: white;
417 font-weight: 600;
418 font-size: 16px;
419 letter-spacing: 1px;
420 border-bottom: 3px solid #90ee90;
421 position: relative;
422}
423
424.emerald-table th:first-child {
425 border-radius: 15px 0 0 0;
426}
427
428.emerald-table th:last-child {
429 border-radius: 0 15px 0 0;
430}
431
432.emerald-table tbody tr {
433 transition: all 0.3s ease;
434 border-bottom: 1px solid rgba(144, 238, 144, 0.2);
435}
436
437.emerald-table tbody tr:hover {
438 background: rgba(144, 238, 144, 0.1);
439 transform: translateX(5px);
440 box-shadow: 0 4px 15px rgba(144, 238, 144, 0.15);
441}
442
443.emerald-table td {
444 padding: 14px 20px;
445 color: #2d5016;
446 font-size: 15px;
447 vertical-align: middle;
448 transition: all 0.3s ease;
449}
450
451.emerald-table tbody tr:hover td {
452 color: #1a5c1a;
453}
454
455/* 表格链接样式 */
456.emerald-table a {
457 color: #2d5016;
458 text-decoration: none;
459 font-weight: 500;
460 transition: all 0.3s ease;
461 padding: 4px 8px;
462 border-radius: 8px;
463 display: inline-block;
464}
465
466.emerald-table a:hover {
467 color: #1a5c1a;
468 background: rgba(144, 238, 144, 0.2);
469 transform: translateY(-2px);
470 box-shadow: 0 4px 12px rgba(144, 238, 144, 0.3);
471}
472
473/* 论坛页面专用样式 */
474
475/* 文字雨背景效果 */
476.forum-text-rain {
477 position: fixed;
478 top: 0;
479 left: 0;
480 width: 100%;
481 height: 100%;
482 pointer-events: none;
483 overflow: hidden;
484 z-index: 1;
485}
486
487.text-drop {
488 position: absolute;
489 top: -50px;
490 font-size: 14px;
491 color: rgba(45, 80, 22, 0.6);
492 font-family: 'Lora', serif;
493 font-weight: 500;
494 animation: textFall linear infinite;
495 filter: drop-shadow(0 0 4px rgba(144, 238, 144, 0.3));
496}
497
498@keyframes textFall {
499 0% {
500 top: -50px;
501 opacity: 0;
502 transform: translateX(0);
503 }
504 10% {
505 opacity: 1;
506 }
507 90% {
508 opacity: 1;
509 }
510 100% {
511 top: 100vh;
512 opacity: 0;
513 transform: translateX(20px);
514 }
515}
516
517/* 论坛工具栏样式 */
518.forum-toolbar {
519 display: flex;
520 justify-content: space-between;
521 align-items: center;
522 margin-bottom: 30px;
523 padding: 20px 30px;
524 background: rgba(255, 255, 255, 0.95);
525 backdrop-filter: blur(15px);
526 border-radius: 20px;
527 box-shadow:
528 0 8px 32px rgba(45, 80, 22, 0.12),
529 0 4px 16px rgba(144, 238, 144, 0.08);
530 border: 2px solid rgba(144, 238, 144, 0.2);
531 gap: 20px;
532}
533
534.search-section {
535 display: flex;
536 align-items: center;
537 gap: 0;
538 flex: 1;
539 max-width: 500px;
540}
541
542.search-input-container {
543 position: relative;
544 flex: 1;
545 display: flex;
546 align-items: center;
547}
548
549.search-icon {
550 position: absolute;
551 left: 15px;
552 top: 50%;
553 transform: translateY(-50%);
554 color: rgba(45, 80, 22, 0.6);
555 font-size: 20px !important;
556}
557
558.forum-search-input {
559 width: 100%;
560 padding: 12px 20px 12px 50px;
561 border: 2px solid rgba(144, 238, 144, 0.3);
562 border-radius: 25px 0 0 25px;
563 background: rgba(240, 255, 240, 0.5);
564 font-size: 16px;
565 font-family: 'Lora', serif;
566 outline: none;
567 transition: all 0.3s ease;
568 border-right: none;
569}
570
571.forum-search-input:focus {
572 border-color: rgba(144, 238, 144, 0.6);
573 background: rgba(240, 255, 240, 0.8);
574 box-shadow: 0 0 15px rgba(144, 238, 144, 0.2);
575}
576
577.forum-search-btn {
578 padding: 14px 20px;
579 border: 2px solid rgba(144, 238, 144, 0.3);
580 border-left: none;
581 border-radius: 0 25px 25px 0;
582 background: linear-gradient(135deg, #2d5016 0%, #90ee90 100%);
583 color: white;
584 font-size: 16px;
585 font-family: 'Lora', serif;
586 font-weight: 500;
587 cursor: pointer;
588 transition: all 0.3s ease;
589 box-shadow: 0 4px 15px rgba(45, 80, 22, 0.2);
590 white-space: nowrap;
591}
592
593.forum-search-btn:hover {
594 background: linear-gradient(135deg, #1a3d0e 0%, #7ddc7d 100%);
595 transform: translateY(-1px);
596 box-shadow: 0 6px 20px rgba(45, 80, 22, 0.3);
597}
598
599.forum-search-input:focus + .forum-search-btn {
600 border-color: rgba(144, 238, 144, 0.6);
601}
602
603.new-post-btn {
604 display: flex;
605 align-items: center;
606 padding: 12px 20px;
607 border: none;
608 border-radius: 20px;
609 background: linear-gradient(135deg, #90ee90 0%, #2d5016 100%);
610 color: white;
611 font-size: 16px;
612 font-family: 'Lora', serif;
613 font-weight: 500;
614 cursor: pointer;
615 transition: all 0.3s ease;
616 box-shadow: 0 4px 15px rgba(144, 238, 144, 0.2);
617}
618
619.new-post-btn:hover {
620 transform: translateY(-2px) scale(1.02);
621 box-shadow: 0 6px 20px rgba(144, 238, 144, 0.3);
622}
623
624/* 论坛帖子容器 */
625.forum-posts-container {
626 display: flex;
627 flex-direction: column;
628 gap: 20px;
629}
630
631/* 论坛帖子卡片样式 */
632.forum-post-card {
633 background: rgba(255, 255, 255, 0.95);
634 backdrop-filter: blur(15px);
635 border-radius: 20px;
636 padding: 25px 30px;
637 border: 2px solid rgba(144, 238, 144, 0.2);
638 cursor: pointer;
639 transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
640 position: relative;
641 overflow: hidden;
642 box-shadow: 0 8px 25px rgba(45, 80, 22, 0.1);
643}
644
645.forum-post-card::before {
646 content: '';
647 position: absolute;
648 top: 0;
649 left: -100%;
650 width: 100%;
651 height: 100%;
652 background: linear-gradient(90deg, transparent, rgba(144, 238, 144, 0.1), transparent);
653 transition: left 0.6s ease;
654}
655
656.forum-post-card:hover::before {
657 left: 100%;
658}
659
660.forum-post-card:hover {
661 transform: translateY(-8px) scale(1.02);
662 border-color: rgba(144, 238, 144, 0.4);
663 box-shadow:
664 0 15px 40px rgba(45, 80, 22, 0.15),
665 0 8px 25px rgba(144, 238, 144, 0.1);
666}
667
668/* 帖子头部信息 */
669.post-header {
670 display: flex;
671 justify-content: space-between;
672 align-items: center;
673 margin-bottom: 15px;
674}
675
676.post-author-info {
677 display: flex;
678 align-items: center;
679 gap: 12px;
680}
681
682.author-avatar {
683 width: 40px;
684 height: 40px;
685 border-radius: 50%;
686 background: linear-gradient(135deg, #90ee90, #2d5016);
687 display: flex;
688 align-items: center;
689 justify-content: center;
690 box-shadow: 0 2px 10px rgba(45, 80, 22, 0.2);
691}
692
693.author-details {
694 display: flex;
695 flex-direction: column;
696 gap: 2px;
697}
698
699.author-name {
700 font-weight: 600;
701 color: #2d5016;
702 font-size: 16px;
703 font-family: 'Lora', serif;
704}
705
706.post-time {
707 font-size: 12px;
708 color: rgba(45, 80, 22, 0.7);
709}
710
711.post-stats {
712 display: flex;
713 gap: 15px;
714}
715
716.stat-item {
717 background: rgba(144, 238, 144, 0.2);
718 padding: 4px 10px;
719 border-radius: 12px;
720 font-size: 12px;
721 color: #2d5016;
722 font-weight: 500;
723}
724
725/* 帖子内容区域 */
726.post-content {
727 margin: 15px 0;
728}
729
730.post-title {
731 font-family: 'Playfair Display', serif;
732 font-size: 20px;
733 font-weight: 700;
734 color: #2d5016;
735 margin-bottom: 10px;
736 line-height: 1.3;
737}
738
739.post-preview {
740 font-size: 15px;
741 color: rgba(45, 80, 22, 0.8);
742 line-height: 1.5;
743 display: -webkit-box;
744 -webkit-line-clamp: 2;
745 line-clamp: 2;
746 -webkit-box-orient: vertical;
747 overflow: hidden;
748}
749
750/* 帖子底部 */
751.post-footer {
752 display: flex;
753 justify-content: space-between;
754 align-items: center;
755 margin-top: 15px;
756 padding-top: 15px;
757 border-top: 1px solid rgba(144, 238, 144, 0.2);
758}
759
760.post-tags {
761 display: flex;
762 gap: 8px;
763}
764
765.post-tag {
766 background: linear-gradient(135deg, #90ee90, #2d5016);
767 color: white;
768 padding: 4px 12px;
769 border-radius: 15px;
770 font-size: 12px;
771 font-weight: 500;
772}
773
774.post-actions {
775 display: flex;
776 gap: 10px;
777}
778
779.action-btn {
780 color: #2d5016;
781 font-size: 14px;
782 font-weight: 500;
783 transition: all 0.3s ease;
784}
785
786.action-btn:hover {
787 color: #90ee90;
788 transform: translateX(3px);
789}
790
791/* 帖子详情页面样式 */
792.post-detail-header {
793 margin: 20px 0;
794 display: flex;
795 justify-content: flex-start;
796}
797
798.back-to-forum-btn {
799 background: rgba(144, 238, 144, 0.2);
800 border: 2px solid rgba(144, 238, 144, 0.4);
801 border-radius: 20px;
802 padding: 12px 24px;
803 color: #2d5016;
804 font-weight: 600;
805 cursor: pointer;
806 transition: all 0.3s ease;
807 display: flex;
808 align-items: center;
809 font-family: 'Lora', serif;
810 backdrop-filter: blur(10px);
811}
812
813.back-to-forum-btn:hover {
814 background: rgba(144, 238, 144, 0.3);
815 transform: translateY(-2px);
816 box-shadow: 0 8px 20px rgba(45, 80, 22, 0.15);
817}
818
819.post-detail-main {
820 background: rgba(255, 255, 255, 0.98);
821 border-radius: 20px;
822 padding: 30px;
823 margin-bottom: 30px;
824 border: 2px solid rgba(144, 238, 144, 0.2);
825 box-shadow: 0 15px 40px rgba(45, 80, 22, 0.08);
826 position: relative;
827 overflow: hidden;
828}
829
830.post-detail-main::before {
831 content: '';
832 position: absolute;
833 top: -2px;
834 left: -2px;
835 right: -2px;
836 bottom: -2px;
837 background: linear-gradient(45deg,
838 #90ee90 0%,
839 #98fb98 25%,
840 #f0fff0 50%,
841 #98fb98 75%,
842 #90ee90 100%);
843 border-radius: 22px;
844 z-index: -1;
845 animation: borderGlow 6s ease-in-out infinite;
846}
847
848.post-detail-header-info {
849 display: flex;
850 justify-content: space-between;
851 align-items: flex-start;
852 margin-bottom: 25px;
853 padding-bottom: 20px;
854 border-bottom: 2px solid rgba(144, 238, 144, 0.2);
855}
856
857.post-author-section {
858 display: flex;
859 align-items: center;
860 gap: 15px;
861}
862
863.post-author-avatar {
864 padding: 8px;
865 background: linear-gradient(135deg, rgba(144, 238, 144, 0.2), rgba(240, 255, 240, 0.6));
866 border-radius: 50%;
867 border: 2px solid rgba(144, 238, 144, 0.3);
868}
869
870.post-author-details h2.post-author-name {
871 margin: 0;
872 font-size: 22px;
873 color: #2d5016;
874 font-weight: 700;
875 font-family: 'Playfair Display', serif;
876}
877
878.post-publish-time {
879 color: #666;
880 font-size: 14px;
881 font-style: italic;
882}
883
884.post-stats-section {
885 display: flex;
886 gap: 15px;
887 align-items: center;
888}
889
890.stat-badge {
891 display: flex;
892 align-items: center;
893 background: rgba(144, 238, 144, 0.15);
894 padding: 8px 16px;
895 border-radius: 20px;
896 border: 1px solid rgba(144, 238, 144, 0.3);
897 color: #2d5016;
898 font-weight: 500;
899 font-size: 14px;
900 transition: all 0.3s ease;
901}
902
903.stat-badge:hover {
904 background: rgba(144, 238, 144, 0.25);
905 transform: translateY(-2px);
906}
907
908.post-content-section {
909 margin-top: 20px;
910}
911
912.post-detail-title {
913 font-size: 28px;
914 color: #2d5016;
915 font-weight: 700;
916 margin-bottom: 20px;
917 font-family: 'Playfair Display', serif;
918 line-height: 1.3;
919}
920
921.post-detail-content {
922 font-size: 16px;
923 line-height: 1.8;
924 color: #444;
925 background: rgba(240, 255, 240, 0.3);
926 padding: 25px;
927 border-radius: 15px;
928 border-left: 4px solid #90ee90;
929 font-family: 'Lora', serif;
930}
931
932/* 回复区域样式 */
933.replies-section {
934 margin-top: 30px;
935}
936
937.replies-title {
938 display: flex;
939 align-items: center;
940 font-size: 22px;
941 color: #2d5016;
942 font-weight: 600;
943 margin-bottom: 25px;
944 font-family: 'Playfair Display', serif;
945}
946
947.replies-list {
948 display: flex;
949 flex-direction: column;
950 gap: 20px;
951}
952
953.reply-card {
954 display: flex;
955 background: rgba(255, 255, 255, 0.95);
956 border-radius: 15px;
957 padding: 20px;
958 border: 1px solid rgba(144, 238, 144, 0.2);
959 transition: all 0.3s ease;
960 position: relative;
961 overflow: hidden;
962}
963
964.reply-card::before {
965 content: '';
966 position: absolute;
967 top: -1px;
968 left: -1px;
969 right: -1px;
970 bottom: -1px;
971 background: linear-gradient(45deg,
972 transparent 0%,
973 rgba(144, 238, 144, 0.1) 50%,
974 transparent 100%);
975 border-radius: 16px;
976 z-index: -1;
977 opacity: 0;
978 transition: opacity 0.3s ease;
979}
980
981.reply-card:hover::before {
982 opacity: 1;
983}
984
985.reply-card:hover {
986 transform: translateY(-3px);
987 box-shadow: 0 10px 25px rgba(45, 80, 22, 0.1);
988}
989
990.reply-index {
991 background: linear-gradient(135deg, #90ee90, #2d5016);
992 color: white;
993 width: 35px;
994 height: 35px;
995 border-radius: 50%;
996 display: flex;
997 align-items: center;
998 justify-content: center;
999 font-weight: 700;
1000 font-size: 14px;
1001 margin-right: 20px;
1002 flex-shrink: 0;
1003 box-shadow: 0 4px 12px rgba(45, 80, 22, 0.2);
1004}
1005
1006.reply-content-wrapper {
1007 flex: 1;
1008}
1009
1010.reply-author-info {
1011 display: flex;
1012 align-items: center;
1013 margin-bottom: 12px;
1014 gap: 8px;
1015}
1016
1017.reply-author-name {
1018 font-weight: 600;
1019 color: #2d5016;
1020 font-size: 16px;
1021}
1022
1023.reply-time {
1024 color: #888;
1025 font-size: 13px;
1026 font-style: italic;
1027}
1028
1029.reply-content {
1030 color: #444;
1031 font-size: 15px;
1032 line-height: 1.6;
1033 font-family: 'Lora', serif;
1034}
1035
1036.no-replies {
1037 text-align: center;
1038 padding: 60px 20px;
1039 color: #666;
1040 background: rgba(240, 255, 240, 0.3);
1041 border-radius: 20px;
1042 border: 2px dashed rgba(144, 238, 144, 0.3);
1043}
1044
1045.no-replies p {
1046 margin: 0;
1047 font-size: 16px;
1048 font-style: italic;
1049}
1050
1051/* 回复输入区域样式 */
1052.reply-input-section {
1053 margin-top: 40px;
1054 background: rgba(255, 255, 255, 0.98);
1055 border-radius: 20px;
1056 padding: 30px;
1057 border: 2px solid rgba(144, 238, 144, 0.2);
1058 position: relative;
1059 overflow: hidden;
1060}
1061
1062.reply-input-section::before {
1063 content: '';
1064 position: absolute;
1065 top: -2px;
1066 left: -2px;
1067 right: -2px;
1068 bottom: -2px;
1069 background: linear-gradient(45deg,
1070 #90ee90 0%,
1071 #98fb98 25%,
1072 #f0fff0 50%,
1073 #98fb98 75%,
1074 #90ee90 100%);
1075 border-radius: 22px;
1076 z-index: -1;
1077 animation: borderGlow 5s ease-in-out infinite;
1078}
1079
1080.reply-input-title {
1081 color: #2d5016;
1082 font-size: 20px;
1083 font-weight: 600;
1084 margin-bottom: 20px;
1085 font-family: 'Playfair Display', serif;
1086}
1087
1088.reply-input-wrapper {
1089 display: flex;
1090 flex-direction: column;
1091 gap: 15px;
1092}
1093
1094.reply-textarea {
1095 width: 100%;
1096 border: 2px solid rgba(144, 238, 144, 0.3);
1097 border-radius: 15px;
1098 padding: 20px;
1099 font-size: 15px;
1100 font-family: 'Lora', serif;
1101 line-height: 1.6;
1102 background: rgba(240, 255, 240, 0.2);
1103 resize: vertical;
1104 min-height: 120px;
1105 transition: all 0.3s ease;
1106 box-sizing: border-box;
1107}
1108
1109.reply-textarea:focus {
1110 outline: none;
1111 border-color: #90ee90;
1112 background: rgba(240, 255, 240, 0.4);
1113 box-shadow: 0 0 0 3px rgba(144, 238, 144, 0.2);
1114}
1115
1116.reply-textarea::placeholder {
1117 color: #999;
1118 font-style: italic;
1119}
1120
1121.reply-actions {
1122 display: flex;
1123 justify-content: space-between;
1124 align-items: center;
1125}
1126
1127.reply-tips {
1128 color: #666;
1129 font-size: 14px;
1130 font-style: italic;
1131}
1132
1133.submit-reply-btn {
1134 background: linear-gradient(135deg, #90ee90, #2d5016);
1135 color: white;
1136 border: none;
1137 border-radius: 20px;
1138 padding: 12px 30px;
1139 font-size: 16px;
1140 font-weight: 600;
1141 cursor: pointer;
1142 transition: all 0.3s ease;
1143 display: flex;
1144 align-items: center;
1145 font-family: 'Lora', serif;
1146 box-shadow: 0 6px 20px rgba(45, 80, 22, 0.2);
1147}
1148
1149.submit-reply-btn:hover {
1150 transform: translateY(-3px);
1151 box-shadow: 0 10px 30px rgba(45, 80, 22, 0.3);
1152 background: linear-gradient(135deg, #7dd87d, #1a4a1a);
1153}
1154
1155.submit-reply-btn:active {
1156 transform: translateY(-1px);
1157}
1158
wht30587822025-06-09 23:33:09 +08001159/* 发布页面专用样式 */
1160.publish-text-rain {
1161 position: fixed;
1162 top: 0;
1163 left: 0;
1164 width: 100%;
1165 height: 100%;
1166 pointer-events: none;
1167 overflow: hidden;
1168 z-index: 1;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001169}
1170
wht30587822025-06-09 23:33:09 +08001171.publish-text-rain .text-drop {
1172 position: absolute;
1173 font-size: 16px;
1174 font-weight: 600;
1175 animation: publishTextFall linear infinite;
1176 opacity: 0.7;
1177 filter: drop-shadow(0 2px 4px rgba(144, 238, 144, 0.3));
1178 font-family: 'Lora', serif;
1179}
1180
1181@keyframes publishTextFall {
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001182 0% {
wht30587822025-06-09 23:33:09 +08001183 transform: translateY(-100vh) rotate(0deg);
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001184 opacity: 0;
1185 }
1186 10% {
1187 opacity: 0.8;
1188 }
1189 90% {
1190 opacity: 0.8;
1191 }
1192 100% {
wht30587822025-06-09 23:33:09 +08001193 transform: translateY(100vh) rotate(360deg);
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001194 opacity: 0;
1195 }
1196}
1197
wht30587822025-06-09 23:33:09 +08001198.publish-form-container {
1199 max-width: 900px;
1200 margin: 0 auto;
1201}
1202
1203.publish-form-advanced {
1204 background: rgba(255, 255, 255, 0.98);
1205 border-radius: 25px;
1206 padding: 40px;
1207 border: 2px solid rgba(144, 238, 144, 0.2);
1208 position: relative;
1209 overflow: hidden;
1210 box-shadow: 0 20px 60px rgba(45, 80, 22, 0.12);
1211}
1212
1213.publish-form-advanced::before {
1214 content: '';
1215 position: absolute;
1216 top: -2px;
1217 left: -2px;
1218 right: -2px;
1219 bottom: -2px;
1220 background: linear-gradient(45deg,
1221 #90ee90 0%,
1222 #98fb98 25%,
1223 #f0fff0 50%,
1224 #98fb98 75%,
1225 #90ee90 100%);
1226 border-radius: 27px;
1227 z-index: -1;
1228 animation: borderGlow 5s ease-in-out infinite;
1229}
1230
1231.form-section {
1232 margin-bottom: 35px;
1233 padding: 25px;
1234 background: rgba(240, 255, 240, 0.2);
1235 border-radius: 20px;
1236 border: 1px solid rgba(144, 238, 144, 0.2);
1237 transition: all 0.3s ease;
1238}
1239
1240.form-section:hover {
1241 background: rgba(240, 255, 240, 0.3);
1242 transform: translateY(-2px);
1243 box-shadow: 0 8px 25px rgba(45, 80, 22, 0.1);
1244}
1245
1246.section-header {
1247 display: flex;
1248 align-items: center;
1249 margin-bottom: 20px;
1250 padding-bottom: 15px;
1251 border-bottom: 2px solid rgba(144, 238, 144, 0.2);
1252}
1253
1254.section-header h3 {
1255 color: #2d5016;
1256 font-size: 20px;
1257 font-weight: 600;
1258 margin: 0;
1259 font-family: 'Playfair Display', serif;
1260}
1261
1262.form-grid {
1263 display: grid;
1264 grid-template-columns: 1fr 1fr;
1265 gap: 25px;
1266}
1267
1268.form-field {
1269 display: flex;
1270 flex-direction: column;
1271 margin-bottom: 20px;
1272}
1273
1274.form-field label {
1275 color: #2d5016;
1276 font-weight: 600;
1277 margin-bottom: 8px;
1278 font-size: 16px;
1279 display: flex;
1280 align-items: center;
1281 font-family: 'Lora', serif;
1282}
1283
1284.select-wrapper {
1285 position: relative;
1286}
1287
1288.modern-select {
1289 width: 100%;
1290 padding: 15px 20px;
1291 border: 2px solid rgba(144, 238, 144, 0.3);
1292 border-radius: 15px;
1293 font-size: 16px;
1294 background: rgba(255, 255, 255, 0.9);
1295 color: #2d5016;
1296 transition: all 0.3s ease;
1297 appearance: none;
1298 cursor: pointer;
1299 font-family: 'Lora', serif;
1300}
1301
1302.modern-select:focus {
1303 outline: none;
1304 border-color: #90ee90;
1305 background: rgba(255, 255, 255, 1);
1306 box-shadow: 0 0 0 3px rgba(144, 238, 144, 0.2);
1307 transform: translateY(-2px);
1308}
1309
1310.modern-select::after {
1311 content: '▼';
1312 position: absolute;
1313 right: 15px;
1314 top: 50%;
1315 transform: translateY(-50%);
1316 color: #90ee90;
1317 pointer-events: none;
1318}
1319
1320.modern-input {
1321 width: 100%;
1322 padding: 15px 20px;
1323 border: 2px solid rgba(144, 238, 144, 0.3);
1324 border-radius: 15px;
1325 font-size: 16px;
1326 background: rgba(255, 255, 255, 0.9);
1327 color: #2d5016;
1328 transition: all 0.3s ease;
1329 font-family: 'Lora', serif;
1330 box-sizing: border-box;
1331}
1332
1333.modern-input:focus {
1334 outline: none;
1335 border-color: #90ee90;
1336 background: rgba(255, 255, 255, 1);
1337 box-shadow: 0 0 0 3px rgba(144, 238, 144, 0.2);
1338 transform: translateY(-2px);
1339}
1340
1341.modern-textarea {
1342 width: 100%;
1343 padding: 15px 20px;
1344 border: 2px solid rgba(144, 238, 144, 0.3);
1345 border-radius: 15px;
1346 font-size: 16px;
1347 background: rgba(255, 255, 255, 0.9);
1348 color: #2d5016;
1349 transition: all 0.3s ease;
1350 resize: vertical;
1351 min-height: 120px;
1352 font-family: 'Lora', serif;
1353 line-height: 1.6;
1354 box-sizing: border-box;
1355}
1356
1357.modern-textarea:focus {
1358 outline: none;
1359 border-color: #90ee90;
1360 background: rgba(255, 255, 255, 1);
1361 box-shadow: 0 0 0 3px rgba(144, 238, 144, 0.2);
1362 transform: translateY(-2px);
1363}
1364
1365/* 文件上传区域 */
1366.file-upload-area {
1367 border: 3px dashed rgba(144, 238, 144, 0.4);
1368 border-radius: 20px;
1369 padding: 40px;
1370 text-align: center;
1371 background: rgba(240, 255, 240, 0.3);
1372 transition: all 0.3s ease;
1373 cursor: pointer;
1374 position: relative;
1375 overflow: hidden;
1376}
1377
1378.file-upload-area:hover {
1379 border-color: #90ee90;
1380 background: rgba(240, 255, 240, 0.5);
1381 transform: translateY(-3px);
1382 box-shadow: 0 10px 30px rgba(45, 80, 22, 0.15);
1383}
1384
1385/* 拖拽上传状态样式 */
1386.file-upload-area.drag-over {
1387 border-color: #2d5016 !important;
1388 background: rgba(144, 238, 144, 0.2) !important;
1389 transform: translateY(-5px) scale(1.02);
1390 box-shadow:
1391 0 15px 40px rgba(45, 80, 22, 0.25),
1392 0 0 0 3px rgba(144, 238, 144, 0.3);
1393 animation: dragPulse 1.5s ease-in-out infinite;
1394}
1395
1396.file-upload-area.drag-over .upload-main-text {
1397 color: #2d5016 !important;
1398 font-weight: 700;
1399 transform: scale(1.05);
1400}
1401
1402.file-upload-area.drag-over .upload-sub-text {
1403 color: #1a5c1a !important;
1404 font-weight: 600;
1405}
1406
1407@keyframes dragPulse {
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001408 0%, 100% {
wht30587822025-06-09 23:33:09 +08001409 box-shadow:
1410 0 15px 40px rgba(45, 80, 22, 0.25),
1411 0 0 0 3px rgba(144, 238, 144, 0.3);
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001412 }
1413 50% {
wht30587822025-06-09 23:33:09 +08001414 box-shadow:
1415 0 20px 50px rgba(45, 80, 22, 0.35),
1416 0 0 0 5px rgba(144, 238, 144, 0.4);
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001417 }
1418}
1419
wht30587822025-06-09 23:33:09 +08001420/* 拖拽时的全局遮罩效果 */
1421.file-upload-area.drag-over::after {
1422 content: '';
1423 position: absolute;
1424 top: -5px;
1425 left: -5px;
1426 right: -5px;
1427 bottom: -5px;
1428 border: 3px dashed #2d5016;
1429 border-radius: 25px;
1430 background: rgba(144, 238, 144, 0.1);
1431 animation: dashRotate 2s linear infinite;
1432 pointer-events: none;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001433}
1434
wht30587822025-06-09 23:33:09 +08001435@keyframes dashRotate {
1436 0% {
1437 border-color: #2d5016;
1438 transform: rotate(0deg);
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001439 }
1440 25% {
wht30587822025-06-09 23:33:09 +08001441 border-color: #90ee90;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001442 }
1443 50% {
wht30587822025-06-09 23:33:09 +08001444 border-color: #2d5016;
1445 transform: rotate(180deg);
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001446 }
1447 75% {
wht30587822025-06-09 23:33:09 +08001448 border-color: #90ee90;
1449 }
1450 100% {
1451 border-color: #2d5016;
1452 transform: rotate(360deg);
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001453 }
1454}
1455
wht30587822025-06-09 23:33:09 +08001456/* 文件上传区域增强过渡效果 */
1457.file-upload-area {
1458 position: relative;
1459 transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
1460}
1461
1462.file-upload-label {
1463 transition: all 0.3s ease;
1464 z-index: 10;
1465 position: relative;
1466}
1467
1468.upload-main-text,
1469.upload-sub-text {
1470 transition: all 0.3s ease;
1471}
1472
1473/* 防止拖拽时的默认行为 */
1474.file-upload-area * {
1475 pointer-events: none;
1476}
1477
1478.file-upload-area label {
1479 pointer-events: auto;
1480}
1481
1482.file-upload-area input {
1483 pointer-events: auto;
1484}
1485
1486/* 文件上传隐藏输入框 */
1487.file-input-hidden {
1488 display: none;
1489}
1490
1491.file-upload-label {
1492 display: flex;
1493 flex-direction: column;
1494 align-items: center;
1495 cursor: pointer;
1496 padding: 20px;
1497 border-radius: 15px;
1498 transition: all 0.3s ease;
1499}
1500
1501.upload-text {
1502 display: flex;
1503 flex-direction: column;
1504 align-items: center;
1505 gap: 8px;
1506}
1507
1508.upload-main-text {
1509 font-size: 18px;
1510 font-weight: 600;
1511 color: #2d5016;
1512 transition: all 0.3s ease;
1513 font-family: 'Playfair Display', serif;
1514}
1515
1516.upload-sub-text {
1517 font-size: 14px;
1518 color: #4a7c59;
1519 font-style: italic;
1520 transition: all 0.3s ease;
1521 text-align: center;
1522 font-family: 'Lora', serif;
1523}
1524
1525/* 上传进度区域样式 */
1526.upload-progress-section {
1527 margin: 30px 0;
1528 padding: 25px;
1529 background: rgba(144, 238, 144, 0.1);
1530 border-radius: 20px;
1531 border: 2px solid rgba(144, 238, 144, 0.3);
1532 animation: progressGlow 2s ease-in-out infinite;
1533}
1534
1535@keyframes progressGlow {
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001536 0%, 100% {
wht30587822025-06-09 23:33:09 +08001537 border-color: rgba(144, 238, 144, 0.3);
1538 box-shadow: 0 0 10px rgba(144, 238, 144, 0.1);
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001539 }
1540 50% {
wht30587822025-06-09 23:33:09 +08001541 border-color: rgba(144, 238, 144, 0.5);
1542 box-shadow: 0 0 20px rgba(144, 238, 144, 0.2);
1543 }
1544}
1545
1546.progress-header {
1547 display: flex;
1548 justify-content: space-between;
1549 align-items: center;
1550 margin-bottom: 15px;
1551 font-family: 'Lora', serif;
1552 font-weight: 600;
1553 color: #2d5016;
1554 font-size: 16px;
1555}
1556
1557.progress-bar {
1558 width: 100%;
1559 height: 12px;
1560 background: rgba(255, 255, 255, 0.8);
1561 border-radius: 10px;
1562 overflow: hidden;
1563 border: 2px solid rgba(144, 238, 144, 0.3);
1564 position: relative;
1565}
1566
1567.progress-fill {
1568 height: 100%;
1569 background: linear-gradient(90deg,
1570 #90ee90 0%,
1571 #98fb98 25%,
1572 #2d5016 50%,
1573 #98fb98 75%,
1574 #90ee90 100%);
1575 border-radius: 8px;
1576 transition: width 0.3s ease;
1577 position: relative;
1578 animation: progressShine 2s ease-in-out infinite;
1579}
1580
1581@keyframes progressShine {
1582 0% {
1583 background-position: -100% 0;
1584 }
1585 100% {
1586 background-position: 100% 0;
1587 }
1588}
1589
1590.progress-fill::after {
1591 content: '';
1592 position: absolute;
1593 top: 0;
1594 left: -100%;
1595 width: 100%;
1596 height: 100%;
1597 background: linear-gradient(90deg,
1598 transparent 0%,
1599 rgba(255, 255, 255, 0.4) 50%,
1600 transparent 100%);
1601 animation: progressShineEffect 2s ease-in-out infinite;
1602}
1603
1604@keyframes progressShineEffect {
1605 0% {
1606 left: -100%;
1607 }
1608 100% {
1609 left: 100%;
1610 }
1611}
1612
1613/* 表单提交区域样式 */
1614.form-submit-section {
1615 display: flex;
1616 flex-direction: column;
1617 align-items: center;
1618 justify-content: center;
1619 text-align: center;
1620 margin: 40px auto;
1621 padding: 30px;
1622 background: rgba(240, 255, 240, 0.3);
1623 border-radius: 20px;
1624 border: 2px dashed rgba(144, 238, 144, 0.4);
1625 position: relative;
1626 overflow: hidden;
1627 max-width: 400px;
1628}
1629
1630.form-submit-section::before {
1631 content: '';
1632 position: absolute;
1633 top: -50%;
1634 left: -50%;
1635 width: 200%;
1636 height: 200%;
1637 background: radial-gradient(circle, rgba(144, 238, 144, 0.1) 0%, transparent 70%);
1638 animation: submitAreaFloat 8s ease-in-out infinite;
1639 pointer-events: none;
1640}
1641
1642@keyframes submitAreaFloat {
1643 0%, 100% {
1644 transform: translate(-50%, -50%) rotate(0deg);
1645 }
1646 50% {
1647 transform: translate(-50%, -50%) rotate(180deg);
1648 }
1649}
1650
1651/* 发布提交按钮样式 */
1652.publish-submit-btn {
1653 background: linear-gradient(135deg, #2d5016 0%, #4a7c59 25%, #90ee90 50%, #4a7c59 75%, #2d5016 100%);
1654 background-size: 300% 300%;
1655 color: white;
1656 border: none;
1657 padding: 18px 45px;
1658 font-size: 18px;
1659 font-weight: 600;
1660 border-radius: 25px;
1661 cursor: pointer;
1662 transition: all 0.4s ease;
1663 position: relative;
1664 overflow: hidden;
1665 font-family: 'Playfair Display', serif;
1666 letter-spacing: 1px;
1667 box-shadow:
1668 0 8px 25px rgba(45, 80, 22, 0.3),
1669 inset 0 1px 0 rgba(255, 255, 255, 0.2);
1670 animation: buttonGradient 3s ease-in-out infinite;
1671 display: flex;
1672 align-items: center;
1673 justify-content: center;
1674 min-width: 180px;
1675 margin: 0 auto;
1676 z-index: 10;
1677}
1678
1679.publish-submit-btn::before {
1680 content: '';
1681 position: absolute;
1682 top: 0;
1683 left: -100%;
1684 width: 100%;
1685 height: 100%;
1686 background: linear-gradient(90deg,
1687 transparent 0%,
1688 rgba(255, 255, 255, 0.3) 50%,
1689 transparent 100%);
1690 transition: left 0.6s ease;
1691}
1692
1693.publish-submit-btn:hover::before {
1694 left: 100%;
1695}
1696
1697.publish-submit-btn:hover {
1698 transform: translateY(-3px) scale(1.05);
1699 box-shadow:
1700 0 12px 35px rgba(45, 80, 22, 0.4),
1701 0 0 0 3px rgba(144, 238, 144, 0.3),
1702 inset 0 1px 0 rgba(255, 255, 255, 0.3);
1703 background-position: 100% 100%;
1704}
1705
1706.publish-submit-btn:active {
1707 transform: translateY(-1px) scale(1.02);
1708 transition: all 0.1s ease;
1709}
1710
1711.publish-submit-btn:disabled {
1712 opacity: 0.7;
1713 cursor: not-allowed;
1714 transform: none;
1715 animation: none;
1716}
1717
1718.publish-submit-btn:disabled:hover {
1719 transform: none;
1720 box-shadow: 0 8px 25px rgba(45, 80, 22, 0.3);
1721}
1722
1723@keyframes buttonGradient {
1724 0%, 100% {
1725 background-position: 0% 50%;
1726 }
1727 50% {
1728 background-position: 100% 50%;
1729 }
1730}
1731
1732/* 加载动画样式 */
1733.loading-spinner {
1734 width: 20px;
1735 height: 20px;
1736 border: 3px solid rgba(255, 255, 255, 0.3);
1737 border-top: 3px solid white;
1738 border-radius: 50%;
1739 animation: loadingSpin 1s linear infinite;
1740 margin-right: 12px;
1741}
1742
1743@keyframes loadingSpin {
1744 0% {
1745 transform: rotate(0deg);
1746 }
1747 100% {
1748 transform: rotate(360deg);
1749 }
1750}
1751
1752/* 提交提示样式 */
1753.submit-tips {
1754 margin: 20px auto 0;
1755 color: #4a7c59;
1756 font-size: 14px;
1757 font-style: italic;
1758 padding: 15px;
1759 background: rgba(144, 238, 144, 0.1);
1760 border-radius: 15px;
1761 border: 1px solid rgba(144, 238, 144, 0.2);
1762 font-family: 'Lora', serif;
1763 line-height: 1.5;
1764 position: relative;
1765 overflow: hidden;
1766 text-align: center;
1767 max-width: 350px;
1768}
1769
1770.submit-tips::before {
1771 content: '';
1772 position: absolute;
1773 top: -2px;
1774 left: -100%;
1775 width: 100%;
1776 height: calc(100% + 4px);
1777 background: linear-gradient(90deg,
1778 transparent 0%,
1779 rgba(144, 238, 144, 0.2) 50%,
1780 transparent 100%);
1781 animation: tipShine 4s ease-in-out infinite;
1782}
1783
1784@keyframes tipShine {
1785 0%, 80%, 100% {
1786 left: -100%;
1787 }
1788 10%, 70% {
1789 left: 100%;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001790 }
1791}
1792
1793/* 响应式设计 */
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001794@media (max-width: 768px) {
wht30587822025-06-09 23:33:09 +08001795 .form-grid {
1796 grid-template-columns: 1fr;
1797 gap: 20px;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001798 }
1799
wht30587822025-06-09 23:33:09 +08001800 .publish-form-advanced {
1801 padding: 25px;
1802 margin: 20px;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001803 }
1804
wht30587822025-06-09 23:33:09 +08001805 .file-upload-area {
1806 padding: 30px 20px;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001807 }
1808
wht30587822025-06-09 23:33:09 +08001809 .upload-main-text {
1810 font-size: 16px;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001811 }
1812
wht30587822025-06-09 23:33:09 +08001813 .upload-sub-text {
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001814 font-size: 12px;
1815 }
1816
wht30587822025-06-09 23:33:09 +08001817 .publish-submit-btn {
1818 padding: 15px 35px;
1819 font-size: 16px;
1820 min-width: 160px;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001821 }
1822
wht30587822025-06-09 23:33:09 +08001823 .form-submit-section {
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001824 padding: 20px;
wht30587822025-06-09 23:33:09 +08001825 margin-top: 30px;
TRM-codingfa3ffdf2025-06-09 22:47:42 +08001826 }
1827}