|
|
|
|
|
.auth-container { |
|
|
min-height: 100vh; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
padding: 20px; |
|
|
} |
|
|
|
|
|
.auth-card { |
|
|
background: white; |
|
|
border-radius: 20px; |
|
|
padding: 40px; |
|
|
box-shadow: 0 20px 60px rgba(0,0,0,0.1); |
|
|
width: 100%; |
|
|
max-width: 450px; |
|
|
animation: slideUp 0.5s ease-out; |
|
|
} |
|
|
|
|
|
@keyframes slideUp { |
|
|
from { |
|
|
opacity: 0; |
|
|
transform: translateY(30px); |
|
|
} |
|
|
to { |
|
|
opacity: 1; |
|
|
transform: translateY(0); |
|
|
} |
|
|
} |
|
|
|
|
|
.auth-logo { |
|
|
text-align: center; |
|
|
margin-bottom: 30px; |
|
|
} |
|
|
|
|
|
.auth-logo h1 { |
|
|
color: #4a5568; |
|
|
margin-bottom: 10px; |
|
|
font-size: 28px; |
|
|
font-weight: 700; |
|
|
} |
|
|
|
|
|
.auth-logo p { |
|
|
color: #718096; |
|
|
font-size: 16px; |
|
|
line-height: 1.5; |
|
|
} |
|
|
|
|
|
.auth-form .form-group { |
|
|
margin-bottom: 20px; |
|
|
} |
|
|
|
|
|
.auth-form label { |
|
|
display: block; |
|
|
margin-bottom: 8px; |
|
|
color: #4a5568; |
|
|
font-weight: 600; |
|
|
font-size: 14px; |
|
|
} |
|
|
|
|
|
.auth-form input, |
|
|
.auth-form select, |
|
|
.auth-form textarea { |
|
|
width: 100%; |
|
|
padding: 12px 16px; |
|
|
border: 2px solid #e2e8f0; |
|
|
border-radius: 10px; |
|
|
font-size: 16px; |
|
|
transition: all 0.3s ease; |
|
|
font-family: inherit; |
|
|
} |
|
|
|
|
|
.auth-form input:focus, |
|
|
.auth-form select:focus, |
|
|
.auth-form textarea:focus { |
|
|
outline: none; |
|
|
border-color: #667eea; |
|
|
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); |
|
|
} |
|
|
|
|
|
.auth-form input:invalid:not(:focus):not(:placeholder-shown) { |
|
|
border-color: #fc8181; |
|
|
} |
|
|
|
|
|
.auth-form input:valid:not(:focus):not(:placeholder-shown) { |
|
|
border-color: #48bb78; |
|
|
} |
|
|
|
|
|
.form-row { |
|
|
display: grid; |
|
|
grid-template-columns: 1fr 1fr; |
|
|
gap: 15px; |
|
|
} |
|
|
|
|
|
.btn-auth { |
|
|
width: 100%; |
|
|
padding: 14px; |
|
|
background: #667eea; |
|
|
color: white; |
|
|
border: none; |
|
|
border-radius: 10px; |
|
|
font-size: 16px; |
|
|
font-weight: 600; |
|
|
cursor: pointer; |
|
|
transition: all 0.3s ease; |
|
|
position: relative; |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
.btn-auth:hover { |
|
|
background: #5a67d8; |
|
|
transform: translateY(-2px); |
|
|
box-shadow: 0 10px 20px rgba(102, 126, 234, 0.3); |
|
|
} |
|
|
|
|
|
.btn-auth:active { |
|
|
transform: translateY(0); |
|
|
} |
|
|
|
|
|
.btn-auth:disabled { |
|
|
background: #a0aec0; |
|
|
cursor: not-allowed; |
|
|
transform: none; |
|
|
box-shadow: none; |
|
|
} |
|
|
|
|
|
.btn-auth.loading::after { |
|
|
content: ''; |
|
|
position: absolute; |
|
|
top: 50%; |
|
|
left: 50%; |
|
|
width: 20px; |
|
|
height: 20px; |
|
|
margin: -10px 0 0 -10px; |
|
|
border: 2px solid transparent; |
|
|
border-top: 2px solid white; |
|
|
border-radius: 50%; |
|
|
animation: spin 1s linear infinite; |
|
|
} |
|
|
|
|
|
@keyframes spin { |
|
|
0% { transform: rotate(0deg); } |
|
|
100% { transform: rotate(360deg); } |
|
|
} |
|
|
|
|
|
.auth-links { |
|
|
text-align: center; |
|
|
margin-top: 25px; |
|
|
padding-top: 25px; |
|
|
border-top: 1px solid #e2e8f0; |
|
|
} |
|
|
|
|
|
.auth-links a { |
|
|
color: #667eea; |
|
|
text-decoration: none; |
|
|
margin: 0 8px; |
|
|
transition: all 0.3s ease; |
|
|
font-size: 14px; |
|
|
} |
|
|
|
|
|
.auth-links a:hover { |
|
|
color: #5a67d8; |
|
|
text-decoration: underline; |
|
|
} |
|
|
|
|
|
.error-message { |
|
|
background: #fed7d7; |
|
|
color: #742a2a; |
|
|
padding: 12px 16px; |
|
|
border-radius: 8px; |
|
|
margin-bottom: 20px; |
|
|
text-align: center; |
|
|
display: none; |
|
|
border-right: 4px solid #f56565; |
|
|
animation: shake 0.5s ease-in-out; |
|
|
} |
|
|
|
|
|
.success-message { |
|
|
background: #c6f6d5; |
|
|
color: #22543d; |
|
|
padding: 12px 16px; |
|
|
border-radius: 8px; |
|
|
margin-bottom: 20px; |
|
|
text-align: center; |
|
|
display: none; |
|
|
border-right: 4px solid #48bb78; |
|
|
animation: slideDown 0.5s ease-out; |
|
|
} |
|
|
|
|
|
@keyframes shake { |
|
|
0%, 100% { transform: translateX(0); } |
|
|
25% { transform: translateX(-5px); } |
|
|
75% { transform: translateX(5px); } |
|
|
} |
|
|
|
|
|
@keyframes slideDown { |
|
|
from { |
|
|
opacity: 0; |
|
|
transform: translateY(-10px); |
|
|
} |
|
|
to { |
|
|
opacity: 1; |
|
|
transform: translateY(0); |
|
|
} |
|
|
} |
|
|
|
|
|
.password-strength { |
|
|
margin-top: 8px; |
|
|
font-size: 12px; |
|
|
font-weight: 600; |
|
|
} |
|
|
|
|
|
.strength-weak { |
|
|
color: #e53e3e; |
|
|
} |
|
|
|
|
|
.strength-medium { |
|
|
color: #dd6b20; |
|
|
} |
|
|
|
|
|
.strength-strong { |
|
|
color: #38a169; |
|
|
} |
|
|
|
|
|
.demo-accounts { |
|
|
margin-top: 30px; |
|
|
padding-top: 25px; |
|
|
border-top: 1px solid #e2e8f0; |
|
|
} |
|
|
|
|
|
.demo-accounts h3 { |
|
|
text-align: center; |
|
|
color: #718096; |
|
|
font-size: 14px; |
|
|
margin-bottom: 15px; |
|
|
font-weight: 600; |
|
|
} |
|
|
|
|
|
.demo-account-item { |
|
|
display: flex; |
|
|
justify-content: space-between; |
|
|
align-items: center; |
|
|
padding: 8px 0; |
|
|
border-bottom: 1px solid #f7fafc; |
|
|
} |
|
|
|
|
|
.demo-account-item:last-child { |
|
|
border-bottom: none; |
|
|
} |
|
|
|
|
|
.demo-account-item span:first-child { |
|
|
color: #4a5568; |
|
|
font-size: 13px; |
|
|
} |
|
|
|
|
|
.demo-account-item span:last-child { |
|
|
color: #2d3748; |
|
|
font-weight: 600; |
|
|
font-size: 13px; |
|
|
} |
|
|
|
|
|
|
|
|
.auth-section { |
|
|
background: white; |
|
|
border-radius: 15px; |
|
|
padding: 20px; |
|
|
margin-bottom: 20px; |
|
|
box-shadow: 0 5px 15px rgba(0,0,0,0.1); |
|
|
} |
|
|
|
|
|
.user-welcome { |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 15px; |
|
|
padding: 10px; |
|
|
} |
|
|
|
|
|
.user-avatar { |
|
|
width: 50px; |
|
|
height: 50px; |
|
|
border-radius: 50%; |
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
color: white; |
|
|
font-weight: bold; |
|
|
font-size: 18px; |
|
|
} |
|
|
|
|
|
.user-info { |
|
|
flex: 1; |
|
|
} |
|
|
|
|
|
.welcome-text { |
|
|
display: block; |
|
|
color: #4a5568; |
|
|
font-weight: 600; |
|
|
font-size: 16px; |
|
|
} |
|
|
|
|
|
.user-role { |
|
|
display: block; |
|
|
color: #718096; |
|
|
font-size: 14px; |
|
|
margin-top: 4px; |
|
|
} |
|
|
|
|
|
.auth-actions { |
|
|
text-align: center; |
|
|
padding: 20px; |
|
|
} |
|
|
|
|
|
.auth-actions p { |
|
|
color: #718096; |
|
|
margin-bottom: 20px; |
|
|
font-size: 15px; |
|
|
} |
|
|
|
|
|
.auth-buttons { |
|
|
display: flex; |
|
|
gap: 12px; |
|
|
justify-content: center; |
|
|
} |
|
|
|
|
|
.btn { |
|
|
padding: 10px 24px; |
|
|
border: none; |
|
|
border-radius: 8px; |
|
|
cursor: pointer; |
|
|
font-weight: 600; |
|
|
transition: all 0.3s ease; |
|
|
font-size: 14px; |
|
|
} |
|
|
|
|
|
.btn-primary { |
|
|
background: #667eea; |
|
|
color: white; |
|
|
} |
|
|
|
|
|
.btn-primary:hover { |
|
|
background: #5a67d8; |
|
|
transform: translateY(-2px); |
|
|
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3); |
|
|
} |
|
|
|
|
|
.btn-secondary { |
|
|
background: #e2e8f0; |
|
|
color: #4a5568; |
|
|
} |
|
|
|
|
|
.btn-secondary:hover { |
|
|
background: #cbd5e0; |
|
|
transform: translateY(-2px); |
|
|
} |
|
|
|
|
|
.btn-outline { |
|
|
background: transparent; |
|
|
color: #667eea; |
|
|
border: 2px solid #667eea; |
|
|
} |
|
|
|
|
|
.btn-outline:hover { |
|
|
background: #667eea; |
|
|
color: white; |
|
|
} |
|
|
|
|
|
.btn-sm { |
|
|
padding: 8px 16px; |
|
|
font-size: 13px; |
|
|
} |
|
|
|
|
|
|
|
|
.login-modal, |
|
|
.register-modal { |
|
|
position: fixed; |
|
|
top: 0; |
|
|
left: 0; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
background: rgba(0,0,0,0.5); |
|
|
display: flex; |
|
|
justify-content: center; |
|
|
align-items: center; |
|
|
z-index: 1000; |
|
|
animation: fadeIn 0.3s ease-out; |
|
|
} |
|
|
|
|
|
.modal-content { |
|
|
background: white; |
|
|
padding: 30px; |
|
|
border-radius: 15px; |
|
|
max-width: 400px; |
|
|
width: 90%; |
|
|
animation: scaleIn 0.3s ease-out; |
|
|
} |
|
|
|
|
|
@keyframes fadeIn { |
|
|
from { opacity: 0; } |
|
|
to { opacity: 1; } |
|
|
} |
|
|
|
|
|
@keyframes scaleIn { |
|
|
from { |
|
|
opacity: 0; |
|
|
transform: scale(0.9); |
|
|
} |
|
|
to { |
|
|
opacity: 1; |
|
|
transform: scale(1); |
|
|
} |
|
|
} |
|
|
|
|
|
.modal h3 { |
|
|
margin-bottom: 20px; |
|
|
text-align: center; |
|
|
color: #4a5568; |
|
|
font-size: 20px; |
|
|
} |
|
|
|
|
|
.modal-close { |
|
|
position: absolute; |
|
|
top: 15px; |
|
|
left: 15px; |
|
|
background: none; |
|
|
border: none; |
|
|
font-size: 24px; |
|
|
cursor: pointer; |
|
|
color: #718096; |
|
|
} |
|
|
|
|
|
.modal-close:hover { |
|
|
color: #4a5568; |
|
|
} |