/* ========== 根布局 ========== */ .login-page { display: grid; grid-template-columns: 1fr; min-height: 100vh; max-height: 100vh; overflow: hidden; } @media (min-width: 1024px) { .login-page { grid-template-columns: 1fr 1fr; } } /* ========== 左侧品牌区 ========== */ .login-brand-panel { display: none; position: relative; flex-direction: column; justify-content: space-between; padding: 48px; background: linear-gradient( 160deg, #1a2332 0%, #1e2d3d 40%, #172030 100% ); color: rgb(255 255 255 / 85%); overflow: hidden; } @media (min-width: 1024px) { .login-brand-panel { display: flex; } } /* 品牌区 Logo */ .login-brand-logo { position: relative; z-index: 20; display: flex; align-items: center; gap: 10px; font-size: 18px; font-weight: 600; letter-spacing: 0.02em; } .login-brand-logo img { width: 32px; height: 32px; } /* 角色动画区 */ .login-characters-area { position: relative; z-index: 20; display: flex; align-items: flex-end; justify-content: center; height: 500px; } /* 品牌区底部链接 */ .login-brand-footer { position: relative; z-index: 20; display: flex; align-items: center; gap: 32px; font-size: 13px; color: rgb(255 255 255 / 35%); } .login-brand-footer a { color: inherit; text-decoration: none; transition: color 0.2s; } .login-brand-footer a:hover { color: rgb(255 255 255 / 75%); } /* 左侧装饰:网格纹理 */ .login-brand-grid { position: absolute; inset: 0; pointer-events: none; background-image: radial-gradient(circle, rgb(255 255 255 / 5%) 1px, transparent 1px); background-size: 20px 20px; z-index: 0; } /* 左侧装饰:模糊光球 */ .login-brand-orb { position: absolute; border-radius: 50%; filter: blur(80px); pointer-events: none; } .login-brand-orb--1 { width: 256px; height: 256px; top: 25%; right: 25%; background: rgb(255 255 255 / 5%); } .login-brand-orb--2 { width: 384px; height: 384px; bottom: 25%; left: 25%; background: rgb(255 255 255 / 3%); } /* ========== 右侧表单区 ========== */ .login-form-panel { display: flex; align-items: center; justify-content: center; padding: 32px; background: #fefefe; } .login-form-wrap { width: 100%; max-width: 420px; } /* ========== 登录卡片(移动端可见) ========== */ .login-card { width: 100%; opacity: 0; animation: login-card-enter 0.35s ease-out forwards; } @keyframes login-card-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* ========== Logo 与标题 ========== */ .login-mobile-logo { display: flex; align-items: center; justify-content: center; gap: 10px; font-size: 18px; font-weight: 600; margin-bottom: 48px; } .login-mobile-logo img { width: 32px; height: 32px; } @media (min-width: 1024px) { .login-mobile-logo { display: none; } } .login-header { text-align: center; margin-bottom: 40px; } .login-header h1 { margin: 0 0 8px; font-size: 28px; font-weight: 700; color: #303133; letter-spacing: -0.01em; line-height: 1.3; } .login-header p { margin: 0; font-size: 14px; color: #909399; } /* ========== 表单 ========== */ .login-form .el-form-item { margin-bottom: 20px; } .login-form .el-form-item:last-of-type { margin-bottom: 0; } /* ========== 暗色模式 ========== */ html.dark .login-brand-panel { background: linear-gradient( 160deg, oklch(85% 0.01 260) 0%, oklch(90% 0.008 250) 40%, oklch(88% 0.01 270) 100% ); color: oklch(20% 0.01 260); } html.dark .login-brand-grid { background-image: radial-gradient(circle, rgb(0 0 0 / 6%) 1px, transparent 1px); } html.dark .login-brand-orb--1 { background: rgb(0 0 0 / 8%); } html.dark .login-brand-orb--2 { background: rgb(0 0 0 / 5%); } html.dark .login-brand-footer { color: oklch(20% 0.01 260 / 40%); } html.dark .login-brand-footer a:hover { color: oklch(20% 0.01 260 / 70%); } html.dark .login-form-panel { background: oklch(16% 0.008 260); } html.dark .login-header h1 { color: oklch(90% 0.005 30); } html.dark .login-header p { color: oklch(70% 0.005 30); } /* ========== 响应式 ========== */ @media (max-width: 1023px) { .login-brand-panel { display: none; } } @media (max-width: 480px) { .login-form-panel { padding: 24px 16px; } .login-header h1 { font-size: 22px; } .login-form .el-form-item { margin-bottom: 16px; } }