2025-06-28 10:09:28 +08:00

302 lines
5.1 KiB
CSS

.main-container {
display: flex;
height: 100vh;
}
.left-panel {
width: 61.8%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
position: relative;
}
.right-panel {
width: 38.2%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background: rgb(12 7 26);
backdrop-filter: blur(10px);
transition: opacity 0.3s ease, visibility 0.3s ease;
}
.auth-container {
padding: 2.5rem;
border-radius: 1.5rem;
max-width: 400px;
width: 100%;
position: relative;
z-index: 10;
background: rgba(255, 255, 255, 0.05);
box-shadow:
0 4px 24px -1px rgba(0, 0, 0, 0.2),
0 0 1px 0 rgba(255, 255, 255, 0.3) inset,
0 0 20px 0 rgba(255, 255, 255, 0.05) inset;
backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.1);
transform-style: preserve-3d;
perspective: 1000px;
animation: container-appear 0.6s ease-out;
}
@keyframes container-appear {
0% {
opacity: 0;
transform: translateY(20px) scale(0.95);
}
100% {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.auth-container::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
border-radius: 1.5rem;
background: linear-gradient(135deg,
rgba(255, 255, 255, 0.1) 0%,
rgba(255, 255, 255, 0.05) 50%,
rgba(255, 255, 255, 0) 100%);
pointer-events: none;
}
.auth-container::after {
content: '';
position: absolute;
top: -1px;
left: -1px;
right: -1px;
bottom: -1px;
border-radius: 1.5rem;
background: linear-gradient(45deg,
rgba(255, 255, 255, 0.1) 0%,
rgba(255, 255, 255, 0) 60%);
pointer-events: none;
z-index: -1;
}
.auth-header {
margin-bottom: 2rem;
text-align: center;
}
.auth-header h2 {
font-size: 2rem;
font-weight: 600;
margin-bottom: 0.5rem;
background: linear-gradient(135deg, #fff, #a8a8a8);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.auth-header p {
color: rgba(255, 255, 255, 0.6);
font-size: 0.9rem;
}
.form-label {
display: block;
margin-bottom: 0.5rem;
color: rgba(255, 255, 255, 0.8);
font-size: 0.9rem;
}
.form-control {
width: 100%;
padding: 0.75rem 1rem;
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 0.5rem;
color: white;
transition: all 0.3s ease;
}
.form-control:focus {
outline: none;
border-color: rgba(255, 255, 255, 0.3);
background: rgba(255, 255, 255, 0.1);
box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.05);
}
.form-control::placeholder {
color: rgba(255, 255, 255, 0.3);
}
.btn-primary {
background: linear-gradient(135deg, #6366f1, #4f46e5);
border: none;
padding: 0.75rem;
border-radius: 0.5rem;
font-weight: 500;
color: white;
transition: all 0.3s ease;
}
.btn-primary:hover {
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(79, 70, 229, 0.3);
}
.auth-link {
color: #6366f1;
text-decoration: none;
transition: color 0.3s ease;
}
.auth-link:hover {
color: #818cf8;
}
.mb-3 {
margin-bottom: 1.5rem !important;
}
.text-center {
text-align: center !important;
}
#vanta-background {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
}
/* body {
background-color: transparent !important;
} */
.invisible {
opacity: 0;
visibility: hidden;
}
.fade-in {
opacity: 1;
visibility: visible;
animation: fadeIn 0.8s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateX(20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.login-logo {
position: fixed;
top: 2rem;
left: 2rem;
z-index: 100;
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 1.8rem;
font-weight: 700;
letter-spacing: 0.1em;
animation: logoAppear 1s ease-out forwards;
}
.logo-text {
color: white;
text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
transition: all 0.3s ease;
display: inline-block;
}
.logo-text:hover {
transform: translateY(-2px) scale(1.1);
text-shadow: 0 0 20px rgba(255, 255, 255, 0.8);
}
.logo-heart {
display: inline-block;
font-size: 1.5rem;
animation: heartbeat 1.5s ease-in-out infinite;
transform-origin: center;
margin: 0 0.2rem;
}
@keyframes heartbeat {
0% {
transform: scale(1);
}
25% {
transform: scale(1.1);
}
40% {
transform: scale(1);
}
60% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}
@keyframes logoAppear {
0% {
opacity: 0;
transform: translateY(-20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
/* 为每个字母添加独特的悬停效果 */
.logo-text:nth-child(1):hover {
color: #64ffda;
}
.logo-text:nth-child(3):hover {
color: #bd93f9;
}
.logo-text:nth-child(4):hover {
color: #ff79c6;
}
/* 添加玻璃态效果 */
.login-logo::before {
content: '';
position: absolute;
top: -10px;
left: -10px;
right: -10px;
bottom: -10px;
background: rgba(255, 255, 255, 0.03);
border-radius: 10px;
backdrop-filter: blur(5px);
z-index: -1;
opacity: 0;
transition: opacity 0.3s ease;
}
.login-logo:hover::before {
opacity: 1;
}