/* ======================================== 登录页 — 视频全屏背景 + 居中卡片 ======================================== */ .login-page { height: 100vh; max-height: 100vh; display: flex; flex-direction: column; background: #1a1a2e; background-image: url(/backimage.png); background-size: cover; background-position: center; position: relative; overflow: hidden; } /* ---- 视频全屏背景 ---- */ .login-bg-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; pointer-events: none; transition: opacity 0.6s ease; } /* 视频加载前占位 — 纯色背景,不显示默认图 */ .login-bg-placeholder { background: #1a1a2e; } .login-bg-overlay { position: absolute; inset: 0; background: linear-gradient(135deg, rgba(15,15,30,0.75) 0%, rgba(20,20,50,0.65) 100%); z-index: 0; } /* ---- 左上角 slogan ---- */ .login-slogan { position: absolute; top: 40px; left: 48px; z-index: 2; } .login-slogan-text { font-size: 24px; font-weight: 800; letter-spacing: 1px; background: linear-gradient(90deg, #fff 0%, #c7d2fe 25%, #fff 50%, #c7d2fe 75%, #fff 100%); background-size: 200% auto; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: shinySlide 3s linear infinite; text-shadow: none; } @keyframes shinySlide { 0% { background-position: 0% center; } 100% { background-position: 200% center; } } /* ---- 登录卡片靠右 ---- */ .login-center { flex: 1; display: flex; align-items: center; justify-content: flex-end; z-index: 1; padding: 24px 60px 24px 24px; } /* ======================================== 登录卡片 ======================================== */ .login-card { width: 100%; max-width: 400px; border-radius: 20px !important; box-shadow: 0 24px 80px rgba(0,0,0,0.25), 0 8px 32px rgba(99,102,241,0.1) !important; border: 1px solid rgba(255,255,255,0.15) !important; background: rgba(255,255,255,0.95) !important; backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); } /* 卡片头部: logo + 站点名 */ .login-card-header { text-align: center; margin-bottom: 24px; } .login-logo-row { display: flex; align-items: center; justify-content: center; gap: 12px; } .login-logo-img { width: 40px; height: 40px; border-radius: 12px; object-fit: contain; } .login-logo-placeholder { width: 40px; height: 40px; border-radius: 12px; background: linear-gradient(135deg, #6366f1, #8b5cf6); display: flex; align-items: center; justify-content: center; box-shadow: 0 6px 20px rgba(99,102,241,0.3); } .login-site-name { font-size: 22px; font-weight: 800; color: #1e293b; letter-spacing: -0.3px; } .login-card-subtitle { display: block; text-align: center; margin-bottom: 24px; color: #94a3b8; font-size: 13px; } /* ---- Tabs ---- */ .login-tabs { display: flex; gap: 0; margin-bottom: 20px; background: #f1f5f9; border-radius: 10px; padding: 4px; border: 1px solid #e2e8f0; } .login-tab { flex: 1; text-align: center; padding: 9px 0; border-radius: 8px; cursor: pointer; font-size: 13px; font-weight: 400; color: #64748b; background: transparent; border: 1px solid transparent; transition: all 0.3s ease; } .login-tab-active { font-weight: 600 !important; color: #6366f1 !important; background: #fff !important; border: 1px solid rgba(99,102,241,0.2) !important; box-shadow: 0 2px 8px rgba(99,102,241,0.1) !important; } .login-submit-btn { height: 46px !important; border-radius: 10px !important; font-size: 15px !important; font-weight: 600 !important; background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%) !important; border: none !important; box-shadow: 0 8px 24px rgba(99,102,241,0.25) !important; } .login-code-btn { height: 46px !important; border-radius: 10px !important; border: 1.5px solid #e2e8f0 !important; font-weight: 600 !important; min-width: 100px !important; } .login-agreement { margin-bottom: 14px; } .login-agreement-text { font-size: 12px; color: #64748b; } .login-link { color: #6366f1; cursor: pointer; } .login-footer { display: flex; justify-content: center; } .login-switch-btn { font-size: 13px !important; color: #6366f1 !important; cursor: pointer; } /* ---- Copyright ---- */ .login-copyright-wrapper { position: absolute; bottom: 20px; left: 0; right: 0; text-align: center; z-index: 2; pointer-events: none; } .login-copyright { color: rgba(255,255,255,0.5); font-size: 12px; text-shadow: 0 1px 3px rgba(0,0,0,0.3); } /* ---- Ant Design overrides ---- */ .login-page .ant-input-affix-wrapper { padding: 0 11px !important; height: 46px !important; } .login-page .ant-input-affix-wrapper .ant-input-prefix { margin-right: 10px !important; margin-left: 0 !important; } .login-page .ant-input { padding-left: 11px !important; height: 46px !important; } /* ======================================== 响应式 ======================================== */ @media (max-width: 899px) { .login-slogan { top: 24px; left: 24px; } .login-slogan-text { font-size: 18px; } .login-center { padding: 80px 20px 24px; justify-content: center; } } @media (max-width: 480px) { .login-slogan { top: 20px; left: 20px; } .login-slogan-text { font-size: 15px; } .login-card .ant-card-body { padding: 24px 20px !important; } .login-card { border-radius: 16px !important; } .login-page .ant-input, .login-page .ant-input-affix-wrapper { height: 44px !important; } .login-code-btn { height: 44px !important; min-width: 90px !important; } .login-submit-btn { height: 44px !important; } } @keyframes sliderShake { 0%, 100% { transform: translateX(0); } 10% { transform: translateX(-8px); } 20% { transform: translateX(8px); } 30% { transform: translateX(-6px); } 40% { transform: translateX(6px); } 50% { transform: translateX(-4px); } 60% { transform: translateX(4px); } 70% { transform: translateX(-2px); } 80% { transform: translateX(2px); } 90% { transform: translateX(-1px); } }