Files
TK-BOM-Project/frontend/src/pages/LoginPage.css
Hyungi Ahn 4f8e395f87
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled
feat: SWG 가스켓 전체 구성 정보 표시 개선
- H/F/I/O SS304/GRAPHITE/CS/CS 패턴에서 4개 구성요소 모두 표시
- 기존 SS304 + GRAPHITE → SS304/GRAPHITE/CS/CS로 완전한 구성 표시
- 외부링/필러/내부링/추가구성 모든 정보 포함
- 구매수량 계산 모달에서 정확한 재질 정보 확인 가능
2025-08-30 14:23:01 +09:00

220 lines
3.8 KiB
CSS

.login-container {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
padding: 20px;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.login-card {
background: white;
border-radius: 16px;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
padding: 40px;
width: 100%;
max-width: 400px;
animation: slideUp 0.6s ease-out;
}
@keyframes slideUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.login-header {
text-align: center;
margin-bottom: 32px;
}
.login-header h1 {
color: #2d3748;
font-size: 28px;
font-weight: 700;
margin: 0 0 8px 0;
}
.login-header p {
color: #718096;
font-size: 14px;
margin: 0;
}
.login-form {
display: flex;
flex-direction: column;
gap: 20px;
}
.form-group {
display: flex;
flex-direction: column;
gap: 8px;
}
.form-group label {
color: #2d3748;
font-weight: 600;
font-size: 14px;
}
.form-group input {
padding: 12px 16px;
border: 2px solid #e2e8f0;
border-radius: 8px;
font-size: 16px;
transition: all 0.2s ease;
background: #f7fafc;
}
.form-group input:focus {
outline: none;
border-color: #667eea;
background: white;
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
}
.form-group input:disabled {
background: #f1f5f9;
color: #94a3b8;
cursor: not-allowed;
}
.error-message {
display: flex;
align-items: center;
gap: 8px;
padding: 12px 16px;
background: #fed7d7;
border: 1px solid #feb2b2;
border-radius: 8px;
color: #c53030;
font-size: 14px;
animation: shake 0.5s ease-in-out;
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
25% { transform: translateX(-5px); }
75% { transform: translateX(5px); }
}
.error-icon {
font-size: 16px;
}
.login-button {
padding: 14px 24px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin-top: 8px;
}
.login-button:hover:not(:disabled) {
transform: translateY(-2px);
box-shadow: 0 8px 20px rgba(102, 126, 234, 0.3);
}
.login-button:active:not(:disabled) {
transform: translateY(0);
}
.login-button:disabled {
opacity: 0.7;
cursor: not-allowed;
transform: none;
}
.loading-spinner {
width: 16px;
height: 16px;
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); }
}
.login-footer {
margin-top: 32px;
text-align: center;
}
.login-footer p {
color: #718096;
font-size: 14px;
margin: 0 0 16px 0;
}
.system-info small {
color: #a0aec0;
font-size: 12px;
}
/* 반응형 디자인 */
@media (max-width: 480px) {
.login-container {
padding: 16px;
}
.login-card {
padding: 24px;
}
.login-header h1 {
font-size: 24px;
}
}
/* 다크모드 지원 */
@media (prefers-color-scheme: dark) {
.login-card {
background: #1a202c;
color: white;
}
.login-header h1 {
color: white;
}
.login-header p {
color: #a0aec0;
}
.form-group label {
color: #e2e8f0;
}
.form-group input {
background: #2d3748;
border-color: #4a5568;
color: white;
}
.form-group input:focus {
background: #2d3748;
border-color: #667eea;
}
}