blob: fc03361416e223020dfd42ec13853edb2a8dbca4 [file] [log] [blame]
Raverafc93da2025-06-15 18:12:49 +08001/* 注册页面容器 */
2.register-container {
3 min-height: 100vh;
4 min-height: 100dvh; /* 动态视口高度,避免移动端地址栏影响 */
5 height: 100vh;
6 height: 100dvh;
7 display: flex;
8 align-items: center;
9 justify-content: center;
10 position: relative;
11 overflow: hidden;
12 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
13 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
14 sans-serif;
15 /* 确保容器稳定定位 */
16 box-sizing: border-box;
17 margin: 0;
18 padding: 0;
19 /* 重置文本对齐 */
20 text-align: initial;
21}
22
23/* 小红书风格背景 */
24.register-background {
25 position: absolute;
26 top: 0;
27 left: 0;
28 right: 0;
29 bottom: 0;
30 background: #f8f8f8;
31 z-index: -1;
32}
33
34/* 注册内容区域 */
35.register-content {
36 width: 100%;
37 max-width: 500px; /* 增加桌面端最大宽度 */
38 padding: 0;
39 z-index: 1;
40 /* 确保内容稳定定位 */
41 box-sizing: border-box;
42 position: relative;
43 display: flex;
44 justify-content: center;
45}
46
47/* 小红书风格注册卡片 */
48.register-card {
49 background: #fff;
50 border-radius: 8px;
51 padding: 40px; /* 增加桌面端内边距 */
52 box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
53 border: 1px solid #e1e1e1;
54 width: 100%;
55 max-width: 450px; /* 增加桌面端卡片最大宽度 */
56 transition: none;
57}
58
59/* 注册头部 */
60.register-header {
61 text-align: center;
62 margin-bottom: 40px;
63}
64
65/* Logo样式 */
66.logo-section {
67 margin-bottom: 24px;
68}
69
70.logo-icon {
71 width: 60px;
72 height: 60px;
73 background: #ff2442;
74 border-radius: 12px;
75 display: flex;
76 align-items: center;
77 justify-content: center;
78 font-size: 28px;
79 margin: 0 auto 16px;
80 box-shadow: 0 4px 12px rgba(255, 36, 66, 0.2);
81}
82
83.register-title {
84 font-size: 24px;
85 font-weight: 600;
86 color: #333;
87 margin: 0 0 12px 0;
88 text-align: center;
89}
90
91.register-title::after {
92 display: none;
93}
94
95.register-subtitle {
96 font-size: 14px;
97 color: #999;
98 margin: 0 0 32px 0;
99 font-weight: 400;
100 text-align: center;
101}
102
103/* 表单样式 */
104.register-form {
105 display: flex;
106 flex-direction: column;
107 gap: 20px;
108 width: 100%;
109}
110
111.form-group {
112 display: flex;
113 flex-direction: column;
114 gap: 6px;
115 width: 100%;
116 box-sizing: border-box;
117 margin-bottom: 2px;
118 position: relative; /* 为绝对定位的错误提示提供参考点 */
119}
120
121.form-group .input-wrapper {
122 width: 100%;
123 box-sizing: border-box;
124}
125
126.form-label {
127 font-size: 14px;
128 font-weight: 500;
129 color: #333;
130 margin-bottom: 8px;
131}
132
133.input-wrapper {
134 position: relative;
135 display: flex;
136 align-items: center;
137 width: 100%;
138 box-sizing: border-box;
139}
140
141.form-input {
142 width: 100% !important;
143 height: 44px;
144 padding: 12px 16px 12px 48px;
145 border: 1px solid #e1e1e1;
146 border-radius: 6px;
147 font-size: 14px;
148 transition: border-color 0.2s ease;
149 background: #fff;
150 color: #333;
151 box-sizing: border-box !important;
152 flex: 1;
153 min-width: 0;
154}
155
156/* 针对 Antd Input 组件的特定样式 */
157.form-input.ant-input,
158.form-input.ant-input-affix-wrapper {
159 width: 100% !important;
160 height: 44px !important;
161 border: 1px solid #e1e1e1 !important;
162 border-radius: 6px !important;
163 padding: 12px 48px 12px 48px !important;
164 font-size: 14px !important;
165 background: #fff !important;
166 color: #333 !important;
167 box-sizing: border-box !important;
168 flex: 1 !important;
169 min-width: 0 !important;
170 display: flex !important;
171 align-items: center !important;
172}
173
174.form-input.ant-input-affix-wrapper .ant-input {
175 width: 100% !important;
176 height: 100% !important;
177 padding: 0 !important;
178 border: none !important;
179 background: transparent !important;
180 flex: 1 !important;
181 min-width: 0 !important;
182 box-sizing: border-box !important;
183}
184
185.form-input:focus {
186 outline: none;
187 border-color: #ff2442;
188 box-shadow: none;
189 transform: none;
190}
191
192/* Antd Input focus 样式 */
193.form-input.ant-input:focus,
194.form-input.ant-input-affix-wrapper:focus,
195.form-input.ant-input-affix-wrapper-focused {
196 outline: none !important;
197 border-color: #ff2442 !important;
198 box-shadow: none !important;
199 transform: none !important;
200}
201
202.form-input::placeholder {
203 color: #9ca3af;
204}
205
206.input-icon {
207 position: absolute;
208 left: 16px;
209 top: 50%;
210 transform: translateY(-50%);
211 color: #9ca3af;
212 pointer-events: none;
213 transition: color 0.3s ease;
214 z-index: 2;
215}
216
217.form-input:focus + .input-icon {
218 color: #ff2442;
219}
220
221.password-toggle {
222 position: absolute;
223 right: 12px;
224 top: 50%;
225 transform: translateY(-50%);
226 background: none;
227 border: none;
228 color: #9ca3af;
229 cursor: pointer;
230 padding: 4px;
231 border-radius: 4px;
232 transition: all 0.3s ease;
233 display: flex;
234 align-items: center;
235 justify-content: center;
236 z-index: 2;
237 width: 24px;
238 height: 24px;
239}
240
241.password-toggle:hover {
242 color: #ff2442;
243 background-color: rgba(255, 36, 66, 0.1);
244}
245
246/* 邮箱验证码输入框容器 */
247.email-code-wrapper {
248 display: flex;
249 gap: 8px;
250 width: 100%;
251 box-sizing: border-box;
252 align-items: flex-start;
253}
254
255.email-code-input {
256 flex: 1;
257 min-width: 0;
258}
259
260.send-code-button {
261 height: 44px !important;
262 padding: 0 16px !important;
263 background: #ff2442 !important;
264 border-color: #ff2442 !important;
265 border-radius: 6px !important;
266 font-size: 14px !important;
267 font-weight: 500 !important;
268 white-space: nowrap !important;
269 flex-shrink: 0 !important;
270 min-width: 100px !important;
271 display: flex !important;
272 align-items: center !important;
273 justify-content: center !important;
274 transition: all 0.2s ease !important;
275 box-sizing: border-box !important;
276}
277
278.send-code-button:hover:not(:disabled) {
279 background: #d91e3a !important;
280 border-color: #d91e3a !important;
281 transform: none !important;
282 box-shadow: none !important;
283}
284
285.send-code-button:disabled {
286 background: #f5f5f5 !important;
287 border-color: #d9d9d9 !important;
288 color: #bfbfbf !important;
289 cursor: not-allowed !important;
290}
291
292.send-code-button.ant-btn-loading {
293 background: #ff2442 !important;
294 border-color: #ff2442 !important;
295 color: white !important;
296}
297
298/* 小红书风格注册按钮 */
299.register-button {
300 width: 100%;
301 height: 48px; /* 固定高度,防止布局变化 */
302 padding: 12px;
303 background: #ff2442;
304 color: white;
305 border: none;
306 border-radius: 6px;
307 font-size: 14px;
308 font-weight: 500;
309 cursor: pointer;
310 transition: background-color 0.2s ease;
311 display: flex;
312 align-items: center;
313 justify-content: center;
314 gap: 8px;
315 margin-top: 8px;
316 position: relative; /* 为绝对定位的加载状态做准备 */
317 box-sizing: border-box; /* 确保padding包含在总尺寸内 */
318 min-width: 0; /* 防止flex子元素造成宽度变化 */
319}
320
321.register-button:hover:not(:disabled) {
322 background: #d91e3a;
323 transform: none;
324 box-shadow: none;
325}
326
327.register-button:active:not(:disabled) {
328 transform: none;
329}
330
331.register-button:disabled {
332 background: #ccc;
333 cursor: not-allowed;
334 opacity: 0.8;
335}
336
337.register-button.loading {
338 background: #ff7b8a;
339 cursor: not-allowed;
340}
341
342.loading-spinner {
343 width: 16px;
344 height: 16px;
345 border: 2px solid rgba(255, 255, 255, 0.3);
346 border-radius: 50%;
347 border-top-color: #fff;
348 animation: spin 1s ease-in-out infinite;
349}
350
351@keyframes spin {
352 to { transform: rotate(360deg); }
353}
354
355/* 加载遮罩层 */
356.loading-overlay {
357 position: fixed;
358 top: 0;
359 left: 0;
360 right: 0;
361 bottom: 0;
362 background: rgba(0, 0, 0, 0.5);
363 display: flex;
364 align-items: center;
365 justify-content: center;
366 z-index: 1000;
367 backdrop-filter: blur(4px);
368}
369
370.loading-content {
371 display: flex;
372 flex-direction: column;
373 align-items: center;
374 gap: 16px;
375 background: white;
376 padding: 32px;
377 border-radius: 12px;
378 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
379}
380
381.loading-spinner-large {
382 width: 40px;
383 height: 40px;
384 border: 4px solid rgba(255, 36, 66, 0.2);
385 border-radius: 50%;
386 border-top-color: #ff2442;
387 animation: spin 1s ease-in-out infinite;
388}
389
390.loading-text {
391 margin: 0;
392 color: #333;
393 font-size: 16px;
394 font-weight: 500;
395}
396
397/* 分隔线 */
398.register-divider {
399 position: relative;
400 text-align: center;
401 margin: 32px 0;
402 color: #9ca3af;
403 font-size: 14px;
404}
405
406.register-divider::before {
407 content: '';
408 position: absolute;
409 top: 50%;
410 left: 0;
411 right: 0;
412 height: 1px;
413 background: linear-gradient(to right, transparent, #e5e7eb, transparent);
414}
415
416.register-divider span {
417 background: rgba(255, 255, 255, 0.95);
418 padding: 0 16px;
419 position: relative;
420 z-index: 1;
421}
422
423/* 社交登录 */
424.social-login {
425 display: flex;
426 flex-direction: column;
427 gap: 12px;
428}
429
430.social-button {
431 width: 100%;
432 padding: 12px 16px;
433 border: 1px solid #e1e1e1;
434 border-radius: 6px;
435 background: white;
436 color: #333;
437 font-size: 14px;
438 font-weight: 400;
439 cursor: pointer;
440 transition: border-color 0.2s ease;
441 display: flex;
442 align-items: center;
443 justify-content: center;
444 gap: 8px;
445}
446
447.social-button:hover {
448 border-color: #ccc;
449}
450
451.social-button.google:hover {
452 border-color: #4285f4;
453 box-shadow: 0 4px 12px rgba(66, 133, 244, 0.2);
454}
455
456.social-button.github:hover {
457 border-color: #333;
458 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
459}
460
461.social-button.xiaohongshu:hover {
462 border-color: #ff2442;
463 box-shadow: 0 4px 12px rgba(255, 36, 66, 0.2);
464}
465
466/* 登录链接 */
467.login-link {
468 text-align: center;
469 margin-top: 20px;
470 padding-top: 20px;
471 border-top: 1px solid #e5e7eb;
472}
473
474.login-link p {
475 margin: 0;
476 font-size: 14px;
477 color: #64748b;
478}
479
480.login-link a {
481 color: #ff2442;
482 text-decoration: none;
483 font-weight: 500;
484 transition: color 0.2s ease;
485}
486
487.login-link a:hover {
488 color: #d91e3a;
489 text-decoration: underline;
490}
491
492/* 有左侧图标时的内边距调整 */
493.input-wrapper.has-icon .form-input {
494 padding-left: 48px !important;
495}
496
497.input-wrapper.has-icon .form-input.ant-input,
498.input-wrapper.has-icon .form-input.ant-input-affix-wrapper {
499 padding-left: 48px !important;
500}
501
502/* 有右侧切换按钮时的内边距调整 */
503.input-wrapper.has-toggle .form-input {
504 padding-right: 48px !important;
505}
506
507.input-wrapper.has-toggle .form-input.ant-input,
508.input-wrapper.has-toggle .form-input.ant-input-affix-wrapper {
509 padding-right: 48px !important;
510}
511
512/* 没有图标时的内边距调整 */
513.input-wrapper:not(.has-icon) .form-input {
514 padding-left: 16px !important;
515}
516
517.input-wrapper:not(.has-icon) .form-input.ant-input,
518.input-wrapper:not(.has-icon) .form-input.ant-input-affix-wrapper {
519 padding-left: 16px !important;
520}
521
522/* 没有切换按钮时的内边距调整 */
523.input-wrapper:not(.has-toggle) .form-input {
524 padding-right: 16px !important;
525}
526
527.input-wrapper:not(.has-toggle) .form-input.ant-input,
528.input-wrapper:not(.has-toggle) .form-input.ant-input-affix-wrapper {
529 padding-right: 16px !important;
530}
531
532/* 确保输入框内容完全填充 */
533.form-input.ant-input-affix-wrapper .ant-input-suffix {
534 position: absolute !important;
535 right: 12px !important;
536 top: 50% !important;
537 transform: translateY(-50%) !important;
538 margin: 0 !important;
539 padding: 0 !important;
540}
541
542.form-input.ant-input-affix-wrapper .ant-input-prefix {
543 position: absolute !important;
544 left: 16px !important;
545 top: 50% !important;
546 transform: translateY(-50%) !important;
547 margin: 0 !important;
548 padding: 0 !important;
549}
550
551/* 确保所有输入框完全填充其容器 */
552.form-group {
553 display: flex;
554 flex-direction: column;
555 gap: 8px;
556 width: 100%;
557 box-sizing: border-box;
558}
559
560.form-group .input-wrapper {
561 width: 100%;
562 box-sizing: border-box;
563}
564
565/* 防止输入框溢出容器 */
566.form-input,
567.form-input.ant-input,
568.form-input.ant-input-affix-wrapper {
569 max-width: 100% !important;
570 overflow: hidden !important;
571}
572
573/* 确保内部输入元素不会超出边界 */
574.form-input.ant-input-affix-wrapper .ant-input {
575 max-width: 100% !important;
576 overflow: hidden !important;
577 text-overflow: ellipsis !important;
578}
579
580/* 精细间距控制 */
581.register-header + .register-form {
582 margin-top: -4px;
583}
584
585.register-form .form-group:not(:last-child) {
586 margin-bottom: 2px;
587}
588
589.register-form .form-group:last-of-type {
590 margin-bottom: 6px;
591}
592
593.register-button + .login-link {
594 margin-top: 14px;
595}
596
597/* 响应式设计 */
598@media (max-width: 768px) {
599 /* 重置body和html确保一致性 */
600 html, body {
601 height: 100%;
602 height: 100dvh;
603 margin: 0;
604 padding: 0;
605 overflow-x: hidden;
606 box-sizing: border-box;
607 }
608
609 .register-container {
610 padding: 16px;
611 align-items: center;
612 justify-content: center;
613 min-height: 100vh;
614 min-height: 100dvh; /* 动态视口高度 */
615 /* 强制重置可能影响定位的样式 */
616 margin: 0;
617 box-sizing: border-box;
618 /* 防止内容溢出影响布局 */
619 overflow-x: hidden;
620 overflow-y: auto;
621 /* 确保flexbox在所有移动设备上表现一致 */
622 -webkit-box-align: center;
623 -webkit-box-pack: center;
624 display: flex !important;
625 position: relative;
626 }
627
628 .register-content {
629 max-width: 100%;
630 padding: 20px;
631 /* 确保内容区域稳定 */
632 margin: 0 auto;
633 box-sizing: border-box;
634 /* 防止宽度计算问题 */
635 width: calc(100% - 40px);
636 max-width: 480px; /* 增加最大宽度 */
637 position: relative;
638 display: flex;
639 justify-content: center;
640 }
641
642 .register-card {
643 padding: 32px 28px; /* 增加内边距 */
644 border-radius: 16px;
645 /* 确保卡片稳定定位 */
646 margin: 0;
647 box-sizing: border-box;
648 width: 100%;
649 max-width: 450px; /* 增加卡片最大宽度 */
650 /* 防止backdrop-filter导致的渲染差异 */
651 will-change: auto;
652 position: relative;
653 /* 防止触摸操作影响布局 */
654 -webkit-touch-callout: none;
655 -webkit-user-select: none;
656 -moz-user-select: none;
657 -ms-user-select: none;
658 user-select: none;
659 -webkit-tap-highlight-color: transparent;
660 }
661
662 .register-title {
663 font-size: 24px;
664 }
665
666 .form-input {
667 width: 100% !important;
668 height: 44px !important;
669 padding: 12px 48px 12px 48px;
670 font-size: 16px; /* 防止iOS Safari缩放 */
671 box-sizing: border-box !important;
672 flex: 1 !important;
673 min-width: 0 !important;
674 }
675
676 .form-input.ant-input,
677 .form-input.ant-input-affix-wrapper {
678 width: 100% !important;
679 height: 44px !important;
680 padding: 12px 48px 12px 48px !important;
681 font-size: 16px !important;
682 box-sizing: border-box !important;
683 flex: 1 !important;
684 min-width: 0 !important;
685 }
686
687 .form-input.ant-input-affix-wrapper .ant-input {
688 width: 100% !important;
689 height: 100% !important;
690 padding: 0 !important;
691 border: none !important;
692 background: transparent !important;
693 flex: 1 !important;
694 min-width: 0 !important;
695 box-sizing: border-box !important;
696 }
697
698 .social-login {
699 gap: 10px;
700 }
701
702 .social-button {
703 padding: 12px 16px;
704 font-size: 14px;
705 }
706}
707
708@media (max-width: 480px) {
709 .register-container {
710 padding: 16px;
711 align-items: center;
712 justify-content: center;
713 min-height: 100vh;
714 min-height: 100dvh; /* 动态视口高度 */
715 /* 强制重置样式 */
716 margin: 0;
717 box-sizing: border-box;
718 position: relative;
719 /* 确保垂直居中 */
720 display: flex !important;
721 }
722
723 .register-content {
724 /* 更严格的尺寸控制 */
725 width: calc(100vw - 32px);
726 max-width: 420px; /* 增加最大宽度 */
727 padding: 16px;
728 margin: 0 auto;
729 box-sizing: border-box;
730 display: flex;
731 justify-content: center;
732 }
733
734 .register-card {
735 padding: 28px 24px; /* 增加内边距 */
736 border-radius: 12px;
737 /* 确保卡片完全稳定 */
738 margin: 0;
739 box-sizing: border-box;
740 width: 100%;
741 position: relative;
742 /* 防止变换导致的位置偏移 */
743 transform: none !important;
744 /* 防止触摸操作影响布局 */
745 -webkit-touch-callout: none;
746 -webkit-user-select: none;
747 -khtml-user-select: none;
748 -moz-user-select: none;
749 -ms-user-select: none;
750 user-select: none;
751 /* 防止点击时的高亮效果影响布局 */
752 -webkit-tap-highlight-color: transparent;
753 }
754
755 .register-title {
756 font-size: 22px;
757 }
758
759 .form-input {
760 width: 100% !important;
761 height: 44px !important;
762 padding: 12px 48px 12px 48px;
763 font-size: 16px; /* 防止iOS Safari缩放 */
764 box-sizing: border-box !important;
765 flex: 1 !important;
766 min-width: 0 !important;
767 }
768
769 .form-input.ant-input,
770 .form-input.ant-input-affix-wrapper {
771 width: 100% !important;
772 height: 44px !important;
773 padding: 12px 48px 12px 48px !important;
774 font-size: 16px !important;
775 box-sizing: border-box !important;
776 flex: 1 !important;
777 min-width: 0 !important;
778 }
779
780 .form-input.ant-input-affix-wrapper .ant-input {
781 width: 100% !important;
782 height: 100% !important;
783 padding: 0 !important;
784 border: none !important;
785 background: transparent !important;
786 flex: 1 !important;
787 min-width: 0 !important;
788 box-sizing: border-box !important;
789 }
790
791 .social-login {
792 gap: 10px;
793 }
794
795 .social-button {
796 padding: 12px 16px;
797 font-size: 14px;
798 }
799
800 /* 移动端优化 */
801 .background-pattern {
802 display: none;
803 }
804
805 /* 禁用可能影响位置的悬停效果 */
806 .register-card:hover {
807 transform: none !important;
808 }
809}
810
811/* 高对比度模式支持 */
812@media (prefers-contrast: high) {
813 .register-card {
814 background: white;
815 border: 2px solid #000;
816 }
817
818 .form-input {
819 border-color: #000;
820 }
821
822 .form-input:focus {
823 border-color: #0066cc;
824 box-shadow: 0 0 0 2px #0066cc;
825 }
826}
827
828/* 减少动画模式 */
829@media (prefers-reduced-motion: reduce) {
830 .background-pattern {
831 animation: none;
832 }
833
834 .register-card,
835 .form-input,
836 .register-button,
837 .social-button {
838 transition: none;
839 }
840}
841
842/* 深色模式支持 */
843@media (prefers-color-scheme: dark) {
844 .register-background {
845 background: linear-gradient(135deg, #1a202c 0%, #2d3748 100%);
846 }
847
848 .register-card {
849 background: rgba(26, 32, 44, 0.95);
850 border-color: rgba(255, 255, 255, 0.1);
851 }
852
853 .register-title {
854 color: #f7fafc;
855 }
856
857 .register-subtitle {
858 color: #a0aec0;
859 }
860
861 .form-label {
862 color: #e2e8f0;
863 }
864
865 .form-input {
866 background: #2d3748;
867 border-color: #4a5568;
868 color: #f7fafc;
869 }
870
871 .form-input:focus {
872 border-color: #ff2442;
873 }
874
875 .social-button {
876 background: #2d3748;
877 border-color: #4a5568;
878 color: #f7fafc;
879 }
880
881 .login-link {
882 border-color: #4a5568;
883 }
884
885 .login-link p {
886 color: #a0aec0;
887 }
888
889 /* 深色模式下的错误提示样式 */
890 .error-message {
891 background: rgba(26, 32, 44, 0.95);
892 color: #ff6b6b;
893 }
894}
895
896/* 错误提示样式 - 使用绝对定位避免影响布局 */
897.error-message {
898 position: absolute;
899 top: 95%;
900 left: 4px;
901 right: 4px;
902 font-size: 12px;
903 color: #ff4d4f;
904 margin-top: 4px;
905 display: flex;
906 align-items: center;
907 min-height: 16px;
908 animation: fadeInDown 0.3s ease-out;
909 font-weight: 400;
910 line-height: 1.2;
911 background: rgba(255, 255, 255, 0.95);
912 backdrop-filter: blur(4px);
913 padding: 2px 4px;
914 border-radius: 4px;
915 z-index: 10;
916 pointer-events: none; /* 避免干扰用户交互 */
917}
918
919@keyframes fadeInDown {
920 from {
921 opacity: 0;
922 transform: translateY(-8px);
923 }
924 to {
925 opacity: 1;
926 transform: translateY(0);
927 }
928}
929
930/* 输入框错误状态样式 */
931.form-input.input-error,
932.form-input.input-error.ant-input,
933.form-input.input-error.ant-input-affix-wrapper {
934 border-color: #ff4d4f !important;
935 box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.1) !important;
936 transition: all 0.3s ease !important;
937}
938
939.form-input.input-error:focus,
940.form-input.input-error.ant-input:focus,
941.form-input.input-error.ant-input-affix-wrapper:focus,
942.form-input.input-error.ant-input-affix-wrapper-focused {
943 border-color: #ff4d4f !important;
944 box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2) !important;
945}
946
947/* 错误状态下的图标颜色 */
948.form-input.input-error .anticon {
949 color: #ff4d4f !important;
950}
951
952/* 确保表单组间距一致 */
953.form-group {
954 margin-bottom: 0px;
955}
956
957.form-group:last-of-type {
958 margin-bottom: 0px;
959}
960
961/* 错误弹窗样式 */
962.error-modal .ant-modal-header {
963 background: #fff;
964 border-bottom: 1px solid #f0f0f0;
965 padding: 16px 24px;
966}
967
968.error-modal .ant-modal-title {
969 color: #333;
970 font-weight: 600;
971 font-size: 16px;
972}
973
974.error-modal .ant-modal-body {
975 padding: 16px 24px 24px;
976}
977
978.error-modal .ant-modal-footer {
979 padding: 12px 24px 24px;
980 border-top: none;
981 text-align: center;
982}
983
984.error-modal .ant-btn-primary {
985 background: #ff2442;
986 border-color: #ff2442;
987 font-weight: 500;
988 height: 40px;
989 padding: 0 24px;
990 border-radius: 6px;
991 transition: all 0.2s ease;
992}
993
994.error-modal .ant-btn-primary:hover {
995 background: #d91e3a;
996 border-color: #d91e3a;
997 transform: translateY(-1px);
998 box-shadow: 0 4px 12px rgba(255, 36, 66, 0.3);
999}
1000
1001.error-modal .ant-modal-content {
1002 border-radius: 12px;
1003 overflow: hidden;
1004 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
1005}
1006
1007/* 错误弹窗遮罩层 */
1008.error-modal .ant-modal-mask {
1009 background: rgba(0, 0, 0, 0.6);
1010 backdrop-filter: blur(4px);
1011}
1012
1013/* 错误弹窗动画 */
1014.error-modal .ant-modal {
1015 animation: errorModalSlideIn 0.3s ease-out;
1016}
1017
1018@keyframes errorModalSlideIn {
1019 from {
1020 opacity: 0;
1021 transform: translateY(-20px) scale(0.95);
1022 }
1023 to {
1024 opacity: 1;
1025 transform: translateY(0) scale(1);
1026 }
1027}