/** * Copyright since 2025 Mifos Initiative * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ $accent: #00b4d8; $teal: #0096c7; $text-muted: #7a96bc; .login-form { display: flex; flex-direction: column; gap: 14px; width: 100%; max-width: 340px; margin: 0 auto; animation: slide-in 0.4s ease-out; } // ═══ Field Group ═══ .field-group { display: flex; flex-direction: column; } .field-label { font-size: 0.66rem; font-weight: 500; color: $text-muted; letter-spacing: 0.09em; text-transform: uppercase; margin-bottom: 6px; } .field-wrap { position: relative; input { display: block; box-sizing: border-box; width: 100%; height: 42px; background: rgba(255, 255, 255, 0.045); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 8px; padding: 0 44px 0 38px; color: #fff; font-size: 0.82rem; font-family: 'Inter', sans-serif; outline: none; transition: border-color 0.2s, background 0.2s; &:focus { border-color: $accent; background: rgba(0, 180, 216, 0.07); } &::placeholder { color: rgba(255, 255, 255, 0.22); } } } .field-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); font-size: 0.9rem; pointer-events: none; line-height: 1; } .eye-btn { position: absolute; right: 0; top: 0; height: 100%; width: 42px; background: none; border: none; cursor: pointer; color: $text-muted; display: flex; align-items: center; justify-content: center; font-size: 0.85rem; transition: opacity 0.2s; &:hover { opacity: 0.8; } } .field-error { font-size: 0.72rem; color: #f87171; margin-top: 4px; } // ═══ Remember Me ═══ .remember-row { padding: 2px 0; } .remember-checkbox { ::ng-deep { .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate='true']) ~ .mdc-checkbox__background { border-color: rgba(255, 255, 255, 0.4); } .mdc-checkbox .mdc-checkbox__native-control:enabled:checked ~ .mdc-checkbox__background { background-color: $accent; border-color: $accent; } .mdc-label { color: rgba(255, 255, 255, 0.7); font-size: 0.82rem; } } } // ═══ Progress Bar ═══ .login-progress { height: 3px; border-radius: 4px; ::ng-deep { .mdc-linear-progress__bar-inner { border-color: $accent; } .mdc-linear-progress__buffer-bar { background-color: rgba(255, 255, 255, 0.1); } } } // ═══ Login Button ═══ .btn-wrap { margin-top: 10px; } .btn-login { -webkit-appearance: none; appearance: none; display: block; box-sizing: border-box; width: 100% !important; min-width: 100%; height: 42px; padding: 0 14px; margin: 0; background: linear-gradient(90deg, $teal, $accent); border: none; border-radius: 8px; color: #fff; font-family: 'Inter', sans-serif; font-size: 1rem; font-weight: 700; letter-spacing: 0.12em; line-height: 42px; text-align: center; text-transform: uppercase; cursor: pointer; transition: opacity 0.2s, transform 0.1s; box-shadow: 0 4px 20px rgba(0, 180, 216, 0.25); &:hover { opacity: 0.88; transform: translateY(-1px); } &:active { transform: translateY(0); } &:disabled { opacity: 0.4; cursor: not-allowed; transform: none; } } // ═══ Animations ═══ @keyframes slide-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } // ═══ Responsive ═══ @media (max-width: 480px) { .field-wrap input { font-size: 0.9rem; padding: 9px 12px 9px 36px; } .btn-login { padding: 10px; font-size: 0.9rem; } }