合并login

Change-Id: Ie06ed019cbb00d52e0b9e1f3c7a56c947b57a42c
diff --git a/Merge/front/src/pages/RegisterPage/RegisterPage.css b/Merge/front/src/pages/RegisterPage/RegisterPage.css
new file mode 100644
index 0000000..fc03361
--- /dev/null
+++ b/Merge/front/src/pages/RegisterPage/RegisterPage.css
@@ -0,0 +1,1027 @@
+/* 注册页面容器 */
+.register-container {
+  min-height: 100vh;
+  min-height: 100dvh; /* 动态视口高度,避免移动端地址栏影响 */
+  height: 100vh;
+  height: 100dvh;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  position: relative;
+  overflow: hidden;
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
+    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+    sans-serif;
+  /* 确保容器稳定定位 */
+  box-sizing: border-box;
+  margin: 0;
+  padding: 0;
+  /* 重置文本对齐 */
+  text-align: initial;
+}
+
+/* 小红书风格背景 */
+.register-background {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: #f8f8f8;
+  z-index: -1;
+}
+
+/* 注册内容区域 */
+.register-content {
+  width: 100%;
+  max-width: 500px; /* 增加桌面端最大宽度 */
+  padding: 0;
+  z-index: 1;
+  /* 确保内容稳定定位 */
+  box-sizing: border-box;
+  position: relative;
+  display: flex;
+  justify-content: center;
+}
+
+/* 小红书风格注册卡片 */
+.register-card {
+  background: #fff;
+  border-radius: 8px;
+  padding: 40px; /* 增加桌面端内边距 */
+  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
+  border: 1px solid #e1e1e1;
+  width: 100%;
+  max-width: 450px; /* 增加桌面端卡片最大宽度 */
+  transition: none;
+}
+
+/* 注册头部 */
+.register-header {
+  text-align: center;
+  margin-bottom: 40px;
+}
+
+/* Logo样式 */
+.logo-section {
+  margin-bottom: 24px;
+}
+
+.logo-icon {
+  width: 60px;
+  height: 60px;
+  background: #ff2442;
+  border-radius: 12px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 28px;
+  margin: 0 auto 16px;
+  box-shadow: 0 4px 12px rgba(255, 36, 66, 0.2);
+}
+
+.register-title {
+  font-size: 24px;
+  font-weight: 600;
+  color: #333;
+  margin: 0 0 12px 0;
+  text-align: center;
+}
+
+.register-title::after {
+  display: none;
+}
+
+.register-subtitle {
+  font-size: 14px;
+  color: #999;
+  margin: 0 0 32px 0;
+  font-weight: 400;
+  text-align: center;
+}
+
+/* 表单样式 */
+.register-form {
+  display: flex;
+  flex-direction: column;
+  gap: 20px;
+  width: 100%;
+}
+
+.form-group {
+  display: flex;
+  flex-direction: column;
+  gap: 6px;
+  width: 100%;
+  box-sizing: border-box;
+  margin-bottom: 2px;
+  position: relative; /* 为绝对定位的错误提示提供参考点 */
+}
+
+.form-group .input-wrapper {
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.form-label {
+  font-size: 14px;
+  font-weight: 500;
+  color: #333;
+  margin-bottom: 8px;
+}
+
+.input-wrapper {
+  position: relative;
+  display: flex;
+  align-items: center;
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.form-input {
+  width: 100% !important;
+  height: 44px;
+  padding: 12px 16px 12px 48px;
+  border: 1px solid #e1e1e1;
+  border-radius: 6px;
+  font-size: 14px;
+  transition: border-color 0.2s ease;
+  background: #fff;
+  color: #333;
+  box-sizing: border-box !important;
+  flex: 1;
+  min-width: 0;
+}
+
+/* 针对 Antd Input 组件的特定样式 */
+.form-input.ant-input,
+.form-input.ant-input-affix-wrapper {
+  width: 100% !important;
+  height: 44px !important;
+  border: 1px solid #e1e1e1 !important;
+  border-radius: 6px !important;
+  padding: 12px 48px 12px 48px !important;
+  font-size: 14px !important;
+  background: #fff !important;
+  color: #333 !important;
+  box-sizing: border-box !important;
+  flex: 1 !important;
+  min-width: 0 !important;
+  display: flex !important;
+  align-items: center !important;
+}
+
+.form-input.ant-input-affix-wrapper .ant-input {
+  width: 100% !important;
+  height: 100% !important;
+  padding: 0 !important;
+  border: none !important;
+  background: transparent !important;
+  flex: 1 !important;
+  min-width: 0 !important;
+  box-sizing: border-box !important;
+}
+
+.form-input:focus {
+  outline: none;
+  border-color: #ff2442;
+  box-shadow: none;
+  transform: none;
+}
+
+/* Antd Input focus 样式 */
+.form-input.ant-input:focus,
+.form-input.ant-input-affix-wrapper:focus,
+.form-input.ant-input-affix-wrapper-focused {
+  outline: none !important;
+  border-color: #ff2442 !important;
+  box-shadow: none !important;
+  transform: none !important;
+}
+
+.form-input::placeholder {
+  color: #9ca3af;
+}
+
+.input-icon {
+  position: absolute;
+  left: 16px;
+  top: 50%;
+  transform: translateY(-50%);
+  color: #9ca3af;
+  pointer-events: none;
+  transition: color 0.3s ease;
+  z-index: 2;
+}
+
+.form-input:focus + .input-icon {
+  color: #ff2442;
+}
+
+.password-toggle {
+  position: absolute;
+  right: 12px;
+  top: 50%;
+  transform: translateY(-50%);
+  background: none;
+  border: none;
+  color: #9ca3af;
+  cursor: pointer;
+  padding: 4px;
+  border-radius: 4px;
+  transition: all 0.3s ease;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  z-index: 2;
+  width: 24px;
+  height: 24px;
+}
+
+.password-toggle:hover {
+  color: #ff2442;
+  background-color: rgba(255, 36, 66, 0.1);
+}
+
+/* 邮箱验证码输入框容器 */
+.email-code-wrapper {
+  display: flex;
+  gap: 8px;
+  width: 100%;
+  box-sizing: border-box;
+  align-items: flex-start;
+}
+
+.email-code-input {
+  flex: 1;
+  min-width: 0;
+}
+
+.send-code-button {
+  height: 44px !important;
+  padding: 0 16px !important;
+  background: #ff2442 !important;
+  border-color: #ff2442 !important;
+  border-radius: 6px !important;
+  font-size: 14px !important;
+  font-weight: 500 !important;
+  white-space: nowrap !important;
+  flex-shrink: 0 !important;
+  min-width: 100px !important;
+  display: flex !important;
+  align-items: center !important;
+  justify-content: center !important;
+  transition: all 0.2s ease !important;
+  box-sizing: border-box !important;
+}
+
+.send-code-button:hover:not(:disabled) {
+  background: #d91e3a !important;
+  border-color: #d91e3a !important;
+  transform: none !important;
+  box-shadow: none !important;
+}
+
+.send-code-button:disabled {
+  background: #f5f5f5 !important;
+  border-color: #d9d9d9 !important;
+  color: #bfbfbf !important;
+  cursor: not-allowed !important;
+}
+
+.send-code-button.ant-btn-loading {
+  background: #ff2442 !important;
+  border-color: #ff2442 !important;
+  color: white !important;
+}
+
+/* 小红书风格注册按钮 */
+.register-button {
+  width: 100%;
+  height: 48px; /* 固定高度,防止布局变化 */
+  padding: 12px;
+  background: #ff2442;
+  color: white;
+  border: none;
+  border-radius: 6px;
+  font-size: 14px;
+  font-weight: 500;
+  cursor: pointer;
+  transition: background-color 0.2s ease;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 8px;
+  margin-top: 8px;
+  position: relative; /* 为绝对定位的加载状态做准备 */
+  box-sizing: border-box; /* 确保padding包含在总尺寸内 */
+  min-width: 0; /* 防止flex子元素造成宽度变化 */
+}
+
+.register-button:hover:not(:disabled) {
+  background: #d91e3a;
+  transform: none;
+  box-shadow: none;
+}
+
+.register-button:active:not(:disabled) {
+  transform: none;
+}
+
+.register-button:disabled {
+  background: #ccc;
+  cursor: not-allowed;
+  opacity: 0.8;
+}
+
+.register-button.loading {
+  background: #ff7b8a;
+  cursor: not-allowed;
+}
+
+.loading-spinner {
+  width: 16px;
+  height: 16px;
+  border: 2px solid rgba(255, 255, 255, 0.3);
+  border-radius: 50%;
+  border-top-color: #fff;
+  animation: spin 1s ease-in-out infinite;
+}
+
+@keyframes spin {
+  to { transform: rotate(360deg); }
+}
+
+/* 加载遮罩层 */
+.loading-overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.5);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  z-index: 1000;
+  backdrop-filter: blur(4px);
+}
+
+.loading-content {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  gap: 16px;
+  background: white;
+  padding: 32px;
+  border-radius: 12px;
+  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
+}
+
+.loading-spinner-large {
+  width: 40px;
+  height: 40px;
+  border: 4px solid rgba(255, 36, 66, 0.2);
+  border-radius: 50%;
+  border-top-color: #ff2442;
+  animation: spin 1s ease-in-out infinite;
+}
+
+.loading-text {
+  margin: 0;
+  color: #333;
+  font-size: 16px;
+  font-weight: 500;
+}
+
+/* 分隔线 */
+.register-divider {
+  position: relative;
+  text-align: center;
+  margin: 32px 0;
+  color: #9ca3af;
+  font-size: 14px;
+}
+
+.register-divider::before {
+  content: '';
+  position: absolute;
+  top: 50%;
+  left: 0;
+  right: 0;
+  height: 1px;
+  background: linear-gradient(to right, transparent, #e5e7eb, transparent);
+}
+
+.register-divider span {
+  background: rgba(255, 255, 255, 0.95);
+  padding: 0 16px;
+  position: relative;
+  z-index: 1;
+}
+
+/* 社交登录 */
+.social-login {
+  display: flex;
+  flex-direction: column;
+  gap: 12px;
+}
+
+.social-button {
+  width: 100%;
+  padding: 12px 16px;
+  border: 1px solid #e1e1e1;
+  border-radius: 6px;
+  background: white;
+  color: #333;
+  font-size: 14px;
+  font-weight: 400;
+  cursor: pointer;
+  transition: border-color 0.2s ease;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  gap: 8px;
+}
+
+.social-button:hover {
+  border-color: #ccc;
+}
+
+.social-button.google:hover {
+  border-color: #4285f4;
+  box-shadow: 0 4px 12px rgba(66, 133, 244, 0.2);
+}
+
+.social-button.github:hover {
+  border-color: #333;
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
+}
+
+.social-button.xiaohongshu:hover {
+  border-color: #ff2442;
+  box-shadow: 0 4px 12px rgba(255, 36, 66, 0.2);
+}
+
+/* 登录链接 */
+.login-link {
+  text-align: center;
+  margin-top: 20px;
+  padding-top: 20px;
+  border-top: 1px solid #e5e7eb;
+}
+
+.login-link p {
+  margin: 0;
+  font-size: 14px;
+  color: #64748b;
+}
+
+.login-link a {
+  color: #ff2442;
+  text-decoration: none;
+  font-weight: 500;
+  transition: color 0.2s ease;
+}
+
+.login-link a:hover {
+  color: #d91e3a;
+  text-decoration: underline;
+}
+
+/* 有左侧图标时的内边距调整 */
+.input-wrapper.has-icon .form-input {
+  padding-left: 48px !important;
+}
+
+.input-wrapper.has-icon .form-input.ant-input,
+.input-wrapper.has-icon .form-input.ant-input-affix-wrapper {
+  padding-left: 48px !important;
+}
+
+/* 有右侧切换按钮时的内边距调整 */
+.input-wrapper.has-toggle .form-input {
+  padding-right: 48px !important;
+}
+
+.input-wrapper.has-toggle .form-input.ant-input,
+.input-wrapper.has-toggle .form-input.ant-input-affix-wrapper {
+  padding-right: 48px !important;
+}
+
+/* 没有图标时的内边距调整 */
+.input-wrapper:not(.has-icon) .form-input {
+  padding-left: 16px !important;
+}
+
+.input-wrapper:not(.has-icon) .form-input.ant-input,
+.input-wrapper:not(.has-icon) .form-input.ant-input-affix-wrapper {
+  padding-left: 16px !important;
+}
+
+/* 没有切换按钮时的内边距调整 */
+.input-wrapper:not(.has-toggle) .form-input {
+  padding-right: 16px !important;
+}
+
+.input-wrapper:not(.has-toggle) .form-input.ant-input,
+.input-wrapper:not(.has-toggle) .form-input.ant-input-affix-wrapper {
+  padding-right: 16px !important;
+}
+
+/* 确保输入框内容完全填充 */
+.form-input.ant-input-affix-wrapper .ant-input-suffix {
+  position: absolute !important;
+  right: 12px !important;
+  top: 50% !important;
+  transform: translateY(-50%) !important;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+
+.form-input.ant-input-affix-wrapper .ant-input-prefix {
+  position: absolute !important;
+  left: 16px !important;
+  top: 50% !important;
+  transform: translateY(-50%) !important;
+  margin: 0 !important;
+  padding: 0 !important;
+}
+
+/* 确保所有输入框完全填充其容器 */
+.form-group {
+  display: flex;
+  flex-direction: column;
+  gap: 8px;
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.form-group .input-wrapper {
+  width: 100%;
+  box-sizing: border-box;
+}
+
+/* 防止输入框溢出容器 */
+.form-input,
+.form-input.ant-input,
+.form-input.ant-input-affix-wrapper {
+  max-width: 100% !important;
+  overflow: hidden !important;
+}
+
+/* 确保内部输入元素不会超出边界 */
+.form-input.ant-input-affix-wrapper .ant-input {
+  max-width: 100% !important;
+  overflow: hidden !important;
+  text-overflow: ellipsis !important;
+}
+
+/* 精细间距控制 */
+.register-header + .register-form {
+  margin-top: -4px;
+}
+
+.register-form .form-group:not(:last-child) {
+  margin-bottom: 2px;
+}
+
+.register-form .form-group:last-of-type {
+  margin-bottom: 6px;
+}
+
+.register-button + .login-link {
+  margin-top: 14px;
+}
+
+/* 响应式设计 */
+@media (max-width: 768px) {
+  /* 重置body和html确保一致性 */
+  html, body {
+    height: 100%;
+    height: 100dvh;
+    margin: 0;
+    padding: 0;
+    overflow-x: hidden;
+    box-sizing: border-box;
+  }
+  
+  .register-container {
+    padding: 16px;
+    align-items: center;
+    justify-content: center;
+    min-height: 100vh;
+    min-height: 100dvh; /* 动态视口高度 */
+    /* 强制重置可能影响定位的样式 */
+    margin: 0;
+    box-sizing: border-box;
+    /* 防止内容溢出影响布局 */
+    overflow-x: hidden;
+    overflow-y: auto;
+    /* 确保flexbox在所有移动设备上表现一致 */
+    -webkit-box-align: center;
+    -webkit-box-pack: center;
+    display: flex !important;
+    position: relative;
+  }
+  
+  .register-content {
+    max-width: 100%;
+    padding: 20px;
+    /* 确保内容区域稳定 */
+    margin: 0 auto;
+    box-sizing: border-box;
+    /* 防止宽度计算问题 */
+    width: calc(100% - 40px);
+    max-width: 480px; /* 增加最大宽度 */
+    position: relative;
+    display: flex;
+    justify-content: center;
+  }
+  
+  .register-card {
+    padding: 32px 28px; /* 增加内边距 */
+    border-radius: 16px;
+    /* 确保卡片稳定定位 */
+    margin: 0;
+    box-sizing: border-box;
+    width: 100%;
+    max-width: 450px; /* 增加卡片最大宽度 */
+    /* 防止backdrop-filter导致的渲染差异 */
+    will-change: auto;
+    position: relative;
+    /* 防止触摸操作影响布局 */
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    -webkit-tap-highlight-color: transparent;
+  }
+  
+  .register-title {
+    font-size: 24px;
+  }
+  
+  .form-input {
+    width: 100% !important;
+    height: 44px !important;
+    padding: 12px 48px 12px 48px;
+    font-size: 16px; /* 防止iOS Safari缩放 */
+    box-sizing: border-box !important;
+    flex: 1 !important;
+    min-width: 0 !important;
+  }
+  
+  .form-input.ant-input,
+  .form-input.ant-input-affix-wrapper {
+    width: 100% !important;
+    height: 44px !important;
+    padding: 12px 48px 12px 48px !important;
+    font-size: 16px !important;
+    box-sizing: border-box !important;
+    flex: 1 !important;
+    min-width: 0 !important;
+  }
+  
+  .form-input.ant-input-affix-wrapper .ant-input {
+    width: 100% !important;
+    height: 100% !important;
+    padding: 0 !important;
+    border: none !important;
+    background: transparent !important;
+    flex: 1 !important;
+    min-width: 0 !important;
+    box-sizing: border-box !important;
+  }
+  
+  .social-login {
+    gap: 10px;
+  }
+  
+  .social-button {
+    padding: 12px 16px;
+    font-size: 14px;
+  }
+}
+
+@media (max-width: 480px) {
+  .register-container {
+    padding: 16px;
+    align-items: center;
+    justify-content: center;
+    min-height: 100vh;
+    min-height: 100dvh; /* 动态视口高度 */
+    /* 强制重置样式 */
+    margin: 0;
+    box-sizing: border-box;
+    position: relative;
+    /* 确保垂直居中 */
+    display: flex !important;
+  }
+  
+  .register-content {
+    /* 更严格的尺寸控制 */
+    width: calc(100vw - 32px);
+    max-width: 420px; /* 增加最大宽度 */
+    padding: 16px;
+    margin: 0 auto;
+    box-sizing: border-box;
+    display: flex;
+    justify-content: center;
+  }
+  
+  .register-card {
+    padding: 28px 24px; /* 增加内边距 */
+    border-radius: 12px;
+    /* 确保卡片完全稳定 */
+    margin: 0;
+    box-sizing: border-box;
+    width: 100%;
+    position: relative;
+    /* 防止变换导致的位置偏移 */
+    transform: none !important;
+    /* 防止触摸操作影响布局 */
+    -webkit-touch-callout: none;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    /* 防止点击时的高亮效果影响布局 */
+    -webkit-tap-highlight-color: transparent;
+  }
+  
+  .register-title {
+    font-size: 22px;
+  }
+  
+  .form-input {
+    width: 100% !important;
+    height: 44px !important;
+    padding: 12px 48px 12px 48px;
+    font-size: 16px; /* 防止iOS Safari缩放 */
+    box-sizing: border-box !important;
+    flex: 1 !important;
+    min-width: 0 !important;
+  }
+  
+  .form-input.ant-input,
+  .form-input.ant-input-affix-wrapper {
+    width: 100% !important;
+    height: 44px !important;
+    padding: 12px 48px 12px 48px !important;
+    font-size: 16px !important;
+    box-sizing: border-box !important;
+    flex: 1 !important;
+    min-width: 0 !important;
+  }
+  
+  .form-input.ant-input-affix-wrapper .ant-input {
+    width: 100% !important;
+    height: 100% !important;
+    padding: 0 !important;
+    border: none !important;
+    background: transparent !important;
+    flex: 1 !important;
+    min-width: 0 !important;
+    box-sizing: border-box !important;
+  }
+  
+  .social-login {
+    gap: 10px;
+  }
+  
+  .social-button {
+    padding: 12px 16px;
+    font-size: 14px;
+  }
+  
+  /* 移动端优化 */
+  .background-pattern {
+    display: none;
+  }
+  
+  /* 禁用可能影响位置的悬停效果 */
+  .register-card:hover {
+    transform: none !important;
+  }
+}
+
+/* 高对比度模式支持 */
+@media (prefers-contrast: high) {
+  .register-card {
+    background: white;
+    border: 2px solid #000;
+  }
+  
+  .form-input {
+    border-color: #000;
+  }
+  
+  .form-input:focus {
+    border-color: #0066cc;
+    box-shadow: 0 0 0 2px #0066cc;
+  }
+}
+
+/* 减少动画模式 */
+@media (prefers-reduced-motion: reduce) {
+  .background-pattern {
+    animation: none;
+  }
+  
+  .register-card,
+  .form-input,
+  .register-button,
+  .social-button {
+    transition: none;
+  }
+}
+
+/* 深色模式支持 */
+@media (prefers-color-scheme: dark) {
+  .register-background {
+    background: linear-gradient(135deg, #1a202c 0%, #2d3748 100%);
+  }
+  
+  .register-card {
+    background: rgba(26, 32, 44, 0.95);
+    border-color: rgba(255, 255, 255, 0.1);
+  }
+  
+  .register-title {
+    color: #f7fafc;
+  }
+  
+  .register-subtitle {
+    color: #a0aec0;
+  }
+  
+  .form-label {
+    color: #e2e8f0;
+  }
+  
+  .form-input {
+    background: #2d3748;
+    border-color: #4a5568;
+    color: #f7fafc;
+  }
+  
+  .form-input:focus {
+    border-color: #ff2442;
+  }
+  
+  .social-button {
+    background: #2d3748;
+    border-color: #4a5568;
+    color: #f7fafc;
+  }
+  
+  .login-link {
+    border-color: #4a5568;
+  }
+  
+  .login-link p {
+    color: #a0aec0;
+  }
+  
+  /* 深色模式下的错误提示样式 */
+  .error-message {
+    background: rgba(26, 32, 44, 0.95);
+    color: #ff6b6b;
+  }
+}
+
+/* 错误提示样式 - 使用绝对定位避免影响布局 */
+.error-message {
+  position: absolute;
+  top: 95%;
+  left: 4px;
+  right: 4px;
+  font-size: 12px;
+  color: #ff4d4f;
+  margin-top: 4px;
+  display: flex;
+  align-items: center;
+  min-height: 16px;
+  animation: fadeInDown 0.3s ease-out;
+  font-weight: 400;
+  line-height: 1.2;
+  background: rgba(255, 255, 255, 0.95);
+  backdrop-filter: blur(4px);
+  padding: 2px 4px;
+  border-radius: 4px;
+  z-index: 10;
+  pointer-events: none; /* 避免干扰用户交互 */
+}
+
+@keyframes fadeInDown {
+  from {
+    opacity: 0;
+    transform: translateY(-8px);
+  }
+  to {
+    opacity: 1;
+    transform: translateY(0);
+  }
+}
+
+/* 输入框错误状态样式 */
+.form-input.input-error,
+.form-input.input-error.ant-input,
+.form-input.input-error.ant-input-affix-wrapper {
+  border-color: #ff4d4f !important;
+  box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.1) !important;
+  transition: all 0.3s ease !important;
+}
+
+.form-input.input-error:focus,
+.form-input.input-error.ant-input:focus,
+.form-input.input-error.ant-input-affix-wrapper:focus,
+.form-input.input-error.ant-input-affix-wrapper-focused {
+  border-color: #ff4d4f !important;
+  box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2) !important;
+}
+
+/* 错误状态下的图标颜色 */
+.form-input.input-error .anticon {
+  color: #ff4d4f !important;
+}
+
+/* 确保表单组间距一致 */
+.form-group {
+  margin-bottom: 0px;
+}
+
+.form-group:last-of-type {
+  margin-bottom: 0px;
+}
+
+/* 错误弹窗样式 */
+.error-modal .ant-modal-header {
+  background: #fff;
+  border-bottom: 1px solid #f0f0f0;
+  padding: 16px 24px;
+}
+
+.error-modal .ant-modal-title {
+  color: #333;
+  font-weight: 600;
+  font-size: 16px;
+}
+
+.error-modal .ant-modal-body {
+  padding: 16px 24px 24px;
+}
+
+.error-modal .ant-modal-footer {
+  padding: 12px 24px 24px;
+  border-top: none;
+  text-align: center;
+}
+
+.error-modal .ant-btn-primary {
+  background: #ff2442;
+  border-color: #ff2442;
+  font-weight: 500;
+  height: 40px;
+  padding: 0 24px;
+  border-radius: 6px;
+  transition: all 0.2s ease;
+}
+
+.error-modal .ant-btn-primary:hover {
+  background: #d91e3a;
+  border-color: #d91e3a;
+  transform: translateY(-1px);
+  box-shadow: 0 4px 12px rgba(255, 36, 66, 0.3);
+}
+
+.error-modal .ant-modal-content {
+  border-radius: 12px;
+  overflow: hidden;
+  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
+}
+
+/* 错误弹窗遮罩层 */
+.error-modal .ant-modal-mask {
+  background: rgba(0, 0, 0, 0.6);
+  backdrop-filter: blur(4px);
+}
+
+/* 错误弹窗动画 */
+.error-modal .ant-modal {
+  animation: errorModalSlideIn 0.3s ease-out;
+}
+
+@keyframes errorModalSlideIn {
+  from {
+    opacity: 0;
+    transform: translateY(-20px) scale(0.95);
+  }
+  to {
+    opacity: 1;
+    transform: translateY(0) scale(1);
+  }
+}