328 lines
5.5 KiB
SCSS
328 lines
5.5 KiB
SCSS
// -----------------------------------------------------------------------------
|
|
// Login Page Styles - Figma Design Implementation
|
|
// -----------------------------------------------------------------------------
|
|
|
|
.login-page {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: #EDF9FE; // Light blue background from Figma
|
|
padding: 40px 20px;
|
|
position: relative;
|
|
border-radius: 12px;
|
|
margin-top: 60px;
|
|
margin-bottom: 60px;
|
|
}
|
|
|
|
.login-container {
|
|
width: 100%;
|
|
max-width: 504px; // Match Figma width
|
|
margin: 0 auto;
|
|
position: relative;
|
|
}
|
|
|
|
.login-card {
|
|
background: transparent;
|
|
padding: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
|
|
@media (max-width: 576px) {
|
|
padding: 0 20px;
|
|
}
|
|
}
|
|
|
|
.login-logo {
|
|
width: 90px;
|
|
height: 90px;
|
|
margin-bottom: 30px;
|
|
|
|
img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: contain;
|
|
}
|
|
}
|
|
|
|
.login-message {
|
|
font-family: 'Noto Sans KR', sans-serif;
|
|
font-size: 20px;
|
|
font-weight: 400;
|
|
color: #000000;
|
|
text-align: center;
|
|
margin-bottom: 40px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.login-form {
|
|
width: 100%;
|
|
margin-bottom: 0;
|
|
|
|
.form-group {
|
|
margin-bottom: 24px;
|
|
|
|
&:last-of-type {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
|
|
.form-input {
|
|
width: 100%;
|
|
height: 70px;
|
|
padding: 0 32px;
|
|
font-family: 'Noto Sans KR', sans-serif;
|
|
font-size: 16px;
|
|
font-weight: 400;
|
|
color: #5F666C;
|
|
background: #FFFFFF;
|
|
border: 1px solid #DDDDDD;
|
|
border-radius: 12px;
|
|
outline: none;
|
|
transition: all 0.3s ease;
|
|
|
|
&::placeholder {
|
|
color: #5F666C;
|
|
}
|
|
|
|
&:focus {
|
|
border-color: #0049B4;
|
|
}
|
|
|
|
&.error {
|
|
border-color: #FF6B6B;
|
|
}
|
|
}
|
|
|
|
.form-checkbox {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 7px;
|
|
margin-top: 24px;
|
|
margin-bottom: 22px;
|
|
margin-right: 10px;
|
|
|
|
input[type="checkbox"] {
|
|
width: 20px;
|
|
height: 20px;
|
|
border: 1.5px solid #000000;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
appearance: none;
|
|
background: #FFFFFF;
|
|
position: relative;
|
|
flex-shrink: 0;
|
|
|
|
&:checked {
|
|
background: #FFFFFF;
|
|
border-color: #2C2C2C;
|
|
|
|
&::after {
|
|
content: '';
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 45%;
|
|
transform: translate(-50%, -50%) rotate(45deg);
|
|
width: 6px;
|
|
height: 12px;
|
|
border: solid #2C2C2C;
|
|
border-width: 0 2px 2px 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
label {
|
|
font-family: 'Noto Sans KR', sans-serif;
|
|
font-size: 16px;
|
|
font-weight: 400;
|
|
color: #000000;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
line-height: 24px;
|
|
white-space: nowrap;
|
|
}
|
|
}
|
|
}
|
|
|
|
.login-button {
|
|
width: 100%;
|
|
height: 80px;
|
|
padding: 10px;
|
|
font-family: 'Noto Sans KR', sans-serif;
|
|
font-size: 20px;
|
|
font-weight: 700;
|
|
color: #FFFFFF;
|
|
background: #0049B4;
|
|
border: none;
|
|
border-radius: 12px;
|
|
cursor: pointer;
|
|
transition: all 0.3s ease;
|
|
margin-bottom: 40px;
|
|
line-height: 1;
|
|
|
|
&:hover {
|
|
background: darken(#0049B4, 5%);
|
|
}
|
|
|
|
&:active {
|
|
background: darken(#0049B4, 10%);
|
|
}
|
|
|
|
&:disabled {
|
|
opacity: 0.6;
|
|
cursor: not-allowed;
|
|
}
|
|
}
|
|
|
|
.login-links {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
gap: 26px;
|
|
flex-wrap: wrap;
|
|
|
|
a {
|
|
font-family: 'Noto Sans KR', sans-serif;
|
|
font-size: 16px;
|
|
font-weight: 400;
|
|
color: #000000;
|
|
text-decoration: none;
|
|
transition: color 0.3s ease;
|
|
line-height: 1;
|
|
|
|
&:hover {
|
|
color: #0049B4;
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
|
|
.link-separator {
|
|
color: #000000;
|
|
font-size: 16px;
|
|
}
|
|
}
|
|
|
|
// Alert messages
|
|
.login-alert {
|
|
width: 100%;
|
|
margin-bottom: 24px;
|
|
padding: 12px 16px;
|
|
border-radius: 8px;
|
|
font-size: 14px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
|
|
&.alert-error {
|
|
background: rgba(255, 107, 107, 0.1);
|
|
color: #FF6B6B;
|
|
border: 1px solid rgba(255, 107, 107, 0.2);
|
|
}
|
|
|
|
&.alert-success {
|
|
background: rgba(107, 207, 127, 0.1);
|
|
color: #6BCF7F;
|
|
border: 1px solid rgba(107, 207, 127, 0.2);
|
|
}
|
|
|
|
&.alert-info {
|
|
background: rgba(0, 73, 180, 0.1);
|
|
color: #0049B4;
|
|
border: 1px solid rgba(0, 73, 180, 0.2);
|
|
}
|
|
|
|
i {
|
|
font-size: 18px;
|
|
}
|
|
}
|
|
|
|
// Loading state
|
|
.login-loading {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: rgba(237, 249, 254, 0.9);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
z-index: 10;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transition: opacity 0.3s ease;
|
|
|
|
&.active {
|
|
opacity: 1;
|
|
pointer-events: all;
|
|
}
|
|
|
|
.spinner {
|
|
width: 40px;
|
|
height: 40px;
|
|
border: 3px solid #DDDDDD;
|
|
border-top-color: #0049B4;
|
|
border-radius: 50%;
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
}
|
|
|
|
@keyframes spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
// Responsive adjustments
|
|
@media (max-width: 576px) {
|
|
.login-container {
|
|
max-width: 100%;
|
|
padding: 0 20px;
|
|
}
|
|
|
|
.login-logo {
|
|
width: 70px;
|
|
height: 70px;
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.login-message {
|
|
font-size: 18px;
|
|
margin-bottom: 32px;
|
|
}
|
|
|
|
.login-form {
|
|
.form-input {
|
|
height: 60px;
|
|
padding: 0 20px;
|
|
font-size: 15px;
|
|
}
|
|
|
|
.form-checkbox {
|
|
input[type="checkbox"] {
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
|
|
label {
|
|
font-size: 14px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.login-button {
|
|
height: 70px;
|
|
font-size: 18px;
|
|
margin-bottom: 32px;
|
|
}
|
|
|
|
.login-links {
|
|
gap: 20px;
|
|
|
|
a, .link-separator {
|
|
font-size: 14px;
|
|
}
|
|
}
|
|
}
|